TuttleOFX  1
tuttle::host::ofx::imageEffect::OfxhImageEffectNode Class Reference

#include <OfxhImageEffectNode.hpp>

Inheritance diagram for tuttle::host::ofx::imageEffect::OfxhImageEffectNode:
Collaboration diagram for tuttle::host::ofx::imageEffect::OfxhImageEffectNode:

Public Types

typedef OfxhImageEffectNode This
typedef std::map
< attribute::OfxhClipImage
*, std::vector< OfxRangeD > > 
ClipRangeMap
 a map used to specify needed frame ranges on set of clips
typedef std::set< OfxTimeTimesSet
typedef std::map< std::string,
TimesSet
ClipTimesSetMap

Public Member Functions

 OfxhImageEffectNode (const OfxhImageEffectPlugin &plugin, const OfxhImageEffectNodeDescriptor &other, const std::string &context, bool interactive)
 constructor based on clip descriptor
 OfxhImageEffectNode (const OfxhImageEffectNode &other)
virtual ~OfxhImageEffectNode ()=0
void copyAttributesValues (const OfxhImageEffectNode &other)
bool operator== (const This &) const
bool operator!= (const This &other) const
virtual property::OfxhSetgetParamSetProps ()
 implemented for Param::SetInstance
virtual void paramChanged (const attribute::OfxhParam &param, const attribute::EChange change)
 implemented for Param::SetInstance
const
OfxhImageEffectNodeDescriptor
getDescriptor () const
 get the descriptor for this instance
const
tuttle::host::ofx::imageEffect::OfxhImageEffectPlugin
getPlugin () const
 return the plugin this instance was created with
const std::string & getContext () const
 return the context this instance was created with
virtual const std::string & getDefaultOutputFielding () const =0
const std::string & getOutputFielding () const
 get output fielding as set in the clip preferences action.
const std::string & getOutputPreMultiplication () const
 get output fielding as set in the clip preferences action.
double getOutputFrameRate () const
 get the output frame rate, as set in the clip prefences action.
double getOutputPixelAspectRatio () const
bool checkClipConnectionStatus () const
 are all the non optional clips connected
bool continuousSamples () const
bool isFrameVarying () const
virtual int abort ()=0
 override this to make processing abort, return 1 to abort processing
virtual OfxhMemorynewMemoryInstance (size_t nBytes)=0
 override this to use your own memory instance - must inherrit from OfxhMemory
OfxhMemoryimageMemoryAlloc (size_t nBytes)
size_t upperGetDimension (const std::string &name)
virtual void notify (const std::string &name, bool singleValue, int indexOrN) OFX_EXCEPTION_SPEC
 overridden from Property::Notify
virtual double getDoubleProperty (const std::string &name, int index) const OFX_EXCEPTION_SPEC
 overridden from gethook, get the virtuals for viewport size, pixel scale, background colour
virtual void getDoublePropertyN (const std::string &name, double *values, int count) const OFX_EXCEPTION_SPEC
 overridden from gethook, get the virtuals for viewport size, pixel scale, background colour
virtual void reset (const std::string &name) OFX_EXCEPTION_SPEC
 overridden from gethook, don't know what to do
virtual size_t getDimension (const std::string &name) const OFX_EXCEPTION_SPEC
 override this to fetch the dimension size.
virtual void getProjectSize (double &xSize, double &ySize) const =0
virtual void getProjectOffset (double &xOffset, double &yOffset) const =0
virtual void getProjectExtent (double &xSize, double &ySize) const =0
virtual double getProjectPixelAspectRatio () const =0
virtual double getEffectDuration () const =0
virtual double getFrameRecursive () const =0
virtual void getRenderScaleRecursive (double &x, double &y) const =0
virtual bool isChromaticComponent (const std::string &str) const
virtual void createInstanceAction () OFX_EXCEPTION_SPEC
virtual void beginInstanceChangedAction (const std::string &why) OFX_EXCEPTION_SPEC
virtual void paramInstanceChangedAction (const std::string &paramName, const std::string &why, OfxTime time, OfxPointD renderScale) OFX_EXCEPTION_SPEC
virtual void clipInstanceChangedAction (const std::string &clipName, const std::string &why, OfxTime time, OfxPointD renderScale) OFX_EXCEPTION_SPEC
virtual void endInstanceChangedAction (const std::string &why) OFX_EXCEPTION_SPEC
virtual void purgeCachesAction () OFX_EXCEPTION_SPEC
virtual void syncPrivateDataAction () OFX_EXCEPTION_SPEC
virtual void beginInstanceEditAction () OFX_EXCEPTION_SPEC
virtual void endInstanceEditAction () OFX_EXCEPTION_SPEC
virtual void beginSequenceRenderAction (OfxTime startFrame, OfxTime endFrame, OfxTime step, bool interactive, OfxPointD renderScale) OFX_EXCEPTION_SPEC
virtual void renderAction (OfxTime time, const std::string &field, const OfxRectI &renderWindow, OfxPointD renderScale) OFX_EXCEPTION_SPEC
virtual void endSequenceRenderAction (OfxTime startFrame, OfxTime endFrame, OfxTime step, bool interactive, OfxPointD renderScale) OFX_EXCEPTION_SPEC
virtual void getRegionOfDefinitionAction (OfxTime time, OfxPointD renderScale, OfxRectD &rod) const OFX_EXCEPTION_SPEC
virtual void getRegionOfInterestAction (OfxTime time, OfxPointD renderScale, const OfxRectD &roi, std::map< attribute::OfxhClipImage *, OfxRectD > &rois) const OFX_EXCEPTION_SPEC
virtual void getFramesNeededAction (OfxTime time, ClipRangeMap &rangeMap) const OFX_EXCEPTION_SPEC
ClipTimesSetMap getFramesNeeded (const OfxTime time) const
virtual bool isIdentityAction (OfxTime &time, const std::string &field, const OfxRectI &renderWindow, OfxPointD renderScale, std::string &clip) const OFX_EXCEPTION_SPEC
virtual bool getTimeDomainAction (OfxRangeD &range) const OFX_EXCEPTION_SPEC
void initOverlayDescriptor (int bitDepthPerComponent=8, bool hasAlpha=false)
const
interact::OfxhInteractDescriptor
getOverlayDescriptor () const
virtual void getClipPreferencesAction () OFX_EXCEPTION_SPEC
bool runGetClipPrefsConditionally ()

