TuttleOFX
1
|
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