TuttleOFX  1
TuttleOFX/libraries/tuttle/src/tuttle/plugin/interact/Color.hpp
Go to the documentation of this file.
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