12 #ifndef __COP2_Node_h__
13 #define __COP2_Node_h__
64 class COP2_CheckpointWrapper;
67 class COP2_VolatileParmManager;
80 bool isOpen()
const {
return myCop2OpenCount > 0; }
81 virtual void close(
short key);
90 float getSequenceTime()
const;
95 void forceRecook(
bool evensmartcache =
false)
override;
103 static void setPreviewLUT(
106 static void setPreviewLUT(
120 int subregion = 1,
int clear = 1,
121 float black = 0.0F,
float white = 1.0F,
123 int ignore_bwpoints=0,
124 const int *comp_map=0,
126 bool interactive =
false,
135 int xstart,
int ystart,
int xend,
int yend,
136 int subregion = 1,
int clear = 1,
137 float black = 0.0F,
float white = 1.0F,
139 int ignore_bwpoints=0,
140 const int *comp_map=0,
142 bool interactive =
false,
145 bool cleanup_after =
true,
162 int subregion = 1,
int clear = 1,
163 float black = 0.0F,
float white = 1.0F,
165 int ignore_bwpoints=0,
167 bool interactive =
false,
170 bool cleanup_after =
true,
186 int xstart,
int ystart,
192 bool isPlaneCached(
const TIL_Plane &refplane,
193 int array_index,
float time,
195 int xstart,
int ystart,
int xend,
int yend,
199 int xstart,
int ystart,
int xend,
int yend,
205 void checkpointCachedTilesForPlane(
207 int array_index,
float time,
209 int xstart,
int ystart,
int xend,
int yend,
212 void checkpointCachedTilesForPlane(
COP2_Context &context,
214 int xstart,
int ystart,
int xend,
int yend,
221 double mapTimeIntoSequence(
double time);
234 const char *uselut = 0,
237 bool single_frame =
false,
238 bool thread_io =
false,
239 bool env_map =
false,
240 bool use_progress_dialog=
true);
246 const char *cplane,
const char *aplane = 0,
251 const char *uselut = 0,
254 bool single_frame =
false,
255 bool thread_io =
false,
256 bool env_map =
false,
257 bool use_progress_dialog=
true);
259 void waitForLastFile();
268 bool (*updateCallback)(
void *) = 0,
269 void *updateEntity = 0,
270 bool write_houdini_frame =
true,
271 const char *session_label = NULL,
281 int array_index,
float t,
294 bool force_bounds =
true);
297 void getImageBounds(
const TIL_Plane *plane,
int array,
298 float t,
int xres,
int yres,
int thread,
299 int &x1,
int &
y1,
int &
x2,
int &
y2);
301 int &x1,
int &
y1,
int &
x2,
int &
y2);
305 inline bool getInputBounds(
int input,
COP2_Context &context,
306 int &x1,
int &
y1,
int &
x2,
int &
y2);
309 bool getInputBounds(
int input,
311 float t,
int xres,
int yres,
313 int &x1,
int &
y1,
int &
x2,
int &
y2);
320 bool isTileAlignedWithInput(
int input,
322 int tilex,
int tiley,
324 bool isTileAlignedWithInput(
int input,
327 float t,
int xres,
int yres,
329 int tilex,
int tiley,
334 bool isTileAlignedWithInputAtTime(
int input,
336 int tilex,
int tiley,
344 bool isInputTileAlignedWithContext(
int input,
346 int tilex,
int tiley,
353 int tilex,
int tiley);
360 bool getInputBoundsDiff(
int input,
COP2_Context &context,
373 virtual double remapTime(
double t);
394 void getScaleFactors(
int xres,
int yres,
395 float &sx,
float &sy)
const;
396 float getXScaleFactor(
int xres)
const;
397 float getYScaleFactor(
int yres)
const;
402 int getPreviewPlane(
int &pindex,
int &aindex);
403 int isFollowingParent(
const COP2_Node *parent);
404 void setPreviewPlane(
int pindex,
int aindex =0);
405 void parentPreviewChanged();
417 void clearTilesInCache();
423 bool =
true) {
return true; }
428 int isAnythingLocked()
const;
431 int isPlaneLocked(
const TIL_Plane *p)
const;
434 int isSequenceLocked(
float t);
437 int isPlaneLocked(
const TIL_Plane *p,
float t);
441 int lockPlanes(
float t);
443 int unlockPlanes(
float t);
447 void enableDiskCache(
bool enable);
451 virtual void setColorSelection(
float *col,
int size,
bool accum);
455 static void tileRemovalCallback(
void *parent,
TIL_Tile *removed);
456 void tileRemoved(
TIL_Tile *removed);
458 static void setUpdateCallback(
void (*callback)(
float,
bool,
bool));
459 static void setViewerCallback(
void (*viewer)(
COP2_Node *,
void *,
464 static void setCookPosition(
float u,
float v);
465 static void abortCook();
466 static bool isCookAborted();
467 static void resetAbortFlag();
470 bool isCookAborted(
int thread_index);
472 bool isInterrupted(
int threadidx);
473 void setInterrupted(
int threadidx);
478 static bool isInitialized();
488 OP_ERROR csev = myCookErrorManager.getSeverity();
490 return sev > csev ? sev : csev;
497 OP_ERROR csev = myCookErrorManager.getSeverity();
499 return sev > csev ? sev : csev;
504 int group_mask = 1)
override;
508 virtual void getPixelFunction(
const TIL_Plane *plane,
509 int array_index,
float t,
526 bool getPixelValue(
const TIL_Plane *plane,
527 int array_index,
float t,
532 bool getPixelValueByUV(
const char *plane_name,
562 static void setWorkingThreadId(
int thread_index);
563 static void clearWorkingThreadId(
int thread_index);
567 int getThreadIndex();
570 static void buildPlanePreviewMenu(
573 static void buildScopeMenu(
576 static void buildPlaneScopeMenu(
579 static void buildScopeMenuNoColAlpha(
582 static void buildPlaneMenu(
585 static void buildCompMenu(
588 static void buildInputScopeMenu(
591 static void buildInputPlaneMenu(
594 static void buildInputCompMenu(
598 void buildPlaneMenu(
PRM_Name *items,
int maxsize,
599 bool useinput =
false,
600 bool planes_only =
false,
601 bool comps_only =
false,
604 bool nocoloralpha =
false);
606 static const char *getColorPlaneName();
607 static const char *getAlphaPlaneName();
608 static const char *getMaskPlaneName();
609 static const char *getDepthPlaneName();
610 static const char *getLumPlaneName();
611 static const char *getBumpPlaneName();
612 static const char *getPointPlaneName();
613 static const char *getNormalPlaneName();
614 static const char *getVelocityPlaneName();
615 static const char *getThumbnailPlaneKey();
622 static int dumpCache(
void *me,
int i,
float t,
624 static void printMe(
void *me, std::ostream &os);
626 static void addToFileLoadTime(
float t);
642 int64 mem = inclusive ?
sizeof(*this) : 0;
657 static void initializeExpressions();
658 static void initializeCache();
660 static void installCommands();
672 void inputRes(
int input,
float t,
int xres,
int yres,
673 int &i_xres,
int &i_yres);
679 void setInputBlocked(
bool blocked,
int thread);
683 void removeRegions();
689 {
return CAST_COP2NODE(
getInput(i,
true)); }
694 virtual void getInputDependenciesForOutputArea(
702 COP2_CheckpointWrapper *getCheckpointWrapper(
int array_index);
703 void setCheckpointWrapper(
int array_index,
704 COP2_CheckpointWrapper *wrap);
708 int getNumCheckpointWrappers()
const;
709 COP2_CheckpointWrapper *getWrapper(
int i)
const;
710 void resetCheckpointWrappers();
713 virtual void modifyViewMatrix(
int input,
718 virtual COP2_Node *selectInput(
int px,
int py,
const char *plane_name,
729 static void resetBadMissingFrames();
732 static bool getShowPreviewPref();
733 static void setShowPreviewPref(
bool show);
736 bool relative_references =
true)
override;
747 static unsigned int getCookScore(
float cooktime);
753 void setVariableUseFullRes(
bool onoff);
764 bool collapse =
false,
765 bool check_missing =
false,
766 bool show_missing_only=
false)
override;
771 void addError(
int code,
const char *msg = 0);
772 void addSystemError(
const char *msg = 0);
773 void addWarning(
int code,
const char *msg = 0);
774 void addSystemWarning(
const char *msg = 0);
775 void addMessage(
int code,
const char *msg = 0);
778 void addCookError(
int code,
const char *msg = 0);
779 void addCookSystemError(
const char *msg = 0);
780 void addCookWarning(
int code,
const char *msg = 0);
781 void addCookSystemWarning(
int code,
const char *msg = 0);
782 void addCookMessage(
int code,
const char *msg = 0);
798 virtual const char *getOperationInfo();
803 bool isInputBlocked(
int thread);
817 bool correctorig =
true,
819 bool *was_corrected = 0);
830 bool *was_corrected = 0);
841 bool *was_corrected = 0);
851 bool *was_corrected = 0);
854 bool copyInput(
int input,
862 bool copyInput(
int input,
902 bool correct_aspect =
true,
903 bool correct_bounds =
true,
904 int scan_alignment = 0);
908 inline TIL_Region * inputRegion(
int input_index,
917 bool correct_aspect =
true,
918 bool correct_bounds =
true,
919 int scan_alignment = 0);
937 inline TIL_Region * inputRegion(
int input_index,
949 float t,
int xres,
int yres,
int thread,
950 int xstart,
int ystart,
957 int xstart,
int ystart,
969 int array_index,
float t,
970 int xres,
int yres,
int thread,
971 int xstart,
int ystart,
991 static void scaleImageArea(
float sx,
float sy,
992 int ix1,
int iy1,
int ix2,
int iy2,
993 int &x1,
int &
y1,
int &
x2,
int &
y2);
1012 bool input_aspect_adjust =
true,
1013 bool streak_off_frame =
false);
1018 bool transformRegion(
int input,
1022 bool input_aspect_adjust =
true,
1023 bool bounds_in_canvas_space =
true,
1024 bool streak_off_frame =
false);
1026 bool isFullTransform(
int input,
1029 bool input_aspect_adjust=
true,
1031 int *source_index=0,
1052 bool deformation =
false);
1054 bool transformBlurRegion(
int input,
1060 bool deformation =
false,
1061 bool bounds_in_canvas_space =
true);
1070 bool bounds_in_canvas_space,
1071 bool streak_off_frame);
1080 float haspect,
float input_haspect,
1081 float vaspect,
float input_vaspect,
1082 bool bounds_in_canvas_space);
1103 bool input_aspect_adjust);
1108 void adjustPivotParms(
int input_index,
1110 bool input_aspect_adjust);
1115 void copyAndPrepareTransformParms(
1129 void releaseRegion(
TIL_Region *,
int output = 0);
1140 int xstart,
int ystart,
1141 int *cache_flag = 0,
1142 int ignore_bypass = 0,
1155 int xstart,
int ystart,
1165 int array_index,
float t,
1166 int xstart,
int ystart);
1169 float t,
int xres,
int yres,
int thread,
1170 int xstart,
int ystart,
bool *
mask =0);
1183 inline void lockParms(
bool lock);
1207 int *x1 = 0,
int *
y1 = 0,
1208 int *
x2 = 0,
int *
y2 = 0);
1212 virtual void computeImageBounds(
COP2_Context &context);
1222 const char *pathPrefix,
1228 const char *
path=0)
override;
1235 int index,
void *dtile =0);
1247 void getOvercookStats(
int &redone,
int &total);
1248 void clearOvercookStats();
1250 void ensureSequenceContainsColorAndAlpha();
1254 virtual void cleanUpInputsRecursively();
1263 void makeOutputAreaDependOnAllInputAreas(
1270 void makeOutputAreaDependOnInputAreas(
int input,
1278 const char *planename,
int array_index,
float t,
1292 void getInputAreasForCollapsedTransformInputs(
1298 bool input_aspect_adjust,
1299 bool clear_uncollapse_list);
1308 bool ignore_missing =
false);
1312 void deAnimateFollowChanRef(
const char *parmname,
1318 void swapParm(
const char *name1,
const char *name2,
1320 void swapStringParm(
const char *name1,
const char *name2,
1327 virtual OP_ERROR setup(
float t,
int xres,
int yres,
int max_threads,
1328 bool doinput =
true);
1330 int xres,
int yres,
int thread_index,
1335 void recursivelyCleanUp();
1336 void cleanUpCookContexts();
1340 void cleanUpAllRegions();
1347 unsigned char myCop2RecurseFlag :1,
1348 myFramesAllScopedFlag:1;
1367 int myPreviewPlaneIndex;
1368 int myPreviewPlaneArrayIndex;
1372 float myLastErrorTime;
1374 bool myCop2DirtyFlag;
1405 unsigned char myVarResUsed :1,
1406 myVarImageArrayUsed :1,
1407 myVarImagePlaneUsed :1,
1411 int myNumCookedTiles;
1412 int myDupCookedTiles;
1416 COP2_VolatileParmManager *myVolatileParms;
1424 ut_thread_id_t myOpenThreadId;
1430 static bool theShowPreviewPref;
1435 void setOpenerThread(ut_thread_id_t
thread_id)
1441 bool isOpenerThread()
const
1442 {
return myOpenThreadId
1445 virtual float copTimeTransform(
int input,
COP2_Context &context,
1448 void setupVariables(
const TIL_Plane *plane,
1456 void checkTimeDepAndRange();
1459 void verifyCacheIntegrity() { }
1466 int xstart,
int ystart,
1468 int ignore_bypass = 0,
1471 double *passtime = 0);
1475 int array_index,
float t,
1476 int xstart,
int ystart,
1486 int xstart,
int ystart,
1488 int block,
bool *blocked,
bool *
mask);
1500 void markTimerStart(
int64 *now)
const;
1501 void getElapsedTime(
int64 *now)
const;
1502 void appendCookTimesToPerformanceMonitor();
1503 void setCookDepth(
int d);
1507 int array_index,
float t,
1509 int x1,
int y1,
int x2,
int y2,
1510 int bx1,
int by1,
int bx2,
int by2,
1512 int output,
int share,
1513 int scan_alignment);
1516 void openRegion(
TIL_Region *region,
void *regionmem[4],
1520 static void * threadCookTile(
void *
data);
1526 float low=0.0F,
float high=1.0F)
const;
1533 int x1,
int y1,
int x2,
int y2,
1534 int xshift=0,
int yshift=0,
1535 float low=0.0F,
float high=1.0F,
1537 int ignore_points =0,
1538 float gamma = 1.0F)
const;
1540 void highlightTile(
int thread,
int onoff);
1541 void resetHighlight();
1544 void computeBoundsVariables(
const OP_Context &context,
1548 int orig_xstart,
int orig_ystart,
1549 int orig_xend,
int orig_yend,
1550 int &xstart,
int &ystart,
int &xend,
int ¥d,
1551 int &xtile1,
int &ytile1,
1552 int &xtile2,
int &ytile2,
1553 int &x1,
int &
y1,
int &
x2,
int &
y2,
1554 int &xshift,
int &yshift,
1555 int &bounds_xstart,
int &bounds_ystart,
1556 int &bounds_xend,
int &bounds_yend,
1559 void computeBoundsVariables(
const TIL_Plane *rplane,
1560 float time,
int xres,
int yres,
1563 int orig_xstart,
int orig_ystart,
1564 int orig_xend,
int orig_yend,
1565 int &xstart,
int &ystart,
int &xend,
int ¥d,
1566 int &xtile1,
int &ytile1,
int &xtile2,
int &ytile2,
1567 int &x1,
int &
y1,
int &
x2,
int &
y2,
1568 int &xshift,
int &yshift,
1569 int &bounds_xstart,
int &bounds_ystart,
1570 int &bounds_xend,
int &bounds_yend,
1579 int xstart,
int ystart,
int xend,
int yend,
1580 int &xtile1,
int &ytile1,
int &xtile2,
int &ytile2,
1584 COP2_Node &source_node,
int source_input,
1586 const TIL_Plane *plane,
int array_index,
1587 int x1,
int y1,
int x2,
int y2,
1588 int input_origx,
int input_origy,
1589 int input_xres,
int input_yres,
1590 int filt_xoffset,
int filt_yoffset,
1592 bool bounds_in_canvas_space,
1593 int &tx1,
int &ty1,
int &tx2,
int &ty2,
1594 int preoffset[2],
int postoffset[2]);
1601 int x1,
int y1,
int x2,
int y2,
1602 int input_x1,
int input_y1,
1603 int input_x2,
int input_y2,
1604 int input_xres,
int input_yres,
1605 int full_input_xres,
int full_input_yres,
1606 int filt_xoffset,
int filt_yoffset,
1607 float haspect,
float input_haspect,
1608 float vaspect,
float input_vaspect,
1609 bool bounds_in_canvas_space,
1617 int x1,
int y1,
int x2,
int y2,
1618 int input_x1,
int input_y1,
1619 int node_x1,
int node_y1,
1620 int node_x2,
int node_y2,
1621 int input_xres,
int input_yres,
1622 int full_input_xres,
int full_input_yres,
1623 int filt_xoffset,
int filt_yoffset,
1624 float haspect,
float input_haspect,
1625 float vaspect,
float input_vaspect,
1626 bool bounds_in_canvas_space,
1629 bool transformBlurRegionCPU(
int input,
1634 float prev,
float next,
int numtimes,
1635 float itime[3],
float ifact[3],
1636 bool bounds_in_canvas_space,
1637 int filt_xoffset,
int filt_yoffset,
1638 int input_origx,
int input_origy,
1639 int ixres,
int iyres,
1640 int x1,
int y1,
int x2,
int y2,
1641 float startt,
float endt,
float incr,
1644 bool transformBlurRegionGPU(
int input,
1649 float prev,
float next,
int numtimes,
1650 float itime[3],
float ifact[3],
1651 bool bounds_in_canvas_space,
1652 int filt_xoffset,
int filt_yoffset,
1653 int input_origx,
int input_origy,
1654 int ixres,
int iyres,
1655 int x1,
int y1,
int x2,
int y2,
1656 float startt,
float endt,
float incr,
1664 const char *
path=0)
override;
1666 const char *
path=0)
override;
1674 {
return binary ?
"bcop2" :
"cop2"; }
1676 static void installExpressions();
1678 friend class COP2_CookScheduler;
1679 friend class COP2_VexVariableMap;
1681 friend class COP2_VexOp;
1687 int xstart,
int ystart,
OP_ERROR *err,
int block,
1688 bool *
mask,
bool *blocked,
bool *was_corrected)
1692 context.
myTime, xstart, ystart, err, block, mask, 0,
1693 true, blocked, was_corrected);
1700 bool *
mask,
bool *blocked,
bool *was_corrected)
1707 err, block, mask, 0,
true, blocked, was_corrected);
1714 bool *was_corrected)
1717 t, tilelist->
myX1, tilelist->
myY1, err, block, mask,
1718 0,
true, blocked, was_corrected);
1729 context.
myTime, tilelist, xshift, yshift, copy, hold);
1734 int xstart,
int ystart,
int xend,
int yend,
1737 bool correct_aspect,
bool correct_bounds,
1742 context.
myTime, xstart, ystart, xend, yend,
1743 hold, share, regionmem, correct_aspect,
1744 correct_bounds, scan_alignment);
1749 int xres,
int yres,
int thread,
1750 int xstart,
int ystart,
int xend,
int yend,
int share,
1751 int rindex,
int alignment)
1753 return outputRegion(plane, plane, array_index, seqt, xres, yres, thread,
1754 xstart, ystart, xend, yend, share, rindex,alignment);
1768 int &x1,
int &
y1,
int &
x2,
int &
y2)
1777 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
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.
#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
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
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
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 COP2_ThreadPref getThreadPreference() const
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_Node * getInput(unsigned idx, bool mark_used=false) const
Returns the node connected to a particular input (may be null).
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()
GLuint const GLchar * name
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)
Base Integer Rectangle class.
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 bool isFrameScoped(int)
virtual bool isGPUAssisted(const TIL_Plane &, int, float, int, int, int)
void getImageBounds(const TIL_Plane *plane, int array, float t, int xres, int yres, int thread, int &x1, int &y1, int &x2, int &y2)
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)
void * getCookedData(OP_Context &) override
GLdouble GLdouble GLdouble y2
COP2_ThreadPref myThreadPreference
**Note that the tasks the thread_id
virtual void inputOpenFailed(int)
virtual int getMaskInput() const
virtual UT_TokenString & getParmHashCode(OP_Context &context, int group_mask=1)
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)
const char * getChildType() const override
bool isCooking(bool include_ancestors) const
virtual void deleteCookedData()=0
bool isDiskCacheEnabled() const