12 #ifndef __COP2_Node_h__
13 #define __COP2_Node_h__
64 class COP2_CheckpointWrapper;
67 class COP2_VolatileParmManager;
80 bool isOpen()
const {
return myCopOpenCount > 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);
131 int xstart,
int ystart,
int xend,
int yend,
132 int subregion = 1,
int clear = 1,
133 float black = 0.0F,
float white = 1.0F,
135 int ignore_bwpoints=0,
136 const int *comp_map=0,
138 bool interactive =
false,
141 bool cleanup_after =
true);
154 int subregion = 1,
int clear = 1,
155 float black = 0.0F,
float white = 1.0F,
157 int ignore_bwpoints=0,
159 bool interactive =
false,
162 bool cleanup_after =
true);
174 int xstart,
int ystart,
180 bool isPlaneCached(
const TIL_Plane &refplane,
181 int array_index,
float time,
183 int xstart,
int ystart,
int xend,
int yend,
187 int xstart,
int ystart,
int xend,
int yend,
193 void checkpointCachedTilesForPlane(
195 int array_index,
float time,
197 int xstart,
int ystart,
int xend,
int yend,
200 void checkpointCachedTilesForPlane(
COP2_Context &context,
202 int xstart,
int ystart,
int xend,
int yend,
209 double mapTimeIntoSequence(
double time);
218 const char *uselut = 0,
221 bool single_frame =
false,
222 bool thread_io =
false,
223 bool env_map =
false,
224 bool use_progress_dialog=
true);
230 const char *cplane,
const char *aplane = 0,
231 const char *uselut = 0,
234 bool single_frame =
false,
235 bool thread_io =
false,
236 bool env_map =
false,
237 bool use_progress_dialog=
true);
239 void waitForLastFile();
243 int cookFlipbook(
const TIL_Sequence &info,
int step = 1,
245 const char *lut = 0,
bool startnew=
true,
246 bool (*updateCallback)(
void *) = 0,
247 void *updateEntity = 0,
248 bool write_houdini_frame =
true,
249 const char *session_label = NULL);
255 int array_index,
float t,
268 bool force_bounds =
true);
272 float t,
int xres,
int yres,
int thread,
273 int &
x1,
int &
y1,
int &x2,
int &y2);
275 int &
x1,
int &
y1,
int &x2,
int &y2);
280 int &
x1,
int &
y1,
int &x2,
int &y2);
283 bool getInputBounds(
int input,
285 float t,
int xres,
int yres,
287 int &
x1,
int &
y1,
int &x2,
int &y2);
294 bool isTileAlignedWithInput(
int input,
296 int tilex,
int tiley,
298 bool isTileAlignedWithInput(
int input,
301 float t,
int xres,
int yres,
303 int tilex,
int tiley,
308 bool isTileAlignedWithInputAtTime(
int input,
310 int tilex,
int tiley,
318 bool isInputTileAlignedWithContext(
int input,
320 int tilex,
int tiley,
327 int tilex,
int tiley);
347 virtual double remapTime(
double t);
368 void getScaleFactors(
int xres,
int yres,
369 float &sx,
float &sy)
const;
370 float getXScaleFactor(
int xres)
const;
371 float getYScaleFactor(
int yres)
const;
376 int getPreviewPlane(
int &pindex,
int &aindex);
377 int isFollowingParent(
const COP2_Node *parent);
378 void setPreviewPlane(
int pindex,
int aindex =0);
379 void parentPreviewChanged();
391 void clearTilesInCache();
397 bool =
true) {
return true; }
402 int isAnythingLocked()
const;
408 int isSequenceLocked(
float t);
415 int lockPlanes(
float t);
417 int unlockPlanes(
float t);
421 void enableDiskCache(
bool enable);
425 virtual void setColorSelection(
float *col,
int size,
bool accum);
429 static void tileRemovalCallback(
void *parent,
TIL_Tile *removed);
430 void tileRemoved(
TIL_Tile *removed);
432 static void setUpdateCallback(
void (*callback)(
float,
bool,
bool));
433 static void setViewerCallback(
void (*viewer)(
COP2_Node *,
void *,
438 static void setCookPosition(
float u,
float v);
439 static void abortCook();
440 static bool isCookAborted();
441 static void resetAbortFlag();
444 bool isCookAborted(
int thread_index);
446 bool isInterrupted(
int threadidx);
447 void setInterrupted(
int threadidx);
452 static bool isInitialized();
462 OP_ERROR csev = myCookErrorManager.getSeverity();
464 return sev > csev ? sev : csev;
471 OP_ERROR csev = myCookErrorManager.getSeverity();
473 return sev > csev ? sev : csev;
478 int group_mask = 1)
override;
482 virtual void getPixelFunction(
const TIL_Plane *plane,
483 int array_index,
float t,
500 bool getPixelValue(
const TIL_Plane *plane,
501 int array_index,
float t,
506 bool getPixelValueByUV(
const char *plane_name,
536 static void setWorkingThreadId(
int thread_index);
537 static void clearWorkingThreadId(
int thread_index);
541 int getThreadIndex();
544 static void buildPlanePreviewMenu(
547 static void buildScopeMenu(
550 static void buildPlaneScopeMenu(
553 static void buildScopeMenuNoColAlpha(
556 static void buildPlaneMenu(
559 static void buildCompMenu(
562 static void buildInputScopeMenu(
565 static void buildInputPlaneMenu(
568 static void buildInputCompMenu(
572 void buildPlaneMenu(
PRM_Name *items,
int maxsize,
573 bool useinput =
false,
574 bool planes_only =
false,
575 bool comps_only =
false,
578 bool nocoloralpha =
false);
580 static const char *getColorPlaneName();
581 static const char *getAlphaPlaneName();
582 static const char *getMaskPlaneName();
583 static const char *getDepthPlaneName();
584 static const char *getLumPlaneName();
585 static const char *getBumpPlaneName();
586 static const char *getPointPlaneName();
587 static const char *getNormalPlaneName();
588 static const char *getVelocityPlaneName();
589 static const char *getThumbnailPlaneKey();
596 static int dumpCache(
void *me,
int i,
float t,
598 static void printMe(
void *me, std::ostream &os);
600 static void addToFileLoadTime(
float t);
616 int64 mem = inclusive ?
sizeof(*this) : 0;
631 static void initializeExpressions();
632 static void initializeCache();
634 static void installCommands();
646 void inputRes(
int input,
float t,
int xres,
int yres,
647 int &i_xres,
int &i_yres);
653 void setInputBlocked(
bool blocked,
int thread);
657 void removeRegions();
663 {
return CAST_COP2NODE(
getInput(i,
true)); }
668 virtual void getInputDependenciesForOutputArea(
676 COP2_CheckpointWrapper *getCheckpointWrapper(
int array_index);
677 void setCheckpointWrapper(
int array_index,
678 COP2_CheckpointWrapper *wrap);
682 int getNumCheckpointWrappers()
const;
683 COP2_CheckpointWrapper *getWrapper(
int i)
const;
684 void resetCheckpointWrappers();
687 virtual void modifyViewMatrix(
int input,
692 virtual COP2_Node *selectInput(
int px,
int py,
const char *plane_name,
703 static void resetBadMissingFrames();
706 static bool getShowPreviewPref();
707 static void setShowPreviewPref(
bool show);
710 bool relative_references =
true)
override;
721 static unsigned int getCookScore(
float cooktime);
727 void setVariableUseFullRes(
bool onoff);
738 bool collapse =
false,
739 bool check_missing =
false,
740 bool show_missing_only=
false)
override;
745 void addError(
int code,
const char *msg = 0);
746 void addSystemError(
const char *msg = 0);
747 void addWarning(
int code,
const char *msg = 0);
748 void addSystemWarning(
const char *msg = 0);
749 void addMessage(
int code,
const char *msg = 0);
752 void addCookError(
int code,
const char *msg = 0);
753 void addCookSystemError(
const char *msg = 0);
754 void addCookWarning(
int code,
const char *msg = 0);
755 void addCookSystemWarning(
int code,
const char *msg = 0);
756 void addCookMessage(
int code,
const char *msg = 0);
772 virtual const char *getOperationInfo();
777 bool isInputBlocked(
int thread);
791 bool correctorig =
true,
793 bool *was_corrected = 0);
804 bool *was_corrected = 0);
815 bool *was_corrected = 0);
825 bool *was_corrected = 0);
828 bool copyInput(
int input,
836 bool copyInput(
int input,
876 bool correct_aspect =
true,
877 bool correct_bounds =
true,
878 int scan_alignment = 0);
882 inline TIL_Region * inputRegion(
int input_index,
891 bool correct_aspect =
true,
892 bool correct_bounds =
true,
893 int scan_alignment = 0);
911 inline TIL_Region * inputRegion(
int input_index,
923 float t,
int xres,
int yres,
int thread,
924 int xstart,
int ystart,
931 int xstart,
int ystart,
943 int array_index,
float t,
944 int xres,
int yres,
int thread,
945 int xstart,
int ystart,
965 static void scaleImageArea(
float sx,
float sy,
966 int ix1,
int iy1,
int ix2,
int iy2,
967 int &
x1,
int &
y1,
int &x2,
int &y2);
986 bool input_aspect_adjust =
true,
987 bool streak_off_frame =
false);
992 bool transformRegion(
int input,
996 bool input_aspect_adjust =
true,
997 bool bounds_in_canvas_space =
true,
998 bool streak_off_frame =
false);
1000 bool isFullTransform(
int input,
1003 bool input_aspect_adjust=
true,
1005 int *source_index=0,
1026 bool deformation =
false);
1028 bool transformBlurRegion(
int input,
1034 bool deformation =
false,
1035 bool bounds_in_canvas_space =
true);
1044 bool bounds_in_canvas_space,
1045 bool streak_off_frame);
1054 float haspect,
float input_haspect,
1055 float vaspect,
float input_vaspect,
1056 bool bounds_in_canvas_space);
1077 bool input_aspect_adjust);
1082 void adjustPivotParms(
int input_index,
1084 bool input_aspect_adjust);
1089 void copyAndPrepareTransformParms(
1103 void releaseRegion(
TIL_Region *,
int output = 0);
1114 int xstart,
int ystart,
1115 int *cache_flag = 0,
1116 int ignore_bypass = 0,
1129 int xstart,
int ystart,
1139 int array_index,
float t,
1140 int xstart,
int ystart);
1143 float t,
int xres,
int yres,
int thread,
1144 int xstart,
int ystart,
bool *
mask =0);
1157 inline void lockParms(
bool lock);
1181 int *
x1 = 0,
int *
y1 = 0,
1182 int *x2 = 0,
int *y2 = 0);
1186 virtual void computeImageBounds(
COP2_Context &context);
1196 const char *pathPrefix,
1202 const char *
path=0)
override;
1209 int index,
void *dtile =0);
1221 void getOvercookStats(
int &redone,
int &total);
1222 void clearOvercookStats();
1224 void ensureSequenceContainsColorAndAlpha();
1228 virtual void cleanUpInputsRecursively();
1237 void makeOutputAreaDependOnAllInputAreas(
1244 void makeOutputAreaDependOnInputAreas(
int input,
1252 const char *planename,
int array_index,
float t,
1266 void getInputAreasForCollapsedTransformInputs(
1272 bool input_aspect_adjust,
1273 bool clear_uncollapse_list);
1282 bool ignore_missing =
false);
1286 void deAnimateFollowChanRef(
const char *parmname,
1292 void swapParm(
const char *name1,
const char *name2,
1294 void swapStringParm(
const char *name1,
const char *name2,
1301 virtual OP_ERROR setup(
float t,
int xres,
int yres,
int max_threads,
1302 bool doinput =
true);
1304 int xres,
int yres,
int thread_index,
1309 void recursivelyCleanUp();
1310 void cleanUpCookContexts();
1314 void cleanUpAllRegions();
1321 unsigned char myCopRecurseFlag :1,
1322 myFramesAllScopedFlag:1;
1341 int myPreviewPlaneIndex;
1342 int myPreviewPlaneArrayIndex;
1346 float myLastErrorTime;
1348 bool myCopDirtyFlag;
1379 unsigned char myVarResUsed :1,
1380 myVarImageArrayUsed :1,
1381 myVarImagePlaneUsed :1,
1385 int myNumCookedTiles;
1386 int myDupCookedTiles;
1390 COP2_VolatileParmManager *myVolatileParms;
1398 ut_thread_id_t myOpenThreadId;
1404 static bool theShowPreviewPref;
1409 void setOpenerThread(ut_thread_id_t
thread_id)
1415 bool isOpenerThread()
const
1416 {
return myOpenThreadId
1422 void setupVariables(
const TIL_Plane *plane,
1430 void checkTimeDepAndRange();
1433 void verifyCacheIntegrity() { }
1440 int xstart,
int ystart,
1442 int ignore_bypass = 0,
1445 double *passtime = 0);
1449 int array_index,
float t,
1450 int xstart,
int ystart,
1460 int xstart,
int ystart,
1462 int block,
bool *blocked,
bool *
mask);
1474 void markTimerStart(
int64 *now)
const;
1475 void getElapsedTime(
int64 *now)
const;
1476 void appendCookTimesToPerformanceMonitor();
1477 void setCookDepth(
int d);
1481 int array_index,
float t,
1483 int x1,
int y1,
int x2,
int y2,
1484 int bx1,
int by1,
int bx2,
int by2,
1486 int output,
int share,
1487 int scan_alignment);
1490 void openRegion(
TIL_Region *region,
void *regionmem[4],
1494 static void * threadCookTile(
void *
data);
1500 float low=0.0F,
float high=1.0F)
const;
1507 int x1,
int y1,
int x2,
int y2,
1508 int xshift=0,
int yshift=0,
1509 float low=0.0F,
float high=1.0F,
1511 int ignore_points =0,
1512 float gamma = 1.0F)
const;
1514 void highlightTile(
int thread,
int onoff);
1515 void resetHighlight();
1518 void computeBoundsVariables(
const OP_Context &context,
1522 int orig_xstart,
int orig_ystart,
1523 int orig_xend,
int orig_yend,
1524 int &xstart,
int &ystart,
int &xend,
int ¥d,
1525 int &xtile1,
int &ytile1,
1526 int &xtile2,
int &ytile2,
1527 int &
x1,
int &
y1,
int &x2,
int &y2,
1528 int &xshift,
int &yshift,
1529 int &bounds_xstart,
int &bounds_ystart,
1530 int &bounds_xend,
int &bounds_yend,
1533 void computeBoundsVariables(
const TIL_Plane *rplane,
1534 float time,
int xres,
int yres,
1537 int orig_xstart,
int orig_ystart,
1538 int orig_xend,
int orig_yend,
1539 int &xstart,
int &ystart,
int &xend,
int ¥d,
1540 int &xtile1,
int &ytile1,
int &xtile2,
int &ytile2,
1541 int &
x1,
int &
y1,
int &x2,
int &y2,
1542 int &xshift,
int &yshift,
1543 int &bounds_xstart,
int &bounds_ystart,
1544 int &bounds_xend,
int &bounds_yend,
1553 int xstart,
int ystart,
int xend,
int yend,
1554 int &xtile1,
int &ytile1,
int &xtile2,
int &ytile2,
1558 COP2_Node &source_node,
int source_input,
1560 const TIL_Plane *plane,
int array_index,
1561 int x1,
int y1,
int x2,
int y2,
1562 int input_origx,
int input_origy,
1563 int input_xres,
int input_yres,
1564 int filt_xoffset,
int filt_yoffset,
1566 bool bounds_in_canvas_space,
1567 int &tx1,
int &ty1,
int &tx2,
int &ty2,
1568 int preoffset[2],
int postoffset[2]);
1575 int x1,
int y1,
int x2,
int y2,
1576 int input_x1,
int input_y1,
1577 int input_x2,
int input_y2,
1578 int input_xres,
int input_yres,
1579 int full_input_xres,
int full_input_yres,
1580 int filt_xoffset,
int filt_yoffset,
1581 float haspect,
float input_haspect,
1582 float vaspect,
float input_vaspect,
1583 bool bounds_in_canvas_space,
1591 int x1,
int y1,
int x2,
int y2,
1592 int input_x1,
int input_y1,
1593 int node_x1,
int node_y1,
1594 int node_x2,
int node_y2,
1595 int input_xres,
int input_yres,
1596 int full_input_xres,
int full_input_yres,
1597 int filt_xoffset,
int filt_yoffset,
1598 float haspect,
float input_haspect,
1599 float vaspect,
float input_vaspect,
1600 bool bounds_in_canvas_space,
1603 bool transformBlurRegionCPU(
int input,
1608 float prev,
float next,
int numtimes,
1609 float itime[3],
float ifact[3],
1610 bool bounds_in_canvas_space,
1611 int filt_xoffset,
int filt_yoffset,
1612 int input_origx,
int input_origy,
1613 int ixres,
int iyres,
1614 int x1,
int y1,
int x2,
int y2,
1615 float startt,
float endt,
float incr,
1618 bool transformBlurRegionGPU(
int input,
1623 float prev,
float next,
int numtimes,
1624 float itime[3],
float ifact[3],
1625 bool bounds_in_canvas_space,
1626 int filt_xoffset,
int filt_yoffset,
1627 int input_origx,
int input_origy,
1628 int ixres,
int iyres,
1629 int x1,
int y1,
int x2,
int y2,
1630 float startt,
float endt,
float incr,
1638 const char *
path=0)
override;
1640 const char *
path=0)
override;
1648 {
return binary ?
"bcop2" :
"cop2"; }
1650 static void installExpressions();
1652 friend class COP2_CookScheduler;
1653 friend class COP2_VexVariableMap;
1655 friend class COP2_VexOp;
1661 int xstart,
int ystart,
OP_ERROR *err,
int block,
1662 bool *
mask,
bool *blocked,
bool *was_corrected)
1666 context.
myTime, xstart, ystart, err, block, mask, 0,
1667 true, blocked, was_corrected);
1674 bool *
mask,
bool *blocked,
bool *was_corrected)
1681 err, block, mask, 0,
true, blocked, was_corrected);
1688 bool *was_corrected)
1691 t, tilelist->
myX1, tilelist->
myY1, err, block, mask,
1692 0,
true, blocked, was_corrected);
1703 context.
myTime, tilelist, xshift, yshift, copy, hold);
1708 int xstart,
int ystart,
int xend,
int yend,
1711 bool correct_aspect,
bool correct_bounds,
1716 context.
myTime, xstart, ystart, xend, yend,
1717 hold, share, regionmem, correct_aspect,
1718 correct_bounds, scan_alignment);
1723 int xres,
int yres,
int thread,
1724 int xstart,
int ystart,
int xend,
int yend,
int share,
1725 int rindex,
int alignment)
1727 return outputRegion(plane, plane, array_index, seqt, xres, yres, thread,
1728 xstart, ystart, xend, yend, share, rindex,alignment);
1742 int &
x1,
int &
y1,
int &x2,
int &y2)
1751 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)
install the cop.
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.
virtual int getNetOverviewColor(UT_Color &color)
unsigned referenceAllParameters(OP_Parameters *from, bool relative_references=true) override
#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)
GLenum GLenum GLenum input
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)
GLuint const GLchar * name
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
GLuint GLfloat GLfloat GLfloat x1
GLsizei GLsizei GLchar * source
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)
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()
virtual bool isTimeModifier() const
bool getInputBounds(int input, COP2_Context &context, int &x1, int &y1, int &x2, int &y2)
GLuint GLfloat GLfloat GLfloat GLfloat y1
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)
#define COP_MULTITHREADED
void * getCookedData(OP_Context &) override
COP2_ThreadPref myThreadPreference
**Note that the tasks the thread_id
virtual void inputOpenFailed(int)
COP2_ImageSource * getImageSource()
virtual int getMaskInput() const
virtual UT_TokenString & getParmHashCode(OP_Context &context, int group_mask=1)
GLenum GLsizei GLenum GLenum const void * table
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