Oeps... Enabled the pixelate node added documentation, removed unneeded

code
This commit is contained in:
Jeroen Bakker
2012-10-24 13:43:32 +00:00
parent f746f3ea09
commit a49b1d7b5e
5 changed files with 51 additions and 17 deletions

View File

@@ -119,6 +119,7 @@
#include "COM_ViewLevelsNode.h" #include "COM_ViewLevelsNode.h"
#include "COM_ViewerNode.h" #include "COM_ViewerNode.h"
#include "COM_ZCombineNode.h" #include "COM_ZCombineNode.h"
#include "COM_PixelateNode.h"
Node *Converter::convert(bNode *b_node, bool fast) 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); node = new TrackPositionNode(b_node);
break; break;
/* not inplemented yet */ /* not inplemented yet */
case CMP_NODE_PIXELATE:
node = new PixelateNode(b_node);
break;
default: default:
node = new MuteNode(b_node); node = new MuteNode(b_node);
break; break;

View File

@@ -91,12 +91,6 @@ public:
*/ */
void determineResolution(unsigned int resolution[2], unsigned int preferredResolution[2]); 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 * @brief move all connections of this input socket to another socket
* only use this method when already checked the availability of a SocketConnection * only use this method when already checked the availability of a SocketConnection

View File

@@ -34,8 +34,14 @@ void PixelateNode::convertToOperations(ExecutionSystem *graph, CompositorContext
{ {
InputSocket *inputSocket = this->getInputSocket(0); InputSocket *inputSocket = this->getInputSocket(0);
OutputSocket *outputSocket = this->getOutputSocket(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); inputSocket->relinkConnections(operation->getInputSocket(0), 0, graph);
outputSocket->relinkConnections(operation->getOutputSocket(0)); outputSocket->relinkConnections(operation->getOutputSocket(0));
graph->addOperation(operation); graph->addOperation(operation);

View File

@@ -24,26 +24,26 @@
PixelateOperation::PixelateOperation(DataType datatype) : NodeOperation() PixelateOperation::PixelateOperation(DataType datatype) : NodeOperation()
{ {
this->addInputSocket(datatype); this->addInputSocket(datatype);
this->addOutputSocket(datatype); this->addOutputSocket(datatype);
this->setResolutionInputSocketIndex(0); this->setResolutionInputSocketIndex(0);
this->m_inputOperation = NULL; this->m_inputOperation = NULL;
} }
void PixelateOperation::initExecution() void PixelateOperation::initExecution()
{ {
this->m_inputOperation = this->getInputSocketReader(0); this->m_inputOperation = this->getInputSocketReader(0);
} }
void PixelateOperation::deinitExecution() void PixelateOperation::deinitExecution()
{ {
this->m_inputOperation = NULL; this->m_inputOperation = NULL;
} }
void PixelateOperation::executePixel(float output[4], float x, float y, PixelSampler sampler) void PixelateOperation::executePixel(float output[4], float x, float y, PixelSampler sampler)
{ {
float nx = round(x); float nx = round(x);
float ny = round(y); float ny = round(y);
this->m_inputOperation->read(output, nx, ny, sampler); this->m_inputOperation->read(output, nx, ny, sampler);
} }

View File

@@ -25,13 +25,43 @@
#include "COM_NodeOperation.h" #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 { class PixelateOperation : public NodeOperation {
private: private:
/**
* @brief cached refeerence to the input operation
*/
SocketReader *m_inputOperation; SocketReader *m_inputOperation;
public: public:
/**
* @brief PixelateOperation
* @param dataType the datatype to create this operator for (saves datatype conversions)
*/
PixelateOperation(DataType dataType); PixelateOperation(DataType dataType);
/**
* @brief initialization of the execution
*/
void initExecution(); void initExecution();
/**
* @brief de-initialization of the execution
*/
void deinitExecution(); 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); void executePixel(float output[4], float x, float y, PixelSampler sampler);
}; };