Protected Member Functions

void initHook ()
void populate ()
void populateParams (const imageEffect::OfxhImageEffectNodeDescriptor &descriptor)
virtual void vmessage (const char *type, const char *id, const char *format, va_list args) const OFX_EXCEPTION_SPEC=0
 make a clip
virtual OfxStatus mainEntry (const char *action, const void *handle, property::OfxhSet *inArgs, property::OfxhSet *outArgs) const
 call the effect entry point
virtual bool canCurrentlyHandleMultipleClipDepths () const
OfxRectD computeClipRodUnionAtTimes (const attribute::OfxhClipImage &clip, const TimesSet &timesSet) const
virtual OfxRectD calcDefaultRegionOfDefinition (OfxTime time, OfxPointD renderScale) const
 calculate the default rod for this effect instance
virtual void setCustomInArgs (const std::string &action, property::OfxhSet &inArgs) const
 this is used to populate with any extra action in arguments that may be needed
virtual void setCustomOutArgs (const std::string &action, property::OfxhSet &outArgs) const
 this is used to populate with any extra action out arguments that may be needed
virtual void examineOutArgs (const std::string &action, OfxStatus stat, const property::OfxhSet &outArgs) const
 this is used retrieve any out args after the action was called in mainEntry
virtual const std::string & bestSupportedBitDepth (const std::string &depth) const
virtual const std::string & findMostChromaticComponents (const std::string &a, const std::string &b) const
bool isSupportedBitDepth (const std::string &depth) const

Protected Attributes

const OfxhImageEffectPlugin_plugin
std::string _context
const
OfxhImageEffectNodeDescriptor
_descriptor
bool _interactive
bool _created
bool _continuousSamples
 set by clip prefs
bool _frameVarying
 set by clip prefs
std::string _outputPreMultiplication
 set by clip prefs
std::string _outputFielding
 set by clip prefs
double _outputFrameRate
 set by clip prefs

Private Member Functions

attribute::OfxhClipImagegetOutputOfxhClip ()
const attribute::OfxhClipImagegetOutputOfxhClip () const
virtual void setDefaultClipPreferences ()
 Setup the default clip preferences on the clips.
virtual void setupClipInstancePreferences (property::OfxhSet &outArgs)
 Setup the default host clip instance members data retrieved from the plugin instance.
virtual void setupClipPreferencesArgs (property::OfxhSet &outArgs, std::list< std::string > &outKeepPropNamesOwnership)
bool isLeafNode () const
 Check if the node is a leaf in the graph. If there is no input clip connected.
template<class Archive >
void serialize (Archive &ar, const unsigned int version)

Friends

class boost::serialization::access

Detailed Description

an image effect plugin instance.

Client code needs to filling the pure virtuals in this.

Definition at line 62 of file OfxhImageEffectNode.hpp.


Member Typedef Documentation

a map used to specify needed frame ranges on set of clips

Definition at line 74 of file OfxhImageEffectNode.hpp.


Constructor & Destructor Documentation

tuttle::host::ofx::imageEffect::OfxhImageEffectNode::OfxhImageEffectNode ( const OfxhImageEffectNode other)
tuttle::host::ofx::imageEffect::OfxhImageEffectNode::~OfxhImageEffectNode ( ) [pure virtual]

Definition at line 342 of file OfxhImageEffectNode.cpp.

References _created, tuttle::host::ofx::imageEffect::OfxhImageEffectNodeBase::getHandle(), kOfxActionDestroyInstance, and mainEntry().

