TuttleOFX
1
|
00001 #ifndef _TUTTLE_HOST_OFX_PARAM_PARAMDOUBLE_HPP_ 00002 #define _TUTTLE_HOST_OFX_PARAM_PARAMDOUBLE_HPP_ 00003 00004 #include "OfxhParam.hpp" 00005 #include "OfxhParamDescriptor.hpp" 00006 #include "OfxhParamSet.hpp" 00007 #include "OfxhKeyframeParam.hpp" 00008 00009 namespace tuttle { 00010 namespace host { 00011 namespace ofx { 00012 namespace attribute { 00013 00014 class OfxhParamDouble 00015 : public OfxhParam 00016 , public OfxhKeyframeParam 00017 { 00018 protected: 00019 std::size_t _index; 00020 00021 public: 00022 typedef double BaseType; 00023 OfxhParamDouble( const OfxhParamDescriptor& descriptor, const std::string& name, OfxhParamSet& setInstance, const std::size_t index = 0 ) 00024 : OfxhParam( descriptor, name, setInstance ) 00025 , _index( index ) 00026 { 00027 getEditableProperties().addNotifyHook( kOfxParamPropDisplayMin, this ); 00028 getEditableProperties().addNotifyHook( kOfxParamPropDisplayMax, this ); 00029 } 00030 00031 // Deriving implementatation needs to overide these 00032 virtual void getValue( double& ) const OFX_EXCEPTION_SPEC = 0; 00033 virtual void getValueAtTime( const OfxTime time, double& ) const OFX_EXCEPTION_SPEC = 0; 00034 virtual void setValue( const double&, const EChange change ) OFX_EXCEPTION_SPEC = 0; 00035 virtual void setValueAtTime( const OfxTime time, const double&, const EChange change ) OFX_EXCEPTION_SPEC = 0; 00036 00037 virtual void setValue( const int& v, const EChange change ) OFX_EXCEPTION_SPEC 00038 { 00039 this->setValue( (const double)( v ), change ); 00040 } 00041 00042 virtual void setValueAtTime( const OfxTime time, const int& v, const EChange change ) OFX_EXCEPTION_SPEC 00043 { 00044 this->setValueAtTime( time, (const double)( v ), change ); 00045 } 00046 00047 virtual void derive( const OfxTime time, double& ) const OFX_EXCEPTION_SPEC = 0; 00048 virtual void integrate( const OfxTime time1, const OfxTime time2, double& ) const OFX_EXCEPTION_SPEC = 0; 00049 00050 /// implementation of var args function 00051 virtual void getV( va_list arg ) const OFX_EXCEPTION_SPEC; 00052 00053 /// implementation of var args function 00054 virtual void getV( const OfxTime time, va_list arg ) const OFX_EXCEPTION_SPEC; 00055 00056 /// implementation of var args function 00057 virtual void setV( va_list arg, const EChange change ) OFX_EXCEPTION_SPEC; 00058 00059 /// implementation of var args function 00060 virtual void setV( const OfxTime time, va_list arg, const EChange change ) OFX_EXCEPTION_SPEC; 00061 00062 /// implementation of var args function 00063 virtual void deriveV( const OfxTime time, va_list arg ) const OFX_EXCEPTION_SPEC; 00064 00065 /// implementation of var args function 00066 virtual void integrateV( const OfxTime time1, const OfxTime time2, va_list arg ) const OFX_EXCEPTION_SPEC; 00067 00068 std::ostream& displayValues( std::ostream& os ) const 00069 { 00070 os << getDoubleValue(); 00071 return os; 00072 } 00073 }; 00074 00075 } 00076 } 00077 } 00078 } 00079 00080 #endif 00081