12 #ifndef __ROP_Node_h__ 
   13 #define __ROP_Node_h__ 
   29 class ROP_ExecuteContext;
 
   97 #define FLT_PARM(name, vi, t)   \ 
   98                 { return evalFloat(name, vi, t); } 
   99 #define FLT_SET(name, vi, t, val)       \ 
  100                 { setFloat(name, vi, t, val); } 
  101 #define INT_SET(name, vi, t, val)       \ 
  102                 { setInt(name, vi, t, val); } 
  104 #define INT_PARM(name, vi, t) \ 
  105                 { return evalInt(name, vi, t); } 
  107 #define INT_SET(name, vi, t, val) \ 
  108                 { setInt(name, vi, t, val); } 
  110 #define STR_PARM(name, vi, t) \ 
  111                 { evalString(str, name, vi, t); } 
  115 class ROP_SohoOutput;
 
  141     virtual ROP_IFD     *castToROPIFD();
 
  142     virtual ROP_IFDBase *castToROPIFDBase();
 
  143     virtual ROP_SohoOp  *castToROPSoho();
 
  144     virtual ROP_OpenGL  *castToROPOpenGL();
 
  146     virtual bool         hasImageOutput();
 
  149     virtual bool         detectIfExistingOutputFiles();
 
  151     virtual void         deleteExistingOutputFiles();
 
  163     static void          initSimulationOPs();
 
  176                                 const char *relative_path = NULL) 
override;
 
  182                                        ROP_SohoOutput *out=0,
 
  183                                        bool generate=
