Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeroen Bakker <j.bakker@atmind.nl>2012-10-24 17:43:32 +0400
committerJeroen Bakker <j.bakker@atmind.nl>2012-10-24 17:43:32 +0400
commita49b1d7b5eaa02ea3caf90c9060e1326dec5f2e5 (patch)
treee4e2a414f8945678bd7d9be5743ff63b6520fbe2 /source/blender/compositor
parentf746f3ea0917033ee05c0282d177a466948927a6 (diff)
Oeps... Enabled the pixelate node added documentation, removed unneeded
code
Diffstat (limited to 'source/blender/compositor')
-rw-r--r--source/blender/compositor/intern/COM_Converter.cpp4
-rw-r--r--source/blender/compositor/intern/COM_InputSocket.h6
-rw-r--r--source/blender/compositor/nodes/COM_PixelateNode.cpp8
-rw-r--r--source/blender/compositor/operations/COM_PixelateOperation.cpp20
-rw-r--r--source/blender/compositor/operations/COM_PixelateOperation.h30
5 files changed, 51 insertions, 17 deletions
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
@@ -92,12 +92,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
* @param relinkToSocket the socket to move to connections to
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);
};