TuttleOFX  1
PrintPlugin.cpp
Go to the documentation of this file.
00001 
00002 #include "PrintPlugin.hpp"
00003 #include "PrintProcess.hpp"
00004 #include "PrintDefinitions.hpp"
00005 
00006 #include <boost/gil/gil_all.hpp>
00007 
00008 namespace tuttle {
00009 namespace plugin {
00010 namespace print {
00011 
00012 
00013 PrintPlugin::PrintPlugin( OfxImageEffectHandle handle )
00014 : ImageEffectGilPlugin( handle )
00015 {
00016         _paramMode          = fetchChoiceParam ( kParamMode );
00017         _paramOutput        = fetchChoiceParam ( kParamOutput );
00018         _paramColor         = fetchChoiceParam ( kParamColor );
00019         _paramPixel         = fetchInt2DParam  ( kParamPixel );
00020         _paramRegionMin     = fetchInt2DParam  ( kParamRegionMin );
00021         _paramRegionMax     = fetchInt2DParam  ( kParamRegionMax );
00022         _paramOutputColumns = fetchIntParam    ( kParamColumns );
00023         _paramFlip          = fetchBooleanParam( kParamFlip );
00024         _paramOpenGlWindow  = fetchBooleanParam( kParamOutputOpenGL );
00025 
00026         updateParams( );
00027 }
00028 
00029 void PrintPlugin::updateParams()
00030 {
00031         _paramPixel     -> setIsSecretAndDisabled( true );
00032         _paramRegionMin -> setIsSecretAndDisabled( true );
00033         _paramRegionMax -> setIsSecretAndDisabled( true );
00034         if( _paramMode->getValue() == eParamModeRegion )
00035         {
00036                 _paramRegionMin -> setIsSecretAndDisabled( false );
00037                 _paramRegionMax -> setIsSecretAndDisabled( false );
00038         }
00039         if( _paramMode->getValue() == eParamModePixel )
00040         {
00041                 _paramPixel     -> setIsSecretAndDisabled( false );
00042         }
00043 }
00044 
00045 PrintProcessParams<PrintPlugin::Scalar> PrintPlugin::getProcessParams( const OfxPointD& renderScale ) const
00046 {
00047         PrintProcessParams<Scalar> params;
00048 
00049         params._mode         = static_cast<EParamMode>( _paramMode->getValue() );
00050         params._output       = static_cast<EParamOutput>( _paramOutput->getValue() );
00051         OfxPointI pix        = _paramPixel->getValue();
00052         params._pixel.x      = pix.x;
00053         params._pixel.y      = pix.y;
00054         OfxPointI rMin       = _paramRegionMin->getValue();
00055         OfxPointI rMax       = _paramRegionMax->getValue();
00056         params._region.x1    = rMin.x;
00057         params._region.y1    = rMin.y;
00058         params._region.x2    = rMax.x;
00059         params._region.y2    = rMax.y;
00060         params._flip         = _paramFlip->getValue();
00061         params._openGlViewer = _paramOpenGlWindow->getValue();
00062         params._colorMode    = ( EParamColor ) _paramColor->getValue();
00063         params._cols         = _paramOutputColumns->getValue();
00064         return params;
00065 }
00066 
00067 void PrintPlugin::changedParam( const OFX::InstanceChangedArgs &args, const std::string &paramName )
00068 {
00069         updateParams();
00070 }
00071 
00072 
00073 bool PrintPlugin::isIdentity( const OFX::RenderArguments& args, OFX::Clip*& identityClip, double& identityTime )
00074 {
00075         return false;
00076 }
00077 
00078 /**
00079  * @brief The overridden render function
00080  * @param[in]   args     Rendering parameters
00081  */
00082 void PrintPlugin::render( const OFX::RenderArguments &args )
00083 {
00084         doGilRender<PrintProcess>( *this, args );
00085 }
00086 
00087 
00088 }
00089 }
00090 }