Here is the call graph for this function:


Member Function Documentation

virtual int tuttle::host::ofx::imageEffect::OfxhImageEffectNode::abort ( ) [pure virtual]

override this to make processing abort, return 1 to abort processing

Implemented in tuttle::host::ImageEffectNode.

void tuttle::host::ofx::imageEffect::OfxhImageEffectNode::beginInstanceChangedAction ( const std::string &  why) [virtual]
void tuttle::host::ofx::imageEffect::OfxhImageEffectNode::beginInstanceEditAction ( ) [virtual]

end edit instance

Definition at line 596 of file OfxhImageEffectNode.cpp.

References tuttle::host::ofx::imageEffect::OfxhImageEffectNodeBase::getHandle(), kOfxActionBeginInstanceEdit, kOfxStatOK, kOfxStatReplyDefault, and mainEntry().

Here is the call graph for this function:

const std::string & tuttle::host::ofx::imageEffect::OfxhImageEffectNode::bestSupportedBitDepth ( const std::string &  depth) const [protected, virtual]

find the best supported bit depth for the given one. Override this if you define more depths

given the bit depth, find the best match for it.

Something wrong here

Definition at line 1487 of file OfxhImageEffectNode.cpp.

References tuttle::host::ofx::imageEffect::OfxhImageEffectNodeBase::isBitDepthSupported(), kOfxBitDepthByte, kOfxBitDepthFloat, kOfxBitDepthNone, and kOfxBitDepthShort.

Referenced by tuttle::host::ImageEffectNode::maximizeBitDepthFromReadsToWrites(), and setDefaultClipPreferences().

Here is the call graph for this function:

bool tuttle::host::ofx::imageEffect::OfxhImageEffectNode::canCurrentlyHandleMultipleClipDepths ( ) const [protected, virtual]

function to check for multiple bit depth support The answer will depend on host, plugin and context

does the host support 'em

does the plug-in support 'em

no support, so no

Definition at line 1188 of file OfxhImageEffectNode.cpp.

References _context, tuttle::host::core(), tuttle::host::Core::getHost(), tuttle::host::ofx::property::OfxhSet::getIntProperty(), tuttle::host::ofx::OfxhHost::getProperties(), kOfxImageEffectContextPaint, kOfxImageEffectContextRetimer, kOfxImageEffectContextTransition, kOfxImageEffectPropSupportsMultipleClipDepths, and tuttle::host::ofx::imageEffect::OfxhImageEffectNodeBase::supportsMultipleClipDepths().

Referenced by setDefaultClipPreferences(), and setupClipPreferencesArgs().

Here is the call graph for this function:

bool tuttle::host::ofx::imageEffect::OfxhImageEffectNode::checkClipConnectionStatus ( ) const

are all the non optional clips connected

check for connection

Definition at line 369 of file OfxhImageEffectNode.cpp.

References tuttle::host::ofx::attribute::OfxhClipImageSet::_clipImages.

void tuttle::host::ofx::imageEffect::OfxhImageEffectNode::clipInstanceChangedAction ( const std::string &  clipName,
const std::string &  why,
OfxTime  time,
OfxPointD  renderScale 
) [virtual]
OfxRectD tuttle::host::ofx::imageEffect::OfxhImageEffectNode::computeClipRodUnionAtTimes ( const attribute::OfxhClipImage clip,
const TimesSet timesSet 
) const [protected]

Definition at line 704 of file OfxhImageEffectNode.cpp.

References tuttle::host::ofx::attribute::OfxhClipImage::fetchRegionOfDefinition(), and tuttle::ofx::rectUnion().

Referenced by calcDefaultRegionOfDefinition().

Here is the call graph for this function:

bool tuttle::host::ofx::imageEffect::OfxhImageEffectNode::continuousSamples ( ) const [inline]

can this this instance render images at arbitrary times, not just frame boundaries set by getClipPreferenceAction()

Definition at line 167 of file OfxhImageEffectNode.hpp.

References _continuousSamples.

void tuttle::host::ofx::imageEffect::OfxhImageEffectNode::copyAttributesValues ( const OfxhImageEffectNode other) [inline]
void tuttle::host::ofx::imageEffect::OfxhImageEffectNode::createInstanceAction ( ) [virtual]

create an instance. This needs to be called _after_ construction and _after_ the host populates it's params and clips with the 'correct' values (either persisted ones or the defaults)

create a clip instance

we need to init the clips before we call create instance incase they try and fetch something in create instance, which they are allowed

Definition at line 452 of file OfxhImageEffectNode.cpp.

References _created, tuttle::host::ofx::imageEffect::OfxhImageEffectNodeBase::getHandle(), tuttle::host::ofx::imageEffect::OfxhImageEffectNodeBase::getName(), kOfxActionCreateInstance, kOfxStatOK, kOfxStatReplyDefault, mainEntry(), and setDefaultClipPreferences().

