20 using namespace UT::Literal;
40 myOnlyBreakpoints = 0;
43 myAllUBreakpoints =
false;
44 myAllVBreakpoints =
false;
49 myKeepOriginal =
false;
59 if (myGroup != src.myGroup)
return false;
60 if (myFirstU != src.myFirstU)
return false;
61 if (myDomainU1 != src.myDomainU1)
return false;
62 if (mySecondU != src.mySecondU)
return false;
63 if (myDomainU2 != src.myDomainU2)
return false;
64 if (myFirstV != src.myFirstV)
return false;
65 if (myDomainV1 != src.myDomainV1)
return false;
66 if (mySecondV != src.mySecondV)
return false;
67 if (myDomainV2 != src.myDomainV2)
return false;
68 if (myOnlyBreakpoints != src.myOnlyBreakpoints)
return false;
69 if (myDivsU != src.myDivsU)
return false;
70 if (myDivsV != src.myDivsV)
return false;
71 if (myAllUBreakpoints != src.myAllUBreakpoints)
return false;
72 if (myAllVBreakpoints != src.myAllVBreakpoints)
return false;
73 if (myFunction != src.myFunction)
return false;
74 if (myKeepIn != src.myKeepIn)
return false;
75 if (myKeepOut != src.myKeepOut)
return false;
76 if (myExtractOp != src.myExtractOp)
return false;
77 if (myKeepOriginal != src.myKeepOriginal)
return false;
92 graph->
evalOpParm(myGroup, nodeidx,
"group", time, 0);
95 graph->
evalOpParm(myFirstU, nodeidx,
"firstu", time, 0);
98 graph->
evalOpParm(myDomainU1, nodeidx,
"domainu1", time, 0);
101 graph->
evalOpParm(mySecondU, nodeidx,
"secondu", time, 0);
104 graph->
evalOpParm(myDomainU2, nodeidx,
"domainu2", time, 0);
107 graph->
evalOpParm(myFirstV, nodeidx,
"firstv", time, 0);
110 graph->
evalOpParm(myDomainV1, nodeidx,
"domainv1", time, 0);
113 graph->
evalOpParm(mySecondV, nodeidx,
"secondv", time, 0);
116 graph->
evalOpParm(myDomainV2, nodeidx,
"domainv2", time, 0);
117 myOnlyBreakpoints = 0;
119 graph->
evalOpParm(myOnlyBreakpoints, nodeidx,
"onlybreakpoints", time, 0);
121 if (
true && ( (getOnlyBreakpoints()==0) ) )
122 graph->
evalOpParm(myDivsU, nodeidx,
"divsu", time, 0);
124 if (
true && ( (getOnlyBreakpoints()==0) ) )
125 graph->
evalOpParm(myDivsV, nodeidx,
"divsv", time, 0);
126 myAllUBreakpoints =
false;
127 if (
true && ( (getOnlyBreakpoints()==1) ) )
128 graph->
evalOpParm(myAllUBreakpoints, nodeidx,
"allubreakpoints", time, 0);
129 myAllVBreakpoints =
false;
130 if (
true && ( (getOnlyBreakpoints()==1) ) )
131 graph->
evalOpParm(myAllVBreakpoints, nodeidx,
"allvbreakpoints", time, 0);
134 graph->
evalOpParm(myFunction, nodeidx,
"stdswitcher", time, 0);
136 if (
true && ( (getFunction()==0) ) )
137 graph->
evalOpParm(myKeepIn, nodeidx,
"keepin", time, 0);
139 if (
true && ( (getFunction()==0) ) )
140 graph->
evalOpParm(myKeepOut, nodeidx,
"keepout", time, 0);
142 if (
true && ( (getFunction()==1) ) )
143 graph->
evalOpParm(myExtractOp, nodeidx,
"extractop", time, 0);
144 myKeepOriginal =
false;
145 if (
true && ( (getFunction()==1) ) )
146 graph->
evalOpParm(myKeepOriginal, nodeidx,
"keepOriginal", time, 0);
162 template <
typename T>
169 if (idx.
size() != instance.
size()+1)
174 coerceValue(value, myGroup);
177 coerceValue(value, myFirstU);
180 coerceValue(value, myDomainU1);
183 coerceValue(value, mySecondU);
186 coerceValue(value, myDomainU2);
189 coerceValue(value, myFirstV);
192 coerceValue(value, myDomainV1);
195 coerceValue(value, mySecondV);
198 coerceValue(value, myDomainV2);
201 coerceValue(value, myOnlyBreakpoints);
204 coerceValue(value, myDivsU);
207 coerceValue(value, myDivsV);
210 coerceValue(value, myAllUBreakpoints);
213 coerceValue(value, myAllVBreakpoints);
216 coerceValue(value, myFunction);
219 coerceValue(value, myKeepIn);
222 coerceValue(value, myKeepOut);
225 coerceValue(value, myExtractOp);
228 coerceValue(value, myKeepOriginal);
235 { doGetParmValue(idx, instance, value); }
237 { doGetParmValue(idx, instance, value); }
239 { doGetParmValue(idx, instance, value); }
241 { doGetParmValue(idx, instance, value); }
243 { doGetParmValue(idx, instance, value); }
245 { doGetParmValue(idx, instance, value); }
247 { doGetParmValue(idx, instance, value); }
249 { doGetParmValue(idx, instance, value); }
251 { doGetParmValue(idx, instance, value); }
253 { doGetParmValue(idx, instance, value); }
255 { doGetParmValue(idx, instance, value); }
257 template <
typename T>
264 if (idx.
size() != instance.
size()+1)
269 coerceValue(myGroup, value);
272 coerceValue(myFirstU, value);
275 coerceValue(myDomainU1, value);
278 coerceValue(mySecondU, value);
281 coerceValue(myDomainU2, value);
284 coerceValue(myFirstV, value);
287 coerceValue(myDomainV1, value);
290 coerceValue(mySecondV, value);
293 coerceValue(myDomainV2, value);
296 coerceValue(myOnlyBreakpoints, value);
299 coerceValue(myDivsU, value);
302 coerceValue(myDivsV, value);
305 coerceValue(myAllUBreakpoints, value);
308 coerceValue(myAllVBreakpoints, value);
311 coerceValue(myFunction, value);
314 coerceValue(myKeepIn, value);
317 coerceValue(myKeepOut, value);
320 coerceValue(myExtractOp, value);
323 coerceValue(myKeepOriginal, value);
330 { doSetParmValue(idx, instance, value); }
332 { doSetParmValue(idx, instance, value); }
334 { doSetParmValue(idx, instance, value); }
336 { doSetParmValue(idx, instance, value); }
338 { doSetParmValue(idx, instance, value); }
340 { doSetParmValue(idx, instance, value); }
342 { doSetParmValue(idx, instance, value); }
344 { doSetParmValue(idx, instance, value); }
346 { doSetParmValue(idx, instance, value); }
348 { doSetParmValue(idx, instance, value); }
350 { doSetParmValue(idx, instance, value); }
366 if (fieldnum.
size() < 1)
389 return "onlybreakpoints";
395 return "allubreakpoints";
397 return "allvbreakpoints";
399 return "stdswitcher";
407 return "keepOriginal";
415 if (fieldnum.
size() < 1)
416 return PARM_UNSUPPORTED;
459 return PARM_UNSUPPORTED;
495 loadData(is, rampdata);
513 int typelen = colon - data.
buffer();
527 {
int64 iv =
v; UTwrite(os, &iv); }
529 { UTwrite<fpreal64>(os, &
v); }
531 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y()); }
533 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y());
534 UTwrite<fpreal64>(os, &v.
z()); }
536 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y());
537 UTwrite<fpreal64>(os, &v.
z()); UTwrite<fpreal64>(os, &v.
w()); }
549 if (s) s->save(ostr);
551 saveData(os, result);
558 ostr << s->getDataTypeToken();
563 saveData(os, result);
567 void save(std::ostream &os)
const
571 saveData(os, myGroup);
572 saveData(os, myFirstU);
573 saveData(os, myDomainU1);
574 saveData(os, mySecondU);
575 saveData(os, myDomainU2);
576 saveData(os, myFirstV);
577 saveData(os, myDomainV1);
578 saveData(os, mySecondV);
579 saveData(os, myDomainV2);
580 saveData(os, myOnlyBreakpoints);
581 saveData(os, myDivsU);
582 saveData(os, myDivsV);
583 saveData(os, myAllUBreakpoints);
584 saveData(os, myAllVBreakpoints);
585 saveData(os, myFunction);
586 saveData(os, myKeepIn);
587 saveData(os, myKeepOut);
588 saveData(os, myExtractOp);
589 saveData(os, myKeepOriginal);
602 loadData(is, myGroup);
603 loadData(is, myFirstU);
604 loadData(is, myDomainU1);
605 loadData(is, mySecondU);
606 loadData(is, myDomainU2);
607 loadData(is, myFirstV);
608 loadData(is, myDomainV1);
609 loadData(is, mySecondV);
610 loadData(is, myDomainV2);
611 loadData(is, myOnlyBreakpoints);
612 loadData(is, myDivsU);
613 loadData(is, myDivsV);
614 loadData(is, myAllUBreakpoints);
615 loadData(is, myAllVBreakpoints);
616 loadData(is, myFunction);
617 loadData(is, myKeepIn);
618 loadData(is, myKeepOut);
619 loadData(is, myExtractOp);
620 loadData(is, myKeepOriginal);
630 if (!thissop)
return getGroup();
632 OP_Utils::evalOpParm(result, thissop,
"group", cookparms.
getCookTime(), 0);
640 if (!thissop)
return getFirstU();
642 OP_Utils::evalOpParm(result, thissop,
"firstu", cookparms.
getCookTime(), 0);
650 if (!thissop)
return getDomainU1();
652 OP_Utils::evalOpParm(result, thissop,
"domainu1", cookparms.
getCookTime(), 0);
660 if (!thissop)
return getSecondU();
662 OP_Utils::evalOpParm(result, thissop,
"secondu", cookparms.
getCookTime(), 0);
670 if (!thissop)
return getDomainU2();
672 OP_Utils::evalOpParm(result, thissop,
"domainu2", cookparms.
getCookTime(), 0);
680 if (!thissop)
return getFirstV();
682 OP_Utils::evalOpParm(result, thissop,
"firstv", cookparms.
getCookTime(), 0);
690 if (!thissop)
return getDomainV1();
692 OP_Utils::evalOpParm(result, thissop,
"domainv1", cookparms.
getCookTime(), 0);
700 if (!thissop)
return getSecondV();
702 OP_Utils::evalOpParm(result, thissop,
"secondv", cookparms.
getCookTime(), 0);
710 if (!thissop)
return getDomainV2();
712 OP_Utils::evalOpParm(result, thissop,
"domainv2", cookparms.
getCookTime(), 0);
720 if (!thissop)
return getOnlyBreakpoints();
722 OP_Utils::evalOpParm(result, thissop,
"onlybreakpoints", cookparms.
getCookTime(), 0);
730 if (!thissop)
return getDivsU();
732 OP_Utils::evalOpParm(result, thissop,
"divsu", cookparms.
getCookTime(), 0);
740 if (!thissop)
return getDivsV();
742 OP_Utils::evalOpParm(result, thissop,
"divsv", cookparms.
getCookTime(), 0);
750 if (!thissop)
return getAllUBreakpoints();
752 OP_Utils::evalOpParm(result, thissop,
"allubreakpoints", cookparms.
getCookTime(), 0);
760 if (!thissop)
return getAllVBreakpoints();
762 OP_Utils::evalOpParm(result, thissop,
"allvbreakpoints", cookparms.
getCookTime(), 0);
770 if (!thissop)
return getFunction();
772 OP_Utils::evalOpParm(result, thissop,
"stdswitcher", cookparms.
getCookTime(), 0);
780 if (!thissop)
return getKeepIn();
782 OP_Utils::evalOpParm(result, thissop,
"keepin", cookparms.
getCookTime(), 0);
790 if (!thissop)
return getKeepOut();
792 OP_Utils::evalOpParm(result, thissop,
"keepout", cookparms.
getCookTime(), 0);
800 if (!thissop)
return getExtractOp();
802 OP_Utils::evalOpParm(result, thissop,
"extractop", cookparms.
getCookTime(), 0);
810 if (!thissop)
return getKeepOriginal();
812 OP_Utils::evalOpParm(result, thissop,
"keepOriginal", cookparms.
getCookTime(), 0);
826 int64 myOnlyBreakpoints;
829 bool myAllUBreakpoints;
830 bool myAllVBreakpoints;
fpreal64 getDomainU1() const
bool opKeepOriginal(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
int64 opDivsV(const SOP_NodeVerb::CookParms &cookparms) const
void buildFromOp(const SOP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
static void saveData(std::ostream &os, UT_Matrix2D v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
void setFunction(int64 val)
SOP_Node * getNode() const
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
bool operator==(const SOP_CarveParms &src) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
bool operator!=(const SOP_CarveParms &src) const
exint bread(int32 *buffer, exint asize=1)
int64 getExtractOp() const
GT_API const UT_StringHolder time
static void loadData(UT_IStream &is, UT_StringHolder &v)
GLuint const GLfloat * val
bool opKeepOut(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, fpreal64 &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
static void saveData(std::ostream &os, int64 v)
static void loadData(UT_IStream &is, UT_Vector4D &v)
static void saveData(std::ostream &os, fpreal64 v)
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
int64 opFunction(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
static void saveData(std::ostream &os, UT_Vector2D v)
SYS_FORCE_INLINE const char * buffer() const
const SOP_GraphProxy * graph() const
void setExtractOp(int64 val)
void setKeepOriginal(bool val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
An output stream object that owns its own string buffer storage.
int64 opExtractOp(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector3I &v)
static void loadData(UT_IStream &is, UT_Matrix3D &v)
fpreal64 getDomainV1() const
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
static void loadData(UT_IStream &is, UT_Matrix2D &v)
static void saveData(std::ostream &os, UT_StringHolder s)
const UT_StringHolder & getGroup() const
static void loadData(UT_IStream &is, bool &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
bool opSecondV(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
bool load(UT_IStream &is)
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
void setDomainU1(fpreal64 val)
void setGroup(const UT_StringHolder &val)
void setOnlyBreakpoints(int64 val)
bool getKeepOriginal() const
bool opFirstU(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Matrix3D v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
fpreal64 getDomainU2() const
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
GLint GLenum GLsizei GLint GLsizei const void * data
void loadFromOpSubclass(const LoadParms &loadparms) override
exint getNestNumParms(TempIndex idx) const override
bool opSecondU(const SOP_NodeVerb::CookParms &cookparms) const
void setSecondV(bool val)
int64 getFunction() const
void setAllUBreakpoints(bool val)
bool opAllVBreakpoints(const SOP_NodeVerb::CookParms &cookparms) const
const char * getNestParmName(TempIndex fieldnum) const override
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
void setSecondU(bool val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
void setDomainV2(fpreal64 val)
bool opAllUBreakpoints(const SOP_NodeVerb::CookParms &cookparms) const
int64 getOnlyBreakpoints() const
void setKeepOut(bool val)
void saveBinary(std::ostream &os) const
Save string to binary stream.
static void loadData(UT_IStream &is, UT_Vector3D &v)
GT_API const UT_StringHolder version
DEP_MicroNode * depnode() const
void setDomainV1(fpreal64 val)
fpreal64 getDomainV2() const
ParmType getNestParmType(TempIndex fieldnum) const override
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
void setAllVBreakpoints(bool val)
static void saveData(std::ostream &os, bool v)
static void saveData(std::ostream &os, UT_Matrix4D v)
int64 opDivsU(const SOP_NodeVerb::CookParms &cookparms) const
Utility class for containing a color ramp.
fpreal64 opDomainV2(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
GLdouble GLdouble GLdouble r
static void loadData(UT_IStream &is, UT_Matrix4D &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
~SOP_CarveParms() override
static void loadData(UT_IStream &is, int64 &v)
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
UT_StringHolder opGroup(const SOP_NodeVerb::CookParms &cookparms) const
bool getAllVBreakpoints() const
int64 opOnlyBreakpoints(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
fpreal getCookTime() const
fpreal64 opDomainV1(const SOP_NodeVerb::CookParms &cookparms) const
bool getAllUBreakpoints() const
const char * findChar(int c) const
bool opFirstV(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
fpreal64 opDomainU2(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector2D &v)
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
static void loadData(UT_IStream &is, UT_Vector4I &v)
void setDomainU2(fpreal64 val)
GLsizei const GLfloat * value
const OP_Context & context() const
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
static void saveData(std::ostream &os, UT_Vector3D v)
fpreal64 opDomainU1(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
SYS_FORCE_INLINE bool isstring() const
bool opKeepIn(const SOP_NodeVerb::CookParms &cookparms) const
void copyFrom(const SOP_NodeParms *src) override
static void loadData(UT_IStream &is, UT_Vector2I &v)
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
static void saveData(std::ostream &os, PRM_DataItemHandle s)
static void saveData(std::ostream &os, UT_Vector4D v)
void save(std::ostream &os) const