diff options
Diffstat (limited to 'source/blender/compositor/intern/COM_InputSocket.cpp')
-rw-r--r-- | source/blender/compositor/intern/COM_InputSocket.cpp | 150 |
1 files changed, 38 insertions, 112 deletions
diff --git a/source/blender/compositor/intern/COM_InputSocket.cpp b/source/blender/compositor/intern/COM_InputSocket.cpp index 4d96d077901..3ca74f157b4 100644 --- a/source/blender/compositor/intern/COM_InputSocket.cpp +++ b/source/blender/compositor/intern/COM_InputSocket.cpp @@ -25,18 +25,18 @@ #include "COM_SocketConnection.h" #include "COM_ExecutionSystem.h" -InputSocket::InputSocket(DataType datatype) :Socket(datatype) +InputSocket::InputSocket(DataType datatype) : Socket(datatype) { this->connection = NULL; this->resizeMode = COM_SC_CENTER; } -InputSocket::InputSocket(DataType datatype, InputSocketResizeMode resizeMode) :Socket(datatype) +InputSocket::InputSocket(DataType datatype, InputSocketResizeMode resizeMode) : Socket(datatype) { this->connection = NULL; this->resizeMode = resizeMode; } -InputSocket::InputSocket(InputSocket *from) :Socket(from->getDataType()) +InputSocket::InputSocket(InputSocket *from) : Socket(from->getDataType()) { this->connection = NULL; this->resizeMode = from->getResizeMode(); @@ -54,7 +54,7 @@ SocketConnection *InputSocket::getConnection() return this->connection; } -void InputSocket::determineResolution(unsigned int resolution[],unsigned int preferredResolution[]) +void InputSocket::determineResolution(unsigned int resolution[], unsigned int preferredResolution[]) { if (this->isConnected()) { this->connection->getFromSocket()->determineResolution(resolution, preferredResolution); @@ -64,68 +64,6 @@ void InputSocket::determineResolution(unsigned int resolution[],unsigned int pre } } -DataType InputSocket::convertToSupportedDataType(DataType datatype) -{ - int supportedDataTypes = getDataType(); - if (supportedDataTypes&datatype) { - return datatype; - } - bool candoValue = supportedDataTypes&COM_DT_VALUE; - bool candoVector = supportedDataTypes&COM_DT_VECTOR; - bool candoColor = supportedDataTypes&COM_DT_COLOR; - - if (datatype == COM_DT_VALUE) { - if (candoColor) { - return COM_DT_COLOR; - } - else if (candoVector) { - return COM_DT_VECTOR; - } - } - else if (datatype == COM_DT_VECTOR) { - if (candoColor) { - return COM_DT_COLOR; - } - else if (candoValue) { - return COM_DT_VALUE; - } - } - else if (datatype == COM_DT_COLOR) { - if (candoVector) { - return COM_DT_VECTOR; - } - else if (candoValue) { - return COM_DT_VALUE; - } - } - return this->getDataType(); -} - -void InputSocket::determineActualDataType() -{ - /// @note: this method is only called for inputsocket that are not connected. - /// @note: passes COM_DT_COLOR, the convertToSupportedDataType converts this to a capable DataType - this->setActualDataType(this->convertToSupportedDataType(COM_DT_COLOR)); - #if 0 // XXX TODO check for proxy node and use output data type? - if (this->getGroupOutputSocket()) { - if (!this->isInsideOfGroupNode()) { - this->getGroupOutputSocket()->determineActualDataType(); - } - } - #endif -} - -void InputSocket::notifyActualInputType(DataType datatype) -{ - DataType supportedDataType = convertToSupportedDataType(datatype); - this->setActualDataType(supportedDataType); - this->fireActualDataTypeSet(); -} - -void InputSocket::fireActualDataTypeSet() -{ - this->getNode()->notifyActualDataTypeSet(this, this->getActualDataType()); -} void InputSocket::relinkConnections(InputSocket *relinkToSocket) { if (!isConnected()) { @@ -140,23 +78,22 @@ void InputSocket::relinkConnections(InputSocket *relinkToSocket) void InputSocket::relinkConnectionsDuplicate(InputSocket *relinkToSocket, int editorNodeInputSocketIndex, ExecutionSystem *graph) { if (!this->isConnected()) { - Node *node = (Node*)this->getNode(); - switch (this->getActualDataType()) { - case COM_DT_UNKNOWN: - case COM_DT_COLOR: - node->addSetColorOperation(graph, relinkToSocket, editorNodeInputSocketIndex); - break; - case COM_DT_VECTOR: - node->addSetVectorOperation(graph, relinkToSocket, editorNodeInputSocketIndex); - break; - case COM_DT_VALUE: - node->addSetValueOperation(graph, relinkToSocket, editorNodeInputSocketIndex); - break; + Node *node = (Node *)this->getNode(); + switch (this->getDataType()) { + case COM_DT_COLOR: + node->addSetColorOperation(graph, relinkToSocket, editorNodeInputSocketIndex); + break; + case COM_DT_VECTOR: + node->addSetVectorOperation(graph, relinkToSocket, editorNodeInputSocketIndex); + break; + case COM_DT_VALUE: + node->addSetValueOperation(graph, relinkToSocket, editorNodeInputSocketIndex); + break; } return; } - SocketConnection * newConnection = new SocketConnection(); - OutputSocket * fromSocket = this->getConnection()->getFromSocket(); + SocketConnection *newConnection = new SocketConnection(); + OutputSocket *fromSocket = this->getConnection()->getFromSocket(); newConnection->setToSocket(relinkToSocket); newConnection->setFromSocket(fromSocket); relinkToSocket->setConnection(newConnection); @@ -170,32 +107,21 @@ void InputSocket::relinkConnections(InputSocket *relinkToSocket, int editorNode relinkConnections(relinkToSocket); } else { - Node *node = (Node*)this->getNode(); - switch (this->getActualDataType()) { - case COM_DT_UNKNOWN: - case COM_DT_COLOR: - node->addSetColorOperation(graph, relinkToSocket, editorNodeInputSocketIndex); - break; - case COM_DT_VECTOR: - node->addSetVectorOperation(graph, relinkToSocket, editorNodeInputSocketIndex); - break; - case COM_DT_VALUE: - node->addSetValueOperation(graph, relinkToSocket, editorNodeInputSocketIndex); - break; + Node *node = (Node *)this->getNode(); + switch (this->getDataType()) { + case COM_DT_COLOR: + node->addSetColorOperation(graph, relinkToSocket, editorNodeInputSocketIndex); + break; + case COM_DT_VECTOR: + node->addSetVectorOperation(graph, relinkToSocket, editorNodeInputSocketIndex); + break; + case COM_DT_VALUE: + node->addSetValueOperation(graph, relinkToSocket, editorNodeInputSocketIndex); + break; } } } -const ChannelInfo *InputSocket::getChannelInfo(const int channelnumber) -{ - if (this->isConnected() && this->connection->getFromSocket()) { - return this->connection->getFromSocket()->getChannelInfo(channelnumber); - } - else { - return NULL; - } -} - bool InputSocket::isStatic() { if (isConnected()) { @@ -214,7 +140,7 @@ SocketReader *InputSocket::getReader() NodeOperation *InputSocket::getOperation() const { if (isConnected()) { - return (NodeOperation*)this->connection->getFromSocket()->getNode(); + return (NodeOperation *)this->connection->getFromSocket()->getNode(); } else { return NULL; @@ -230,14 +156,14 @@ float *InputSocket::getStaticValues() static float default_null = 0.0f; switch (this->getDataType()) { - case COM_DT_VALUE: - return &((bNodeSocketValueFloat*)b_socket->default_value)->value; - case COM_DT_COLOR: - return ((bNodeSocketValueRGBA*)b_socket->default_value)->value; - case COM_DT_VECTOR: - return ((bNodeSocketValueVector*)b_socket->default_value)->value; - default: - /* XXX this should never happen, just added to please the compiler */ - return &default_null; + case COM_DT_VALUE: + return &((bNodeSocketValueFloat *)b_socket->default_value)->value; + case COM_DT_COLOR: + return ((bNodeSocketValueRGBA *)b_socket->default_value)->value; + case COM_DT_VECTOR: + return ((bNodeSocketValueVector *)b_socket->default_value)->value; + default: + /* XXX this should never happen, just added to please the compiler */ + return &default_null; } } |