Referenced by tuttle::host::ofx::imageEffect::OfxhImageEffectPlugin::createInstance(), and tuttle::host::ImageEffectNode::ImageEffectNode().

Here is the call graph for this function:

void tuttle::host::ofx::imageEffect::OfxhImageEffectNode::endInstanceChangedAction ( const std::string &  why) [virtual]
void tuttle::host::ofx::imageEffect::OfxhImageEffectNode::endInstanceEditAction ( ) [virtual]

end edit instance

Definition at line 607 of file OfxhImageEffectNode.cpp.

References tuttle::host::ofx::imageEffect::OfxhImageEffectNodeBase::getHandle(), kOfxActionEndInstanceEdit, kOfxStatOK, kOfxStatReplyDefault, and mainEntry().

Here is the call graph for this function:

void tuttle::host::ofx::imageEffect::OfxhImageEffectNode::examineOutArgs ( const std::string &  action,
OfxStatus  stat,
const property::OfxhSet outArgs 
) const [protected, virtual]

this is used retrieve any out args after the action was called in mainEntry

this is used to populate with any extra action out arguments that may be needed

Definition at line 364 of file OfxhImageEffectNode.cpp.

Referenced by mainEntry().

const std::string & tuttle::host::ofx::imageEffect::OfxhImageEffectNode::findMostChromaticComponents ( const std::string &  a,
const std::string &  b 
) const [protected, virtual]

find the most chromatic components out of the two. Override this if you define more chromatic components

Definition at line 1469 of file OfxhImageEffectNode.cpp.

References kOfxImageComponentNone, kOfxImageComponentRGB, and kOfxImageComponentRGBA.

Referenced by tuttle::host::ImageEffectNode::initComponents(), and setDefaultClipPreferences().

void tuttle::host::ofx::imageEffect::OfxhImageEffectNode::getClipPreferencesAction ( ) [virtual]

Run the clip preferences action from the effect.

This will look into the input clips and output clip and set the following properties that the effect should fetch the image at.

  • pixel depth
  • components
  • pixel aspect ratio It will also set on the effect itself
  • whether it is continuously samplable
  • the premult state of the output
  • whether the effect is frame varying
  • the fielding of the output clip

This will be run automatically by the effect in the following situations...

  • an input clip is changed
  • a clip preferences slave param is changed

The host still needs to call this explicitly just after the effect is wired up.

the idea here is the clip prefs live as active props on the effect and are set up by clip preferences. The action manages the clip preferences bits. We also monitor clip and param changes and flag when clip prefs is dirty. call the clip preferences action

create the out args with the stuff that does not depend on individual clips

Definition at line 1439 of file OfxhImageEffectNode.cpp.

References tuttle::host::ofx::attribute::OfxhClipImageSet::_clipPrefsDirty, tuttle::host::ofx::imageEffect::OfxhImageEffectNodeBase::getHandle(), kOfxImageEffectActionGetClipPreferences, kOfxStatOK, kOfxStatReplyDefault, mainEntry(), setupClipInstancePreferences(), and setupClipPreferencesArgs().

Referenced by runGetClipPrefsConditionally(), and tuttle::host::ImageEffectNode::setup1().

Here is the call graph for this function:

const std::string& tuttle::host::ofx::imageEffect::OfxhImageEffectNode::getContext ( void  ) const [inline]

return the context this instance was created with

Definition at line 140 of file OfxhImageEffectNode.hpp.

References _context.

Referenced by tuttle::host::Graph::getNodesByContext(), and tuttle::host::ImageEffectNode::progressStart().

virtual const std::string& tuttle::host::ofx::imageEffect::OfxhImageEffectNode::getDefaultOutputFielding ( ) const [pure virtual]

get default output fielding. This is passed into the clip prefs action and might be mapped (if the host allows such a thing)

Implemented in tuttle::host::ImageEffectNode.

Referenced by setDefaultClipPreferences().

const OfxhImageEffectNodeDescriptor& tuttle::host::ofx::imageEffect::OfxhImageEffectNode::getDescriptor ( ) const [inline]

get the descriptor for this instance

Definition at line 134 of file OfxhImageEffectNode.hpp.

References _descriptor.

Referenced by tuttle::host::ImageEffectNode::getVersion().

size_t tuttle::host::ofx::imageEffect::OfxhImageEffectNode::getDimension ( const std::string &  name) const [virtual]

override this to fetch the dimension size.

Reimplemented from tuttle::host::ofx::property::OfxhGetHook.

Definition at line 223 of file OfxhImageEffectNode.cpp.

References kOfxStatErrMissingHostFeature, and TUTTLE_LOG_ERROR.

double tuttle::host::ofx::imageEffect::OfxhImageEffectNode::getDoubleProperty ( const std::string &  name,
int  index 
) const [virtual]

overridden from gethook, get the virtuals for viewport size, pixel scale, background colour

get the virtuals for viewport size, pixel scale, background colour

Reimplemented from tuttle::host::ofx::property::OfxhGetHook.

