TuttleOFX  1
TuttleOFX/libraries/tuttle/src/tuttle/host/ofx/attribute/OfxhParamDouble.hpp
Go to the documentation of this file.
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 #ifndef SWIG
00051         /// implementation of var args function
00052         virtual void getV( va_list arg ) const OFX_EXCEPTION_SPEC;
00053 
00054         /// implementation of var args function
00055         virtual void getV( const OfxTime time, va_list arg ) const OFX_EXCEPTION_SPEC;
00056 
00057         /// implementation of var args function
00058         virtual void setV( va_list arg, const EChange change ) OFX_EXCEPTION_SPEC;
00059 
00060         /// implementation of var args function
00061         virtual void setV( const OfxTime time, va_list arg, const EChange change ) OFX_EXCEPTION_SPEC;
00062 
00063         /// implementation of var args function
00064         virtual void deriveV( const OfxTime time, va_list arg ) const OFX_EXCEPTION_SPEC;
00065 
00066         /// implementation of var args function
00067         virtual void integrateV( const OfxTime time1, const OfxTime time2, va_list arg ) const OFX_EXCEPTION_SPEC;
00068 #endif
00069 
00070         std::ostream& displayValues( std::ostream& os ) const
00071         {
00072                 os << getDoubleValue();
00073                 return os;
00074         }
00075 };
00076 
00077 }
00078 }
00079 }
00080 }
00081 
00082 #endif
00083