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;
611 static void initializeExpressions();
612 static void initializeCache();
614 static void installCommands();
626 void inputRes(
int input,
float t,
int xres,
int yres,
627 int &i_xres,
int &i_yres);
633 void setInputBlocked(
bool blocked,
int thread);
637 void removeRegions();
643 {
return CAST_COP2NODE(
getInput(i,
true)); }
648 virtual void getInputDependenciesForOutputArea(
656 COP2_CheckpointWrapper *getCheckpointWrapper(
int array_index);
657 void setCheckpointWrapper(
int array_index,
658 COP2_CheckpointWrapper *wrap);
662 int getNumCheckpointWrappers()
const;
663 COP2_CheckpointWrapper *getWrapper(
int i)
const;
664 void resetCheckpointWrappers();
667 virtual void modifyViewMatrix(
int input,
672 virtual COP2_Node *selectInput(
int px,
int py,
const char *plane_name,
683 static void resetBadMissingFrames();
686 static bool getShowPreviewPref();
687 static void setShowPreviewPref(
bool show);
690 bool relative_references =
true)
override;
701 static unsigned int getCookScore(
float cooktime);
707 void setVariableUseFullRes(
bool onoff);
718 bool collapse =
false,
719 bool check_missing =
false,
720 bool show_missing_only=
false)
override;
725 void addError(
int code,
const char *msg = 0);
726 void addSystemError(
const char *msg = 0);
727 void addWarning(
int code,
const char *msg = 0);
728 void addSystemWarning(
const char *msg = 0);
729 void addMessage(
int code,
const char *msg = 0);
732 void addCookError(
int code,
const char *msg = 0);
733 void addCookSystemError(
const char *msg = 0);
734 void addCookWarning(
int code,
const char *msg = 0);
735 void addCookSystemWarning(
int code,
const char *msg = 0);
736 void addCookMessage(
int code,
const char *msg = 0);
752 virtual const char *getOperationInfo();
757 bool isInputBlocked(
int thread);
771 bool correctorig =
true,
773 bool *was_corrected = 0);
784 bool *was_corrected = 0);
795 bool *was_corrected = 0);
805 bool *was_corrected = 0);
808 bool copyInput(
int input,
816 bool copyInput(
int input,
856 bool correct_aspect =
true,
857 bool correct_bounds =
true,
858 int scan_alignment = 0);
862 inline TIL_Region * inputRegion(
int input_index,
871 bool correct_aspect =
true,
872 bool correct_bounds =
true,
873 int scan_alignment = 0);
891 inline TIL_Region * inputRegion(
int input_index,
903 float t,
int xres,
int yres,
int thread,
904 int xstart,
int ystart,
911 int xstart,
int ystart,
923 int array_index,
float t,
924 int xres,
int yres,
int thread,
925 int xstart,
int ystart,
945 static void scaleImageArea(
float sx,
float sy,
946 int ix1,
int iy1,
int ix2,
int iy2,
947 int &x1,
int &
y1,
int &
x2,
int &
y2);
966 bool input_aspect_adjust =
true,
967 bool streak_off_frame =
false);
972 bool transformRegion(
int input,
976 bool input_aspect_adjust =
true,
977 bool bounds_in_canvas_space =
true,
978 bool streak_off_frame =
false);
980 bool isFullTransform(
int input,
983 bool input_aspect_adjust=
true,
1006 bool deformation =
false);
1008 bool transformBlurRegion(
int input,
1014 bool deformation =
false,
1015 bool bounds_in_canvas_space =
true);
1024 bool bounds_in_canvas_space,
1025 bool streak_off_frame);
1034 float haspect,
float input_haspect,
1035 float vaspect,
float input_vaspect,
1036 bool bounds_in_canvas_space);
1057 bool input_aspect_adjust);
1062 void adjustPivotParms(
int input_index,
1064 bool input_aspect_adjust);
1069 void copyAndPrepareTransformParms(
1083 void releaseRegion(
TIL_Region *,
int output = 0);
1094 int xstart,
int ystart,
1095 int *cache_flag = 0,
1096 int ignore_bypass = 0,
1109 int xstart,
int ystart,
1119 int array_index,
float t,
1120 int xstart,
int ystart);
1123 float t,
int xres,
int yres,
int thread,
1124 int xstart,
int ystart,
bool *
mask =0);
1137 inline void lockParms(
bool lock);
1161 int *x1 = 0,
int *
y1 = 0,
1162 int *
x2 = 0,
int *
y2 = 0);
1166 virtual void computeImageBounds(
COP2_Context &context);
1176 const char *pathPrefix,
1182 const char *
path=0)
override;
1189 int index,
void *dtile =0);
1199 void getOvercookStats(
int &redone,
int &total);
1200 void clearOvercookStats();
1202 void ensureSequenceContainsColorAndAlpha();
1206 virtual void cleanUpInputsRecursively();
1215 void makeOutputAreaDependOnAllInputAreas(
1222 void makeOutputAreaDependOnInputAreas(
int input,
1230 const char *planename,
int array_index,
float t,
1244 void getInputAreasForCollapsedTransformInputs(
1250 bool input_aspect_adjust,
1251 bool clear_uncollapse_list);
1260 bool ignore_missing =
false);
1264 void deAnimateFollowChanRef(
const char *parmname,
1270 void swapParm(
const char *name1,
const char *name2,
1272 void swapStringParm(
const char *name1,
const char *name2,
1279 virtual OP_ERROR setup(
float t,
int xres,
int yres,
int max_threads,
1280 bool doinput =
true);
1282 int xres,
int yres,
int thread_index,
1287 void recursivelyCleanUp();
1288 void cleanUpCookContexts();
1299 unsigned char myCop2RecurseFlag :1,
1300 myFramesAllScopedFlag:1;
1319 int myPreviewPlaneIndex;
1320 int myPreviewPlaneArrayIndex;
1324 float myLastErrorTime;
1326 bool myCop2DirtyFlag;
1357 unsigned char myVarResUsed :1,
1358 myVarImageArrayUsed :1,
1359 myVarImagePlaneUsed :1,
1363 int myNumCookedTiles;
1364 int myDupCookedTiles;
1368 COP2_VolatileParmManager *myVolatileParms;
1376 ut_thread_id_t myOpenThreadId;
1382 static bool theShowPreviewPref;
1387 void setOpenerThread(ut_thread_id_t
thread_id)
1393 bool isOpenerThread()
const
1394 {
return myOpenThreadId
1397 virtual float copTimeTransform(
int input,
COP2_Context &context,
1400 void setupVariables(
const TIL_Plane *plane,
1408 void checkTimeDepAndRange();
1411 void verifyCacheIntegrity() { }
1418 int xstart,
int ystart,
1420 int ignore_bypass = 0,
1423 double *passtime = 0);
1427 int array_index,
float t,
1428 int xstart,
int ystart,
1438 int xstart,
int ystart,
1440 int block,
bool *blocked,
bool *
mask);
1452 void markTimerStart(
int64 *now)
const;
1453 void getElapsedTime(
int64 *now)
const;
1454 void appendCookTimesToPerformanceMonitor();
1455 void setCookDepth(
int d);
1459 int array_index,
float t,
1461 int x1,
int y1,
int x2,
int y2,
1462 int bx1,
int by1,
int bx2,
int by2,
1464 int output,
int share,
1465 int scan_alignment);
1468 void openRegion(
TIL_Region *region,
void *regionmem[4],
1472 static void * threadCookTile(
void *
data);
1478 float low=0.0F,
float high=1.0F)
const;
1485 int x1,
int y1,
int x2,
int y2,
1486 int xshift=0,
int yshift=0,
1487 float low=0.0F,
float high=1.0F,
1489 int ignore_points =0,
1490 float gamma = 1.0F)
const;
1492 void highlightTile(
int thread,
int onoff);
1493 void resetHighlight();
1496 void computeBoundsVariables(
const OP_Context &context,
1500 int orig_xstart,
int orig_ystart,
1501 int orig_xend,
int orig_yend,
1502 int &xstart,
int &ystart,
int &xend,
int ¥d,
1503 int &xtile1,
int &ytile1,
1504 int &xtile2,
int &ytile2,
1505 int &x1,
int &
y1,
int &
x2,
int &
y2,
1506 int &xshift,
int &yshift,
1507 int &bounds_xstart,
int &bounds_ystart,
1508 int &bounds_xend,
int &bounds_yend,
1511 void computeBoundsVariables(
const TIL_Plane *rplane,
1512 float time,
int xres,
int yres,
1515 int orig_xstart,
int orig_ystart,
1516 int orig_xend,
int orig_yend,
1517 int &xstart,
int &ystart,
int &xend,
int ¥d,
1518 int &xtile1,
int &ytile1,
int &xtile2,
int &ytile2,
1519 int &x1,
int &
y1,
int &
x2,
int &
y2,
1520 int &xshift,
int &yshift,
1521 int &bounds_xstart,
int &bounds_ystart,
1522 int &bounds_xend,
int &bounds_yend,
1531 int xstart,
int ystart,
int xend,
int yend,
1532 int &xtile1,
int &ytile1,
int &xtile2,
int &ytile2,
1536 COP2_Node &source_node,
int source_input,
1538 const TIL_Plane *plane,
int array_index,
1539 int x1,
int y1,
int x2,
int y2,
1540 int input_origx,
int input_origy,
1541 int input_xres,
int input_yres,
1542 int filt_xoffset,
int filt_yoffset,
1544 bool bounds_in_canvas_space,
1545 int &tx1,
int &ty1,
int &tx2,
int &ty2,
1546 int preoffset[2],
int postoffset[2]);
1553 int x1,
int y1,
int x2,
int y2,
1554 int input_x1,
int input_y1,
1555 int input_x2,
int input_y2,
1556 int input_xres,
int input_yres,
1557 int full_input_xres,
int full_input_yres,
1558 int filt_xoffset,
int filt_yoffset,
1559 float haspect,
float input_haspect,
1560 float vaspect,
float input_vaspect,
1561 bool bounds_in_canvas_space,
1569 int x1,
int y1,
int x2,
int y2,
1570 int input_x1,
int input_y1,
1571 int node_x1,
int node_y1,
1572 int node_x2,
int node_y2,
1573 int input_xres,
int input_yres,
1574 int full_input_xres,
int full_input_yres,
1575 int filt_xoffset,
int filt_yoffset,
1576 float haspect,
float input_haspect,
1577 float vaspect,
float input_vaspect,
1578 bool bounds_in_canvas_space,
1581 bool transformBlurRegionCPU(
int input,
1586 float prev,
float next,
int numtimes,
1587 float itime[3],
float ifact[3],
1588 bool bounds_in_canvas_space,
1589 int filt_xoffset,
int filt_yoffset,
1590 int input_origx,
int input_origy,
1591 int ixres,
int iyres,
1592 int x1,
int y1,
int x2,
int y2,
1593 float startt,
float endt,
float incr,
1596 bool transformBlurRegionGPU(
int input,
1601 float prev,
float next,
int numtimes,
1602 float itime[3],
float ifact[3],
1603 bool bounds_in_canvas_space,
1604 int filt_xoffset,
int filt_yoffset,
1605 int input_origx,
int input_origy,
1606 int ixres,
int iyres,
1607 int x1,
int y1,
int x2,
int y2,
1608 float startt,
float endt,
float incr,
1616 const char *
path=0)
override;
1618 const char *
path=0)
override;
1626 {
return binary ?
"bcop2" :
"cop2"; }
1628 static void installExpressions();
1630 friend class COP2_CookScheduler;
1631 friend class COP2_VexVariableMap;
1633 friend class COP2_VexOp;
1639 int xstart,
int ystart,
OP_ERROR *err,
int block,
1640 bool *
mask,
bool *blocked,
bool *was_corrected)
1644 context.
myTime, xstart, ystart, err, block, mask, 0,
1645 true, blocked, was_corrected);
1652 bool *
mask,
bool *blocked,
bool *was_corrected)
1659 err, block, mask, 0,
true, blocked, was_corrected);
1666 bool *was_corrected)
1669 t, tilelist->
myX1, tilelist->
myY1, err, block, mask,
1670 0,
true, blocked, was_corrected);
1681 context.
myTime, tilelist, xshift, yshift, copy, hold);
1686 int xstart,
int ystart,
int xend,
int yend,
1689 bool correct_aspect,
bool correct_bounds,
1694 context.
myTime, xstart, ystart, xend, yend,
1695 hold, share, regionmem, correct_aspect,
1696 correct_bounds, scan_alignment);
1701 int xres,
int yres,
int thread,
1702 int xstart,
int ystart,
int xend,
int yend,
int share,
1703 int rindex,
int alignment)
1705 return outputRegion(plane, plane, array_index, seqt, xres, yres, thread,
1706 xstart, ystart, xend, yend, share, rindex,alignment);
1720 int &x1,
int &
y1,
int &
x2,
int &
y2)
1729 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
virtual bool loadPacket(UT_IStream &is, short class_id, short sig, const char *path=nullptr)
#define COP2_MULTITHREADED
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()
void opChanged(OP_EventType reason, void *data=nullptr) override
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 *)
GLint GLint GLsizei GLint GLenum GLenum type
virtual bool isGenerator() const
virtual void getMyExternalReferences(UT_StringArray &reflist, UT_StringArray *nodelist=nullptr, bool collapse=false, bool check_missing=false, bool show_missing_only=false)
virtual int scope(UT_String &)
virtual void cleanUpAllRegions()=0
virtual void raiseImageTooLargeError()=0
virtual COP2_ThreadPref getThreadPreference() const
virtual int getNumThreadsToUse() const =0
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
GA_API const UT_StringHolder parms
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 OP_ERROR save(std::ostream &os, const OP_SaveFlags &flags, const char *path_prefix="", const UT_StringHolder &name_override=UT_StringHolder())
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()
A global error manager scope.
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)
virtual int frameScope(UT_String &)
const TIL_Plane * myPlane
virtual COP2_Node * getInputToOpen(int i)
bool load(UT_IStream &is, const char *ext="", const char *path=nullptr) override
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