Definition at line 252 of file OfxhImageEffectNode.cpp.

References kOfxImageEffectInstancePropEffectDuration, kOfxImageEffectPropFrameRate, kOfxImageEffectPropProjectExtent, kOfxImageEffectPropProjectOffset, kOfxImageEffectPropProjectPixelAspectRatio, kOfxImageEffectPropProjectSize, kOfxStatErrBadIndex, and kOfxStatErrUnknown.

void tuttle::host::ofx::imageEffect::OfxhImageEffectNode::getDoublePropertyN ( const std::string &  name,
double *  values,
int  count 
) const [virtual]
virtual double tuttle::host::ofx::imageEffect::OfxhImageEffectNode::getEffectDuration ( ) const [pure virtual]
virtual double tuttle::host::ofx::imageEffect::OfxhImageEffectNode::getFrameRecursive ( ) const [pure virtual]

This is called whenever a param is changed by the plugin so that the recursive instanceChangedAction will be fed the correct frame

Implemented in tuttle::host::ImageEffectNode.

Referenced by paramChanged().

const std::string& tuttle::host::ofx::imageEffect::OfxhImageEffectNode::getOutputFielding ( ) const [inline]

get output fielding as set in the clip preferences action.

Definition at line 152 of file OfxhImageEffectNode.hpp.

References _outputFielding.

double tuttle::host::ofx::imageEffect::OfxhImageEffectNode::getOutputFrameRate ( ) const [inline]

get the output frame rate, as set in the clip prefences action.

Definition at line 158 of file OfxhImageEffectNode.hpp.

References _outputFrameRate.

Referenced by tuttle::host::attribute::ClipImage::getUnmappedFrameRate(), and tuttle::host::ImageEffectNode::initFps().

attribute::OfxhClipImage& tuttle::host::ofx::imageEffect::OfxhImageEffectNode::getOutputOfxhClip ( ) [inline, private]

Definition at line 114 of file OfxhImageEffectNode.hpp.

References tuttle::host::ofx::attribute::OfxhClipImageSet::getClip(), and kOfxImageEffectOutputClipName.

Referenced by getOutputPixelAspectRatio(), and setDefaultClipPreferences().

Here is the call graph for this function:

const attribute::OfxhClipImage& tuttle::host::ofx::imageEffect::OfxhImageEffectNode::getOutputOfxhClip ( ) const [inline, private]

Definition at line 115 of file OfxhImageEffectNode.hpp.

References tuttle::host::ofx::attribute::OfxhClipImageSet::getClip(), and kOfxImageEffectOutputClipName.

Here is the call graph for this function:

double tuttle::host::ofx::imageEffect::OfxhImageEffectNode::getOutputPixelAspectRatio ( ) const [inline]
const std::string& tuttle::host::ofx::imageEffect::OfxhImageEffectNode::getOutputPreMultiplication ( ) const [inline]

get output fielding as set in the clip preferences action.

Definition at line 155 of file OfxhImageEffectNode.hpp.

References _outputPreMultiplication.

const interact::OfxhInteractDescriptor& tuttle::host::ofx::imageEffect::OfxhImageEffectNode::getOverlayDescriptor ( ) const [inline]

Definition at line 400 of file OfxhImageEffectNode.hpp.

References _descriptor, and tuttle::host::ofx::imageEffect::OfxhImageEffectNodeDescriptor::getOverlayDescriptor().

Here is the call graph for this function:

property::OfxhSet & tuttle::host::ofx::imageEffect::OfxhImageEffectNode::getParamSetProps ( ) [virtual]

implemented for Param::SetInstance

implemented for Param::SetDescriptor

Implements tuttle::host::ofx::attribute::OfxhParamSetAccessor.

Definition at line 217 of file OfxhImageEffectNode.cpp.

References tuttle::host::ofx::imageEffect::OfxhImageEffectNodeBase::_properties.

const tuttle::host::ofx::imageEffect::OfxhImageEffectPlugin& tuttle::host::ofx::imageEffect::OfxhImageEffectNode::getPlugin ( ) const [inline]
virtual void tuttle::host::ofx::imageEffect::OfxhImageEffectNode::getProjectExtent ( double &  xSize,
double &  ySize 
) const [pure virtual]
virtual void tuttle::host::ofx::imageEffect::OfxhImageEffectNode::getProjectOffset ( double &  xOffset,
double &  yOffset 
) const [pure virtual]
virtual double tuttle::host::ofx::imageEffect::OfxhImageEffectNode::getProjectPixelAspectRatio ( ) const [pure virtual]
virtual void tuttle::host::ofx::imageEffect::OfxhImageEffectNode::getProjectSize ( double &  xSize,
double &  ySize 
) const [pure virtual]
void tuttle::host::ofx::imageEffect::OfxhImageEffectNode::getRegionOfDefinitionAction ( OfxTime  time,
OfxPointD  renderScale,
OfxRectD rod 
) const [virtual]

