23 namespace SOP_AttribTransferEnums
45 mySrcgroups =
""_UTsh;
47 myDstgroups =
""_UTsh;
49 myDetailattribs =
false;
50 myDetailattriblist =
""_UTsh;
51 myPrimitiveattribs =
true;
52 myPrimattriblist =
""_UTsh;
53 myPointattribs =
true;
54 myPointattriblist =
""_UTsh;
55 myVertexattribs =
false;
56 myVertexattriblist =
""_UTsh;
57 myCopyvariable =
true;
58 myMatchpattrib =
false;
59 myKernel =
"elendt"_UTsh;
78 if (mySrcgroups != src.mySrcgroups)
return false;
79 if (mySrcgrouptype != src.mySrcgrouptype)
return false;
80 if (myDstgroups != src.myDstgroups)
return false;
81 if (myDstgrouptype != src.myDstgrouptype)
return false;
82 if (myDetailattribs != src.myDetailattribs)
return false;
83 if (myDetailattriblist != src.myDetailattriblist)
return false;
84 if (myPrimitiveattribs != src.myPrimitiveattribs)
return false;
85 if (myPrimattriblist != src.myPrimattriblist)
return false;
86 if (myPointattribs != src.myPointattribs)
return false;
87 if (myPointattriblist != src.myPointattriblist)
return false;
88 if (myVertexattribs != src.myVertexattribs)
return false;
89 if (myVertexattriblist != src.myVertexattriblist)
return false;
90 if (myCopyvariable != src.myCopyvariable)
return false;
91 if (myMatchpattrib != src.myMatchpattrib)
return false;
92 if (myKernel != src.myKernel)
return false;
93 if (myKernelradius != src.myKernelradius)
return false;
94 if (myMaxsamplecount != src.myMaxsamplecount)
return false;
95 if (myThreshold != src.myThreshold)
return false;
96 if (myThresholddist != src.myThresholddist)
return false;
97 if (myBlendwidth != src.myBlendwidth)
return false;
98 if (myUniformbias != src.myUniformbias)
return false;
113 mySrcgroups =
""_UTsh;
115 graph->
evalOpParm(mySrcgroups, nodeidx,
"srcgroups", time, 0);
118 graph->
evalOpParm(mySrcgrouptype, nodeidx,
"srcgrouptype", time, 0);
119 myDstgroups =
""_UTsh;
121 graph->
evalOpParm(myDstgroups, nodeidx,
"dstgroups", time, 0);
124 graph->
evalOpParm(myDstgrouptype, nodeidx,
"dstgrouptype", time, 0);
125 myDetailattribs =
false;
127 graph->
evalOpParm(myDetailattribs, nodeidx,
"detailattribs", time, 0);
128 myDetailattriblist =
""_UTsh;
129 if (
true && ( (
true&&!(((getDetailattribs()==0)))) ) )
130 graph->
evalOpParm(myDetailattriblist, nodeidx,
"detailattriblist", time, 0);
131 myPrimitiveattribs =
true;
133 graph->
evalOpParm(myPrimitiveattribs, nodeidx,
"primitiveattribs", time, 0);
134 myPrimattriblist =
""_UTsh;
135 if (
true && ( (
true&&!(((getPrimitiveattribs()==0)))) ) )
136 graph->
evalOpParm(myPrimattriblist, nodeidx,
"primattriblist", time, 0);
137 myPointattribs =
true;
139 graph->
evalOpParm(myPointattribs, nodeidx,
"pointattribs", time, 0);
140 myPointattriblist =
""_UTsh;
141 if (
true && ( (
true&&!(((getPointattribs()==0)))) ) )
142 graph->
evalOpParm(myPointattriblist, nodeidx,
"pointattriblist", time, 0);
143 myVertexattribs =
false;
145 graph->
evalOpParm(myVertexattribs, nodeidx,
"vertexattribs", time, 0);
146 myVertexattriblist =
""_UTsh;
147 if (
true && ( (
true&&!(((getVertexattribs()==0)))) ) )
148 graph->
evalOpParm(myVertexattriblist, nodeidx,
"vertexattriblist", time, 0);
149 myCopyvariable =
true;
151 graph->
evalOpParm(myCopyvariable, nodeidx,
"copyvariable", time, 0);
152 myMatchpattrib =
false;
154 graph->
evalOpParm(myMatchpattrib, nodeidx,
"matchpattrib", time, 0);
155 myKernel =
"elendt"_UTsh;
157 graph->
evalOpParm(myKernel, nodeidx,
"kernel", time, 0);
159 if (
true && ( (
true&&!(((getKernel()==
"uniform")))) ) )
160 graph->
evalOpParm(myKernelradius, nodeidx,
"kernelradius", time, 0);
161 myMaxsamplecount = 1;
163 graph->
evalOpParm(myMaxsamplecount, nodeidx,
"maxsamplecount", time, 0);
166 graph->
evalOpParm(myThreshold, nodeidx,
"threshold", time, 0);
167 myThresholddist = 10;
168 if (
true && ( (
true&&!(((getThreshold()==0)))) ) )
169 graph->
evalOpParm(myThresholddist, nodeidx,
"thresholddist", time, 0);
171 if (
true && ( (
true&&!(((getThreshold()==0)))) ) )
172 graph->
evalOpParm(myBlendwidth, nodeidx,
"blendwidth", time, 0);
174 if (
true && ( (
true&&!(((getThreshold()==0))||((getKernel()!=
"uniform")))) ) )
175 graph->
evalOpParm(myUniformbias, nodeidx,
"uniformbias", time, 0);
191 template <
typename T>
198 if (idx.
size() != instance.
size()+1)
279 { doGetParmValue(idx, instance, value); }
281 { doGetParmValue(idx, instance, value); }
283 { doGetParmValue(idx, instance, value); }
285 { doGetParmValue(idx, instance, value); }
287 { doGetParmValue(idx, instance, value); }
289 { doGetParmValue(idx, instance, value); }
291 { doGetParmValue(idx, instance, value); }
293 { doGetParmValue(idx, instance, value); }
295 { doGetParmValue(idx, instance, value); }
297 { doGetParmValue(idx, instance, value); }
299 { doGetParmValue(idx, instance, value); }
301 template <
typename T>
308 if (idx.
size() != instance.
size()+1)
380 { doSetParmValue(idx, instance, value); }
382 { doSetParmValue(idx, instance, value); }
384 { doSetParmValue(idx, instance, value); }
386 { doSetParmValue(idx, instance, value); }
388 { doSetParmValue(idx, instance, value); }
390 { doSetParmValue(idx, instance, value); }
392 { doSetParmValue(idx, instance, value); }
394 { doSetParmValue(idx, instance, value); }
396 { doSetParmValue(idx, instance, value); }
398 { doSetParmValue(idx, instance, value); }
400 { doSetParmValue(idx, instance, value); }
416 if (fieldnum.
size() < 1)
423 return "srcgrouptype";
427 return "dstgrouptype";
429 return "detailattribs";
431 return "detailattriblist";
433 return "primitiveattribs";
435 return "primattriblist";
437 return "pointattribs";
439 return "pointattriblist";
441 return "vertexattribs";
443 return "vertexattriblist";
445 return "copyvariable";
447 return "matchpattrib";
451 return "kernelradius";
453 return "maxsamplecount";
457 return "thresholddist";
461 return "uniformbias";
469 if (fieldnum.
size() < 1)
470 return PARM_UNSUPPORTED;
536 {
for (
int r = 0;
r < 2;
r++)
for (
int c = 0; c < 2; c++) is.
bread<
fpreal64>(&v(
r, c), 1); }
538 {
for (
int r = 0;
r < 3;
r++)
for (
int c = 0; c < 3; c++) is.
bread<
fpreal64>(&v(
r, c), 1); }
540 {
for (
int r = 0;
r < 4;
r++)
for (
int c = 0; c < 4; c++) is.
bread<
fpreal64>(&v(
r, c), 1); }
553 loadData(is, rampdata);
571 int typelen = colon - data.
buffer();
585 {
int64 iv =
v; UTwrite(os, &iv); }
587 { UTwrite<fpreal64>(os, &
v); }
589 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y()); }
591 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y());
592 UTwrite<fpreal64>(os, &v.
z()); }
594 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y());
595 UTwrite<fpreal64>(os, &v.
z()); UTwrite<fpreal64>(os, &v.
w()); }
607 if (s) s->save(ostr);
609 saveData(os, result);
616 ostr << s->getDataTypeToken();
621 saveData(os, result);
625 void save(std::ostream &os)
const
629 saveData(os, mySrcgroups);
630 saveData(os, mySrcgrouptype);
631 saveData(os, myDstgroups);
632 saveData(os, myDstgrouptype);
633 saveData(os, myDetailattribs);
634 saveData(os, myDetailattriblist);
635 saveData(os, myPrimitiveattribs);
636 saveData(os, myPrimattriblist);
637 saveData(os, myPointattribs);
638 saveData(os, myPointattriblist);
639 saveData(os, myVertexattribs);
640 saveData(os, myVertexattriblist);
641 saveData(os, myCopyvariable);
642 saveData(os, myMatchpattrib);
643 saveData(os, myKernel);
644 saveData(os, myKernelradius);
645 saveData(os, myMaxsamplecount);
646 saveData(os, myThreshold);
647 saveData(os, myThresholddist);
648 saveData(os, myBlendwidth);
649 saveData(os, myUniformbias);
662 loadData(is, mySrcgroups);
663 loadData(is, mySrcgrouptype);
664 loadData(is, myDstgroups);
665 loadData(is, myDstgrouptype);
666 loadData(is, myDetailattribs);
667 loadData(is, myDetailattriblist);
668 loadData(is, myPrimitiveattribs);
669 loadData(is, myPrimattriblist);
670 loadData(is, myPointattribs);
671 loadData(is, myPointattriblist);
672 loadData(is, myVertexattribs);
673 loadData(is, myVertexattriblist);
674 loadData(is, myCopyvariable);
675 loadData(is, myMatchpattrib);
676 loadData(is, myKernel);
677 loadData(is, myKernelradius);
678 loadData(is, myMaxsamplecount);
679 loadData(is, myThreshold);
680 loadData(is, myThresholddist);
681 loadData(is, myBlendwidth);
682 loadData(is, myUniformbias);
692 if (!thissop)
return getSrcgroups();
694 OP_Utils::evalOpParm(result, thissop,
"srcgroups", cookparms.
getCookTime(), 0);
702 if (!thissop)
return getSrcgrouptype();
704 OP_Utils::evalOpParm(result, thissop,
"srcgrouptype", cookparms.
getCookTime(), 0);
712 if (!thissop)
return getDstgroups();
714 OP_Utils::evalOpParm(result, thissop,
"dstgroups", cookparms.
getCookTime(), 0);
722 if (!thissop)
return getDstgrouptype();
724 OP_Utils::evalOpParm(result, thissop,
"dstgrouptype", cookparms.
getCookTime(), 0);
732 if (!thissop)
return getDetailattribs();
734 OP_Utils::evalOpParm(result, thissop,
"detailattribs", cookparms.
getCookTime(), 0);
742 if (!thissop)
return getDetailattriblist();
744 OP_Utils::evalOpParm(result, thissop,
"detailattriblist", cookparms.
getCookTime(), 0);
752 if (!thissop)
return getPrimitiveattribs();
754 OP_Utils::evalOpParm(result, thissop,
"primitiveattribs", cookparms.
getCookTime(), 0);
762 if (!thissop)
return getPrimattriblist();
764 OP_Utils::evalOpParm(result, thissop,
"primattriblist", cookparms.
getCookTime(), 0);
772 if (!thissop)
return getPointattribs();
774 OP_Utils::evalOpParm(result, thissop,
"pointattribs", cookparms.
getCookTime(), 0);
782 if (!thissop)
return getPointattriblist();
784 OP_Utils::evalOpParm(result, thissop,
"pointattriblist", cookparms.
getCookTime(), 0);
792 if (!thissop)
return getVertexattribs();
794 OP_Utils::evalOpParm(result, thissop,
"vertexattribs", cookparms.
getCookTime(), 0);
802 if (!thissop)
return getVertexattriblist();
804 OP_Utils::evalOpParm(result, thissop,
"vertexattriblist", cookparms.
getCookTime(), 0);
812 if (!thissop)
return getCopyvariable();
814 OP_Utils::evalOpParm(result, thissop,
"copyvariable", cookparms.
getCookTime(), 0);
822 if (!thissop)
return getMatchpattrib();
824 OP_Utils::evalOpParm(result, thissop,
"matchpattrib", cookparms.
getCookTime(), 0);
832 if (!thissop)
return getKernel();
834 OP_Utils::evalOpParm(result, thissop,
"kernel", cookparms.
getCookTime(), 0);
842 if (!thissop)
return getKernelradius();
844 OP_Utils::evalOpParm(result, thissop,
"kernelradius", cookparms.
getCookTime(), 0);
852 if (!thissop)
return getMaxsamplecount();
854 OP_Utils::evalOpParm(result, thissop,
"maxsamplecount", cookparms.
getCookTime(), 0);
862 if (!thissop)
return getThreshold();
864 OP_Utils::evalOpParm(result, thissop,
"threshold", cookparms.
getCookTime(), 0);
872 if (!thissop)
return getThresholddist();
874 OP_Utils::evalOpParm(result, thissop,
"thresholddist", cookparms.
getCookTime(), 0);
882 if (!thissop)
return getBlendwidth();
884 OP_Utils::evalOpParm(result, thissop,
"blendwidth", cookparms.
getCookTime(), 0);
892 if (!thissop)
return getUniformbias();
894 OP_Utils::evalOpParm(result, thissop,
"uniformbias", cookparms.
getCookTime(), 0);
900 int64 mySrcgrouptype;
902 int64 myDstgrouptype;
903 bool myDetailattribs;
905 bool myPrimitiveattribs;
909 bool myVertexattribs;
915 int64 myMaxsamplecount;
bool getThreshold() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
SOP_AttribTransferParms()
void copyFrom(const OP_NodeParms *src) override
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
void setDstgrouptype(Dstgrouptype val)
static void loadData(UT_IStream &is, bool &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
void save(std::ostream &os) const
static void loadData(UT_IStream &is, UT_Vector2D &v)
void setVertexattribs(bool val)
void setPointattriblist(const UT_StringHolder &val)
void setBlendwidth(fpreal64 val)
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
UT_StringHolder opVertexattriblist(const SOP_NodeVerb::CookParms &cookparms) const
void setSrcgrouptype(Srcgrouptype val)
SOP_Node * getNode() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
bool operator==(const SOP_AttribTransferParms &src) const
bool opCopyvariable(const SOP_NodeVerb::CookParms &cookparms) const
void setDstgroups(const UT_StringHolder &val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
UT_StringHolder opDstgroups(const SOP_NodeVerb::CookParms &cookparms) const
T clampMaxValue(fpreal maxvalue, const T &src) const
bool opThreshold(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector3D &v)
void setMaxsamplecount(int64 val)
exint bread(int32 *buffer, exint asize=1)
static void loadData(UT_IStream &is, int64 &v)
void setDetailattribs(bool val)
static void saveData(std::ostream &os, PRM_DataItemHandle s)
GT_API const UT_StringHolder time
Srcgrouptype getSrcgrouptype() const
constexpr SYS_FORCE_INLINE T & y() noexcept
const UT_StringHolder & getSrcgroups() const
exint getNestNumParms(TempIndex idx) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
bool getMatchpattrib() const
void setUniformbias(fpreal64 val)
bool getCopyvariable() const
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
static void saveData(std::ostream &os, int64 v)
bool isParmColorRamp(exint idx) const override
const UT_StringHolder & getDetailattriblist() const
void setPointattribs(bool val)
static void loadData(UT_IStream &is, fpreal64 &v)
const OP_Context & context() const
constexpr SYS_FORCE_INLINE T & z() noexcept
SYS_FORCE_INLINE const char * buffer() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
An output stream object that owns its own string buffer storage.
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
**But if you need a result
void setCopyvariable(bool val)
T clampMinValue(fpreal minvalue, const T &src) const
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
fpreal64 getBlendwidth() 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 setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
static void loadData(UT_IStream &is, UT_Matrix4D &v)
constexpr SYS_FORCE_INLINE T & x() noexcept
static void loadData(UT_IStream &is, UT_Vector2I &v)
void loadFromOpSubclass(const LoadParms &loadparms) override
fpreal64 getUniformbias() const
void setThresholddist(fpreal64 val)
UT_StringHolder opKernel(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & x() noexcept
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
bool load(UT_IStream &is)
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
static void loadData(UT_IStream &is, UT_Matrix3D &v)
Srcgrouptype opSrcgrouptype(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector4I &v)
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
constexpr SYS_FORCE_INLINE T & z() noexcept
static void saveData(std::ostream &os, UT_Vector3D v)
const UT_StringHolder & getKernel() const
const OP_GraphProxy * graph() const
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
static void saveData(std::ostream &os, UT_Matrix3D v)
void setPrimitiveattribs(bool val)
Dstgrouptype getDstgrouptype() const
int64 opMaxsamplecount(const SOP_NodeVerb::CookParms &cookparms) const
bool opMatchpattrib(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opPointattriblist(const SOP_NodeVerb::CookParms &cookparms) const
void setDetailattriblist(const UT_StringHolder &val)
static void saveData(std::ostream &os, bool v)
bool getDetailattribs() const
static void saveData(std::ostream &os, UT_Matrix2D v)
fpreal64 opKernelradius(const SOP_NodeVerb::CookParms &cookparms) const
void setMatchpattrib(bool val)
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
bool opPointattribs(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
static void loadData(UT_IStream &is, UT_Vector3I &v)
void saveBinary(std::ostream &os) const
Save string to binary stream.
GT_API const UT_StringHolder version
void setKernel(const UT_StringHolder &val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
const UT_StringHolder & getPrimattriblist() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
bool getVertexattribs() const
fpreal64 opThresholddist(const SOP_NodeVerb::CookParms &cookparms) const
const char * getNestParmName(TempIndex fieldnum) const override
ParmType getNestParmType(TempIndex fieldnum) const override
void coerceValue(T &result, const S &src) const
void setKernelradius(fpreal64 val)
void setSrcgroups(const UT_StringHolder &val)
bool opDetailattribs(const SOP_NodeVerb::CookParms &cookparms) const
DEP_MicroNode * depnode() const
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
static void loadData(UT_IStream &is, UT_Vector4D &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
Utility class for containing a color ramp.
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
constexpr SYS_FORCE_INLINE T & w() noexcept
int64 getMaxsamplecount() const
fpreal getCookTime() const
const UT_StringHolder & getDstgroups() const
static void loadData(UT_IStream &is, UT_Matrix2D &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
const char * findChar(int c) const
fpreal64 getKernelradius() const
static void saveData(std::ostream &os, fpreal64 v)
bool opVertexattribs(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
void setThreshold(bool val)
fpreal64 getThresholddist() const
fpreal64 opUniformbias(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Vector2D v)
bool getPointattribs() const
UT_StringHolder opPrimattriblist(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & y() noexcept
bool operator!=(const SOP_AttribTransferParms &src) const
UT_StringHolder opDetailattriblist(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getPointattriblist() const
bool opPrimitiveattribs(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Matrix4D v)
void setPrimattriblist(const UT_StringHolder &val)
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
fpreal64 opBlendwidth(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Vector4D v)
void setVertexattriblist(const UT_StringHolder &val)
constexpr SYS_FORCE_INLINE T & y() noexcept
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
SYS_FORCE_INLINE bool isstring() const
static void saveData(std::ostream &os, UT_StringHolder s)
static void loadData(UT_IStream &is, UT_StringHolder &v)
bool getPrimitiveattribs() const
OP_NodeParms & operator=(const OP_NodeParms &)=default
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
UT_StringHolder opSrcgroups(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & x() noexcept
const UT_StringHolder & getVertexattriblist() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
Dstgrouptype opDstgrouptype(const SOP_NodeVerb::CookParms &cookparms) const