12 #ifndef __COP2_Node_h__
13 #define __COP2_Node_h__
67 class COP2_CheckpointWrapper;
70 class COP2_VolatileParmManager;
82 virtual OP_ERROR open(
short &key,
int clear_errors = 0)
override;
83 bool isOpen()
const {
return myCop2OpenCount > 0; }
84 virtual void close(
short key)
override;
109 float getSequenceTime()
const;
114 void forceRecook(
bool evensmartcache =
false)
override;
122 static void setPreviewLUT(
125 static void setPreviewLUT(
139 int subregion = 1,
int clear = 1,
140 float black = 0.0F,
float white = 1.0F,
142 int ignore_bwpoints=0,
143 const int *comp_map=0,
145 bool interactive =
false,
154 int xstart,
int ystart,
int xend,
int yend,
155 int subregion = 1,
int clear = 1,
156 float black = 0.0F,
float white = 1.0F,
158 int ignore_bwpoints=0,
159 const int *comp_map=0,
161 bool interactive =
false,
164 bool cleanup_after =
true,
181 int subregion = 1,
int clear = 1,
182 float black = 0.0F,
float white = 1.0F,
184 int ignore_bwpoints=0,
186 bool interactive =
false,
189 bool cleanup_after =
true,
205 int xstart,
int ystart,
211 bool isPlaneCached(
const TIL_Plane &refplane,
212 int array_index,
float time,
214 int xstart,
int ystart,
int xend,
int yend,
218 int xstart,
int ystart,
int xend,
int yend,
224 void checkpointCachedTilesForPlane(
226 int array_index,
float time,
228 int xstart,
int ystart,
int xend,
int yend,
231 void checkpointCachedTilesForPlane(
COP2_Context &context,
233 int xstart,
int ystart,
int xend,
int yend,
240 double mapTimeIntoSequence(
double time);
248 int array_index,
float t,
261 bool force_bounds =
true);
265 float t,
int xres,
int yres,
int thread,
266 int &x1,
int &
y1,
int &
x2,
int &
y2)
override;
268 int &x1,
int &
y1,
int &
x2,
int &
y2);
272 inline bool getInputBounds(
int input,
COP2_Context &context,
273 int &x1,
int &
y1,
int &
x2,
int &
y2);
276 bool getInputBounds(
int input,
278 float t,
int xres,
int yres,
280 int &x1,
int &
y1,
int &
x2,
int &
y2);
287 bool isTileAlignedWithInput(
int input,
289 int tilex,
int tiley,
291 bool isTileAlignedWithInput(
int input,
294 float t,
int xres,
int yres,
296 int tilex,
int tiley,
301 bool isTileAlignedWithInputAtTime(
int input,
303 int tilex,
int tiley,
311 bool isInputTileAlignedWithContext(
int input,
313 int tilex,
int tiley,
320 int tilex,
int tiley);
327 bool getInputBoundsDiff(
int input,
COP2_Context &context,
340 virtual double remapTime(
double t);
361 void getScaleFactors(
int xres,
int yres,
362 float &sx,
float &sy)
const;
363 float getXScaleFactor(
int xres)
const;
364 float getYScaleFactor(
int yres)
const;
369 int getPreviewPlane(
int &pindex,
int &aindex);
370 int isFollowingParent(
const COP2_Node *parent);
371 void setPreviewPlane(
int pindex,
int aindex =0);
372 void parentPreviewChanged();
384 void clearTilesInCache();
390 bool =
true) {
return true; }
395 int isAnythingLocked()
const;
398 int isPlaneLocked(
const TIL_Plane *p)
const;
401 int isSequenceLocked(
float t);
404 int isPlaneLocked(
const TIL_Plane *p,
float t);
408 int lockPlanes(
float t);
410 int unlockPlanes(
float t);
414 void enableDiskCache(
bool enable);
418 virtual void setColorSelection(
float *col,
int size,
bool accum);
422 static void tileRemovalCallback(
void *parent,
TIL_Tile *removed);
423 void tileRemoved(
TIL_Tile *removed);
425 static void setViewerCallback(
void (*viewer)(
COP2_Node *,
void *,
430 static void setCookPosition(
float u,
float v);
440 static bool isInitialized();
450 OP_ERROR csev = myCookErrorManager.getSeverity();
452 return sev > csev ? sev : csev;
459 OP_ERROR csev = myCookErrorManager.getSeverity();
461 return sev > csev ? sev : csev;
466 int group_mask = 1)
override;
470 virtual void getPixelFunction(
const TIL_Plane *plane,
471 int array_index,
float t,
488 bool getPixelValue(
const TIL_Plane *plane,
489 int array_index,
float t,
494 bool getPixelValueByUV(
const char *plane_name,
527 static void buildPlanePreviewMenu(
530 static void buildScopeMenu(
533 static void buildPlaneScopeMenu(
536 static void buildScopeMenuNoColAlpha(
539 static void buildPlaneMenu(
542 static void buildCompMenu(
545 static void buildInputScopeMenu(
548 static void buildInputPlaneMenu(
551 static void buildInputCompMenu(
555 void buildPlaneMenu(
PRM_Name *items,
int maxsize,
556 bool useinput =
false,
557 bool planes_only =
false,
558 bool comps_only =
false,
561 bool nocoloralpha =
false);
563 static const char *getAlphaPlaneName();
564 static const char *getMaskPlaneName();
565 static const char *getDepthPlaneName();
566 static const char *getLumPlaneName();
567 static const char *getBumpPlaneName();
568 static const char *getPointPlaneName();
569 static const char *getNormalPlaneName();
570 static const char *getVelocityPlaneName();
571 static const char *getThumbnailPlaneKey();
578 static int dumpCache(
void *me,
int i,
float t,
580 static void printMe(
void *me, std::ostream &os);
582 static void addToFileLoadTime(
float t);
598 int64 mem = inclusive ?
sizeof(*this) : 0;
613 static void initializeExpressions();
614 static void initializeCache();
616 static void installCommands();
628 void inputRes(
int input,
float t,
int xres,
int yres,
629 int &i_xres,
int &i_yres);
635 void setInputBlocked(
bool blocked,
int thread);
639 void removeRegions();
645 {
return CAST_COP2NODE(
getInput(i,
true)); }
650 virtual void getInputDependenciesForOutputArea(
658 COP2_CheckpointWrapper *getCheckpointWrapper(
int array_index);
659 void setCheckpointWrapper(
int array_index,
660 COP2_CheckpointWrapper *wrap);
664 int getNumCheckpointWrappers()
const;
665 COP2_CheckpointWrapper *getWrapper(
int i)
const;
666 void resetCheckpointWrappers();
669 virtual void modifyViewMatrix(
int input,
674 virtual COP2_Node *selectInput(
int px,
int py,
const char *plane_name,
685 static void resetBadMissingFrames();
688 static bool getShowPreviewPref();
689 static void setShowPreviewPref(
bool show);
692 bool relative_references =
true)
override;
703 static unsigned int getCookScore(
float cooktime);
709 void setVariableUseFullRes(
bool onoff);
720 bool collapse =
false,
721 bool check_missing =
false,
722 bool show_missing_only=
false)
override;
727 void addError(
int code,
const char *msg = 0);
728 void addSystemError(
const char *msg = 0);
729 void addWarning(
int code,
const char *msg = 0);
730 void addSystemWarning(
const char *msg = 0);
731 void addMessage(
int code,
const char *msg = 0);
734 void addCookError(
int code,
const char *msg = 0);
735 void addCookSystemError(
const char *msg = 0);
736 void addCookWarning(
int code,
const char *msg = 0);
737 void addCookSystemWarning(
int code,
const char *msg = 0);
738 void addCookMessage(
int code,
const char *msg = 0);
754 virtual const char *getOperationInfo();
759 bool isInputBlocked(
int thread);
773 bool correctorig =
true,
775 bool *was_corrected = 0);
786 bool *was_corrected = 0);
797 bool *was_corrected = 0);
807 bool *was_corrected = 0);
810 bool copyInput(
int input,
818 bool copyInput(
int input,
858 bool correct_aspect =
true,
859 bool correct_bounds =
true,
860 int scan_alignment = 0);
864 inline TIL_Region * inputRegion(
int input_index,
873 bool correct_aspect =
true,
874 bool correct_bounds =
true,
875 int scan_alignment = 0);
893 inline TIL_Region * inputRegion(
int input_index,
905 float t,
int xres,
int yres,
int thread,
906 int xstart,
int ystart,
913 int xstart,
int ystart,
925 int array_index,
float t,
926 int xres,
int yres,
int thread,
927 int xstart,
int ystart,
947 static void scaleImageArea(
float sx,
float sy,
948 int ix1,
int iy1,
int ix2,
int iy2,
949 int &x1,
int &
y1,
int &
x2,
int &
y2);
968 bool input_aspect_adjust =
true,
969 bool streak_off_frame =
false);
974 bool transformRegion(
int input,
978 bool input_aspect_adjust =
true,
979 bool bounds_in_canvas_space =
true,
980 bool streak_off_frame =
false);
982 bool isFullTransform(
int input,
985 bool input_aspect_adjust=
true,
1008 bool deformation =
false);
1010 bool transformBlurRegion(
int input,
1016 bool deformation =
false,
1017 bool bounds_in_canvas_space =
true);
1026 bool bounds_in_canvas_space,
1027 bool streak_off_frame);
1036 float haspect,
float input_haspect,
1037 float vaspect,
float input_vaspect,
1038 bool bounds_in_canvas_space);
1059 bool input_aspect_adjust);
1064 void adjustPivotParms(
int input_index,
1066 bool input_aspect_adjust);
1071 void copyAndPrepareTransformParms(
1085 void releaseRegion(
TIL_Region *,
int output = 0);
1096 int xstart,
int ystart,
1097 int *cache_flag = 0,
1098 int ignore_bypass = 0,
1111 int xstart,
int ystart,
1121 int array_index,
float t,
1122 int xstart,
int ystart);
1125 float t,
int xres,
int yres,
int thread,
1126 int xstart,
int ystart,
bool *
mask =0);
1139 inline void lockParms(
bool lock);
1163 int *x1 = 0,
int *
y1 = 0,
1164 int *
x2 = 0,
int *
y2 = 0);
1168 virtual void computeImageBounds(
COP2_Context &context);
1178 const char *pathPrefix,
1184 const char *
path=0)
override;
1191 int index,
void *dtile =0);
1201 void getOvercookStats(
int &redone,
int &total);
1202 void clearOvercookStats();
1204 void ensureSequenceContainsColorAndAlpha();
1208 virtual void cleanUpInputsRecursively();
1217 void makeOutputAreaDependOnAllInputAreas(
1224 void makeOutputAreaDependOnInputAreas(
int input,
1232 const char *planename,
int array_index,
float t,
1246 void getInputAreasForCollapsedTransformInputs(
1252 bool input_aspect_adjust,
1253 bool clear_uncollapse_list);
1262 bool ignore_missing =
false);
1266 void deAnimateFollowChanRef(
const char *parmname,
1272 void swapParm(
const char *name1,
const char *name2,
1274 void swapStringParm(
const char *name1,
const char *name2,
1281 virtual OP_ERROR setup(
float t,
int xres,
int yres,
int max_threads,
1282 bool doinput =
true);
1284 int xres,
int yres,
int thread_index,
1289 void recursivelyCleanUp();
1290 void cleanUpCookContexts();
1301 unsigned char myCop2RecurseFlag :1,
1302 myFramesAllScopedFlag:1;
1321 int myPreviewPlaneIndex;
1322 int myPreviewPlaneArrayIndex;
1326 float myLastErrorTime;
1328 bool myCop2DirtyFlag;
1359 unsigned char myVarResUsed :1,
1360 myVarImageArrayUsed :1,
1361 myVarImagePlaneUsed :1,
1365 int myNumCookedTiles;
1366 int myDupCookedTiles;
1370 COP2_VolatileParmManager *myVolatileParms;
1378 ut_thread_id_t myOpenThreadId;
1384 static bool theShowPreviewPref;
1389 void setOpenerThread(ut_thread_id_t
thread_id)
1395 bool isOpenerThread()
const
1396 {
return myOpenThreadId
1399 virtual float copTimeTransform(
int input,
COP2_Context &context,
1402 void setupVariables(
const TIL_Plane *plane,
1410 void checkTimeDepAndRange();
1413 void verifyCacheIntegrity() { }
1420 int xstart,
int ystart,
1422 int ignore_bypass = 0,
1425 double *passtime = 0);
1429 int array_index,
float t,
1430 int xstart,
int ystart,
1440 int xstart,
int ystart,
1442 int block,
bool *blocked,
bool *
mask);
1454 void markTimerStart(
int64 *now)
const;
1455 void getElapsedTime(
int64 *now)
const;
1456 void appendCookTimesToPerformanceMonitor();
1457 void setCookDepth(
int d);
1461 int array_index,
float t,
1463 int x1,
int y1,
int x2,
int y2,
1464 int bx1,
int by1,
int bx2,
int by2,
1466 int output,
int share,
1467 int scan_alignment);
1470 void openRegion(
TIL_Region *region,
void *regionmem[4],
1474 static void * threadCookTile(
void *
data);
1480 float low=0.0F,
float high=1.0F)
const;
1487 int x1,
int y1,
int x2,
int y2,
1488 int xshift=0,
int yshift=0,
1489 float low=0.0F,
float high=1.0F,
1491 int ignore_points =0,
1492 float gamma = 1.0F)
const;
1494 void highlightTile(
int thread,
int onoff);
1495 void resetHighlight();
1498 void computeBoundsVariables(
const OP_Context &context,
1502 int orig_xstart,
int orig_ystart,
1503 int orig_xend,
int orig_yend,
1504 int &xstart,
int &ystart,
int &xend,
int ¥d,
1505 int &xtile1,
int &ytile1,
1506 int &xtile2,
int &ytile2,
1507 int &x1,
int &
y1,
int &
x2,
int &
y2,
1508 int &xshift,
int &yshift,
1509 int &bounds_xstart,
int &bounds_ystart,
1510 int &bounds_xend,
int &bounds_yend,
1513 void computeBoundsVariables(
const TIL_Plane *rplane,
1514 float time,
int xres,
int yres,
1517 int orig_xstart,
int orig_ystart,
1518 int orig_xend,
int orig_yend,
1519 int &xstart,
int &ystart,
int &xend,
int ¥d,
1520 int &xtile1,
int &ytile1,
int &xtile2,
int &ytile2,
1521 int &x1,
int &
y1,
int &
x2,
int &
y2,
1522 int &xshift,
int &yshift,
1523 int &bounds_xstart,
int &bounds_ystart,
1524 int &bounds_xend,
int &bounds_yend,
1533 int xstart,
int ystart,
int xend,
int yend,
1534 int &xtile1,
int &ytile1,
int &xtile2,
int &ytile2,
1538 COP2_Node &source_node,
int source_input,
1540 const TIL_Plane *plane,
int array_index,
1541 int x1,
int y1,
int x2,
int y2,
1542 int input_origx,
int input_origy,
1543 int input_xres,
int input_yres,
1544 int filt_xoffset,
int filt_yoffset,
1546 bool bounds_in_canvas_space,
1547 int &tx1,
int &ty1,
int &tx2,
int &ty2,
1548 int preoffset[2],
int postoffset[2]);
1555 int x1,
int y1,
int x2,
int y2,
1556 int input_x1,
int input_y1,
1557 int input_x2,
int input_y2,
1558 int input_xres,
int input_yres,
1559 int full_input_xres,
int full_input_yres,
1560 int filt_xoffset,
int filt_yoffset,
1561 float haspect,
float input_haspect,
1562 float vaspect,
float input_vaspect,
1563 bool bounds_in_canvas_space,
1571 int x1,
int y1,
int x2,
int y2,
1572 int input_x1,
int input_y1,
1573 int node_x1,
int node_y1,
1574 int node_x2,
int node_y2,
1575 int input_xres,
int input_yres,
1576 int full_input_xres,
int full_input_yres,
1577 int filt_xoffset,
int filt_yoffset,
1578 float haspect,
float input_haspect,
1579 float vaspect,
float input_vaspect,
1580 bool bounds_in_canvas_space,
1583 bool transformBlurRegionCPU(
int input,
1588 float prev,
float next,
int numtimes,
1589 float itime[3],
float ifact[3],
1590 bool bounds_in_canvas_space,
1591 int filt_xoffset,
int filt_yoffset,
1592 int input_origx,
int input_origy,
1593 int ixres,
int iyres,
1594 int x1,
int y1,
int x2,
int y2,
1595 float startt,
float endt,
float incr,
1598 bool transformBlurRegionGPU(
int input,
1603 float prev,
float next,
int numtimes,
1604 float itime[3],
float ifact[3],
1605 bool bounds_in_canvas_space,
1606 int filt_xoffset,
int filt_yoffset,
1607 int input_origx,
int input_origy,
1608 int ixres,
int iyres,
1609 int x1,
int y1,
int x2,
int y2,
1610 float startt,
float endt,
float incr,
1618 const char *
path=0)
override;
1620 const char *
path=0)
override;
1628 {
return binary ?
"bcop2" :
"cop2"; }
1630 static void installExpressions();
1632 friend class COP2_CookScheduler;
1633 friend class COP2_VexVariableMap;
1635 friend class COP2_VexOp;
1641 int xstart,
int ystart,
OP_ERROR *err,
int block,
1642 bool *
mask,
bool *blocked,
bool *was_corrected)
1646 context.
myTime, xstart, ystart, err, block, mask, 0,
1647 true, blocked, was_corrected);
1654 bool *
mask,
bool *blocked,
bool *was_corrected)
1661 err, block, mask, 0,
true, blocked, was_corrected);
1668 bool *was_corrected)
1671 t, tilelist->
myX1, tilelist->
myY1, err, block, mask,
1672 0,
true, blocked, was_corrected);
1683 context.
myTime, tilelist, xshift, yshift, copy, hold);
1688 int xstart,
int ystart,
int xend,
int yend,
1691 bool correct_aspect,
bool correct_bounds,
1696 context.
myTime, xstart, ystart, xend, yend,
1697 hold, share, regionmem, correct_aspect,
1698 correct_bounds, scan_alignment);
1703 int xres,
int yres,
int thread,
1704 int xstart,
int ystart,
int xend,
int yend,
int share,
1705 int rindex,
int alignment)
1707 return outputRegion(plane, plane, array_index, seqt, xres, yres, thread,
1708 xstart, ystart, xend, yend, share, rindex,alignment);
1722 int &x1,
int &
y1,
int &
x2,
int &
y2)
1731 int &x1,
int &
y1,
int &
x2,
int &
y2)
virtual int saveCookedData(std::ostream &os, OP_Context &, int binary=0)=0
SYS_VISIBILITY_EXPORT void newCop2Operator(OP_OperatorTable *table)
UT_ErrorSeverity OP_ERROR
void getImageBounds(const TIL_Plane *plane, int array, float t, int xres, int yres, int thread, int &x1, int &y1, int &x2, int &y2) override
fpreal getH() const override
Node position/scale is used by the UI.
virtual bool isSlowOperation() const
fpreal getW() const override
Node position/scale is used by the UI.
int getThreadIndex() const
virtual bool isInterrupted(int thread)=0
#define COP2_MULTITHREADED
virtual int getNetOverviewColor(UT_Color &color)
unsigned referenceAllParameters(OP_Parameters *from, bool relative_references=true) override
TIL_ImageSource * getImageSource()
#define SYS_VISIBILITY_EXPORT
virtual bool isPixelBased() const
virtual void setInterrupted(int)=0
GT_API const UT_StringHolder time
OP_ERROR error() override
OIIO_UTIL_API bool copy(string_view from, string_view to, std::string &err)
virtual int isScaledImageDifferent() const
OP_OpTypeId getChildTypeID() const override
virtual bool doesFrameExist(int, bool=true)
const GLuint GLenum const void * binary
GLsizei const GLchar *const * path
void lockParms(bool lock)
virtual bool preferredViewPlane(UT_WorkBuffer &)
virtual void forceRecook(bool evensmartcache=true)
COP2_ThreadPref getThreadPref() const
TIL_Sequence & getSequence() override
OP_ERROR getErrorSeverity() override
Parameters for OP_Node::getInfoText()/OP_Node::getNodeSpecificInfoText()
TIL_Region * outputRegion(const TIL_Plane *plane, int array_index, float t, int xres, int yres, int thread, int xstart, int ystart, int xend, int yend, int share=1, int rindex=0, int alignment=0)
const char * getOpType() const override
int64 getMemoryUsage(bool inclusive) const override
UT_ErrorManager myCookErrorManager
virtual void getNodeSpecificInfoText(OP_Context &context, OP_NodeInfoParms &parms)
OP_ERROR bypassMe(OP_Context &, int &) override
static OP_VariablePair myVariablePair
static const char * theChildTableName
virtual int getNumInputsToOpen() const
const TIL_Plane * myPlane
bool evalVariableValue(UT_String &v, int i, int thr) override
virtual unsigned nInputs() const
virtual bool isTimeDepOperation()
virtual bool allowPartiallyScopedPlanes() const
virtual float getPercentageComplete(int num_extra_tiles_cooked) const =0
OP_ERROR cookMe(OP_Context &) override
OP_ERROR(* COP2_FullImageCB)(COP2_Context &, const TIL_Region *, TIL_Region *, COP2_Node *)
virtual bool isGenerator() const
virtual int scope(UT_String &)
virtual void cleanUpAllRegions()=0
virtual void raiseImageTooLargeError()=0
virtual COP2_ThreadPref getThreadPreference() const
virtual int getNumThreadsToUse() const =0
void opChanged(OP_EventType reason, void *data=0) override
int64 getMemoryUsage(bool inclusive) const override
virtual OP_ERROR saveIntrinsic(std::ostream &os, const OP_SaveFlags &flags)
GLsizei GLsizei GLchar * source
virtual void getMaxNumThreadsInCook(COP2_Context &, int &plane, int &node, int &op) const
OP_OpTypeId getOpTypeID() const override
#define PLANE_MAX_VECTOR_SIZE
virtual bool cook(OP_Context &context)
virtual void userDataChanged(const UT_StringHolder &key)
HUSD_API const char * raster()
virtual void getImageBounds(const TIL_Plane *plane, int array, float t, int xres, int yres, int thread, int &x1, int &y1, int &x2, int &y2)=0
GLuint const GLchar * name
virtual int cookToRaster(UT_ValArray< TIL_Raster * > &rasters, UT_ValArray< OP_Context * > &contexts, UT_ValArray< const TIL_Plane * > &planes, UT_IntArray &array_index, UT_ValArray< const int * > &comp_map, UT_Array< UT_InclusiveRect > &bounds, int subregion=1, int clear=1, float black=0.0F, float white=1.0F, int compindex=-1, int ignore_bwpoints=0, float gamma=1.0F, bool interactive=false, UT_ValArray< TIL_Raster * > *tiles=0, int tile_index=0, TIL_TileMPlay *=0, bool cleanup_after=true, const UT_StringHolder &ocio_ospace=UT_StringHolder(), const UT_StringHolder &ocio_look=UT_StringHolder(), const UT_StringHolder &ocio_display=UT_StringHolder(), const UT_StringHolder &ocio_view=UT_StringHolder())=0
virtual bool isTimeModifier() const
bool getInputBounds(int input, COP2_Context &context, int &x1, int &y1, int &x2, int &y2)
GLenum GLenum GLsizei void * table
virtual void getInputRes(int input, fpreal t, const OP_Context &context, OP_Context &input_context)
**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
OP_ERROR error(OP_Context &context) override
virtual const char * getFileExtension(int binary) const =0
TIL_Region * inputRegion(int input_index, COP2_Context &context, const TIL_Plane *plane, int array_index, float t, int xstart, int ystart, int xend, int yend, TIL_RegionExtend hold=TIL_BLACK, int share=1, void *regionmem[PLANE_MAX_VECTOR_SIZE]=0, bool correct_aspect=true, bool correct_bounds=true, int scan_alignment=0)
virtual bool onlyCookInMainThread() const
Parameters for OP_Node::fillInfoTree()/OP_Node::fillInfoTreeNodeSpecific()
virtual void fillInfoTreeNodeSpecific(UT_InfoTree &tree, const OP_NodeInfoTreeParms &parms)
virtual int isSingleThreadedCop() const
OP_DataType getCookedDataType() const override
OP_ERROR getErrorSeverity() override
virtual fpreal getTimeTransform(int input, fpreal t)
static ut_thread_id_t getMyThreadId()
virtual bool loadPacket(UT_IStream &is, short class_id, short sig, const char *path=0)
A global error manager scope.
virtual void getMyExternalReferences(UT_StringArray &reflist, UT_StringArray *nodelist=0, bool collapse=false, bool check_missing=false, bool show_missing_only=false)
static OP_TemplatePair myTemplatePair
virtual bool evalVariableValue(UT_String &val, int index, int thread)
virtual void waitForLastFile()=0
virtual bool isFrameScoped(int)
virtual bool isGPUAssisted(const TIL_Plane &, int, float, int, int, int)
bool load(UT_IStream &is, const char *ext="", const char *path=0) override
virtual int frameScope(UT_String &)
const TIL_Plane * myPlane
virtual OP_ERROR save(std::ostream &os, const OP_SaveFlags &flags, const char *path_prefix="", const UT_String &name_override=UT_String())
virtual COP2_Node * getInputToOpen(int i)
GLdouble GLdouble GLdouble y2
COP2_ThreadPref myThreadPreference
**Note that the tasks the thread_id
virtual void inputOpenFailed(int)
virtual int getMaskInput() const
OP_Node * getOp() override
virtual UT_TokenString & getParmHashCode(OP_Context &context, int group_mask=1)
virtual OP_ERROR open(short &key, int clear_errors=0)=0
OIIO_UTIL_API std::string extension(string_view filepath, bool include_dot=true) noexcept
TIL_TileList * inputTile(int input_index, COP2_Context &context, const TIL_Plane *plane, int array_index, float t, int xstart, int ystart, OP_ERROR *err=0, int block=1, bool *mask=0, COP2_Node *fromtile=0, bool correctorig=true, bool *blocked=0, bool *was_corrected=0)
virtual void close(short key)=0
const char * getChildType() const override
bool isCooking(bool include_ancestors) const
void * getCookedData(const OP_Context &) override
virtual void deleteCookedData()=0
bool isDiskCacheEnabled() const