TuttleOFX
1
|
00001 #ifndef _TUTTLE_PLUGIN_INTERACT_COLOR_HPP_ 00002 #define _TUTTLE_PLUGIN_INTERACT_COLOR_HPP_ 00003 00004 #include <ofxPixels.h> 00005 #include <ofxCore.h> 00006 #include <ofxsParam.h> 00007 00008 namespace tuttle { 00009 namespace plugin { 00010 namespace interact { 00011 00012 struct IColor 00013 { 00014 virtual ~IColor() = 0; 00015 virtual OfxRGBAColourD getColor( const OfxTime time ) const = 0; 00016 }; 00017 00018 struct Color : public IColor 00019 { 00020 OfxRGBAColourD _color; 00021 00022 Color( const OfxRGBAColourD& color ) 00023 : _color(color) 00024 {} 00025 00026 Color() 00027 { 00028 _color.r = _color.g = _color.b = _color.a = 1.0; 00029 } 00030 00031 inline OfxRGBAColourD getColor( const OfxTime time ) const 00032 { 00033 return _color; 00034 } 00035 }; 00036 00037 struct ColorRGBAParam : public IColor 00038 { 00039 const OFX::RGBAParam& _param; 00040 ColorRGBAParam( const OFX::RGBAParam* param ) 00041 : _param( *param ) 00042 {} 00043 00044 inline OfxRGBAColourD getColor( const OfxTime time ) const 00045 { 00046 return _param.getValue(); 00047 } 00048 }; 00049 00050 struct ColorRGBParam : public IColor 00051 { 00052 const OFX::RGBParam& _param; 00053 ColorRGBParam( const OFX::RGBParam* param ) 00054 : _param( *param ) 00055 {} 00056 00057 inline OfxRGBAColourD getColor( const OfxTime time ) const 00058 { 00059 OfxRGBAColourD color; 00060 color.a = 1.0; 00061 _param.getValue( color.r, color.g, color.b ); 00062 return color; 00063 } 00064 }; 00065 00066 00067 } 00068 } 00069 } 00070 00071 #endif 00072