false);
 
  199                          { myExecuteOverride = 
f;
 
  200                            myExecuteOverrideData = d;
 
  203                          { myPreExecuteOverride = 
f;
 
  204                            myPreExecuteOverrideData = d;
 
  207                          { myPostExecuteOverride = 
f;
 
  208                            myPostExecuteOverrideData = d;
 
  228     void                         setRenderResX(
int x);
 
  229     void                         setRenderResY(
int y);
 
  232     void                         setRenderAspect(
float aspect);
 
  233     float                        getRenderAspect();
 
  239                                  { 
INT_SET(
"trange", 0, 0, val) }
 
  242                                      if(myOverrideFrameRangeFlag)
 
  245                                      return myCachedDoRange;
 
  250                     if(myOverrideFrameRangeFlag)
 
  251                         return myOverrideStartFrame;
 
  253                     return myCachedStart;
 
  257                     if(myOverrideFrameRangeFlag)
 
  258                         return myOverrideEndFrame;
 
  265                     if(myOverrideFrameRangeFlag)
 
  266                         return myOverrideFrameInc;
 
  270     virtual bool        SETROPCOOK();
 
  273     static int                   doRenderCback(
void *
data, 
int index,
 
  277     static int                   doRenderBackgroundCback(
void *
data, 
int index,
 
  280     static int                   doRenderDialog(
void *
data, 
int index,
 
  290     bool                         executePreRenderScript(
fpreal ttime);
 
  291     bool                         executePreFrameScript(
fpreal ttime);
 
  292     bool                         executePostFrameScript(
fpreal ttime);
 
  293     bool                         executePostWriteScript(
fpreal ttime);
 
  294     bool                         executePostRenderScript(
fpreal ttime);
 
  295     bool                         executeIPRStopScript(
fpreal ttime);
 
  297     static void          buildRibVersionMenu(
PRM_Name *menu, 
int max,
 
  298                                              bool for_archive=
false);
 
  313     virtual void         appendDirectRenderDependenciesToList(
 
  315     virtual void         initRenderDependencies();
 
  316     virtual void         cleanupRenderDependencies();
 
  318             void         addJobFrames(
const char *job_name,
 
  319                                       const char *frame_string);
 
  321     static void          setDependencyRenderFlag(
bool f);
 
  322     static bool          getDependencyRenderFlag();
 
  324     static void          setFrameByFrameFlag(
bool f);
 
  325     static bool          getFrameByFrameFlag();
 
  327     static void          setRenderScriptFlag(
bool enable);
 
  328     static bool          getRenderScriptFlag();
 
  330     static void          setOutputResolutionScale(
fpreal xscale,
fpreal yscale);
 
  331     static void          getOutputResolutionScale(
float &xs, 
float &ys);
 
  334                             { x = y = 0; 
return false; }
 
  338     static void          setRenderQuality(
int quality);
 
  339     int                  getRenderQuality();
 
  342     void                 overrideFrameRange(
bool enable,
 
  349                             { 
return myOverrideOutputFlag; }
 
  353     virtual void         overrideOutput(
bool enable, 
const char *fname=0);
 
  357     bool                 getOutputOverride(
 
  360                             bool expand = 
true) 
const;
 
  370     bool                 getOutputOverrideEx(
 
  373                             const char *output_parm_name,
 
  374                             const char *mkdir_parm_name);
 
  376     virtual void         overrideDevice(
bool enable, 
bool interactive=
false,
 
  377                                         const char *devicestr=0);
 
  379                                            bool expand = 
true) 
const;
 
  397                              { myForceBackgroundRender = 
f; }
 
  399                              { 
return myForceBackgroundRender; }
 
  403                              { myTemporaryInputs = 
in; }
 
  421                             { 
return myLastRenderItem; }
 
  425     virtual bool        isRenderDependentOnNode(
ROP_Node *node,
 
  430     void                addRenderEventCallback(
 
  433                                 bool run_before_script);
 
  436     void                removeRenderEventCallback(
 
  440     static void         setColorCorrectionIPGamma(
bool enable, 
fpreal gamma);
 
  441     static fpreal       getColorCorrectionIPGamma();
 
  442     static void         setColorCorrectionIPLUT(
bool enable, 
const char *lut);
 
  443     static const char  *getColorCorrectionIPLUT();
 
  445     static void         setColorCorrectionEnvVariables(
bool set);
 
  446     static void         setFPSVariable(
bool do_set = 0, 
fpreal frame_inc = 1);
 
  458                                   int &copied_input) 
override;
 
  480     virtual int                 startRender(
int nframes, 
fpreal tstart,
 
  487     TAKE_Take                   *applyRenderTake(
const char *take);
 
  488     void                         restorePreviousTake(
TAKE_Take *take);
 
  490     void                         initRenderDependencyVars(
fpreal t);
 
  491     virtual void                 doInitRenderDependencyVars(
fpreal t);
 
  495     virtual void         buildInputRenderDependencies(
 
  498     bool                 matchingLastRenderParms(
 
  501                             { myLastRenderItem = item; }
 
  514                 { 
INT_SET(
"trange", 0, 0, val); }
 
  533                     { 
return myVerbose; }
 
  535                     { 
return myVerbose.getStream(); }
 
  537                     { 
return myVerbose.getAlfred(); }
 
  566                             { 
return myTemporaryInputs.entries(); } 
 
  569                             { 
return myTemporaryInputs(i); } 
 
  588     struct EventCallbackEntry
 
  592         bool                     myRunBeforeScript;
 
  597     static void  resetSimulation(
OP_Node* node);
 
  599     ROP_ExecuteContext  *myEContext;
 
  602     void                *myExecuteOverrideData;
 
  604     void                *myPreExecuteOverrideData;
 
  606     void                *myPostExecuteOverrideData;
 
  608     bool                 myForceBackgroundRender;
 
  610     bool                 myOverrideFrameRangeFlag;
 
  611     fpreal               myOverrideStartFrame;
 
  612     fpreal               myOverrideEndFrame;
 
  613     fpreal               myOverrideFrameInc;
 
  615     bool                 myOverrideOutputFlag;
 
  618     bool                 myOverrideDeviceFlag;
 
  628     bool                 executeCallback(
fpreal ttime,
 
  631     bool                 executeParmScript(
const char *parm_name,
 
  634     bool                 executeParmScripts(
const char *parm_name,
 
  641     static void          installCommands();
 
  654                          myFullFrameInc(0.0
f),
 
  659                          myIgnoreBypass(true),
 
  660                          myIgnoreLocks(false),
 
  665                          myFirstFrameFlag(true) { }
 
  684                      { myFullStart = 
start; myFullEnd = 
end; myFullFrameInc = finc; }
 
  686                      { myStart = 
start; myEnd = 
end; myFrameInc = finc; }
 
  698                         fpreal finc = myFullFrameInc;
 
  725                          myIgnoreBypass = ignore_bypass;
 
  726                          myIgnoreLocks  = ignore_locks;
 
  733                      { myRenderSerial = render_serial; }
 
  738                      { myDepParent = dep_parent; }
 
  749             myOrder = copy.myOrder;
 
  750             myDepParent = copy.myDepParent;
 
  751             myTopLevelRop = copy.myTopLevelRop;
 
  752             myFullStart = copy.myFullStart;
 
  753             myFullEnd = copy.myFullEnd;
 
  754             myFullFrameInc = copy.myFullFrameInc;
 
  755             myStart = copy.myStart;
 
  757             myFrameInc = copy.myFrameInc;
 
  758             myRenderSerial = copy.myRenderSerial;
 
  759             myDoInputs = copy.myDoInputs;
 
  760             myIgnoreBypass = copy.myIgnoreBypass;
 
  761             myIgnoreLocks = copy.myIgnoreLocks;
 
  762             myFrameMerge = copy.myFrameMerge;
 
  763             myFirstFrameFlag = copy.myFirstFrameFlag;
 
  768             return (myFullStart == copy.myFullStart &&
 
  769                     myFullEnd == copy.myFullEnd &&
 
  770                     myFullFrameInc == copy.myFullFrameInc &&
 
  771                     myStart == copy.myStart &&
 
  772                     myEnd == copy.myEnd &&
 
  773                     myFrameInc == copy.myFrameInc &&
 
  774                     myDoInputs == copy.myDoInputs &&
 
  775                     myIgnoreBypass == copy.myIgnoreBypass &&
 
  776                     myIgnoreLocks == copy.myIgnoreLocks &&
 
  777                     myFrameMerge == copy.myFrameMerge &&
 
  778                     myRenderSerial == copy.myRenderSerial);
 
  796     bool                 myFirstFrameFlag;
 
virtual int saveCookedData(std::ostream &os, OP_Context &, int binary=0)=0
 
bool isOutputOverridden() const 
 
fpreal getFullFrameInc() const 
 
virtual bool updateParmsFlags()
 
void setDepParent(const ROP_RenderItemHandle &dep_parent)
 
void setOrder(ROP_RenderList &order)
 
static const char * theChildTableName
 
fpreal getH() const override
Node position/scale is used by the UI. 
 
virtual void getOutputFile(UT_String &)
 
fpreal getW() const override
Node position/scale is used by the UI. 
 
void addMessage(int code, const char *msg=0)
 
virtual void FSTART_SET(fpreal val)
 
void setFullFrameRange(fpreal start, fpreal end, fpreal finc)
 
#define SYS_VISIBILITY_EXPORT
 
virtual void FINC_SET(fpreal val)
 
GT_API const UT_StringHolder time
 
OIIO_UTIL_API bool copy(string_view from, string_view to, std::string &err)
 
virtual void FEND_SET(fpreal val)
 
const GLuint GLenum const void * binary
 
void setExecuteOverride(ROP_ExecuteOverride f, void *d)
 
GLsizei const GLchar *const * path
 
void addSystemError(const char *msg=0)
 
bool isFirstFrame() const 
 
Parameters for OP_Node::getInfoText()/OP_Node::getNodeSpecificInfoText() 
 
OP_VERSION myCachedVersion
 
bool evalVariableValue(UT_String &v, int index, int thread) override
 
ROP_RenderItemHandle getLastRenderDepItem() const 
 
**But if you need a result
 
void clearTemporaryInputs()
 
virtual void getNodeSpecificInfoText(OP_Context &context, OP_NodeInfoParms &parms)
 
virtual void SETDORANGE(int val)
 
virtual OP_ERROR cookMe(OP_Context &context)=0
 
constexpr auto in(type t, int set) -> bool
 
void setRenderSerial(int render_serial)
 
fpreal getFullEnd() const 
 
std::ostream * getVerbose() const 
 
void setFirstFrame(bool first)
 
void setDoInputsFlag(bool do_inputs)
 
const ROP_RenderDepParms & operator=(const ROP_RenderDepParms ©)
 
void setLastRenderDepItem(ROP_RenderItemHandle item)
 
ROP_RenderDepParms(const ROP_RenderDepParms ©)
 
virtual bool referenceSingleParameter(OP_Parameters *from, int parm_idx, const char *relative_path=nullptr)
 
ROP_RenderMode getRenderMode()
 
virtual const char * getInteractiveImageDevice() const 
 
virtual void DORANGE_SET(int val)
 
virtual void RENDER_TAKE(UT_String &take)
 
void forceBackgroundRender(bool f=true)
 
ROP_Node * getTopLevelRop() const 
 
void evalString(UT_String &val, int pi, int vi, fpreal t) const 
 
constexpr auto set(type rhs) -> int
 
void setFullAscendingFrameRange(ROP_Node &rop)
 
virtual bool getOutputResolution(int &x, int &y)
 
bool getForceBackgroundRender() const 
 
void addWarning(int code, const char *msg=0)
 
#define FLT_SET(name, vi, t, val)
 
ROP_Node * getTemporaryInputs(int i) const 
 
void copyErrorsInto(UT_ErrorManager &error_manager)
 
void addError(int code, const char *msg=0)
 
GLdouble GLdouble GLint GLint order
 
void(* ROP_ExecuteOverride)(ROP_Node *me, fpreal time, void *data)
 
#define INT_SET(name, vi, t, val)
 
GLuint const GLchar * name
 
fpreal getFrameInc() const 
 
const ROP_RenderItemHandle & getDepParent() const 
 
virtual OP_DataType getCookedDataType() const =0
 
bool operator==(const ROP_RenderDepParms ©)
 
GLenum GLenum GLsizei void * table
 
virtual OP_OpTypeId getOpTypeID() const 
 
int getNumTemporaryInputs() const 
 
void setFrameRange(fpreal start, fpreal end, fpreal finc)
 
void setTemporaryInputs(const UT_ValArray< ROP_Node * > &in)
 
void setPreExecuteOverride(ROP_ExecuteOverride f, void *d)
 
int stealErrors(UT_ErrorManager &victim, int rangestart=0, int rangeend=-1, UT_ErrorSeverity severity=UT_ERROR_NONE, bool borrow_only=false)
 
fpreal getFullStart() const 
 
virtual const char * getChildType() const 
 
**Note that the tasks the is the thread number *for the or if it s being executed by a non pool thread(this *can happen in cases where the whole pool is occupied and the calling *thread contributes to running the work load).**Thread pool.Have fun
 
void setExecuteContext(ROP_ExecuteContext *c)
 
bool getIgnoreBypass() const 
 
virtual const char * getFileExtension(int binary) const =0
 
GA_API const UT_StringHolder parms
 
Parameters for OP_Node::fillInfoTree()/OP_Node::fillInfoTreeNodeSpecific() 
 
void setIgnoreFlags(bool ignore_bypass, bool ignore_locks)
 
virtual void fillInfoTreeNodeSpecific(UT_InfoTree &tree, const OP_NodeInfoTreeParms &parms)
 
ROP_RenderList & getOrder() const 
 
void copyErrorsFrom(UT_ErrorManager &error_manager)
 
void inputConnectChanged(OP_InputIdx which) override
 
File options for manipulating image data on load or save. This class allows you to modify the incomin...
 
void setFrameMerge(bool merge)
 
virtual const char * getOpType() const 
 
void(* ROP_RenderButtonCB)(ROP_Node *, ROP_RenderMode)
 
ROP_ExecuteContext * getExecuteContext()
 
ImageBuf OIIO_API max(Image_or_Const A, Image_or_Const B, ROI roi={}, int nthreads=0)
 
ROP_RenderMode myRenderMode
 
A global error manager scope. 
 
virtual OP_OpTypeId getChildTypeID() const =0
 
**If you just want to fire and args
 
virtual bool evalVariableValue(UT_String &val, int index, int thread)
 
void setTopLevelRop(ROP_Node *rop)
 
bool getIgnoreLocks() const 
 
ROP_Verbose & getRopVerbose()
 
virtual void * getCookedData(const OP_Context &)
 
bool(* ROP_RenderEventCallback)(ROP_Node *node, ROP_RenderEventType event, fpreal time, void *data)
 
bool getFrameMerge() const 
 
void setRenderMode(ROP_RenderMode mode)
 
virtual bool isPreviewAllowed()
Override if preview is supported by rendering to 'ip'. 
 
SYS_VISIBILITY_EXPORT void newDriverOperator(OP_OperatorTable *table)
 
virtual bool getGeometryHandle(const char *path, fpreal t, GU_DetailHandle &gdh, UT_DMatrix4 &world_xform)
 
virtual OP_ERROR bypassMe(OP_Context &context, int &copied_input)=0
 
UT_LockedRawPtr< UT_ErrorManager, OP_Lock > getLockedErrorManager()
 
void setPostExecuteOverride(ROP_ExecuteOverride f, void *d)
 
virtual void onCreated()
Overriden in VOPs. 
 
int getRenderSerial() const 
 
virtual void deleteCookedData()=0