From a49b1d7b5eaa02ea3caf90c9060e1326dec5f2e5 Mon Sep 17 00:00:00 2001 From: Jeroen Bakker Date: Wed, 24 Oct 2012 13:43:32 +0000 Subject: Oeps... Enabled the pixelate node added documentation, removed unneeded code --- source/blender/compositor/intern/COM_Converter.cpp | 4 +++ source/blender/compositor/intern/COM_InputSocket.h | 6 ----- .../blender/compositor/nodes/COM_PixelateNode.cpp | 8 +++++- .../operations/COM_PixelateOperation.cpp | 20 +++++++-------- .../compositor/operations/COM_PixelateOperation.h | 30 ++++++++++++++++++++++ 5 files changed, 51 insertions(+), 17 deletions(-) (limited to 'source/blender/compositor') diff --git a/source/blender/compositor/intern/COM_Converter.cpp b/source/blender/compositor/intern/COM_Converter.cpp index 71067ac8f15..2b09c9d5b8c 100644 --- a/source/blender/compositor/intern/COM_Converter.cpp +++ b/source/blender/compositor/intern/COM_Converter.cpp @@ -119,6 +119,7 @@ #include "COM_ViewLevelsNode.h" #include "COM_ViewerNode.h" #include "COM_ZCombineNode.h" +#include "COM_PixelateNode.h" Node *Converter::convert(bNode *b_node, bool fast) { @@ -390,6 +391,9 @@ Node *Converter::convert(bNode *b_node, bool fast) node = new TrackPositionNode(b_node); break; /* not inplemented yet */ + case CMP_NODE_PIXELATE: + node = new PixelateNode(b_node); + break; default: node = new MuteNode(b_node); break; diff --git a/source/blender/compositor/intern/COM_InputSocket.h b/source/blender/compositor/intern/COM_InputSocket.h index 555de23c056..5970c9d5dd6 100644 --- a/source/blender/compositor/intern/COM_InputSocket.h +++ b/source/blender/compositor/intern/COM_InputSocket.h @@ -91,12 +91,6 @@ public: */ void determineResolution(unsigned int resolution[2], unsigned int preferredResolution[2]); - /** - * @brief Notifies the Input of the data type (via a SocketConnection) - * @param datatype the datatype to evaluate - */ - void notifyActualInputType(DataType datatype); - /** * @brief move all connections of this input socket to another socket * only use this method when already checked the availability of a SocketConnection diff --git a/source/blender/compositor/nodes/COM_PixelateNode.cpp b/source/blender/compositor/nodes/COM_PixelateNode.cpp index 6accc0d5ead..f1c7c616a30 100644 --- a/source/blender/compositor/nodes/COM_PixelateNode.cpp +++ b/source/blender/compositor/nodes/COM_PixelateNode.cpp @@ -34,8 +34,14 @@ void PixelateNode::convertToOperations(ExecutionSystem *graph, CompositorContext { InputSocket *inputSocket = this->getInputSocket(0); OutputSocket *outputSocket = this->getOutputSocket(0); + DataType datatype = inputSocket->getDataType(); + if (inputSocket->isConnected()) { + SocketConnection * connection = inputSocket->getConnection(); + OutputSocket* otherOutputSocket = connection->getFromSocket(); + datatype = otherOutputSocket->getDataType(); + } - PixelateOperation *operation = new PixelateOperation(inputSocket->getDataType()); + PixelateOperation *operation = new PixelateOperation(datatype); inputSocket->relinkConnections(operation->getInputSocket(0), 0, graph); outputSocket->relinkConnections(operation->getOutputSocket(0)); graph->addOperation(operation); diff --git a/source/blender/compositor/operations/COM_PixelateOperation.cpp b/source/blender/compositor/operations/COM_PixelateOperation.cpp index cff4eff0d87..89e7f0093a1 100644 --- a/source/blender/compositor/operations/COM_PixelateOperation.cpp +++ b/source/blender/compositor/operations/COM_PixelateOperation.cpp @@ -24,26 +24,26 @@ PixelateOperation::PixelateOperation(DataType datatype) : NodeOperation() { - this->addInputSocket(datatype); - this->addOutputSocket(datatype); - this->setResolutionInputSocketIndex(0); - this->m_inputOperation = NULL; + this->addInputSocket(datatype); + this->addOutputSocket(datatype); + this->setResolutionInputSocketIndex(0); + this->m_inputOperation = NULL; } + void PixelateOperation::initExecution() { - this->m_inputOperation = this->getInputSocketReader(0); + this->m_inputOperation = this->getInputSocketReader(0); } void PixelateOperation::deinitExecution() { - this->m_inputOperation = NULL; + this->m_inputOperation = NULL; } - void PixelateOperation::executePixel(float output[4], float x, float y, PixelSampler sampler) { - float nx = round(x); - float ny = round(y); - this->m_inputOperation->read(output, nx, ny, sampler); + float nx = round(x); + float ny = round(y); + this->m_inputOperation->read(output, nx, ny, sampler); } diff --git a/source/blender/compositor/operations/COM_PixelateOperation.h b/source/blender/compositor/operations/COM_PixelateOperation.h index c3e6975bbb8..b16b21b2ec1 100644 --- a/source/blender/compositor/operations/COM_PixelateOperation.h +++ b/source/blender/compositor/operations/COM_PixelateOperation.h @@ -25,13 +25,43 @@ #include "COM_NodeOperation.h" +/** + * @brief Pixelate operation + * + * The Tile compositor is by default sub-pixel accurate. + * For some setups you don want this. + * This operation will remove the sub-pixel accuracy + */ class PixelateOperation : public NodeOperation { private: + /** + * @brief cached refeerence to the input operation + */ SocketReader *m_inputOperation; public: + /** + * @brief PixelateOperation + * @param dataType the datatype to create this operator for (saves datatype conversions) + */ PixelateOperation(DataType dataType); + + /** + * @brief initialization of the execution + */ void initExecution(); + + /** + * @brief de-initialization of the execution + */ void deinitExecution(); + + /** + * @brief executePixel + * @param output result + * @param x x-coordinate + * @param y y-coordinate + * @param sampler sampler + */ void executePixel(float output[4], float x, float y, PixelSampler sampler); }; -- cgit v1.2.3