Call the region of definition action the plugin at the given time and with the given render scales. The value is returned in rod. Note that if the plugin does not trap the action the default RoD is calculated and returned.

RoD call

Definition at line 827 of file OfxhImageEffectNode.cpp.

References tuttle::host::ofx::property::ePropTypeDouble, tuttle::host::ofx::property::OfxhSet::getDoublePropertyN(), kOfxImageEffectActionGetRegionOfDefinition, kOfxImageEffectContextReader, kOfxImageEffectPropRegionOfDefinition, kOfxImageEffectPropRenderScale, kOfxPropTime, kOfxStatOK, kOfxStatReplyDefault, tuttle::host::ofx::property::OfxhSet::setDoubleProperty(), and tuttle::host::ofx::property::OfxhSet::setDoublePropertyN().

Referenced by tuttle::host::ImageEffectNode::preProcess1().

Here is the call graph for this function:

void tuttle::host::ofx::imageEffect::OfxhImageEffectNode::getRegionOfInterestAction ( OfxTime  time,
OfxPointD  renderScale,
const OfxRectD roi,
std::map< attribute::OfxhClipImage *, OfxRectD > &  rois 
) const [virtual]

call the get region of interest action on the plugin for the given frame and renderscale. The render RoI is passed in in roi, the std::map will contain the requested rois. Note That this call will check for tiling support and for default replies and set up the correct rois in these cases as well

get the region of interest for each input and return it in the given std::map

No tiling support on the effect at all. So set the roi of each input clip to be the RoD of that clip.

Todo:
tuttle: how to support size on generators... check if this is correct in all cases.

set up the in args

initialise to the default

call the action

set the thing up

not supporting tiles on this input, so set it to the rod

Definition at line 876 of file OfxhImageEffectNode.cpp.

References tuttle::clamp(), tuttle::host::ofx::property::OfxhSet::createProperty(), tuttle::host::ofx::property::OfxhPropSpec::defaultValue, tuttle::host::ofx::property::OfxhPropSpec::dimension, tuttle::host::ofx::property::ePropTypeDouble, tuttle::host::ofx::property::OfxhSet::getDoubleProperty(), kOfxImageEffectActionGetRegionsOfInterest, kOfxImageEffectContextGenerator, kOfxImageEffectContextReader, kOfxImageEffectPropRegionOfInterest, kOfxImageEffectPropRenderScale, kOfxPropTime, kOfxStatOK, kOfxStatReplyDefault, tuttle::host::ofx::property::OfxhPropSpec::name, tuttle::host::ofx::property::OfxhPropSpec::readonly, tuttle::host::ofx::property::OfxhSet::setDoubleProperty(), tuttle::host::ofx::property::OfxhSet::setDoublePropertyN(), tuttle::host::ofx::property::OfxhPropSpec::type, OfxRectD::x1, OfxRectD::x2, OfxRectD::y1, and OfxRectD::y2.

Referenced by tuttle::host::ImageEffectNode::preProcess2_reverse().

Here is the call graph for this function:

virtual void tuttle::host::ofx::imageEffect::OfxhImageEffectNode::getRenderScaleRecursive ( double &  x,
double &  y 
) const [pure virtual]

This is called whenever a param is changed by the plugin so that the recursive instanceChangedAction will be fed the correct renderScale

Implemented in tuttle::host::ImageEffectNode.

Referenced by paramChanged().

bool tuttle::host::ofx::imageEffect::OfxhImageEffectNode::getTimeDomainAction ( OfxRangeD range) const [virtual]
OfxhMemory * tuttle::host::ofx::imageEffect::OfxhImageEffectNode::imageMemoryAlloc ( size_t  nBytes)

override this to make processing abort, return 1 to abort processing

int OfxhImageEffectNode::abort() { return 0; } override this to use your own memory instance - must inherrit from memory::instance

OfxhMemory* OfxhImageEffectNode::newMemoryInstance( size_t nBytes ) { OfxhMemory* instance = new OfxhMemory(); instance->alloc( nBytes ); return instance; }

Returns:
an memory::instance calls makeMemoryInstance that can be overriden

Definition at line 405 of file OfxhImageEffectNode.cpp.

References newMemoryInstance().

Here is the call graph for this function:

void tuttle::host::ofx::imageEffect::OfxhImageEffectNode::initOverlayDescriptor ( int  bitDepthPerComponent = 8,
bool  hasAlpha = false 
) [inline]

Get the interact description, this will also call describe on the interact This will return NULL if there is not main entry point or if the description failed otherwise it will return the described overlay This is called by the CTOR of OverlayInteract to get the descriptor to do things with

Todo:
tuttle initOverlayDescriptor... !!! Correct the constness

Definition at line 394 of file OfxhImageEffectNode.hpp.

References _descriptor.

Referenced by tuttle::host::OverlayInteract::OverlayInteract().

bool tuttle::host::ofx::imageEffect::OfxhImageEffectNode::isChromaticComponent ( const std::string &  str) const [virtual]

