20 using namespace UT::Literal;
23 namespace SOP_SortEnums
70 myPointobjpath =
""_sh;
73 myPointattrib =
""_sh;
74 myPointattribcomp = 0;
75 myPointreverse =
false;
80 myPrimobjpath =
""_sh;
85 myPrimreverse =
false;
86 myVertexPrimOrder =
true;
96 if (myPtsort != src.myPtsort)
return false;
97 if (myPointseed != src.myPointseed)
return false;
98 if (myPointoffset != src.myPointoffset)
return false;
99 if (myPointprox != src.myPointprox)
return false;
100 if (myPointobjpath != src.myPointobjpath)
return false;
101 if (myPointdir != src.myPointdir)
return false;
102 if (myPointexpr != src.myPointexpr)
return false;
103 if (myPointattrib != src.myPointattrib)
return false;
104 if (myPointattribcomp != src.myPointattribcomp)
return false;
105 if (myPointreverse != src.myPointreverse)
return false;
106 if (myPrimsort != src.myPrimsort)
return false;
107 if (myPrimseed != src.myPrimseed)
return false;
108 if (myPrimoffset != src.myPrimoffset)
return false;
109 if (myPrimprox != src.myPrimprox)
return false;
110 if (myPrimobjpath != src.myPrimobjpath)
return false;
111 if (myPrimdir != src.myPrimdir)
return false;
112 if (myPrimexpr != src.myPrimexpr)
return false;
113 if (myPrimattrib != src.myPrimattrib)
return false;
114 if (myPrimattribcomp != src.myPrimattribcomp)
return false;
115 if (myPrimreverse != src.myPrimreverse)
return false;
116 if (myVertexPrimOrder != src.myVertexPrimOrder)
return false;
133 graph->
evalOpParm(myPtsort, nodeidx,
"ptsort", time, 0);
135 if (
true && ( (!(((
int64(getPtsort())!=6)))) ) )
136 graph->
evalOpParm(myPointseed, nodeidx,
"pointseed", time, 0);
138 if (
true && ( (!(((
int64(getPtsort())!=7)))) ) )
139 graph->
evalOpParm(myPointoffset, nodeidx,
"pointoffset", time, 0);
141 if (
true && ( (!(((
int64(getPtsort())!=8)))) ) )
142 graph->
evalOpParm(myPointprox, nodeidx,
"pointprox", time, 0);
143 myPointobjpath =
""_sh;
144 if (
true && ( (!(((
int64(getPtsort())!=9)))) ) )
145 graph->
evalOpParm(myPointobjpath, nodeidx,
"pointobjpath", time, 0);
147 if (
true && ( (!(((
int64(getPtsort())!=9)))) ) )
148 graph->
evalOpParm(myPointdir, nodeidx,
"pointdir", time, 0);
150 if (
true && ( (!(((
int64(getPtsort())!=10)))) ) )
151 graph->
evalOpParm(myPointexpr, nodeidx,
"pointexpr", time, 0);
152 myPointattrib =
""_sh;
153 if (
true && ( (!(((
int64(getPtsort())!=12)))) ) )
154 graph->
evalOpParm(myPointattrib, nodeidx,
"pointattrib", time, 0);
155 myPointattribcomp = 0;
156 if (
true && ( (!(((
int64(getPtsort())!=12)))) ) )
157 graph->
evalOpParm(myPointattribcomp, nodeidx,
"pointattribcomp", time, 0);
158 myPointreverse =
false;
160 graph->
evalOpParm(myPointreverse, nodeidx,
"pointreverse", time, 0);
163 graph->
evalOpParm(myPrimsort, nodeidx,
"primsort", time, 0);
165 if (
true && ( (!(((
int64(getPrimsort())!=5)))) ) )
166 graph->
evalOpParm(myPrimseed, nodeidx,
"primseed", time, 0);
168 if (
true && ( (!(((
int64(getPrimsort())!=6)))) ) )
169 graph->
evalOpParm(myPrimoffset, nodeidx,
"primoffset", time, 0);
171 if (
true && ( (!(((
int64(getPrimsort())!=7)))) ) )
172 graph->
evalOpParm(myPrimprox, nodeidx,
"primprox", time, 0);
173 myPrimobjpath =
""_sh;
174 if (
true && ( (!(((
int64(getPrimsort())!=8)))) ) )
175 graph->
evalOpParm(myPrimobjpath, nodeidx,
"primobjpath", time, 0);
177 if (
true && ( (!(((
int64(getPrimsort())!=8)))) ) )
178 graph->
evalOpParm(myPrimdir, nodeidx,
"primdir", time, 0);
180 if (
true && ( (!(((
int64(getPrimsort())!=9)))) ) )
181 graph->
evalOpParm(myPrimexpr, nodeidx,
"primexpr", time, 0);
182 myPrimattrib =
""_sh;
183 if (
true && ( (!(((
int64(getPrimsort())!=11)))) ) )
184 graph->
evalOpParm(myPrimattrib, nodeidx,
"primattrib", time, 0);
185 myPrimattribcomp = 0;
186 if (
true && ( (!(((
int64(getPrimsort())!=11)))) ) )
187 graph->
evalOpParm(myPrimattribcomp, nodeidx,
"primattribcomp", time, 0);
188 myPrimreverse =
false;
190 graph->
evalOpParm(myPrimreverse, nodeidx,
"primreverse", time, 0);
191 myVertexPrimOrder =
true;
193 graph->
evalOpParm(myVertexPrimOrder, nodeidx,
"vertexprimorder", time, 0);
209 template <
typename T>
216 if (idx.
size() != instance.
size()+1)
221 coerceValue(value, myPtsort);
224 coerceValue(value, myPointseed);
227 coerceValue(value, myPointoffset);
230 coerceValue(value, myPointprox);
233 coerceValue(value, myPointobjpath);
236 coerceValue(value, myPointdir);
239 coerceValue(value, myPointexpr);
242 coerceValue(value, myPointattrib);
245 coerceValue(value, myPointattribcomp);
248 coerceValue(value, myPointreverse);
251 coerceValue(value, myPrimsort);
254 coerceValue(value, myPrimseed);
257 coerceValue(value, myPrimoffset);
260 coerceValue(value, myPrimprox);
263 coerceValue(value, myPrimobjpath);
266 coerceValue(value, myPrimdir);
269 coerceValue(value, myPrimexpr);
272 coerceValue(value, myPrimattrib);
275 coerceValue(value, myPrimattribcomp);
278 coerceValue(value, myPrimreverse);
281 coerceValue(value, myVertexPrimOrder);
288 { doGetParmValue(idx, instance, value); }
290 { doGetParmValue(idx, instance, value); }
292 { doGetParmValue(idx, instance, value); }
294 { doGetParmValue(idx, instance, value); }
296 { doGetParmValue(idx, instance, value); }
298 { doGetParmValue(idx, instance, value); }
300 { doGetParmValue(idx, instance, value); }
302 { doGetParmValue(idx, instance, value); }
304 { doGetParmValue(idx, instance, value); }
306 { doGetParmValue(idx, instance, value); }
308 { doGetParmValue(idx, instance, value); }
310 template <
typename T>
317 if (idx.
size() != instance.
size()+1)
322 coerceValue(myPtsort, value);
325 coerceValue(myPointseed, value);
328 coerceValue(myPointoffset, value);
331 coerceValue(myPointprox, value);
334 coerceValue(myPointobjpath, value);
337 coerceValue(myPointdir, value);
340 coerceValue(myPointexpr, value);
343 coerceValue(myPointattrib, value);
346 coerceValue(myPointattribcomp, value);
349 coerceValue(myPointreverse, value);
352 coerceValue(myPrimsort, value);
355 coerceValue(myPrimseed, value);
358 coerceValue(myPrimoffset, value);
361 coerceValue(myPrimprox, value);
364 coerceValue(myPrimobjpath, value);
367 coerceValue(myPrimdir, value);
370 coerceValue(myPrimexpr, value);
373 coerceValue(myPrimattrib, value);
376 coerceValue(myPrimattribcomp, value);
379 coerceValue(myPrimreverse, value);
382 coerceValue(myVertexPrimOrder, value);
389 { doSetParmValue(idx, instance, value); }
391 { doSetParmValue(idx, instance, value); }
393 { doSetParmValue(idx, instance, value); }
395 { doSetParmValue(idx, instance, value); }
397 { doSetParmValue(idx, instance, value); }
399 { doSetParmValue(idx, instance, value); }
401 { doSetParmValue(idx, instance, value); }
403 { doSetParmValue(idx, instance, value); }
405 { doSetParmValue(idx, instance, value); }
407 { doSetParmValue(idx, instance, value); }
409 { doSetParmValue(idx, instance, value); }
425 if (fieldnum.
size() < 1)
434 return "pointoffset";
438 return "pointobjpath";
444 return "pointattrib";
446 return "pointattribcomp";
448 return "pointreverse";
458 return "primobjpath";
466 return "primattribcomp";
468 return "primreverse";
470 return "vertexprimorder";
478 if (fieldnum.
size() < 1)
479 return PARM_UNSUPPORTED;
526 return PARM_UNSUPPORTED;
562 loadData(is, rampdata);
580 int typelen = colon - data.
buffer();
594 {
int64 iv =
v; UTwrite(os, &iv); }
596 { UTwrite<fpreal64>(os, &
v); }
598 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y()); }
600 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y());
601 UTwrite<fpreal64>(os, &v.
z()); }
603 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y());
604 UTwrite<fpreal64>(os, &v.
z()); UTwrite<fpreal64>(os, &v.
w()); }
616 if (s) s->save(ostr);
618 saveData(os, result);
625 ostr << s->getDataTypeToken();
630 saveData(os, result);
634 void save(std::ostream &os)
const
638 saveData(os, myPtsort);
639 saveData(os, myPointseed);
640 saveData(os, myPointoffset);
641 saveData(os, myPointprox);
642 saveData(os, myPointobjpath);
643 saveData(os, myPointdir);
644 saveData(os, myPointexpr);
645 saveData(os, myPointattrib);
646 saveData(os, myPointattribcomp);
647 saveData(os, myPointreverse);
648 saveData(os, myPrimsort);
649 saveData(os, myPrimseed);
650 saveData(os, myPrimoffset);
651 saveData(os, myPrimprox);
652 saveData(os, myPrimobjpath);
653 saveData(os, myPrimdir);
654 saveData(os, myPrimexpr);
655 saveData(os, myPrimattrib);
656 saveData(os, myPrimattribcomp);
657 saveData(os, myPrimreverse);
658 saveData(os, myVertexPrimOrder);
671 loadData(is, myPtsort);
672 loadData(is, myPointseed);
673 loadData(is, myPointoffset);
674 loadData(is, myPointprox);
675 loadData(is, myPointobjpath);
676 loadData(is, myPointdir);
677 loadData(is, myPointexpr);
678 loadData(is, myPointattrib);
679 loadData(is, myPointattribcomp);
680 loadData(is, myPointreverse);
681 loadData(is, myPrimsort);
682 loadData(is, myPrimseed);
683 loadData(is, myPrimoffset);
684 loadData(is, myPrimprox);
685 loadData(is, myPrimobjpath);
686 loadData(is, myPrimdir);
687 loadData(is, myPrimexpr);
688 loadData(is, myPrimattrib);
689 loadData(is, myPrimattribcomp);
690 loadData(is, myPrimreverse);
691 loadData(is, myVertexPrimOrder);
701 if (!thissop)
return getPtsort();
703 OP_Utils::evalOpParm(result, thissop,
"ptsort", cookparms.
getCookTime(), 0);
711 if (!thissop)
return getPointseed();
713 OP_Utils::evalOpParm(result, thissop,
"pointseed", cookparms.
getCookTime(), 0);
721 if (!thissop)
return getPointoffset();
723 OP_Utils::evalOpParm(result, thissop,
"pointoffset", cookparms.
getCookTime(), 0);
731 if (!thissop)
return getPointprox();
733 OP_Utils::evalOpParm(result, thissop,
"pointprox", cookparms.
getCookTime(), 0);
741 if (!thissop)
return getPointobjpath();
743 OP_Utils::evalOpParm(result, thissop,
"pointobjpath", cookparms.
getCookTime(), 0);
751 if (!thissop)
return getPointdir();
753 OP_Utils::evalOpParm(result, thissop,
"pointdir", cookparms.
getCookTime(), 0);
761 if (!thissop)
return getPointexpr();
763 OP_Utils::evalOpParm(result, thissop,
"pointexpr", cookparms.
getCookTime(), 0);
771 if (!thissop)
return getPointattrib();
773 OP_Utils::evalOpParm(result, thissop,
"pointattrib", cookparms.
getCookTime(), 0);
781 if (!thissop)
return getPointattribcomp();
783 OP_Utils::evalOpParm(result, thissop,
"pointattribcomp", cookparms.
getCookTime(), 0);
791 if (!thissop)
return getPointreverse();
793 OP_Utils::evalOpParm(result, thissop,
"pointreverse", cookparms.
getCookTime(), 0);
801 if (!thissop)
return getPrimsort();
803 OP_Utils::evalOpParm(result, thissop,
"primsort", cookparms.
getCookTime(), 0);
811 if (!thissop)
return getPrimseed();
813 OP_Utils::evalOpParm(result, thissop,
"primseed", cookparms.
getCookTime(), 0);
821 if (!thissop)
return getPrimoffset();
823 OP_Utils::evalOpParm(result, thissop,
"primoffset", cookparms.
getCookTime(), 0);
831 if (!thissop)
return getPrimprox();
833 OP_Utils::evalOpParm(result, thissop,
"primprox", cookparms.
getCookTime(), 0);
841 if (!thissop)
return getPrimobjpath();
843 OP_Utils::evalOpParm(result, thissop,
"primobjpath", cookparms.
getCookTime(), 0);
851 if (!thissop)
return getPrimdir();
853 OP_Utils::evalOpParm(result, thissop,
"primdir", cookparms.
getCookTime(), 0);
861 if (!thissop)
return getPrimexpr();
863 OP_Utils::evalOpParm(result, thissop,
"primexpr", cookparms.
getCookTime(), 0);
871 if (!thissop)
return getPrimattrib();
873 OP_Utils::evalOpParm(result, thissop,
"primattrib", cookparms.
getCookTime(), 0);
881 if (!thissop)
return getPrimattribcomp();
883 OP_Utils::evalOpParm(result, thissop,
"primattribcomp", cookparms.
getCookTime(), 0);
891 if (!thissop)
return getPrimreverse();
893 OP_Utils::evalOpParm(result, thissop,
"primreverse", cookparms.
getCookTime(), 0);
901 if (!thissop)
return getVertexPrimOrder();
903 OP_Utils::evalOpParm(result, thissop,
"vertexprimorder", cookparms.
getCookTime(), 0);
916 int64 myPointattribcomp;
926 int64 myPrimattribcomp;
928 bool myVertexPrimOrder;
void setPointreverse(bool val)
void setPointobjpath(const UT_StringHolder &val)
int64 opPrimattribcomp(const SOP_NodeVerb::CookParms &cookparms) const
bool getVertexPrimOrder() const
int64 getPointseed() const
static void saveData(std::ostream &os, UT_Matrix4D v)
static void loadData(UT_IStream &is, int64 &v)
UT_Vector3D getPrimdir() const
void save(std::ostream &os) const
SOP_Node * getNode() const
void setPrimreverse(bool val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
void setPointexpr(fpreal64 val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
static void loadData(UT_IStream &is, bool &v)
static void loadData(UT_IStream &is, UT_StringHolder &v)
int64 opPointattribcomp(const SOP_NodeVerb::CookParms &cookparms) const
bool operator==(const SOP_SortParms &src) const
const UT_StringHolder & getPointobjpath() const
exint bread(int32 *buffer, exint asize=1)
GT_API const UT_StringHolder time
GLuint const GLfloat * val
ParmType getNestParmType(TempIndex fieldnum) const override
static void saveData(std::ostream &os, fpreal64 v)
static void saveData(std::ostream &os, UT_Vector4D v)
fpreal64 getPrimexpr() const
Primsort opPrimsort(const SOP_NodeVerb::CookParms &cookparms) const
void setPointoffset(int64 val)
SYS_FORCE_INLINE const char * buffer() const
int64 getPointattribcomp() const
const SOP_GraphProxy * graph() const
UT_Vector3D opPointprox(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Matrix3D v)
void setPrimexpr(fpreal64 val)
int64 opPrimoffset(const SOP_NodeVerb::CookParms &cookparms) const
An output stream object that owns its own string buffer storage.
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
static void loadData(UT_IStream &is, UT_Vector4D &v)
UT_StringHolder opPrimobjpath(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
bool opPrimreverse(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
static void loadData(UT_IStream &is, UT_Matrix2D &v)
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
void setPointattribcomp(int64 val)
void setPrimattribcomp(int64 val)
fpreal64 opPointexpr(const SOP_NodeVerb::CookParms &cookparms) const
Primsort getPrimsort() 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.
static void loadData(UT_IStream &is, fpreal64 &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
UT_Vector3D opPointdir(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Matrix4D &v)
static void loadData(UT_IStream &is, UT_Vector3I &v)
bool opVertexPrimOrder(const SOP_NodeVerb::CookParms &cookparms) const
void setPointdir(UT_Vector3D val)
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
bool getPointreverse() const
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
int64 opPointoffset(const SOP_NodeVerb::CookParms &cookparms) const
void setPrimseed(int64 val)
static void saveData(std::ostream &os, UT_Vector3D v)
UT_Vector3D getPointprox() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
const UT_StringHolder & getPrimattrib() const
GLint GLenum GLsizei GLint GLsizei const void * data
static void loadData(UT_IStream &is, UT_Vector4I &v)
int64 getPrimattribcomp() const
int64 getPrimseed() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
static void saveData(std::ostream &os, UT_Vector2D v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
void setPrimdir(UT_Vector3D val)
int64 getPointoffset() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
Ptsort opPtsort(const SOP_NodeVerb::CookParms &cookparms) const
void setPointattrib(const UT_StringHolder &val)
UT_StringHolder opPrimattrib(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3T< fpreal64 > UT_Vector3D
bool load(UT_IStream &is)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
static void saveData(std::ostream &os, PRM_DataItemHandle s)
bool getPrimreverse() const
UT_Vector3D getPointdir() const
static void loadData(UT_IStream &is, UT_Vector2D &v)
void saveBinary(std::ostream &os) const
Save string to binary stream.
void setPtsort(Ptsort val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
int64 opPrimseed(const SOP_NodeVerb::CookParms &cookparms) const
GT_API const UT_StringHolder version
DEP_MicroNode * depnode() const
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
int64 getPrimoffset() const
UT_Vector3D opPrimprox(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
static void loadData(UT_IStream &is, UT_Matrix3D &v)
const char * getNestParmName(TempIndex fieldnum) const override
const UT_StringHolder & getPointattrib() const
UT_StringHolder opPointattrib(const SOP_NodeVerb::CookParms &cookparms) const
void setPrimobjpath(const UT_StringHolder &val)
void setPrimoffset(int64 val)
void setPrimprox(UT_Vector3D val)
const UT_StringHolder & getPrimobjpath() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
int64 opPointseed(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Matrix2D v)
Utility class for containing a color ramp.
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
GLdouble GLdouble GLdouble r
~SOP_SortParms() override
void setPrimsort(Primsort val)
void setVertexPrimOrder(bool val)
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
static void saveData(std::ostream &os, int64 v)
fpreal64 opPrimexpr(const SOP_NodeVerb::CookParms &cookparms) const
fpreal getCookTime() const
bool opPointreverse(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, bool v)
void setPrimattrib(const UT_StringHolder &val)
void loadFromOpSubclass(const LoadParms &loadparms) override
const char * findChar(int c) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
exint getNestNumParms(TempIndex idx) const override
static void saveData(std::ostream &os, UT_StringHolder s)
void copyFrom(const SOP_NodeParms *src) override
UT_Vector3D getPrimprox() const
static void loadData(UT_IStream &is, UT_Vector2I &v)
void setPointseed(int64 val)
void setPointprox(UT_Vector3D val)
bool operator!=(const SOP_SortParms &src) const
GLsizei const GLfloat * value
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
UT_StringHolder opPointobjpath(const SOP_NodeVerb::CookParms &cookparms) const
const OP_Context & context() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
fpreal64 getPointexpr() const
UT_Vector3D opPrimdir(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE bool isstring() const
static void loadData(UT_IStream &is, UT_Vector3D &v)
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
void buildFromOp(const SOP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override