36 #ifndef IECORENUKE_LENSDISTORT_H
37 #define IECORENUKE_LENSDISTORT_H
39 #include "DDImage/Knobs.h"
40 #include "DDImage/Row.h"
41 #include "DDImage/Thread.h"
42 #include "DDImage/Iop.h"
43 #include "DDImage/Filter.h"
44 #include "IECore/LensModel.h"
63 struct PluginAttribute
67 PluginAttribute( std::string name,
double defaultValue = 0. ) :
70 m_value( defaultValue ),
84 DD::Image::Knob *m_knob;
91 typedef std::vector< PluginAttribute > PluginAttributeList;
103 inline int getLensModel()
const {
return (
int)knob(
"model")->get_value(); };
104 inline PluginAttributeList &attributeList() {
return m_pluginAttributes; };
106 virtual void knobs( DD::Image::Knob_Callback f );
107 virtual int knob_changed( DD::Image::Knob* k );
108 virtual void append( DD::Image::Hash &hash );
109 virtual void _request(
int x,
int y,
int r,
int t, DD::Image::ChannelMask channels,
int count );
110 virtual const char *Class()
const;
111 virtual const char *node_help()
const;
112 virtual void _validate(
bool for_real );
113 virtual void engine(
int y,
int x,
int r, DD::Image::ChannelMask channels, DD::Image::Row & outrow );
115 static void buildDynamicKnobs(
void*, DD::Image::Knob_Callback f );
116 static void addDynamicKnobs(
void*, DD::Image::Knob_Callback f );
117 static const Iop::Description m_description;
118 static DD::Image::Op *build( Node *node );
123 static const char ** modelNames();
124 static int indexFromModelName(
const char *name );
127 void setLensModel( IECore::ConstCompoundObjectPtr parameters );
128 void setLensModel( std::string modelName );
134 void updateLensModel(
bool updateKnobsFromParameters =
false );
137 bool getFileSequencePath( std::string& path );
143 bool setLensFromFile( std::string &returnPath );
146 void updatePluginAttributesFromKnobs();
153 const int m_nThreads;
156 std::vector< IECore::LensModelPtr > m_model;
159 DD::Image::Lock* m_locks;
162 PluginAttributeList m_pluginAttributes;
171 DD::Image::Filter m_filter;
174 DD::Image::Knob *m_kModel;
180 DD::Image::Knob* m_lastStaticKnob;
183 const char *m_assetPath;
186 bool m_hasValidFileSequence;
187 bool m_useFileSequence;
The IECoreNuke namespace holds all the functionality of libIECoreNuke.
Definition: BoolParameterHandler.h:40
Definition: LensDistort.h:59