Get whether the component is a supported 'chromatic' component (RGBA or alpha) in the base API. Override this if you have extended your chromatic colour types (eg RGB) and want the clip preferences logic to still work

Definition at line 1173 of file OfxhImageEffectNode.cpp.

References kOfxImageComponentAlpha, kOfxImageComponentRGB, and kOfxImageComponentRGBA.

Referenced by setDefaultClipPreferences().

bool tuttle::host::ofx::imageEffect::OfxhImageEffectNode::isFrameVarying ( ) const [inline]

does this instance generate a different picture on a frame change, even if the params and input images are exactly the same. eg: random noise generator

Definition at line 171 of file OfxhImageEffectNode.hpp.

References _frameVarying.

Referenced by tuttle::host::ImageEffectNode::getLocalHashAtTime().

bool tuttle::host::ofx::imageEffect::OfxhImageEffectNode::isLeafNode ( ) const [private]

Check if the node is a leaf in the graph. If there is no input clip connected.

Definition at line 1375 of file OfxhImageEffectNode.cpp.

References tuttle::host::ofx::attribute::OfxhClipImageSet::_clipImages, tuttle::host::ofx::attribute::OfxhClipAccessor::isConnected(), and tuttle::host::ofx::attribute::OfxhAttributeAccessor::isOutput().

Referenced by setupClipInstancePreferences().

Here is the call graph for this function:

bool tuttle::host::ofx::imageEffect::OfxhImageEffectNode::isSupportedBitDepth ( const std::string &  depth) const [inline, protected]
OfxStatus tuttle::host::ofx::imageEffect::OfxhImageEffectNode::mainEntry ( const char *  action,
const void *  handle,
property::OfxhSet inArgs,
property::OfxhSet outArgs 
) const [protected, virtual]
virtual OfxhMemory* tuttle::host::ofx::imageEffect::OfxhImageEffectNode::newMemoryInstance ( size_t  nBytes) [pure virtual]

override this to use your own memory instance - must inherrit from OfxhMemory

Implemented in tuttle::host::ImageEffectNode.

Referenced by imageMemoryAlloc().

void tuttle::host::ofx::imageEffect::OfxhImageEffectNode::notify ( const std::string &  name,
bool  singleValue,
int  indexOrN 
) [virtual]

overridden from Property::Notify

Implements tuttle::host::ofx::property::OfxhNotifyHook.

Definition at line 235 of file OfxhImageEffectNode.cpp.

References TUTTLE_LOG_ERROR.

bool tuttle::host::ofx::imageEffect::OfxhImageEffectNode::operator!= ( const This other) const [inline]

Reimplemented from tuttle::host::ofx::attribute::OfxhClipImageSet.

Definition at line 125 of file OfxhImageEffectNode.hpp.

References operator==().

Here is the call graph for this function:

bool tuttle::host::ofx::imageEffect::OfxhImageEffectNode::operator== ( const This ) const
void tuttle::host::ofx::imageEffect::OfxhImageEffectNode::paramChanged ( const attribute::OfxhParam param,
const attribute::EChange  change 
) [virtual]
void tuttle::host::ofx::imageEffect::OfxhImageEffectNode::paramInstanceChangedAction ( const std::string &  paramName,
const std::string &  why,
OfxTime  time,
OfxPointD  renderScale 
) [virtual]
void tuttle::host::ofx::imageEffect::OfxhImageEffectNode::populate ( ) [protected]

called after construction to populate the various members ideally should be called in the ctor, but it relies on virtuals so has to be delayed until after the effect is constructed

called after construction to populate clips and params

Definition at line 152 of file OfxhImageEffectNode.cpp.

References _descriptor, tuttle::host::ofx::attribute::OfxhClipImageSet::populateClips(), and populateParams().

Referenced by tuttle::host::ImageEffectNode::ImageEffectNode().

Here is the call graph for this function:

void tuttle::host::ofx::imageEffect::OfxhImageEffectNode::populateParams ( const imageEffect::OfxhImageEffectNodeDescriptor descriptor) [protected]
void tuttle::host::ofx::imageEffect::OfxhImageEffectNode::purgeCachesAction ( ) [virtual]

purge plugin caches

Definition at line 574 of file OfxhImageEffectNode.cpp.

References tuttle::host::ofx::imageEffect::OfxhImageEffectNodeBase::getHandle(), kOfxActionPurgeCaches, kOfxStatOK, kOfxStatReplyDefault, and mainEntry().

Here is the call graph for this function:

void tuttle::host::ofx::imageEffect::OfxhImageEffectNode::reset ( const std::string &  name) [virtual]

overridden from gethook, don't know what to do

don't know what to do

Reimplemented from tuttle::host::ofx::property::OfxhGetHook.

Definition at line 243 of file OfxhImageEffectNode.cpp.

References kOfxStatErrMissingHostFeature, and TUTTLE_LOG_ERROR.

bool tuttle::host::ofx::imageEffect::OfxhImageEffectNode::runGetClipPrefsConditionally ( ) [inline]

