TuttleOFX  1
ColorSpacePlugin.hpp
Go to the documentation of this file.
00001 #ifndef _TUTTLE_PLUGIN_COLORSPACE_PLUGIN_HPP_
00002 #define _TUTTLE_PLUGIN_COLORSPACE_PLUGIN_HPP_
00003 
00004 #include <tuttle/plugin/ImageEffectGilPlugin.hpp>
00005 
00006 #include "ColorSpaceDefinitions.hpp"
00007 
00008 namespace tuttle {
00009 namespace plugin {
00010 namespace colorspace {
00011 
00012 namespace ttlc = tuttle::plugin::color;
00013 
00014 
00015 struct ColorSpaceProcessParams
00016 {
00017         ttlc::EParamGradationLaw        _gradationIn;
00018         double                          _GammaValueIn;
00019         double                          _BlackPointIn;
00020         double                          _WhitePointIn;
00021         double                          _GammaSensitoIn;
00022 
00023         ttlc::EParamGradationLaw        _gradationOut;
00024         double                          _GammaValueOut;
00025         double                          _BlackPointOut;
00026         double                          _WhitePointOut;
00027         double                          _GammaSensitoOut;
00028         
00029         ttlc::EParamLayout              _layoutIn;
00030         ttlc::EParamLayout              _layoutOut;
00031         ttlc::EColorTemperature         _tempColorIn;
00032         ttlc::EColorTemperature         _tempColorOut;
00033 
00034         ttlc::GradationLaw::gamma       _sGammaIn;
00035         ttlc::GradationLaw::gamma       _sGammaOut;
00036         ttlc::GradationLaw::cineon      _sCineonIn;
00037         ttlc::GradationLaw::cineon      _sCineonOut;
00038 };
00039 
00040 /**
00041  * @brief
00042  *
00043  */
00044 class ColorSpacePlugin : public ImageEffectGilPlugin
00045 {
00046 public:
00047         ColorSpacePlugin( OfxImageEffectHandle handle );
00048 
00049         ColorSpaceProcessParams getProcessParams() const;
00050         void                    changedParam( const OFX::InstanceChangedArgs& args, const std::string& paramName );
00051 
00052         bool                    isIdentity( const OFX::RenderArguments& args, OFX::Clip*& identityClip, double& identityTime );
00053 
00054         void                    render( const OFX::RenderArguments& args );
00055 
00056 private:
00057         void                    updateInParams();
00058         void                    updateOutParams();
00059         
00060 private:
00061         OFX::ChoiceParam*       _paramInGradationLaw;
00062         OFX::ChoiceParam*       _paramOutGradationLaw;
00063         OFX::DoubleParam*       _paramInGamma;
00064         OFX::DoubleParam*       _paramOutGamma;
00065         OFX::DoubleParam*       _paramInBlackPoint;
00066         OFX::DoubleParam*       _paramOutBlackPoint;
00067         OFX::DoubleParam*       _paramInWhitePoint;
00068         OFX::DoubleParam*       _paramOutWhitePoint;
00069         OFX::DoubleParam*       _paramInGammaSensito;
00070         OFX::DoubleParam*       _paramOutGammaSensito;
00071 
00072         OFX::ChoiceParam*       _paramInLayout;
00073         OFX::ChoiceParam*       _paramOutLayout;
00074         OFX::ChoiceParam*       _paramInColorTemp;
00075         OFX::ChoiceParam*       _paramOutColorTemp;
00076 };
00077 
00078 }
00079 }
00080 }
00081 
00082 #endif