TuttleOFX
1
|
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