TuttleOFX  1
ProcessVertexData.hpp
Go to the documentation of this file.
00001 #ifndef _TUTTLE_HOST_PROCESSVERTEXDATA_HPP_
00002 #define _TUTTLE_HOST_PROCESSVERTEXDATA_HPP_
00003 
00004 #include <tuttle/host/INode.hpp>
00005 
00006 #include <tuttle/host/ofx/OfxhCore.hpp>
00007 
00008 #include <string>
00009 
00010 namespace tuttle {
00011 namespace host {
00012 namespace graph {
00013 
00014 class ProcessVertexData
00015 {
00016 typedef ProcessVertexData This;
00017 
00018 public:
00019         ProcessVertexData( const INode::ENodeType apiType = INode::eNodeTypeUnknown )
00020                 : _apiType( apiType )
00021                 , _step( 1 )
00022                 , _interactive( 0 )
00023                 , _outDegree( 0 )
00024                 , _inDegree( 0 )
00025         {
00026                 _timeDomain.min = kOfxFlagInfiniteMin;
00027                 _timeDomain.max = kOfxFlagInfiniteMax;
00028                 _renderTimeRange.min = kOfxFlagInfiniteMin;
00029                 _renderTimeRange.max = kOfxFlagInfiniteMax;
00030                 _renderScale.x = 1.0;
00031                 _renderScale.y = 1.0;
00032         }
00033 
00034         ProcessVertexData( const ProcessVertexData& other ) { operator=( other ); }
00035         ~ProcessVertexData() {}
00036         
00037         /**
00038          * Clear all time dependant datas.
00039          */
00040         void clearTimeInfo()
00041         {
00042                 _times.clear();
00043         }
00044 
00045 public:
00046         friend std::ostream& operator<<( std::ostream& os, const This& vData );
00047 
00048 public:
00049         // const GraphProcessData& _data; /// @todo tuttle: graph common datas, like renderScale
00050         OfxPointD _renderScale;
00051 
00052         INode::ENodeType _apiType;
00053         OfxRangeD _renderTimeRange;
00054         OfxRangeD _timeDomain;
00055         OfxTime _step;
00056         bool _interactive;
00057 
00058         std::size_t _outDegree; ///< number of connected input clips
00059         std::size_t _inDegree; ///< number of nodes using the output of this node
00060 
00061         ///@brief All time dependant datas.
00062         ///@{
00063         typedef std::set<OfxTime> TimesSet;
00064         TimesSet _times; ///< times needed for a specific time
00065         ///@}
00066 };
00067 
00068 }
00069 }
00070 }
00071 
00072 #endif
00073