TuttleOFX  1
Todo List
Global main (int argc, char **argv)
Set all sam do options for rendering
Global min_channel_values (const VIEW &view)
: use ( p[i] < min[i] ), more readable...
Class Ofx3DPointD
tuttle: ofxtuttle fix (move here)
Class Ofx3DPointI
tuttle: ofxtuttle fix (move here)
Global OFX::ParamSetDescriptor::defineParametricParam (const std::string &name)
tuttle: more generic way for all param types ?
Global OFX::Private::mainEntryStr (const char *actionRaw, const void *handleRaw, OfxPropertySetHandle inArgsRaw, OfxPropertySetHandle outArgsRaw, const char *plugname)
there is an assert in boost::get_error_info here. Why?
Global OfxImageEffectSuiteV1::clipReleaseImage )(OfxPropertySetHandle imageHandle)
tuttle: ofx documentation error, succesfully deleted, delete the propertySet himself or not ?
Global OfxMultiThreadSuiteV1::mutexDestroy )(OfxMutexHandle mutex)
; ofxtuttle fix: no const on mutex
Global OfxMultiThreadSuiteV1::mutexLock )(OfxMutexHandle mutex)
; ofxtuttle fix: no const on mutex
Global OfxMultiThreadSuiteV1::mutexTryLock )(OfxMutexHandle mutex)
; ofxtuttle fix: no const on mutex
Global OfxMultiThreadSuiteV1::mutexUnLock )(OfxMutexHandle mutex)
; ofxtuttle fix: no const on mutex
Global removeSequence (const sequenceParser::Sequence &s)
cin
Global sam::connectClips (const std::vector< ttl::Graph::Node * > nodes, const std::vector< ClipAndConnection > clipsToConnect, ttl::Graph::Node &currentNode, ttl::Graph &graph, const std::vector< std::string > idNames)
We only check if we have more than one clip (assuming that it's the default "Output" clip...) instead of checking the number of input clips...
Global sam::coutClipsWithDetails (const ttl::Graph::Node &node)
Global sam::coutProperties (const ttl::Graph::Node &node)
Global sam::retrieveToolFullPath (const std::string &toolName, const std::vector< bfs::path > &searchPaths)
exception ?
Global sam::samdo::Dummy::getAllSupportedNodes (const std::string &context)
Create a list of loading errors?
Global sequenceParser::FileObject::_options
Remove this from here!
Global sequenceParser::FileObject::getDirectory () const
Global sequenceParser::FileObject::getFiles () const =0
: can we remove this?
Global sequenceParser::Sequence::Sequence (const boost::filesystem::path &directory, const EMaskOptions options=eMaskOptionsDefault, const EPattern accept=ePatternDefault)
check if we put a pattern with full path: /home/foo/images/foo.####.jpg
Global sequenceParser::sequenceFromFilenameList (const std::vector< boost::filesystem::path > &filenames, const EMaskOptions desc)
filter by directories, etc.
Class terry::alpha_max_filler
tuttle: to rewrite !!!
Class terry::black_filler
tuttle: to rewrite !!!
Class terry::color::CMYK
Class terry::color::HSL
Class terry::color::LMS
Class terry::color::RGB
Class terry::color::XYZ
Global terry::fill_black (View &v)
tuttle: to rewrite !!!
Global terry::filter::floodFill::flood_fill_bruteForce (const SView &srcView, const Rect< std::ssize_t > &srcRod, DView &dstView, const Rect< std::ssize_t > &dstRod, const Rect< std::ssize_t > &procWindow, const StrongTest &strongTest, const SoftTest &softTest)
tuttle: use host allocator
Global terry::geometry::transform (const PinningPerspective< F > &t, const boost::gil::point2< F2 > &src)
tuttle: modify the matrix instead
Global terry::get_black ()
tuttle: to rewrite !!!
Global terry::get_white ()
tuttle: to rewrite !!!
Global terry::transform (const ::tuttle::plugin::lens::FisheyeLensDistortParams< F > &params, const point2< F2 > &src)
support for fisheye...
Global terry::transform (const ::tuttle::plugin::lens::FisheyeLensUndistortParams< F > &params, const point2< F2 > &src)
support for fisheye...
Global terry::transform (const ::tuttle::plugin::lens::AdvancedLensDistortParams< F > &params, const point2< F2 > &src)
support for advanced lens...
Namespace tuttle

temporary solution..

tuttle: custom parameter support...

tuttle: please remove this ! (don't use as singleton)

tuttle: remove this !

tuttle: remove this!

Global tuttle::common::applicationFilepath (const std::string &argv0, const boost::filesystem::path &currentPath)
on windows check which is the first local file or file in PATH...
Global tuttle::host::attribute::ClipImage::_connectedClip
remove this !!!!
Global tuttle::host::attribute::ClipImage::fetchRegionOfDefinition (const OfxTime time) const
tuttle: renderscale, time, ?
Global tuttle::host::attribute::ClipImage::getConnectedClip ()
tuttle: this is really bad...
Global tuttle::host::attribute::ClipImage::getImage (const OfxTime time, const OfxRectD *optionalBounds=NULL)
tuttle do something with bounds... if bounds != cache buffer bounds: bounds < cache buffer: use rowSize to adjust, and modify pointer bounds > cache buffer: recompute / exception ?
Global tuttle::host::attribute::ClipImage::setConnectedClip (const ClipImage &other)
remove this !!!!
Global tuttle::host::attribute::Image::copy (Image *dst, Image *src, const OfxPointI &dstCorner, const OfxPointI &srcCorner, const OfxPointI &count)
clean this! move outside from class or use copyFrom (don't specify dst) use ref, change order, etc.
Global tuttle::host::attribute::Image::Image (ClipImage &clip, const OfxTime time, const OfxRectD &bounds, const EImageOrientation orientation, const int rowDistanceBytes)
the same for bounds and rod, no tiles for the moment !
Global tuttle::host::attribute::ParamBoolean::getValueAtTime (const OfxTime time, bool &) const OFX_EXCEPTION_SPEC
: in time !
Global tuttle::host::attribute::ParamBoolean::setValueAtTime (const OfxTime time, const bool &, const ofx::attribute::EChange change) OFX_EXCEPTION_SPEC
: in time !
Global tuttle::host::attribute::ParamChoice::getValueAtTime (const OfxTime time, int &) const OFX_EXCEPTION_SPEC
: in time !
Global tuttle::host::attribute::ParamChoice::setValueAtTime (const OfxTime time, const int &, const ofx::attribute::EChange change) OFX_EXCEPTION_SPEC
: in time !
Global tuttle::host::attribute::ParamCustom::getValueAtTime (const OfxTime time, std::string &) const OFX_EXCEPTION_SPEC
: in time !
Global tuttle::host::attribute::ParamCustom::ParamCustom (INode &effect, const std::string &name, const ofx::attribute::OfxhParamDescriptor &descriptor)
link de parametres
Global tuttle::host::attribute::ParamCustom::setValueAtTime (const OfxTime time, const std::string &value, const ofx::attribute::EChange change) OFX_EXCEPTION_SPEC
: in time !
Global tuttle::host::attribute::ParamString::getValueAtTime (const OfxTime time, std::string &) const OFX_EXCEPTION_SPEC
: in time !
Global tuttle::host::attribute::ParamString::ParamString (INode &effect, const std::string &name, const ofx::attribute::OfxhParamDescriptor &descriptor)
link de parametres
Global tuttle::host::attribute::ParamString::setValueAtTime (const OfxTime time, const std::string &value, const ofx::attribute::EChange change) OFX_EXCEPTION_SPEC
: in time !
Global tuttle::host::Graph::Attribute
tuttle INode...
Global tuttle::host::Graph::getNodesByContext (const std::string &type)
tuttle: use INode here !
Global tuttle::host::Graph::getNodesByPlugin (const std::string &pluginId)
tuttle: use INode here !
Global tuttle::host::graph::IVertex::exportDotDebug (std::ostream &os) const
remove this. Temporary solution
Global tuttle::host::graph::ProcessGraph::process (memory::MemoryCache &outCache)
Bug: need to use a map 'OutputNode': 'timeRanges' And check if all Output nodes share a common timeRange
Global tuttle::host::graph::ProcessGraph::processAtTime (memory::MemoryCache &outCache, const OfxTime time)

callback

clean datas...

Global tuttle::host::graph::ProcessGraph::setup ()
tuttle: exception if there is non-optional clips unconnected. It's already checked in the beginSequence of the imageEffectNode. But maybe it could better to check that here independently from node types.
Global tuttle::host::graph::ProcessGraph::setupAtTime (const OfxTime time)
: this is maybe better to move this into the ProcessData? Doesn't depend on time?
Global tuttle::host::graph::ProcessGraph::Vertex
tuttle ProcessNode...
Global tuttle::host::graph::ProcessVertex::exportDotDebug (std::ostream &os) const
remove this. Temporary solution
Global tuttle::host::graph::ProcessVertexAtTime::exportDotDebug (std::ostream &os) const
remove this. Temporary solution
Class tuttle::host::Host
how to support multiple APIs...
Global tuttle::host::Host::Host ()

tuttle set host properties correctly...

tuttle: we hope to do this !

Global tuttle::host::ImageEffectNode::getProjectBitDepth () const
tuttle: to remove in the future.... size, pixelType, BitDepth, etc... must be locally defined
Global tuttle::host::ImageEffectNode::getProjectPixelComponentsType () const
tuttle: to remove in the future.... size, pixelType, BitDepth, etc... must be locally defined
Global tuttle::host::ImageEffectNode::initInputClipsPixelAspectRatio ()
multiple PAR
Global tuttle::host::ImageEffectNode::maximizeBitDepthFromWritesToReads ()

tuttle: what is the best way to access another node ? through the graph ? through a graph inside ProcessOptions ?

tuttle: is this test correct in all cases?

Global tuttle::host::ImageEffectNode::preProcess1 (graph::ProcessVertexAtTimeData &vData)
tuttle: tile supports
Global tuttle::host::memory::CACHE_ELEMENT
temporary solution..
Global tuttle::host::memory::IMemoryCache::put (const std::string &identifier, const double time, CACHE_ELEMENT pData)=0
tuttle: use key here, instead of (name, time)
Class tuttle::host::memory::MemoryPool
tuttle: virtual destructor or nothing in virtual
Global tuttle::host::memory::MemoryPool::clear (std::size_t size)
tuttle
Global tuttle::host::memory::MemoryPool::clear ()
tuttle
Global tuttle::host::memory::MemoryPool::clearOne ()
tuttle
Global tuttle::host::ofx::attribute::OfxhClipImage::findSupportedComp (const std::string &s) const
tuttle: can we remove this check ?
Global tuttle::host::ofx::attribute::OfxhClipImage::getConnectedClipFullName () const =0
tuttle: remove this!
Global tuttle::host::ofx::attribute::OfxhClipImage::getFieldExtraction () const
tuttle: This function has been added here. Why was it not before?
Global tuttle::host::ofx::attribute::OfxhClipImageSet::populateClips (const imageEffect::OfxhImageEffectNodeDescriptor &descriptor) OFX_EXCEPTION_SPEC
tuttle don't manipulate clip here, delegate to ClipInstanceSet
Global tuttle::host::ofx::attribute::OfxhParam::OfxhParam (const OfxhParam &other)
tuttle : copy content, not pointer ?
Global tuttle::host::ofx::attribute::OfxhParam::operator== (const This &p) const
tuttle: check values !!!
Global tuttle::host::ofx::attribute::OfxhParamAccessor::getHint () const
tuttle : common to all attributes
Global tuttle::host::ofx::attribute::OfxhParamAccessor::getScriptName () const
tuttle : common to all attributes
Global tuttle::host::ofx::attribute::OfxhParamDescriptor::OfxhParamDescriptor (const std::string &type, const std::string &name)
TUTTLE_TODO : common property for all Attributes
Global tuttle::host::ofx::attribute::OfxhParamGroup::setChildrens (const OfxhParamSet *childrens)
tuttle: use clone ?
Global tuttle::host::ofx::attribute::OfxhParamString::getV (va_list arg) const OFX_EXCEPTION_SPEC
tuttle: "I so don't like this, temp storage should be delegated to the implementation"
Global tuttle::host::ofx::imageEffect::OfxhImageEffectNode::calcDefaultRegionOfDefinition (OfxTime time, OfxPointD renderScale) const

: do not recompute this here

tuttle: maybe RoD problems with Generator and Read here... to check !

Global tuttle::host::ofx::imageEffect::OfxhImageEffectNode::getRegionOfInterestAction (OfxTime time, OfxPointD renderScale, const OfxRectD &roi, std::map< attribute::OfxhClipImage *, OfxRectD > &rois) const OFX_EXCEPTION_SPEC
tuttle: how to support size on generators... check if this is correct in all cases.
Global tuttle::host::ofx::imageEffect::OfxhImageEffectNode::initOverlayDescriptor (int bitDepthPerComponent=8, bool hasAlpha=false)
tuttle initOverlayDescriptor... !!! Correct the constness
Global tuttle::host::ofx::imageEffect::OfxhImageEffectNode::populateParams (const imageEffect::OfxhImageEffectNodeDescriptor &descriptor)

tuttle: move this in ParamSet !

tuttle set the groups of the ParamInstance !!!

Global tuttle::host::ofx::imageEffect::OfxhImageEffectNodeDescriptor::_overlayDescriptor
tuttle: remove mutable
Global tuttle::host::ofx::imageEffect::OfxhImageEffectNodeDescriptor::getOverlayDescriptor () const
tuttle some modifs here... doc needs updates... 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
Global tuttle::host::ofx::imageEffect::OfxhImageEffectNodeDescriptor::OfxhImageEffectNodeDescriptor ()
tuttle...
Global tuttle::host::ofx::imageEffect::OfxhImageEffectPlugin::_baseDescriptor
tuttle: ???
Global tuttle::host::ofx::imageEffect::OfxhImageEffectPlugin::createInstance (const std::string &context)

- we need to make sure action:load is called, then action:describe again (not because we are expecting the results to change, but because plugin might get confused otherwise), then a describe_in_context

tuttle: don't use singleton here.

Global tuttle::host::ofx::imageEffect::OfxhImageEffectPlugin::OfxhImageEffectPlugin ()
tuttle
Global tuttle::host::ofx::OfxhException::getStatusStr () const
tuttle : mapStatusEnumToStr... in tuttle common
Class tuttle::host::ofx::OfxhMemory
use MemoryPool
Global tuttle::host::ofx::property::OfxhPropertyTemplate< T >::getAPIConstlessValue (int index=0) const OFX_EXCEPTION_SPEC
tuttle remove ReturnType, only use Type
Global tuttle::host::ofx::property::OfxhPropertyTemplate< T >::getConstlessValue (int index=0) const OFX_EXCEPTION_SPEC
in private and friend function...
Global tuttle::host::ofx::property::OfxhSet::getStringPropertyRaw (const std::string &property, int index=0) const
tuttle: return const no ?
Global tuttle::host::ofx::property::OfxhSet::operator== (const This &) const
tuttle check clip ? check hash ? etc.
Global tuttle::plugin::anisotropicFilter::tensors::TensorsMargin::draw (const OFX::DrawArgs &args)
: true or false cf. doc openfx
Global tuttle::plugin::av::reader::AVReaderPlugin::getClipPreferences (OFX::ClipPreferencesSetter &clipPreferences)
tuttle: some video format may need other bit depth (how we can detect this ?)
Global tuttle::plugin::colorCubeViewer::ColorCubeViewerPlugin::addRefCloudPointData ()
set the correct time !
Global tuttle::plugin::colorCubeViewer::GeodesicForm::subdiviseFaces (const Ofx3DPointD &center, const int divisor)
:remove
Global tuttle::plugin::colorGradation::ColorGradationProcess< View >::processSwitchAlpha (const bool processAlpha, const View &src, const View &dst, TIN gradationIn=TIN(), TOUT gradationOut=TOUT())
do not apply process on alpha directly inside transform, with a "channel_for_each_if_channel"
Global tuttle::plugin::colorGradient::ColorGradientPlugin::render (const OFX::RenderArguments &args)
tuttle: not implemented yet
Global tuttle::plugin::colorSpaceKeyer::ColorSpaceKeyerPlugin::addRefCloudPointData ()
set the correct time !
Global tuttle::plugin::colorSpaceKeyer::GeodesicForm::subdiviseFaces (const Ofx3DPointD &center, const int divisor)
:remove
Global tuttle::plugin::colorSuppress::ColorSuppressProcess< View >::multiThreadProcessImages (const OfxRectI &procWindowRoW)
use a gil functor
Global tuttle::plugin::dpx::reader::DPXReaderProcess< View >::readImage (View &dst)
: bug here.
Global tuttle::plugin::fade::FadeProcess< View >::multiThreadProcessImages (const OfxRectI &procWindowRoW)

tuttle: fill only the good regions

tuttle: add color choice fill A and B fill only the good regions

tuttle: fill only the good regions

tuttle: fill only the good regions

tuttle: fill only the good regions

tuttle: fill only the good regions

Global tuttle::plugin::flip::FlipProcess< View >::multiThreadProcessImages (const OfxRectI &procWindowRoW)

Need an option to choose the center and modify the ouput RoD. Here (inputRoD == outputRod), so we use the center of the inputRoD.

Need to do the same thing than for flip. this->_dstPixelRod.x1 could be different from 0.

Global tuttle::plugin::histogram::HistogramOverlay::draw (const OFX::DrawArgs &args)

: remove next lines when Nuke curves overlay works

: remove next lines when Nuke curves overlay works

Global tuttle::plugin::histogram::HistogramPlugin::addRefOverlayData ()
set the correct time !
Global tuttle::plugin::histogram::HistogramPlugin::changedParam (const OFX::InstanceChangedArgs &args, const std::string &paramName)
How to request a redraw on ParametricParameters?
Global tuttle::plugin::histogram::HistogramPlugin::HistogramPlugin (OfxImageEffectHandle handle)
: HACK to display curves default position
Global tuttle::plugin::histogram::HistogramPlugin::isIdentity (const OFX::RenderArguments &args, OFX::Clip *&identityClip, double &identityTime)
HACK: nuke doesn't call changedClip when the time is modified.
Global tuttle::plugin::histogram::HistogramPlugin::render (const OFX::RenderArguments &args)
: HACK Nuke doesn't call changeClip function when time is changed
Class tuttle::plugin::histogram::HSLOverlay
class HSLOverlay : public OFX::OverlayInteract (when Nuke overlay works)
Global tuttle::plugin::histogram::kTranslationHSL
: remove when Nuke overlay option works
Global tuttle::plugin::histogram::OverlayData::_data
accessors
Class tuttle::plugin::histogram::RGBOverlay
class RGBOverlay : public OFX::OverlayInteract (when Nuke overlay works)
Global tuttle::plugin::histogramKeyer::HistogramKeyerOverlay::draw (const OFX::DrawArgs &args)

: remove next lines when Nuke curves overlay works

: remove next lines when Nuke curves overlay works

Global tuttle::plugin::histogramKeyer::HistogramKeyerPlugin::addRefOverlayData ()
set the correct time !
Global tuttle::plugin::histogramKeyer::HistogramKeyerPlugin::changedParam (const OFX::InstanceChangedArgs &args, const std::string &paramName)
How to request a redraw on ParametricParameters?
Global tuttle::plugin::histogramKeyer::HistogramKeyerPlugin::HistogramKeyerPlugin (OfxImageEffectHandle handle)
: HACK to display curves default position
Global tuttle::plugin::histogramKeyer::HistogramKeyerPlugin::isIdentity (const OFX::RenderArguments &args, OFX::Clip *&identityClip, double &identityTime)
HACK: nuke doesn't call changedClip when the time is modified.
Global tuttle::plugin::histogramKeyer::HistogramKeyerPlugin::render (const OFX::RenderArguments &args)
: HACK Nuke doesn't call changeClip function when time is changed
Class tuttle::plugin::histogramKeyer::HSLOverlay
class HSLOverlay : public OFX::OverlayInteract (when Nuke overlay works)
Global tuttle::plugin::histogramKeyer::kTranslationHSL
: remove when Nuke overlay option works
Global tuttle::plugin::histogramKeyer::OverlayData::_data
accessors
Class tuttle::plugin::histogramKeyer::RGBOverlay
class RGBOverlay : public OFX::OverlayInteract (when Nuke overlay works)
Global tuttle::plugin::imagemagick::reader::ImageMagickReaderPlugin::getClipPreferences (OFX::ClipPreferencesSetter &clipPreferences)
tuttle: retrieve info
Global tuttle::plugin::imagemagick::writer::ImageMagickWriterProcess< View >::multiThreadProcessImages (const OfxRectI &procWindowRoW)
?
Global tuttle::plugin::lens::LensDistortPlugin::getProcessParams (const OfxRectD &inputRod, const OfxRectD &outputRod, const OfxRectD &optionalInputRod, const double pixelAspectRatio, const bool reverse=false) const
pixelRatio !
Global tuttle::plugin::merge::fillAroundIntersection (const View &viewA, const OfxRectI &srcAPixelRod, const OfxRectI &srcBPixelRod, const View &dstView, const OfxRectI &dstPixelRod, const OfxRectI &procWindowRoW)
tuttle: fill only the good regions
Global tuttle::plugin::merge::fillAroundIntersection (const View &viewA, const OfxRectI &srcAPixelRod, const View &viewB, const OfxRectI &srcBPixelRod, const View &dstView, const OfxRectI &dstPixelRod, const OfxRectI &procWindowRoW)

tuttle: fill only the good regions add color choice?

tuttle: fill only the good regions

tuttle: fill only the good regions

tuttle: fill only the good regions

tuttle: fill only the good regions

Global tuttle::plugin::merge::MergeProcess< View, Functor >::multiThreadProcessImages (const OfxRectI &procWindowRoW)
tuttle: fill only the good regions
Global tuttle::plugin::nlmDenoiser::NLMDenoiserProcess< View >::computeWeights (const std::vector< View > &srcViews, const OfxRectI &procWindow, boost::gil::rgba32f_view_t &view_wc, boost::gil::rgba32f_view_t &view_norm, const NlmParams &params)
what is the step here ??
Global tuttle::plugin::nlmDenoiser::NLMDenoiserProcess< View >::nlMeans (View &dst, const OfxRectI &procWindow, const NlmParams &params)
: use memory allocated by host using memorySuite
Global tuttle::plugin::OfxProgress::progressForward (const int nSteps)
why not unlock the mutex here?
Global tuttle::plugin::pinning::PinningPlugin::isIdentity (const OFX::RenderArguments &args, OFX::Clip *&identityClip, double &identityTime)
remove this.
Global tuttle::plugin::png::writer::PngWriterProcess< View >::multiThreadProcessImages (const OfxRectI &procWindowRoW)
?
Global tuttle::plugin::pushPixel::PushPixelProcess< View >::multiThreadProcessImages (const OfxRectI &procWindowRoW)

add a MaskView template parameter...

add all interpolation methods

Global tuttle::plugin::swscale::SwscalePlugin::isIdentity () const

could we read the input rod at this step?

could we read the input rod at this step?

Global tuttle::plugin::thinning::ThinningProcess< View >::multiThreadProcessImages (const OfxRectI &procWindowRoW)
use an allocator
Global tuttle::plugin::warp::WarpPlugin::getProcessParams (const OfxPointD &renderScale=OFX::kNoRenderScale) const
: in this case it's just a translation...
Global tuttle::plugin::warp::WarpProcess< View >::multiThreadProcessImages (const OfxRectI &procWindowRoW)
expose as parameter