calls getClipPreferences only if the prefs are dirty

returns whether the clips prefs were dirty or not

Definition at line 452 of file OfxhImageEffectNode.hpp.

References tuttle::host::ofx::attribute::OfxhClipImageSet::areClipPrefsDirty(), and getClipPreferencesAction().

Here is the call graph for this function:

template<class Archive >
void tuttle::host::ofx::imageEffect::OfxhImageEffectNode::serialize ( Archive &  ar,
const unsigned int  version 
) [inline, private]
void tuttle::host::ofx::imageEffect::OfxhImageEffectNode::setCustomInArgs ( const std::string &  action,
property::OfxhSet inArgs 
) const [protected, virtual]

this is used to populate with any extra action in arguments that may be needed

Definition at line 354 of file OfxhImageEffectNode.cpp.

Referenced by mainEntry().

void tuttle::host::ofx::imageEffect::OfxhImageEffectNode::setCustomOutArgs ( const std::string &  action,
property::OfxhSet outArgs 
) const [protected, virtual]

this is used to populate with any extra action out arguments that may be needed

Definition at line 359 of file OfxhImageEffectNode.cpp.

Referenced by mainEntry().

void tuttle::host::ofx::imageEffect::OfxhImageEffectNode::setDefaultClipPreferences ( ) [private, virtual]

Setup the default clip preferences on the clips.

Setup the default clip preferences on the clips

is there multiple bit depth support? Depends on host, plugin and context

OK find the deepest chromatic component on our input clips and the one with the most components

set some stuff up

now find the best depth that the plugin supports

now add the clip gubbins to the out args

hmm custom component type, don't touch it and pass it through

Definition at line 1216 of file OfxhImageEffectNode.cpp.

References tuttle::host::ofx::attribute::OfxhClipImageSet::_clipImages, _continuousSamples, _frameVarying, _outputFielding, _outputFrameRate, _outputPreMultiplication, bestSupportedBitDepth(), canCurrentlyHandleMultipleClipDepths(), tuttle::host::ofx::property::eModifiedByHost, tuttle::ofx::imageEffect::findDeepestBitDepth(), findMostChromaticComponents(), tuttle::host::ofx::attribute::OfxhClipImage::findSupportedComp(), getDefaultOutputFielding(), tuttle::host::ofx::attribute::OfxhClipImage::getFrameRate(), getOutputOfxhClip(), tuttle::host::ofx::attribute::OfxhClipImage::getPixelAspectRatio(), tuttle::host::ofx::attribute::OfxhClipImage::getPremult(), tuttle::host::ofx::attribute::OfxhClipImage::getUnmappedBitDepth(), tuttle::host::ofx::attribute::OfxhClipImage::getUnmappedComponents(), isChromaticComponent(), tuttle::host::ofx::attribute::OfxhClipAccessor::isConnected(), tuttle::host::ofx::attribute::OfxhAttributeAccessor::isOutput(), kOfxBitDepthNone, kOfxImageComponentNone, kOfxImageOpaque, kOfxImagePreMultiplied, kOfxImageUnPreMultiplied, tuttle::max(), tuttle::ofx::maximum(), tuttle::host::ofx::attribute::OfxhClipImage::setBitDepthString(), tuttle::host::ofx::attribute::OfxhClipImage::setComponentsString(), and tuttle::host::ofx::attribute::OfxhClipImage::setPixelAspectRatio().

Referenced by createInstanceAction(), and setupClipPreferencesArgs().

Here is the call graph for this function:

void tuttle::host::ofx::imageEffect::OfxhImageEffectNode::setupClipInstancePreferences ( property::OfxhSet outArgs) [private, virtual]
void tuttle::host::ofx::imageEffect::OfxhImageEffectNode::setupClipPreferencesArgs ( property::OfxhSet outArgs,
std::list< std::string > &  outKeepPropNamesOwnership 
) [private, virtual]
void tuttle::host::ofx::imageEffect::OfxhImageEffectNode::syncPrivateDataAction ( ) [virtual]

sync plugin private data

Definition at line 585 of file OfxhImageEffectNode.cpp.

References tuttle::host::ofx::imageEffect::OfxhImageEffectNodeBase::getHandle(), kOfxActionSyncPrivateData, kOfxStatOK, kOfxStatReplyDefault, and mainEntry().

Here is the call graph for this function:

size_t tuttle::host::ofx::imageEffect::OfxhImageEffectNode::upperGetDimension ( const std::string &  name)
virtual void tuttle::host::ofx::imageEffect::OfxhImageEffectNode::vmessage ( const char *  type,
const char *  id,
const char *  format,
va_list  args 
) const [protected, pure virtual]

make a clip

Implements tuttle::host::ofx::OfxhIMessage.

Implemented in tuttle::host::ImageEffectNode.


Friends And Related Function Documentation

friend class boost::serialization::access [friend]

Field Documentation


The documentation for this class was generated from the following files: