TuttleOFX  1
OCIOLutProcess.hpp
Go to the documentation of this file.
00001 #ifndef _TUTTLE_PLUGIN_OCIOLutProcess_HPP_
00002 #define _TUTTLE_PLUGIN_OCIOLutProcess_HPP_
00003 
00004 #include "OCIOLutPlugin.hpp"
00005 
00006 #include <OpenColorIO/OpenColorIO.h>
00007 
00008 #include <tuttle/plugin/global.hpp>
00009 #include <tuttle/plugin/ImageGilFilterProcessor.hpp>
00010 #include <tuttle/plugin/exceptions.hpp>
00011 
00012 #include <ofxsImageEffect.h>
00013 #include <ofxsMultiThread.h>
00014 
00015 #include <boost/gil/gil_all.hpp>
00016 
00017 namespace tuttle {
00018 namespace plugin {
00019 namespace ocio{
00020 namespace lut {
00021 
00022 namespace OCIO = OCIO_NAMESPACE;
00023 
00024 /**
00025  * @brief Lut process
00026  */
00027 template<class View>
00028 class OCIOLutProcess : public ImageGilFilterProcessor<View>
00029 {
00030 private:
00031         OCIOLutPlugin&  _plugin;        ///< Rendering plugin
00032         OCIOLutProcessParams _params; ///< parameters
00033 
00034         OCIO::FileTransformRcPtr  fileTransform;
00035         OCIO::GroupTransformRcPtr groupTransform;
00036         OCIO::ConfigRcPtr         config;
00037 
00038 public:
00039         OCIOLutProcess<View>( OCIOLutPlugin & instance );
00040         void setup( const OFX::RenderArguments& args );
00041 
00042         void multiThreadProcessImages( const OfxRectI& procWindowRoW );
00043 
00044         // Lut Transform
00045         void applyLut( View& dst, View& src );
00046 };
00047 
00048 }
00049 }
00050 }
00051 }
00052 
00053 #include "OCIOLutProcess.tcc"
00054 
00055 #endif