TuttleOFX  1
NormalizePlugin.hpp
Go to the documentation of this file.
00001 #ifndef _TUTTLE_PLUGIN_NORMALIZE_PLUGIN_HPP_
00002 #define _TUTTLE_PLUGIN_NORMALIZE_PLUGIN_HPP_
00003 
00004 #include "NormalizeDefinitions.hpp"
00005 
00006 #include <tuttle/plugin/ImageEffectGilPlugin.hpp>
00007 
00008 namespace tuttle {
00009 namespace plugin {
00010 namespace normalize {
00011 
00012 template<typename Scalar>
00013 struct NormalizeProcessParams
00014 {
00015         EParamMode _mode;
00016         EParamAnalyseMode _analyseMode;
00017         
00018         boost::gil::rgba32f_pixel_t _srcMinColor;
00019         boost::gil::rgba32f_pixel_t _srcMaxColor;
00020         boost::gil::rgba32f_pixel_t _dstMinColor;
00021         boost::gil::rgba32f_pixel_t _dstMaxColor;
00022         bool _processR;
00023         bool _processG;
00024         bool _processB;
00025         bool _processA;
00026         
00027 };
00028 
00029 /**
00030  * @brief Normalize plugin
00031  */
00032 class NormalizePlugin : public ImageEffectGilPlugin
00033 {
00034 public:
00035         typedef float Scalar;
00036 public:
00037     NormalizePlugin( OfxImageEffectHandle handle );
00038 
00039 public:
00040         NormalizeProcessParams<Scalar> getProcessParams( const OfxPointD& renderScale = OFX::kNoRenderScale ) const;
00041 
00042     void changedParam( const OFX::InstanceChangedArgs &args, const std::string &paramName );
00043 
00044         void getRegionsOfInterest( const OFX::RegionsOfInterestArguments& args, OFX::RegionOfInterestSetter& rois );
00045 
00046         bool isIdentity( const OFX::RenderArguments& args, OFX::Clip*& identityClip, double& identityTime );
00047 
00048     void render( const OFX::RenderArguments &args );
00049         
00050 public:
00051         OFX::ChoiceParam* _mode;
00052         OFX::ChoiceParam* _analyseMode;
00053         OFX::PushButtonParam* _analyseNow;
00054 
00055         OFX::GroupParam* _srcGroup;
00056         OFX::RGBAParam* _srcMinColor;
00057         OFX::RGBAParam* _srcMaxColor;
00058         OFX::GroupParam* _dstGroup;
00059         OFX::RGBAParam* _dstMinColor;
00060         OFX::RGBAParam* _dstMaxColor;
00061         OFX::GroupParam* _processGroup;
00062         OFX::BooleanParam* _processR;
00063         OFX::BooleanParam* _processG;
00064         OFX::BooleanParam* _processB;
00065         OFX::BooleanParam* _processA;
00066 };
00067 
00068 }
00069 }
00070 }
00071 
00072 #endif