HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_Curve-3.0.proto.h
Go to the documentation of this file.
1 /* Automagically Generated by generate_proto.py
2  * Do not Edit
3  */
4 #pragma once
5 
6 #include <SOP/SOP_API.h>
7 #include <SOP/SOP_NodeVerb.h>
8 #include <OP/OP_GraphProxy.h>
9 
10 #include <OP/OP_Utils.h>
11 #include <PRM/PRM_Parm.h>
12 #include <UT/UT_IStream.h>
13 #include <UT/UT_NTStreamUtil.h>
14 #include <UT/UT_Ramp.h>
15 #include <UT/UT_SharedPtr.h>
16 #include <UT/UT_StringHolder.h>
17 #include <UT/UT_StringStream.h>
18 #include <UT/UT_VectorTypes.h>
19 #include <UT/UT_EnvControl.h>
20 #include <SYS/SYS_Types.h>
21 
22 class DEP_MicroNode;
23 namespace SOP_Curve_3_0Enums
24 {
25  enum class Optype
26  {
27  NOP = 0,
28  TRANSFORM,
32  CLOSE,
33  REVERSE,
34  CONVERT,
35  INSERT,
36  DELETE,
37  JOIN,
38  CUT,
41  FUSEBRANCH,
43  CONTRACT,
44  EXPAND,
46  CORNER,
47  SMOOTH,
48  BALANCE,
49  AUTO,
51  STRAIGHTEN,
53  FLATTEN,
54  RELAX,
61  UPDATEKEYS,
62  REMOVEKEYS,
69  };
70 
72  getToken(Optype enum_value)
73  {
74  using namespace UT::Literal;
75  switch (enum_value) {
76  case Optype::NOP: return "nop"_sh;
77  case Optype::TRANSFORM: return "transform"_sh;
78  case Optype::INTERPBEZIER: return "interpbezier"_sh;
79  case Optype::APPENDPOINT: return "appendpoint"_sh;
80  case Optype::PREPENDPOINT: return "prependpoint"_sh;
81  case Optype::CLOSE: return "close"_sh;
82  case Optype::REVERSE: return "reverse"_sh;
83  case Optype::CONVERT: return "convert"_sh;
84  case Optype::INSERT: return "insert"_sh;
85  case Optype::DELETE: return "delete"_sh;
86  case Optype::JOIN: return "join"_sh;
87  case Optype::CUT: return "cut"_sh;
88  case Optype::JOINSEGMENT: return "joinsegment"_sh;
89  case Optype::SEGMENTDELETE: return "segmentdelete"_sh;
90  case Optype::FUSEBRANCH: return "fusebranch"_sh;
91  case Optype::SPLITBRANCH: return "splitbranch"_sh;
92  case Optype::CONTRACT: return "contract"_sh;
93  case Optype::EXPAND: return "expand"_sh;
94  case Optype::SEGMENTCONTRACT: return "segmentcontract"_sh;
95  case Optype::CORNER: return "corner"_sh;
96  case Optype::SMOOTH: return "smooth"_sh;
97  case Optype::BALANCE: return "balance"_sh;
98  case Optype::AUTO: return "auto"_sh;
99  case Optype::EVENLYSPACE: return "evenlyspace"_sh;
100  case Optype::STRAIGHTEN: return "straighten"_sh;
101  case Optype::SPACEONCIRCLE: return "spaceoncircle"_sh;
102  case Optype::FLATTEN: return "flatten"_sh;
103  case Optype::RELAX: return "relax"_sh;
104  case Optype::ROUNDCORNERSSPLIT: return "roundcornerssplit"_sh;
105  case Optype::ROUNDCORNERSBAKE: return "roundcornersbake"_sh;
106  case Optype::ROUNDCORNERSRADIUS: return "roundcornersradius"_sh;
107  case Optype::ROUNDCORNERSREMOVE: return "roundcornersremove"_sh;
108  case Optype::CREATECHANNELS: return "createchannels"_sh;
109  case Optype::REMOVECHANNELS: return "removechannels"_sh;
110  case Optype::UPDATEKEYS: return "updatekeys"_sh;
111  case Optype::REMOVEKEYS: return "removekeys"_sh;
112  case Optype::CREATESCALEPOINT: return "createscalepoint"_sh;
113  case Optype::REMOVESCALEPOINT: return "removescalepoint"_sh;
114  case Optype::CHANGESCALEPOINT: return "changescalepoint"_sh;
115  case Optype::CREATEUPPOINT: return "createuppoint"_sh;
116  case Optype::REMOVEUPPOINT: return "removeuppoint"_sh;
117  case Optype::CHANGEUPPOINT: return "changeuppoint"_sh;
118  default: UT_ASSERT(false); return ""_sh;
119  }
120  }
121 
122  enum class Primtype
123  {
124  POLYGON = 0,
125  NURBS,
126  BEZIER
127  };
128 
130  getToken(Primtype enum_value)
131  {
132  using namespace UT::Literal;
133  switch (enum_value) {
134  case Primtype::POLYGON: return "polygon"_sh;
135  case Primtype::NURBS: return "nurbs"_sh;
136  case Primtype::BEZIER: return "bezier"_sh;
137  default: UT_ASSERT(false); return ""_sh;
138  }
139  }
140 
141  enum class Newpointtype
142  {
143  CORNER = 0,
144  SMOOTH,
145  BALANCED,
146  AUTO
147  };
148 
150  getToken(Newpointtype enum_value)
151  {
152  using namespace UT::Literal;
153  switch (enum_value) {
154  case Newpointtype::CORNER: return "corner"_sh;
155  case Newpointtype::SMOOTH: return "smooth"_sh;
156  case Newpointtype::BALANCED: return "balanced"_sh;
157  case Newpointtype::AUTO: return "auto"_sh;
158  default: UT_ASSERT(false); return ""_sh;
159  }
160  }
161 
162 }
163 
164 
166 {
167 public:
168  static int version() { return 1; }
169 
171  {
172  myOptype = 0;
173  myGroup = ""_UTsh;
174  myEnableoutputgroup = false;
175  myOutputgroup = "group1"_UTsh;
176  myApplykeys = true;
177  myInsertkeys = true;
178  myDensebake = false;
179  mySynchronizekeys = true;
180  myPrefixtangents = true;
181  myChannelprefix = "channel"_UTsh;
182  myCornerpts = ""_UTsh;
183  mySmoothpts = ""_UTsh;
184  myAutopts = ""_UTsh;
185  myEnableoutputcornersgroup = false;
186  myOutputcornersgroup = "corners"_UTsh;
187  myEnableoutputsmoothgroup = false;
188  myOutputsmoothgroup = "smooth"_UTsh;
189  myEnableoutputautogroup = false;
190  myOutputautogroup = "auto"_UTsh;
191  myTransformallkeys = false;
192  mySofttransform = false;
193  mySofttransformrad = 0.5;
194  myTranslate = UT_Vector3D(0,0,0);
195  myRotate = UT_Vector3D(0,0,0);
196  myScale = UT_Vector3D(1,1,1);
197  myPivottranslate = UT_Vector3D(0,0,0);
198  myPivotrotate = UT_Vector3D(0,0,0);
199  myConstrainstraighten = false;
200  myPlanenml = UT_Vector3D(0,1,0);
201  myPlaneorig = UT_Vector3D(0,0,0);
202  myActiveprim = -1;
203  myData = ""_UTsh;
204  myNewpointtype = 2;
205  myDrawsymmetric = true;
206  mySegment = 0;
207  myUpos = 0.5;
208  myInterpfalloff = 3.0;
209  myApproxshapedel = false;
210  myApproxtangentsdel = false;
211  myConvertmatchpoly = false;
212  myViewrounded = true;
213  myRoundrad = 0.1;
214  myRoundedpts = "rounded"_UTsh;
215  myRadiusattrib = "radius"_UTsh;
216  myRoundposattrib = "roundpos"_UTsh;
217  myChangerelative = false;
218  myScaleval = 1;
219  myScalecontrolpoints = "scalepoints"_UTsh;
220  myScaleattrib = "pscale"_UTsh;
221  myUpval = UT_Vector3D(0,1,0);
222  myUprot = 0;
223  myUpcontrolpoints = "uppoints"_UTsh;
224  myUpattrib = "up"_UTsh;
225  myPrimtype = 2;
226  myOrder = 4;
227  myConvertdivs = 2;
228 
229  }
230 
231  explicit SOP_Curve_3_0Parms(const SOP_Curve_3_0Parms &) = default;
232  SOP_Curve_3_0Parms &operator=(const SOP_Curve_3_0Parms &) = default;
233  SOP_Curve_3_0Parms(SOP_Curve_3_0Parms &&) noexcept = default;
234  SOP_Curve_3_0Parms &operator=(SOP_Curve_3_0Parms &&) noexcept = default;
235 
236  ~SOP_Curve_3_0Parms() override {}
237 
238  bool operator==(const SOP_Curve_3_0Parms &src) const
239  {
240  if (myOptype != src.myOptype) return false;
241  if (myGroup != src.myGroup) return false;
242  if (myEnableoutputgroup != src.myEnableoutputgroup) return false;
243  if (myOutputgroup != src.myOutputgroup) return false;
244  if (myApplykeys != src.myApplykeys) return false;
245  if (myInsertkeys != src.myInsertkeys) return false;
246  if (myDensebake != src.myDensebake) return false;
247  if (mySynchronizekeys != src.mySynchronizekeys) return false;
248  if (myPrefixtangents != src.myPrefixtangents) return false;
249  if (myChannelprefix != src.myChannelprefix) return false;
250  if (myCornerpts != src.myCornerpts) return false;
251  if (mySmoothpts != src.mySmoothpts) return false;
252  if (myAutopts != src.myAutopts) return false;
253  if (myEnableoutputcornersgroup != src.myEnableoutputcornersgroup) return false;
254  if (myOutputcornersgroup != src.myOutputcornersgroup) return false;
255  if (myEnableoutputsmoothgroup != src.myEnableoutputsmoothgroup) return false;
256  if (myOutputsmoothgroup != src.myOutputsmoothgroup) return false;
257  if (myEnableoutputautogroup != src.myEnableoutputautogroup) return false;
258  if (myOutputautogroup != src.myOutputautogroup) return false;
259  if (myTransformallkeys != src.myTransformallkeys) return false;
260  if (mySofttransform != src.mySofttransform) return false;
261  if (mySofttransformrad != src.mySofttransformrad) return false;
262  if (myTranslate != src.myTranslate) return false;
263  if (myRotate != src.myRotate) return false;
264  if (myScale != src.myScale) return false;
265  if (myPivottranslate != src.myPivottranslate) return false;
266  if (myPivotrotate != src.myPivotrotate) return false;
267  if (myConstrainstraighten != src.myConstrainstraighten) return false;
268  if (myPlanenml != src.myPlanenml) return false;
269  if (myPlaneorig != src.myPlaneorig) return false;
270  if (myActiveprim != src.myActiveprim) return false;
271  if (myData != src.myData) return false;
272  if (myNewpointtype != src.myNewpointtype) return false;
273  if (myDrawsymmetric != src.myDrawsymmetric) return false;
274  if (mySegment != src.mySegment) return false;
275  if (myUpos != src.myUpos) return false;
276  if (myInterpfalloff != src.myInterpfalloff) return false;
277  if (myApproxshapedel != src.myApproxshapedel) return false;
278  if (myApproxtangentsdel != src.myApproxtangentsdel) return false;
279  if (myConvertmatchpoly != src.myConvertmatchpoly) return false;
280  if (myViewrounded != src.myViewrounded) return false;
281  if (myRoundrad != src.myRoundrad) return false;
282  if (myRoundedpts != src.myRoundedpts) return false;
283  if (myRadiusattrib != src.myRadiusattrib) return false;
284  if (myRoundposattrib != src.myRoundposattrib) return false;
285  if (myChangerelative != src.myChangerelative) return false;
286  if (myScaleval != src.myScaleval) return false;
287  if (myScalecontrolpoints != src.myScalecontrolpoints) return false;
288  if (myScaleattrib != src.myScaleattrib) return false;
289  if (myUpval != src.myUpval) return false;
290  if (myUprot != src.myUprot) return false;
291  if (myUpcontrolpoints != src.myUpcontrolpoints) return false;
292  if (myUpattrib != src.myUpattrib) return false;
293  if (myPrimtype != src.myPrimtype) return false;
294  if (myOrder != src.myOrder) return false;
295  if (myConvertdivs != src.myConvertdivs) return false;
296 
297 
298  if (baseGetSignature() != src.baseGetSignature()) return false;
299 
300  return true;
301  }
302  bool operator!=(const SOP_Curve_3_0Parms &src) const
303  {
304  return !operator==(src);
305  }
309 
310 
311 
312  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
313  {
314  myOptype = 0;
315  if (true)
316  graph->evalOpParm(myOptype, nodeidx, "optype", time, graph->isDirect()?nullptr:depnode);
317  myGroup = ""_UTsh;
318  if (true)
319  graph->evalOpParm(myGroup, nodeidx, "group", time, graph->isDirect()?nullptr:depnode);
320  myEnableoutputgroup = false;
321  if (true)
322  graph->evalOpParm(myEnableoutputgroup, nodeidx, "enableoutputgroup", time, graph->isDirect()?nullptr:depnode);
323  myOutputgroup = "group1"_UTsh;
324  if (true && ( (true&&!(((getEnableoutputgroup()==0)))) ) )
325  graph->evalOpParm(myOutputgroup, nodeidx, "outputgroup", time, graph->isDirect()?nullptr:depnode);
326  myApplykeys = true;
327  if (true)
328  graph->evalOpParm(myApplykeys, nodeidx, "applykeys", time, graph->isDirect()?nullptr:depnode);
329  myInsertkeys = true;
330  if (true)
331  graph->evalOpParm(myInsertkeys, nodeidx, "insertkeys", time, graph->isDirect()?nullptr:depnode);
332  myDensebake = false;
333  if (true)
334  graph->evalOpParm(myDensebake, nodeidx, "densebake", time, graph->isDirect()?nullptr:depnode);
335  mySynchronizekeys = true;
336  if (true)
337  graph->evalOpParm(mySynchronizekeys, nodeidx, "synchronizekeys", time, graph->isDirect()?nullptr:depnode);
338  myPrefixtangents = true;
339  if (true)
340  graph->evalOpParm(myPrefixtangents, nodeidx, "prefixtangents", time, graph->isDirect()?nullptr:depnode);
341  myChannelprefix = "channel"_UTsh;
342  if (true)
343  graph->evalOpParm(myChannelprefix, nodeidx, "channelprefix", time, graph->isDirect()?nullptr:depnode);
344  myCornerpts = ""_UTsh;
345  if (true)
346  graph->evalOpParm(myCornerpts, nodeidx, "cornerpts", time, graph->isDirect()?nullptr:depnode);
347  mySmoothpts = ""_UTsh;
348  if (true)
349  graph->evalOpParm(mySmoothpts, nodeidx, "smoothpts", time, graph->isDirect()?nullptr:depnode);
350  myAutopts = ""_UTsh;
351  if (true)
352  graph->evalOpParm(myAutopts, nodeidx, "autopts", time, graph->isDirect()?nullptr:depnode);
353  myEnableoutputcornersgroup = false;
354  if (true)
355  graph->evalOpParm(myEnableoutputcornersgroup, nodeidx, "enableoutputcornersgroup", time, graph->isDirect()?nullptr:depnode);
356  myOutputcornersgroup = "corners"_UTsh;
357  if (true && ( (true&&!(((getEnableoutputcornersgroup()==0)))) ) )
358  graph->evalOpParm(myOutputcornersgroup, nodeidx, "outputcornersgroup", time, graph->isDirect()?nullptr:depnode);
359  myEnableoutputsmoothgroup = false;
360  if (true)
361  graph->evalOpParm(myEnableoutputsmoothgroup, nodeidx, "enableoutputsmoothgroup", time, graph->isDirect()?nullptr:depnode);
362  myOutputsmoothgroup = "smooth"_UTsh;
363  if (true && ( (true&&!(((getEnableoutputsmoothgroup()==0)))) ) )
364  graph->evalOpParm(myOutputsmoothgroup, nodeidx, "outputsmoothgroup", time, graph->isDirect()?nullptr:depnode);
365  myEnableoutputautogroup = false;
366  if (true)
367  graph->evalOpParm(myEnableoutputautogroup, nodeidx, "enableoutputautogroup", time, graph->isDirect()?nullptr:depnode);
368  myOutputautogroup = "auto"_UTsh;
369  if (true && ( (true&&!(((getEnableoutputautogroup()==0)))) ) )
370  graph->evalOpParm(myOutputautogroup, nodeidx, "outputautogroup", time, graph->isDirect()?nullptr:depnode);
371  myTransformallkeys = false;
372  if (true && ( (true&&!(((int64(getOptype())!=1)))) ) )
373  graph->evalOpParm(myTransformallkeys, nodeidx, "transformallkeys", time, graph->isDirect()?nullptr:depnode);
374  mySofttransform = false;
375  if (true)
376  graph->evalOpParm(mySofttransform, nodeidx, "softtransform", time, graph->isDirect()?nullptr:depnode);
377  mySofttransformrad = 0.5;
378  if (true && ( (true&&!(((getSofttransform()==0)))) ) )
379  graph->evalOpParm(mySofttransformrad, nodeidx, "softtransformrad", time, graph->isDirect()?nullptr:depnode);
380  myTranslate = UT_Vector3D(0,0,0);
381  if (true && ( (true&&!(((int64(getOptype())!=1)&&(int64(getOptype())!=2)))) ) )
382  graph->evalOpParm(myTranslate, nodeidx, "translate", time, graph->isDirect()?nullptr:depnode);
383  myRotate = UT_Vector3D(0,0,0);
384  if (true && ( (true&&!(((int64(getOptype())!=1)))) ) )
385  graph->evalOpParm(myRotate, nodeidx, "rotate", time, graph->isDirect()?nullptr:depnode);
386  myScale = UT_Vector3D(1,1,1);
387  if (true && ( (true&&!(((int64(getOptype())!=1)))) ) )
388  graph->evalOpParm(myScale, nodeidx, "scale", time, graph->isDirect()?nullptr:depnode);
389  myPivottranslate = UT_Vector3D(0,0,0);
390  if (true && ( (true&&!(((int64(getOptype())!=1)))) ) )
391  graph->evalOpParm(myPivottranslate, nodeidx, "pivottranslate", time, graph->isDirect()?nullptr:depnode);
392  myPivotrotate = UT_Vector3D(0,0,0);
393  if (true && ( (true&&!(((int64(getOptype())!=1)))) ) )
394  graph->evalOpParm(myPivotrotate, nodeidx, "pivotrotate", time, graph->isDirect()?nullptr:depnode);
395  myConstrainstraighten = false;
396  if (true && ( (true&&!(((int64(getOptype())!=24)))) ) )
397  graph->evalOpParm(myConstrainstraighten, nodeidx, "constrainstraighten", time, graph->isDirect()?nullptr:depnode);
398  myPlanenml = UT_Vector3D(0,1,0);
399  if (true && ( (true&&!(((int64(getOptype())!=26)&&(int64(getOptype())!=24))||((int64(getOptype())==24)&&(getConstrainstraighten()==0)))) ) )
400  graph->evalOpParm(myPlanenml, nodeidx, "planenml", time, graph->isDirect()?nullptr:depnode);
401  myPlaneorig = UT_Vector3D(0,0,0);
402  if (true && ( (true&&!(((int64(getOptype())!=26)))) ) )
403  graph->evalOpParm(myPlaneorig, nodeidx, "planeorig", time, graph->isDirect()?nullptr:depnode);
404  myActiveprim = -1;
405  if (true && ( (true&&!(((int64(getOptype())!=3)&&(int64(getOptype())!=4)&&(int64(getOptype())!=8)&&(int64(getOptype())!=2)))) ) )
406  graph->evalOpParm(myActiveprim, nodeidx, "activeprim", time, graph->isDirect()?nullptr:depnode);
407  myData = ""_UTsh;
408  if (true && ( (true&&!(((int64(getOptype())!=3)&&(int64(getOptype())!=4)))) ) )
409  graph->evalOpParm(myData, nodeidx, "data", time, graph->isDirect()?nullptr:depnode);
410  myNewpointtype = 2;
411  if (true && ( (true&&!(((int64(getOptype())!=3)&&(int64(getOptype())!=4)))) ) )
412  graph->evalOpParm(myNewpointtype, nodeidx, "newpointtype", time, graph->isDirect()?nullptr:depnode);
413  myDrawsymmetric = true;
414  if (true)
415  graph->evalOpParm(myDrawsymmetric, nodeidx, "drawsymmetric", time, graph->isDirect()?nullptr:depnode);
416  mySegment = 0;
417  if (true && ( (true&&!(((int64(getOptype())!=8)&&(int64(getOptype())!=2)))) ) )
418  graph->evalOpParm(mySegment, nodeidx, "segment", time, graph->isDirect()?nullptr:depnode);
419  myUpos = 0.5;
420  if (true && ( (true&&!(((int64(getOptype())!=8)&&(int64(getOptype())!=2)))) ) )
421  graph->evalOpParm(myUpos, nodeidx, "upos", time, graph->isDirect()?nullptr:depnode);
422  myInterpfalloff = 3.0;
423  if (true && ( (true&&!(((int64(getOptype())!=2)))) ) )
424  graph->evalOpParm(myInterpfalloff, nodeidx, "interpfalloff", time, graph->isDirect()?nullptr:depnode);
425  myApproxshapedel = false;
426  if (true && ( (true&&!(((int64(getOptype())!=9)))) ) )
427  graph->evalOpParm(myApproxshapedel, nodeidx, "approxshapedel", time, graph->isDirect()?nullptr:depnode);
428  myApproxtangentsdel = false;
429  if (true && ( (true&&!(((int64(getOptype())!=9))||((getApproxshapedel()==0)))) ) )
430  graph->evalOpParm(myApproxtangentsdel, nodeidx, "approxtangentsdel", time, graph->isDirect()?nullptr:depnode);
431  myConvertmatchpoly = false;
432  if (true && ( (true&&!(((int64(getOptype())!=7)))) ) )
433  graph->evalOpParm(myConvertmatchpoly, nodeidx, "convertmatchpoly", time, graph->isDirect()?nullptr:depnode);
434  myViewrounded = true;
435  if (true)
436  graph->evalOpParm(myViewrounded, nodeidx, "viewrounded", time, graph->isDirect()?nullptr:depnode);
437  myRoundrad = 0.1;
438  if (true && ( (true&&!(((int64(getOptype())!=28)&&(int64(getOptype())!=30)))) ) )
439  graph->evalOpParm(myRoundrad, nodeidx, "roundrad", time, graph->isDirect()?nullptr:depnode);
440  myRoundedpts = "rounded"_UTsh;
441  if (true)
442  graph->evalOpParm(myRoundedpts, nodeidx, "roundedpts", time, graph->isDirect()?nullptr:depnode);
443  myRadiusattrib = "radius"_UTsh;
444  if (true)
445  graph->evalOpParm(myRadiusattrib, nodeidx, "radiusattrib", time, graph->isDirect()?nullptr:depnode);
446  myRoundposattrib = "roundpos"_UTsh;
447  if (true)
448  graph->evalOpParm(myRoundposattrib, nodeidx, "roundposattrib", time, graph->isDirect()?nullptr:depnode);
449  myChangerelative = false;
450  if (true && ( (true&&!(((int64(getOptype())!=38)&&(int64(getOptype())!=41)))) ) )
451  graph->evalOpParm(myChangerelative, nodeidx, "changerelative", time, graph->isDirect()?nullptr:depnode);
452  myScaleval = 1;
453  if (true && ( (true&&!(((int64(getOptype())!=36)&&(int64(getOptype())!=37)&&(int64(getOptype())!=38)))) ) )
454  graph->evalOpParm(myScaleval, nodeidx, "scaleval", time, graph->isDirect()?nullptr:depnode);
455  myScalecontrolpoints = "scalepoints"_UTsh;
456  if (true)
457  graph->evalOpParm(myScalecontrolpoints, nodeidx, "scalecontrolpoints", time, graph->isDirect()?nullptr:depnode);
458  myScaleattrib = "pscale"_UTsh;
459  if (true)
460  graph->evalOpParm(myScaleattrib, nodeidx, "scaleattrib", time, graph->isDirect()?nullptr:depnode);
461  myUpval = UT_Vector3D(0,1,0);
462  if (true && ( (true&&!(((int64(getOptype())!=39)&&(int64(getOptype())!=40)&&(int64(getOptype())!=41))||((getChangerelative()==1)))) ) )
463  graph->evalOpParm(myUpval, nodeidx, "upval", time, graph->isDirect()?nullptr:depnode);
464  myUprot = 0;
465  if (true && ( (true&&!(((int64(getOptype())!=41))||((getChangerelative()==0)))) ) )
466  graph->evalOpParm(myUprot, nodeidx, "uprot", time, graph->isDirect()?nullptr:depnode);
467  myUpcontrolpoints = "uppoints"_UTsh;
468  if (true)
469  graph->evalOpParm(myUpcontrolpoints, nodeidx, "upcontrolpoints", time, graph->isDirect()?nullptr:depnode);
470  myUpattrib = "up"_UTsh;
471  if (true)
472  graph->evalOpParm(myUpattrib, nodeidx, "upattrib", time, graph->isDirect()?nullptr:depnode);
473  myPrimtype = 2;
474  if (true && ( (true&&!(((int64(getOptype())!=3)&&(int64(getOptype())!=4)&&(int64(getOptype())!=7))||((int64(getOptype())==3)&&(int64(getActiveprim())>=0))||((int64(getOptype())==4)&&(int64(getActiveprim())>=0)))) ) )
475  graph->evalOpParm(myPrimtype, nodeidx, "primtype", time, graph->isDirect()?nullptr:depnode);
476  myOrder = 4;
477  if (true && ( (true&&!(((int64(getOptype())!=3)&&(int64(getOptype())!=4)&&(int64(getOptype())!=7))||((int64(getPrimtype())==0))||((int64(getOptype())==3)&&(int64(getActiveprim())>=0))||((int64(getOptype())==4)&&(int64(getActiveprim())>=0)))) ) )
478  graph->evalOpParm(myOrder, nodeidx, "order", time, graph->isDirect()?nullptr:depnode);
479  myConvertdivs = 2;
480  if (true && ( (true&&!(((int64(getOptype())!=7))||((getConvertmatchpoly()==1))||((int64(getPrimtype())!=0)))) ) )
481  graph->evalOpParm(myConvertdivs, nodeidx, "convertdivs", time, graph->isDirect()?nullptr:depnode);
482 
483  }
484 
485 
486  void loadFromOpSubclass(const LoadParms &loadparms) override
487  {
488  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
489  }
490 
491 
492  void copyFrom(const OP_NodeParms *src) override
493  {
494  *this = *((const SOP_Curve_3_0Parms *)src);
495  }
496 
497  template <typename T>
498  void
499  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
500  {
501  if (idx.size() < 1)
502  return;
503  UT_ASSERT(idx.size() == instance.size()+1);
504  if (idx.size() != instance.size()+1)
505  return;
506  switch (idx[0])
507  {
508  case 0:
509  coerceValue(value, myOptype);
510  break;
511  case 1:
512  coerceValue(value, myGroup);
513  break;
514  case 2:
515  coerceValue(value, myEnableoutputgroup);
516  break;
517  case 3:
518  coerceValue(value, myOutputgroup);
519  break;
520  case 4:
521  coerceValue(value, myApplykeys);
522  break;
523  case 5:
524  coerceValue(value, myInsertkeys);
525  break;
526  case 6:
527  coerceValue(value, myDensebake);
528  break;
529  case 7:
530  coerceValue(value, mySynchronizekeys);
531  break;
532  case 8:
533  coerceValue(value, myPrefixtangents);
534  break;
535  case 9:
536  coerceValue(value, myChannelprefix);
537  break;
538  case 10:
539  coerceValue(value, myCornerpts);
540  break;
541  case 11:
542  coerceValue(value, mySmoothpts);
543  break;
544  case 12:
545  coerceValue(value, myAutopts);
546  break;
547  case 13:
548  coerceValue(value, myEnableoutputcornersgroup);
549  break;
550  case 14:
551  coerceValue(value, myOutputcornersgroup);
552  break;
553  case 15:
554  coerceValue(value, myEnableoutputsmoothgroup);
555  break;
556  case 16:
557  coerceValue(value, myOutputsmoothgroup);
558  break;
559  case 17:
560  coerceValue(value, myEnableoutputautogroup);
561  break;
562  case 18:
563  coerceValue(value, myOutputautogroup);
564  break;
565  case 19:
566  coerceValue(value, myTransformallkeys);
567  break;
568  case 20:
569  coerceValue(value, mySofttransform);
570  break;
571  case 21:
572  coerceValue(value, mySofttransformrad);
573  break;
574  case 22:
575  coerceValue(value, myTranslate);
576  break;
577  case 23:
578  coerceValue(value, myRotate);
579  break;
580  case 24:
581  coerceValue(value, myScale);
582  break;
583  case 25:
584  coerceValue(value, myPivottranslate);
585  break;
586  case 26:
587  coerceValue(value, myPivotrotate);
588  break;
589  case 27:
590  coerceValue(value, myConstrainstraighten);
591  break;
592  case 28:
593  coerceValue(value, myPlanenml);
594  break;
595  case 29:
596  coerceValue(value, myPlaneorig);
597  break;
598  case 30:
599  coerceValue(value, myActiveprim);
600  break;
601  case 31:
602  coerceValue(value, myData);
603  break;
604  case 32:
605  coerceValue(value, myNewpointtype);
606  break;
607  case 33:
608  coerceValue(value, myDrawsymmetric);
609  break;
610  case 34:
611  coerceValue(value, mySegment);
612  break;
613  case 35:
614  coerceValue(value, myUpos);
615  break;
616  case 36:
617  coerceValue(value, myInterpfalloff);
618  break;
619  case 37:
620  coerceValue(value, myApproxshapedel);
621  break;
622  case 38:
623  coerceValue(value, myApproxtangentsdel);
624  break;
625  case 39:
626  coerceValue(value, myConvertmatchpoly);
627  break;
628  case 40:
629  coerceValue(value, myViewrounded);
630  break;
631  case 41:
632  coerceValue(value, myRoundrad);
633  break;
634  case 42:
635  coerceValue(value, myRoundedpts);
636  break;
637  case 43:
638  coerceValue(value, myRadiusattrib);
639  break;
640  case 44:
641  coerceValue(value, myRoundposattrib);
642  break;
643  case 45:
644  coerceValue(value, myChangerelative);
645  break;
646  case 46:
647  coerceValue(value, myScaleval);
648  break;
649  case 47:
650  coerceValue(value, myScalecontrolpoints);
651  break;
652  case 48:
653  coerceValue(value, myScaleattrib);
654  break;
655  case 49:
656  coerceValue(value, myUpval);
657  break;
658  case 50:
659  coerceValue(value, myUprot);
660  break;
661  case 51:
662  coerceValue(value, myUpcontrolpoints);
663  break;
664  case 52:
665  coerceValue(value, myUpattrib);
666  break;
667  case 53:
668  coerceValue(value, myPrimtype);
669  break;
670  case 54:
671  coerceValue(value, myOrder);
672  break;
673  case 55:
674  coerceValue(value, myConvertdivs);
675  break;
676 
677  }
678  }
679 
680  bool isParmColorRamp(exint idx) const override
681  {
682  switch (idx)
683  {
684 
685  }
686  return false;
687  }
688 
689  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
690  { doGetParmValue(idx, instance, value); }
691  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
692  { doGetParmValue(idx, instance, value); }
693  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
694  { doGetParmValue(idx, instance, value); }
695  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
696  { doGetParmValue(idx, instance, value); }
697  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
698  { doGetParmValue(idx, instance, value); }
699  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
700  { doGetParmValue(idx, instance, value); }
701  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
702  { doGetParmValue(idx, instance, value); }
703  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
704  { doGetParmValue(idx, instance, value); }
705  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
706  { doGetParmValue(idx, instance, value); }
707  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
708  { doGetParmValue(idx, instance, value); }
709  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
710  { doGetParmValue(idx, instance, value); }
711 
712  template <typename T>
713  void
714  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
715  {
716  if (idx.size() < 1)
717  return;
718  UT_ASSERT(idx.size() == instance.size()+1);
719  if (idx.size() != instance.size()+1)
720  return;
721  switch (idx[0])
722  {
723  case 0:
724  coerceValue(myOptype, clampMinValue(0, clampMaxValue(41, value ) ));
725  break;
726  case 1:
727  coerceValue(myGroup, ( ( value ) ));
728  break;
729  case 2:
730  coerceValue(myEnableoutputgroup, ( ( value ) ));
731  break;
732  case 3:
733  coerceValue(myOutputgroup, ( ( value ) ));
734  break;
735  case 4:
736  coerceValue(myApplykeys, ( ( value ) ));
737  break;
738  case 5:
739  coerceValue(myInsertkeys, ( ( value ) ));
740  break;
741  case 6:
742  coerceValue(myDensebake, ( ( value ) ));
743  break;
744  case 7:
745  coerceValue(mySynchronizekeys, ( ( value ) ));
746  break;
747  case 8:
748  coerceValue(myPrefixtangents, ( ( value ) ));
749  break;
750  case 9:
751  coerceValue(myChannelprefix, ( ( value ) ));
752  break;
753  case 10:
754  coerceValue(myCornerpts, ( ( value ) ));
755  break;
756  case 11:
757  coerceValue(mySmoothpts, ( ( value ) ));
758  break;
759  case 12:
760  coerceValue(myAutopts, ( ( value ) ));
761  break;
762  case 13:
763  coerceValue(myEnableoutputcornersgroup, ( ( value ) ));
764  break;
765  case 14:
766  coerceValue(myOutputcornersgroup, ( ( value ) ));
767  break;
768  case 15:
769  coerceValue(myEnableoutputsmoothgroup, ( ( value ) ));
770  break;
771  case 16:
772  coerceValue(myOutputsmoothgroup, ( ( value ) ));
773  break;
774  case 17:
775  coerceValue(myEnableoutputautogroup, ( ( value ) ));
776  break;
777  case 18:
778  coerceValue(myOutputautogroup, ( ( value ) ));
779  break;
780  case 19:
781  coerceValue(myTransformallkeys, ( ( value ) ));
782  break;
783  case 20:
784  coerceValue(mySofttransform, ( ( value ) ));
785  break;
786  case 21:
787  coerceValue(mySofttransformrad, clampMinValue(0, ( value ) ));
788  break;
789  case 22:
790  coerceValue(myTranslate, ( ( value ) ));
791  break;
792  case 23:
793  coerceValue(myRotate, ( ( value ) ));
794  break;
795  case 24:
796  coerceValue(myScale, ( ( value ) ));
797  break;
798  case 25:
799  coerceValue(myPivottranslate, ( ( value ) ));
800  break;
801  case 26:
802  coerceValue(myPivotrotate, ( ( value ) ));
803  break;
804  case 27:
805  coerceValue(myConstrainstraighten, ( ( value ) ));
806  break;
807  case 28:
808  coerceValue(myPlanenml, ( ( value ) ));
809  break;
810  case 29:
811  coerceValue(myPlaneorig, ( ( value ) ));
812  break;
813  case 30:
814  coerceValue(myActiveprim, clampMinValue(-1, ( value ) ));
815  break;
816  case 31:
817  coerceValue(myData, ( ( value ) ));
818  break;
819  case 32:
820  coerceValue(myNewpointtype, clampMinValue(0, clampMaxValue(3, value ) ));
821  break;
822  case 33:
823  coerceValue(myDrawsymmetric, ( ( value ) ));
824  break;
825  case 34:
826  coerceValue(mySegment, ( ( value ) ));
827  break;
828  case 35:
829  coerceValue(myUpos, clampMinValue(0, clampMaxValue(1, value ) ));
830  break;
831  case 36:
832  coerceValue(myInterpfalloff, clampMinValue(0, ( value ) ));
833  break;
834  case 37:
835  coerceValue(myApproxshapedel, ( ( value ) ));
836  break;
837  case 38:
838  coerceValue(myApproxtangentsdel, ( ( value ) ));
839  break;
840  case 39:
841  coerceValue(myConvertmatchpoly, ( ( value ) ));
842  break;
843  case 40:
844  coerceValue(myViewrounded, ( ( value ) ));
845  break;
846  case 41:
847  coerceValue(myRoundrad, ( ( value ) ));
848  break;
849  case 42:
850  coerceValue(myRoundedpts, ( ( value ) ));
851  break;
852  case 43:
853  coerceValue(myRadiusattrib, ( ( value ) ));
854  break;
855  case 44:
856  coerceValue(myRoundposattrib, ( ( value ) ));
857  break;
858  case 45:
859  coerceValue(myChangerelative, ( ( value ) ));
860  break;
861  case 46:
862  coerceValue(myScaleval, clampMinValue(0, ( value ) ));
863  break;
864  case 47:
865  coerceValue(myScalecontrolpoints, ( ( value ) ));
866  break;
867  case 48:
868  coerceValue(myScaleattrib, ( ( value ) ));
869  break;
870  case 49:
871  coerceValue(myUpval, ( ( value ) ));
872  break;
873  case 50:
874  coerceValue(myUprot, ( ( value ) ));
875  break;
876  case 51:
877  coerceValue(myUpcontrolpoints, ( ( value ) ));
878  break;
879  case 52:
880  coerceValue(myUpattrib, ( ( value ) ));
881  break;
882  case 53:
883  coerceValue(myPrimtype, clampMinValue(0, clampMaxValue(2, value ) ));
884  break;
885  case 54:
886  coerceValue(myOrder, clampMinValue(2, clampMaxValue(11, value ) ));
887  break;
888  case 55:
889  coerceValue(myConvertdivs, ( ( value ) ));
890  break;
891 
892  }
893  }
894 
895  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
896  { doSetParmValue(idx, instance, value); }
897  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
898  { doSetParmValue(idx, instance, value); }
899  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
900  { doSetParmValue(idx, instance, value); }
901  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
902  { doSetParmValue(idx, instance, value); }
903  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
904  { doSetParmValue(idx, instance, value); }
905  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
906  { doSetParmValue(idx, instance, value); }
907  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
908  { doSetParmValue(idx, instance, value); }
909  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
910  { doSetParmValue(idx, instance, value); }
911  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
912  { doSetParmValue(idx, instance, value); }
913  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
914  { doSetParmValue(idx, instance, value); }
915  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
916  { doSetParmValue(idx, instance, value); }
917 
918  exint getNestNumParms(TempIndex idx) const override
919  {
920  if (idx.size() == 0)
921  return 56;
922  switch (idx[0])
923  {
924 
925  }
926  // Invalid
927  return 0;
928  }
929 
930  const char *getNestParmName(TempIndex fieldnum) const override
931  {
932  if (fieldnum.size() < 1)
933  return 0;
934  switch (fieldnum[0])
935  {
936  case 0:
937  return "optype";
938  case 1:
939  return "group";
940  case 2:
941  return "enableoutputgroup";
942  case 3:
943  return "outputgroup";
944  case 4:
945  return "applykeys";
946  case 5:
947  return "insertkeys";
948  case 6:
949  return "densebake";
950  case 7:
951  return "synchronizekeys";
952  case 8:
953  return "prefixtangents";
954  case 9:
955  return "channelprefix";
956  case 10:
957  return "cornerpts";
958  case 11:
959  return "smoothpts";
960  case 12:
961  return "autopts";
962  case 13:
963  return "enableoutputcornersgroup";
964  case 14:
965  return "outputcornersgroup";
966  case 15:
967  return "enableoutputsmoothgroup";
968  case 16:
969  return "outputsmoothgroup";
970  case 17:
971  return "enableoutputautogroup";
972  case 18:
973  return "outputautogroup";
974  case 19:
975  return "transformallkeys";
976  case 20:
977  return "softtransform";
978  case 21:
979  return "softtransformrad";
980  case 22:
981  return "translate";
982  case 23:
983  return "rotate";
984  case 24:
985  return "scale";
986  case 25:
987  return "pivottranslate";
988  case 26:
989  return "pivotrotate";
990  case 27:
991  return "constrainstraighten";
992  case 28:
993  return "planenml";
994  case 29:
995  return "planeorig";
996  case 30:
997  return "activeprim";
998  case 31:
999  return "data";
1000  case 32:
1001  return "newpointtype";
1002  case 33:
1003  return "drawsymmetric";
1004  case 34:
1005  return "segment";
1006  case 35:
1007  return "upos";
1008  case 36:
1009  return "interpfalloff";
1010  case 37:
1011  return "approxshapedel";
1012  case 38:
1013  return "approxtangentsdel";
1014  case 39:
1015  return "convertmatchpoly";
1016  case 40:
1017  return "viewrounded";
1018  case 41:
1019  return "roundrad";
1020  case 42:
1021  return "roundedpts";
1022  case 43:
1023  return "radiusattrib";
1024  case 44:
1025  return "roundposattrib";
1026  case 45:
1027  return "changerelative";
1028  case 46:
1029  return "scaleval";
1030  case 47:
1031  return "scalecontrolpoints";
1032  case 48:
1033  return "scaleattrib";
1034  case 49:
1035  return "upval";
1036  case 50:
1037  return "uprot";
1038  case 51:
1039  return "upcontrolpoints";
1040  case 52:
1041  return "upattrib";
1042  case 53:
1043  return "primtype";
1044  case 54:
1045  return "order";
1046  case 55:
1047  return "convertdivs";
1048 
1049  }
1050  return 0;
1051  }
1052 
1053  ParmType getNestParmType(TempIndex fieldnum) const override
1054  {
1055  if (fieldnum.size() < 1)
1056  return PARM_UNSUPPORTED;
1057  switch (fieldnum[0])
1058  {
1059  case 0:
1060  return PARM_INTEGER;
1061  case 1:
1062  return PARM_STRING;
1063  case 2:
1064  return PARM_INTEGER;
1065  case 3:
1066  return PARM_STRING;
1067  case 4:
1068  return PARM_INTEGER;
1069  case 5:
1070  return PARM_INTEGER;
1071  case 6:
1072  return PARM_INTEGER;
1073  case 7:
1074  return PARM_INTEGER;
1075  case 8:
1076  return PARM_INTEGER;
1077  case 9:
1078  return PARM_STRING;
1079  case 10:
1080  return PARM_STRING;
1081  case 11:
1082  return PARM_STRING;
1083  case 12:
1084  return PARM_STRING;
1085  case 13:
1086  return PARM_INTEGER;
1087  case 14:
1088  return PARM_STRING;
1089  case 15:
1090  return PARM_INTEGER;
1091  case 16:
1092  return PARM_STRING;
1093  case 17:
1094  return PARM_INTEGER;
1095  case 18:
1096  return PARM_STRING;
1097  case 19:
1098  return PARM_INTEGER;
1099  case 20:
1100  return PARM_INTEGER;
1101  case 21:
1102  return PARM_FLOAT;
1103  case 22:
1104  return PARM_VECTOR3;
1105  case 23:
1106  return PARM_VECTOR3;
1107  case 24:
1108  return PARM_VECTOR3;
1109  case 25:
1110  return PARM_VECTOR3;
1111  case 26:
1112  return PARM_VECTOR3;
1113  case 27:
1114  return PARM_INTEGER;
1115  case 28:
1116  return PARM_VECTOR3;
1117  case 29:
1118  return PARM_VECTOR3;
1119  case 30:
1120  return PARM_INTEGER;
1121  case 31:
1122  return PARM_STRING;
1123  case 32:
1124  return PARM_INTEGER;
1125  case 33:
1126  return PARM_INTEGER;
1127  case 34:
1128  return PARM_INTEGER;
1129  case 35:
1130  return PARM_FLOAT;
1131  case 36:
1132  return PARM_FLOAT;
1133  case 37:
1134  return PARM_INTEGER;
1135  case 38:
1136  return PARM_INTEGER;
1137  case 39:
1138  return PARM_INTEGER;
1139  case 40:
1140  return PARM_INTEGER;
1141  case 41:
1142  return PARM_FLOAT;
1143  case 42:
1144  return PARM_STRING;
1145  case 43:
1146  return PARM_STRING;
1147  case 44:
1148  return PARM_STRING;
1149  case 45:
1150  return PARM_INTEGER;
1151  case 46:
1152  return PARM_FLOAT;
1153  case 47:
1154  return PARM_STRING;
1155  case 48:
1156  return PARM_STRING;
1157  case 49:
1158  return PARM_VECTOR3;
1159  case 50:
1160  return PARM_FLOAT;
1161  case 51:
1162  return PARM_STRING;
1163  case 52:
1164  return PARM_STRING;
1165  case 53:
1166  return PARM_INTEGER;
1167  case 54:
1168  return PARM_INTEGER;
1169  case 55:
1170  return PARM_INTEGER;
1171 
1172  }
1173  return PARM_UNSUPPORTED;
1174  }
1175 
1176  // Boiler plate to load individual types.
1177  static void loadData(UT_IStream &is, int64 &v)
1178  { is.bread(&v, 1); }
1179  static void loadData(UT_IStream &is, bool &v)
1180  { int64 iv; is.bread(&iv, 1); v = iv; }
1181  static void loadData(UT_IStream &is, fpreal64 &v)
1182  { is.bread<fpreal64>(&v, 1); }
1183  static void loadData(UT_IStream &is, UT_Vector2D &v)
1184  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
1185  static void loadData(UT_IStream &is, UT_Vector3D &v)
1186  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
1187  is.bread<fpreal64>(&v.z(), 1); }
1188  static void loadData(UT_IStream &is, UT_Vector4D &v)
1189  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
1190  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
1191  static void loadData(UT_IStream &is, UT_Matrix2D &v)
1192  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
1193  static void loadData(UT_IStream &is, UT_Matrix3D &v)
1194  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
1195  static void loadData(UT_IStream &is, UT_Matrix4D &v)
1196  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
1197  static void loadData(UT_IStream &is, UT_Vector2I &v)
1198  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
1199  static void loadData(UT_IStream &is, UT_Vector3I &v)
1200  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
1201  is.bread<int64>(&v.z(), 1); }
1202  static void loadData(UT_IStream &is, UT_Vector4I &v)
1203  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
1204  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
1206  { is.bread(v); }
1208  { UT_StringHolder rampdata;
1209  loadData(is, rampdata);
1210  if (rampdata.isstring())
1211  {
1212  v.reset(new UT_Ramp());
1213  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
1214  v->load(istr);
1215  }
1216  else v.reset();
1217  }
1220  loadData(is, data);
1221  if (data.isstring())
1222  {
1223  // Find the data type.
1224  const char *colon = UT_StringWrap(data).findChar(':');
1225  if (colon)
1226  {
1227  int typelen = colon - data.buffer();
1229  type.strncpy(data.buffer(), typelen);
1230  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
1231 
1232  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
1233  }
1234  }
1235  else v.reset();
1236  }
1237 
1238  static void saveData(std::ostream &os, int64 v)
1239  { UTwrite(os, &v); }
1240  static void saveData(std::ostream &os, bool v)
1241  { int64 iv = v; UTwrite(os, &iv); }
1242  static void saveData(std::ostream &os, fpreal64 v)
1243  { UTwrite<fpreal64>(os, &v); }
1244  static void saveData(std::ostream &os, UT_Vector2D v)
1245  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
1246  static void saveData(std::ostream &os, UT_Vector3D v)
1247  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
1248  UTwrite<fpreal64>(os, &v.z()); }
1249  static void saveData(std::ostream &os, UT_Vector4D v)
1250  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
1251  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
1252  static void saveData(std::ostream &os, UT_Matrix2D v)
1254  static void saveData(std::ostream &os, UT_Matrix3D v)
1256  static void saveData(std::ostream &os, UT_Matrix4D v)
1258  static void saveData(std::ostream &os, UT_StringHolder s)
1259  { UT_StringWrap(s).saveBinary(os); }
1260  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
1262  UT_OStringStream ostr;
1263  if (s) s->save(ostr);
1264  result = ostr.str();
1265  saveData(os, result);
1266  }
1267  static void saveData(std::ostream &os, PRM_DataItemHandle s)
1269  UT_OStringStream ostr;
1270  if (s)
1271  {
1272  ostr << s->getDataTypeToken();
1273  ostr << ":";
1274  s->saveBinary(ostr);
1275  }
1276  result = ostr.str();
1277  saveData(os, result);
1278  }
1279 
1280 
1281  void save(std::ostream &os) const
1282  {
1283  int32 v = version();
1284  UTwrite(os, &v);
1285  saveData(os, myOptype);
1286  saveData(os, myGroup);
1287  saveData(os, myEnableoutputgroup);
1288  saveData(os, myOutputgroup);
1289  saveData(os, myApplykeys);
1290  saveData(os, myInsertkeys);
1291  saveData(os, myDensebake);
1292  saveData(os, mySynchronizekeys);
1293  saveData(os, myPrefixtangents);
1294  saveData(os, myChannelprefix);
1295  saveData(os, myCornerpts);
1296  saveData(os, mySmoothpts);
1297  saveData(os, myAutopts);
1298  saveData(os, myEnableoutputcornersgroup);
1299  saveData(os, myOutputcornersgroup);
1300  saveData(os, myEnableoutputsmoothgroup);
1301  saveData(os, myOutputsmoothgroup);
1302  saveData(os, myEnableoutputautogroup);
1303  saveData(os, myOutputautogroup);
1304  saveData(os, myTransformallkeys);
1305  saveData(os, mySofttransform);
1306  saveData(os, mySofttransformrad);
1307  saveData(os, myTranslate);
1308  saveData(os, myRotate);
1309  saveData(os, myScale);
1310  saveData(os, myPivottranslate);
1311  saveData(os, myPivotrotate);
1312  saveData(os, myConstrainstraighten);
1313  saveData(os, myPlanenml);
1314  saveData(os, myPlaneorig);
1315  saveData(os, myActiveprim);
1316  saveData(os, myData);
1317  saveData(os, myNewpointtype);
1318  saveData(os, myDrawsymmetric);
1319  saveData(os, mySegment);
1320  saveData(os, myUpos);
1321  saveData(os, myInterpfalloff);
1322  saveData(os, myApproxshapedel);
1323  saveData(os, myApproxtangentsdel);
1324  saveData(os, myConvertmatchpoly);
1325  saveData(os, myViewrounded);
1326  saveData(os, myRoundrad);
1327  saveData(os, myRoundedpts);
1328  saveData(os, myRadiusattrib);
1329  saveData(os, myRoundposattrib);
1330  saveData(os, myChangerelative);
1331  saveData(os, myScaleval);
1332  saveData(os, myScalecontrolpoints);
1333  saveData(os, myScaleattrib);
1334  saveData(os, myUpval);
1335  saveData(os, myUprot);
1336  saveData(os, myUpcontrolpoints);
1337  saveData(os, myUpattrib);
1338  saveData(os, myPrimtype);
1339  saveData(os, myOrder);
1340  saveData(os, myConvertdivs);
1341 
1342  }
1343 
1344  bool load(UT_IStream &is)
1345  {
1346  int32 v;
1347  is.bread(&v, 1);
1348  if (version() != v)
1349  {
1350  // Fail incompatible versions
1351  return false;
1352  }
1353  loadData(is, myOptype);
1354  loadData(is, myGroup);
1355  loadData(is, myEnableoutputgroup);
1356  loadData(is, myOutputgroup);
1357  loadData(is, myApplykeys);
1358  loadData(is, myInsertkeys);
1359  loadData(is, myDensebake);
1360  loadData(is, mySynchronizekeys);
1361  loadData(is, myPrefixtangents);
1362  loadData(is, myChannelprefix);
1363  loadData(is, myCornerpts);
1364  loadData(is, mySmoothpts);
1365  loadData(is, myAutopts);
1366  loadData(is, myEnableoutputcornersgroup);
1367  loadData(is, myOutputcornersgroup);
1368  loadData(is, myEnableoutputsmoothgroup);
1369  loadData(is, myOutputsmoothgroup);
1370  loadData(is, myEnableoutputautogroup);
1371  loadData(is, myOutputautogroup);
1372  loadData(is, myTransformallkeys);
1373  loadData(is, mySofttransform);
1374  loadData(is, mySofttransformrad);
1375  loadData(is, myTranslate);
1376  loadData(is, myRotate);
1377  loadData(is, myScale);
1378  loadData(is, myPivottranslate);
1379  loadData(is, myPivotrotate);
1380  loadData(is, myConstrainstraighten);
1381  loadData(is, myPlanenml);
1382  loadData(is, myPlaneorig);
1383  loadData(is, myActiveprim);
1384  loadData(is, myData);
1385  loadData(is, myNewpointtype);
1386  loadData(is, myDrawsymmetric);
1387  loadData(is, mySegment);
1388  loadData(is, myUpos);
1389  loadData(is, myInterpfalloff);
1390  loadData(is, myApproxshapedel);
1391  loadData(is, myApproxtangentsdel);
1392  loadData(is, myConvertmatchpoly);
1393  loadData(is, myViewrounded);
1394  loadData(is, myRoundrad);
1395  loadData(is, myRoundedpts);
1396  loadData(is, myRadiusattrib);
1397  loadData(is, myRoundposattrib);
1398  loadData(is, myChangerelative);
1399  loadData(is, myScaleval);
1400  loadData(is, myScalecontrolpoints);
1401  loadData(is, myScaleattrib);
1402  loadData(is, myUpval);
1403  loadData(is, myUprot);
1404  loadData(is, myUpcontrolpoints);
1405  loadData(is, myUpattrib);
1406  loadData(is, myPrimtype);
1407  loadData(is, myOrder);
1408  loadData(is, myConvertdivs);
1409 
1410  return true;
1411  }
1412 
1413  Optype getOptype() const { return Optype(myOptype); }
1414  void setOptype(Optype val) { myOptype = int64(val); }
1415  Optype opOptype(const SOP_NodeVerb::CookParms &cookparms) const
1416  {
1417  SOP_Node *thissop = cookparms.getNode();
1418  if (!thissop) return getOptype();
1419  int64 result;
1420  OP_Utils::evalOpParm(result, thissop, "optype", cookparms.getCookTime(), 0);
1421  return Optype(result);
1422  }
1423  const UT_StringHolder & getGroup() const { return myGroup; }
1424  void setGroup(const UT_StringHolder & val) { myGroup = val; }
1426  {
1427  SOP_Node *thissop = cookparms.getNode();
1428  if (!thissop) return getGroup();
1430  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
1431  return result;
1432  }
1433  bool getEnableoutputgroup() const { return myEnableoutputgroup; }
1434  void setEnableoutputgroup(bool val) { myEnableoutputgroup = val; }
1435  bool opEnableoutputgroup(const SOP_NodeVerb::CookParms &cookparms) const
1436  {
1437  SOP_Node *thissop = cookparms.getNode();
1438  if (!thissop) return getEnableoutputgroup();
1439  bool result;
1440  OP_Utils::evalOpParm(result, thissop, "enableoutputgroup", cookparms.getCookTime(), 0);
1441  return result;
1442  }
1443  const UT_StringHolder & getOutputgroup() const { return myOutputgroup; }
1444  void setOutputgroup(const UT_StringHolder & val) { myOutputgroup = val; }
1446  {
1447  SOP_Node *thissop = cookparms.getNode();
1448  if (!thissop) return getOutputgroup();
1450  OP_Utils::evalOpParm(result, thissop, "outputgroup", cookparms.getCookTime(), 0);
1451  return result;
1452  }
1453  bool getApplykeys() const { return myApplykeys; }
1454  void setApplykeys(bool val) { myApplykeys = val; }
1455  bool opApplykeys(const SOP_NodeVerb::CookParms &cookparms) const
1456  {
1457  SOP_Node *thissop = cookparms.getNode();
1458  if (!thissop) return getApplykeys();
1459  bool result;
1460  OP_Utils::evalOpParm(result, thissop, "applykeys", cookparms.getCookTime(), 0);
1461  return result;
1462  }
1463  bool getInsertkeys() const { return myInsertkeys; }
1464  void setInsertkeys(bool val) { myInsertkeys = val; }
1465  bool opInsertkeys(const SOP_NodeVerb::CookParms &cookparms) const
1466  {
1467  SOP_Node *thissop = cookparms.getNode();
1468  if (!thissop) return getInsertkeys();
1469  bool result;
1470  OP_Utils::evalOpParm(result, thissop, "insertkeys", cookparms.getCookTime(), 0);
1471  return result;
1472  }
1473  bool getDensebake() const { return myDensebake; }
1474  void setDensebake(bool val) { myDensebake = val; }
1475  bool opDensebake(const SOP_NodeVerb::CookParms &cookparms) const
1476  {
1477  SOP_Node *thissop = cookparms.getNode();
1478  if (!thissop) return getDensebake();
1479  bool result;
1480  OP_Utils::evalOpParm(result, thissop, "densebake", cookparms.getCookTime(), 0);
1481  return result;
1482  }
1483  bool getSynchronizekeys() const { return mySynchronizekeys; }
1484  void setSynchronizekeys(bool val) { mySynchronizekeys = val; }
1485  bool opSynchronizekeys(const SOP_NodeVerb::CookParms &cookparms) const
1486  {
1487  SOP_Node *thissop = cookparms.getNode();
1488  if (!thissop) return getSynchronizekeys();
1489  bool result;
1490  OP_Utils::evalOpParm(result, thissop, "synchronizekeys", cookparms.getCookTime(), 0);
1491  return result;
1492  }
1493  bool getPrefixtangents() const { return myPrefixtangents; }
1494  void setPrefixtangents(bool val) { myPrefixtangents = val; }
1495  bool opPrefixtangents(const SOP_NodeVerb::CookParms &cookparms) const
1496  {
1497  SOP_Node *thissop = cookparms.getNode();
1498  if (!thissop) return getPrefixtangents();
1499  bool result;
1500  OP_Utils::evalOpParm(result, thissop, "prefixtangents", cookparms.getCookTime(), 0);
1501  return result;
1502  }
1503  const UT_StringHolder & getChannelprefix() const { return myChannelprefix; }
1504  void setChannelprefix(const UT_StringHolder & val) { myChannelprefix = val; }
1506  {
1507  SOP_Node *thissop = cookparms.getNode();
1508  if (!thissop) return getChannelprefix();
1510  OP_Utils::evalOpParm(result, thissop, "channelprefix", cookparms.getCookTime(), 0);
1511  return result;
1512  }
1513  const UT_StringHolder & getCornerpts() const { return myCornerpts; }
1514  void setCornerpts(const UT_StringHolder & val) { myCornerpts = val; }
1516  {
1517  SOP_Node *thissop = cookparms.getNode();
1518  if (!thissop) return getCornerpts();
1520  OP_Utils::evalOpParm(result, thissop, "cornerpts", cookparms.getCookTime(), 0);
1521  return result;
1522  }
1523  const UT_StringHolder & getSmoothpts() const { return mySmoothpts; }
1524  void setSmoothpts(const UT_StringHolder & val) { mySmoothpts = val; }
1526  {
1527  SOP_Node *thissop = cookparms.getNode();
1528  if (!thissop) return getSmoothpts();
1530  OP_Utils::evalOpParm(result, thissop, "smoothpts", cookparms.getCookTime(), 0);
1531  return result;
1532  }
1533  const UT_StringHolder & getAutopts() const { return myAutopts; }
1534  void setAutopts(const UT_StringHolder & val) { myAutopts = val; }
1536  {
1537  SOP_Node *thissop = cookparms.getNode();
1538  if (!thissop) return getAutopts();
1540  OP_Utils::evalOpParm(result, thissop, "autopts", cookparms.getCookTime(), 0);
1541  return result;
1542  }
1543  bool getEnableoutputcornersgroup() const { return myEnableoutputcornersgroup; }
1544  void setEnableoutputcornersgroup(bool val) { myEnableoutputcornersgroup = val; }
1546  {
1547  SOP_Node *thissop = cookparms.getNode();
1548  if (!thissop) return getEnableoutputcornersgroup();
1549  bool result;
1550  OP_Utils::evalOpParm(result, thissop, "enableoutputcornersgroup", cookparms.getCookTime(), 0);
1551  return result;
1552  }
1553  const UT_StringHolder & getOutputcornersgroup() const { return myOutputcornersgroup; }
1554  void setOutputcornersgroup(const UT_StringHolder & val) { myOutputcornersgroup = val; }
1556  {
1557  SOP_Node *thissop = cookparms.getNode();
1558  if (!thissop) return getOutputcornersgroup();
1560  OP_Utils::evalOpParm(result, thissop, "outputcornersgroup", cookparms.getCookTime(), 0);
1561  return result;
1562  }
1563  bool getEnableoutputsmoothgroup() const { return myEnableoutputsmoothgroup; }
1564  void setEnableoutputsmoothgroup(bool val) { myEnableoutputsmoothgroup = val; }
1566  {
1567  SOP_Node *thissop = cookparms.getNode();
1568  if (!thissop) return getEnableoutputsmoothgroup();
1569  bool result;
1570  OP_Utils::evalOpParm(result, thissop, "enableoutputsmoothgroup", cookparms.getCookTime(), 0);
1571  return result;
1572  }
1573  const UT_StringHolder & getOutputsmoothgroup() const { return myOutputsmoothgroup; }
1574  void setOutputsmoothgroup(const UT_StringHolder & val) { myOutputsmoothgroup = val; }
1576  {
1577  SOP_Node *thissop = cookparms.getNode();
1578  if (!thissop) return getOutputsmoothgroup();
1580  OP_Utils::evalOpParm(result, thissop, "outputsmoothgroup", cookparms.getCookTime(), 0);
1581  return result;
1582  }
1583  bool getEnableoutputautogroup() const { return myEnableoutputautogroup; }
1584  void setEnableoutputautogroup(bool val) { myEnableoutputautogroup = val; }
1586  {
1587  SOP_Node *thissop = cookparms.getNode();
1588  if (!thissop) return getEnableoutputautogroup();
1589  bool result;
1590  OP_Utils::evalOpParm(result, thissop, "enableoutputautogroup", cookparms.getCookTime(), 0);
1591  return result;
1592  }
1593  const UT_StringHolder & getOutputautogroup() const { return myOutputautogroup; }
1594  void setOutputautogroup(const UT_StringHolder & val) { myOutputautogroup = val; }
1596  {
1597  SOP_Node *thissop = cookparms.getNode();
1598  if (!thissop) return getOutputautogroup();
1600  OP_Utils::evalOpParm(result, thissop, "outputautogroup", cookparms.getCookTime(), 0);
1601  return result;
1602  }
1603  bool getTransformallkeys() const { return myTransformallkeys; }
1604  void setTransformallkeys(bool val) { myTransformallkeys = val; }
1605  bool opTransformallkeys(const SOP_NodeVerb::CookParms &cookparms) const
1606  {
1607  SOP_Node *thissop = cookparms.getNode();
1608  if (!thissop) return getTransformallkeys();
1609  bool result;
1610  OP_Utils::evalOpParm(result, thissop, "transformallkeys", cookparms.getCookTime(), 0);
1611  return result;
1612  }
1613  bool getSofttransform() const { return mySofttransform; }
1614  void setSofttransform(bool val) { mySofttransform = val; }
1615  bool opSofttransform(const SOP_NodeVerb::CookParms &cookparms) const
1616  {
1617  SOP_Node *thissop = cookparms.getNode();
1618  if (!thissop) return getSofttransform();
1619  bool result;
1620  OP_Utils::evalOpParm(result, thissop, "softtransform", cookparms.getCookTime(), 0);
1621  return result;
1622  }
1623  fpreal64 getSofttransformrad() const { return mySofttransformrad; }
1624  void setSofttransformrad(fpreal64 val) { mySofttransformrad = val; }
1626  {
1627  SOP_Node *thissop = cookparms.getNode();
1628  if (!thissop) return getSofttransformrad();
1629  fpreal64 result;
1630  OP_Utils::evalOpParm(result, thissop, "softtransformrad", cookparms.getCookTime(), 0);
1631  return result;
1632  }
1633  UT_Vector3D getTranslate() const { return myTranslate; }
1634  void setTranslate(UT_Vector3D val) { myTranslate = val; }
1636  {
1637  SOP_Node *thissop = cookparms.getNode();
1638  if (!thissop) return getTranslate();
1640  OP_Utils::evalOpParm(result, thissop, "translate", cookparms.getCookTime(), 0);
1641  return result;
1642  }
1643  UT_Vector3D getRotate() const { return myRotate; }
1644  void setRotate(UT_Vector3D val) { myRotate = val; }
1646  {
1647  SOP_Node *thissop = cookparms.getNode();
1648  if (!thissop) return getRotate();
1650  OP_Utils::evalOpParm(result, thissop, "rotate", cookparms.getCookTime(), 0);
1651  return result;
1652  }
1653  UT_Vector3D getScale() const { return myScale; }
1654  void setScale(UT_Vector3D val) { myScale = val; }
1656  {
1657  SOP_Node *thissop = cookparms.getNode();
1658  if (!thissop) return getScale();
1660  OP_Utils::evalOpParm(result, thissop, "scale", cookparms.getCookTime(), 0);
1661  return result;
1662  }
1663  UT_Vector3D getPivottranslate() const { return myPivottranslate; }
1664  void setPivottranslate(UT_Vector3D val) { myPivottranslate = val; }
1666  {
1667  SOP_Node *thissop = cookparms.getNode();
1668  if (!thissop) return getPivottranslate();
1670  OP_Utils::evalOpParm(result, thissop, "pivottranslate", cookparms.getCookTime(), 0);
1671  return result;
1672  }
1673  UT_Vector3D getPivotrotate() const { return myPivotrotate; }
1674  void setPivotrotate(UT_Vector3D val) { myPivotrotate = val; }
1676  {
1677  SOP_Node *thissop = cookparms.getNode();
1678  if (!thissop) return getPivotrotate();
1680  OP_Utils::evalOpParm(result, thissop, "pivotrotate", cookparms.getCookTime(), 0);
1681  return result;
1682  }
1683  bool getConstrainstraighten() const { return myConstrainstraighten; }
1684  void setConstrainstraighten(bool val) { myConstrainstraighten = val; }
1685  bool opConstrainstraighten(const SOP_NodeVerb::CookParms &cookparms) const
1686  {
1687  SOP_Node *thissop = cookparms.getNode();
1688  if (!thissop) return getConstrainstraighten();
1689  bool result;
1690  OP_Utils::evalOpParm(result, thissop, "constrainstraighten", cookparms.getCookTime(), 0);
1691  return result;
1692  }
1693  UT_Vector3D getPlanenml() const { return myPlanenml; }
1694  void setPlanenml(UT_Vector3D val) { myPlanenml = val; }
1696  {
1697  SOP_Node *thissop = cookparms.getNode();
1698  if (!thissop) return getPlanenml();
1700  OP_Utils::evalOpParm(result, thissop, "planenml", cookparms.getCookTime(), 0);
1701  return result;
1702  }
1703  UT_Vector3D getPlaneorig() const { return myPlaneorig; }
1704  void setPlaneorig(UT_Vector3D val) { myPlaneorig = val; }
1706  {
1707  SOP_Node *thissop = cookparms.getNode();
1708  if (!thissop) return getPlaneorig();
1710  OP_Utils::evalOpParm(result, thissop, "planeorig", cookparms.getCookTime(), 0);
1711  return result;
1712  }
1713  int64 getActiveprim() const { return myActiveprim; }
1714  void setActiveprim(int64 val) { myActiveprim = val; }
1716  {
1717  SOP_Node *thissop = cookparms.getNode();
1718  if (!thissop) return getActiveprim();
1719  int64 result;
1720  OP_Utils::evalOpParm(result, thissop, "activeprim", cookparms.getCookTime(), 0);
1721  return result;
1722  }
1723  const UT_StringHolder & getData() const { return myData; }
1724  void setData(const UT_StringHolder & val) { myData = val; }
1726  {
1727  SOP_Node *thissop = cookparms.getNode();
1728  if (!thissop) return getData();
1730  OP_Utils::evalOpParm(result, thissop, "data", cookparms.getCookTime(), 0);
1731  return result;
1732  }
1733  Newpointtype getNewpointtype() const { return Newpointtype(myNewpointtype); }
1734  void setNewpointtype(Newpointtype val) { myNewpointtype = int64(val); }
1736  {
1737  SOP_Node *thissop = cookparms.getNode();
1738  if (!thissop) return getNewpointtype();
1739  int64 result;
1740  OP_Utils::evalOpParm(result, thissop, "newpointtype", cookparms.getCookTime(), 0);
1741  return Newpointtype(result);
1742  }
1743  bool getDrawsymmetric() const { return myDrawsymmetric; }
1744  void setDrawsymmetric(bool val) { myDrawsymmetric = val; }
1745  bool opDrawsymmetric(const SOP_NodeVerb::CookParms &cookparms) const
1746  {
1747  SOP_Node *thissop = cookparms.getNode();
1748  if (!thissop) return getDrawsymmetric();
1749  bool result;
1750  OP_Utils::evalOpParm(result, thissop, "drawsymmetric", cookparms.getCookTime(), 0);
1751  return result;
1752  }
1753  int64 getSegment() const { return mySegment; }
1754  void setSegment(int64 val) { mySegment = val; }
1755  int64 opSegment(const SOP_NodeVerb::CookParms &cookparms) const
1756  {
1757  SOP_Node *thissop = cookparms.getNode();
1758  if (!thissop) return getSegment();
1759  int64 result;
1760  OP_Utils::evalOpParm(result, thissop, "segment", cookparms.getCookTime(), 0);
1761  return result;
1762  }
1763  fpreal64 getUpos() const { return myUpos; }
1764  void setUpos(fpreal64 val) { myUpos = val; }
1765  fpreal64 opUpos(const SOP_NodeVerb::CookParms &cookparms) const
1766  {
1767  SOP_Node *thissop = cookparms.getNode();
1768  if (!thissop) return getUpos();
1769  fpreal64 result;
1770  OP_Utils::evalOpParm(result, thissop, "upos", cookparms.getCookTime(), 0);
1771  return result;
1772  }
1773  fpreal64 getInterpfalloff() const { return myInterpfalloff; }
1774  void setInterpfalloff(fpreal64 val) { myInterpfalloff = val; }
1776  {
1777  SOP_Node *thissop = cookparms.getNode();
1778  if (!thissop) return getInterpfalloff();
1779  fpreal64 result;
1780  OP_Utils::evalOpParm(result, thissop, "interpfalloff", cookparms.getCookTime(), 0);
1781  return result;
1782  }
1783  bool getApproxshapedel() const { return myApproxshapedel; }
1784  void setApproxshapedel(bool val) { myApproxshapedel = val; }
1785  bool opApproxshapedel(const SOP_NodeVerb::CookParms &cookparms) const
1786  {
1787  SOP_Node *thissop = cookparms.getNode();
1788  if (!thissop) return getApproxshapedel();
1789  bool result;
1790  OP_Utils::evalOpParm(result, thissop, "approxshapedel", cookparms.getCookTime(), 0);
1791  return result;
1792  }
1793  bool getApproxtangentsdel() const { return myApproxtangentsdel; }
1794  void setApproxtangentsdel(bool val) { myApproxtangentsdel = val; }
1795  bool opApproxtangentsdel(const SOP_NodeVerb::CookParms &cookparms) const
1796  {
1797  SOP_Node *thissop = cookparms.getNode();
1798  if (!thissop) return getApproxtangentsdel();
1799  bool result;
1800  OP_Utils::evalOpParm(result, thissop, "approxtangentsdel", cookparms.getCookTime(), 0);
1801  return result;
1802  }
1803  bool getConvertmatchpoly() const { return myConvertmatchpoly; }
1804  void setConvertmatchpoly(bool val) { myConvertmatchpoly = val; }
1805  bool opConvertmatchpoly(const SOP_NodeVerb::CookParms &cookparms) const
1806  {
1807  SOP_Node *thissop = cookparms.getNode();
1808  if (!thissop) return getConvertmatchpoly();
1809  bool result;
1810  OP_Utils::evalOpParm(result, thissop, "convertmatchpoly", cookparms.getCookTime(), 0);
1811  return result;
1812  }
1813  bool getViewrounded() const { return myViewrounded; }
1814  void setViewrounded(bool val) { myViewrounded = val; }
1815  bool opViewrounded(const SOP_NodeVerb::CookParms &cookparms) const
1816  {
1817  SOP_Node *thissop = cookparms.getNode();
1818  if (!thissop) return getViewrounded();
1819  bool result;
1820  OP_Utils::evalOpParm(result, thissop, "viewrounded", cookparms.getCookTime(), 0);
1821  return result;
1822  }
1823  fpreal64 getRoundrad() const { return myRoundrad; }
1824  void setRoundrad(fpreal64 val) { myRoundrad = val; }
1826  {
1827  SOP_Node *thissop = cookparms.getNode();
1828  if (!thissop) return getRoundrad();
1829  fpreal64 result;
1830  OP_Utils::evalOpParm(result, thissop, "roundrad", cookparms.getCookTime(), 0);
1831  return result;
1832  }
1833  const UT_StringHolder & getRoundedpts() const { return myRoundedpts; }
1834  void setRoundedpts(const UT_StringHolder & val) { myRoundedpts = val; }
1836  {
1837  SOP_Node *thissop = cookparms.getNode();
1838  if (!thissop) return getRoundedpts();
1840  OP_Utils::evalOpParm(result, thissop, "roundedpts", cookparms.getCookTime(), 0);
1841  return result;
1842  }
1843  const UT_StringHolder & getRadiusattrib() const { return myRadiusattrib; }
1844  void setRadiusattrib(const UT_StringHolder & val) { myRadiusattrib = val; }
1846  {
1847  SOP_Node *thissop = cookparms.getNode();
1848  if (!thissop) return getRadiusattrib();
1850  OP_Utils::evalOpParm(result, thissop, "radiusattrib", cookparms.getCookTime(), 0);
1851  return result;
1852  }
1853  const UT_StringHolder & getRoundposattrib() const { return myRoundposattrib; }
1854  void setRoundposattrib(const UT_StringHolder & val) { myRoundposattrib = val; }
1856  {
1857  SOP_Node *thissop = cookparms.getNode();
1858  if (!thissop) return getRoundposattrib();
1860  OP_Utils::evalOpParm(result, thissop, "roundposattrib", cookparms.getCookTime(), 0);
1861  return result;
1862  }
1863  bool getChangerelative() const { return myChangerelative; }
1864  void setChangerelative(bool val) { myChangerelative = val; }
1865  bool opChangerelative(const SOP_NodeVerb::CookParms &cookparms) const
1866  {
1867  SOP_Node *thissop = cookparms.getNode();
1868  if (!thissop) return getChangerelative();
1869  bool result;
1870  OP_Utils::evalOpParm(result, thissop, "changerelative", cookparms.getCookTime(), 0);
1871  return result;
1872  }
1873  fpreal64 getScaleval() const { return myScaleval; }
1874  void setScaleval(fpreal64 val) { myScaleval = val; }
1876  {
1877  SOP_Node *thissop = cookparms.getNode();
1878  if (!thissop) return getScaleval();
1879  fpreal64 result;
1880  OP_Utils::evalOpParm(result, thissop, "scaleval", cookparms.getCookTime(), 0);
1881  return result;
1882  }
1883  const UT_StringHolder & getScalecontrolpoints() const { return myScalecontrolpoints; }
1884  void setScalecontrolpoints(const UT_StringHolder & val) { myScalecontrolpoints = val; }
1886  {
1887  SOP_Node *thissop = cookparms.getNode();
1888  if (!thissop) return getScalecontrolpoints();
1890  OP_Utils::evalOpParm(result, thissop, "scalecontrolpoints", cookparms.getCookTime(), 0);
1891  return result;
1892  }
1893  const UT_StringHolder & getScaleattrib() const { return myScaleattrib; }
1894  void setScaleattrib(const UT_StringHolder & val) { myScaleattrib = val; }
1896  {
1897  SOP_Node *thissop = cookparms.getNode();
1898  if (!thissop) return getScaleattrib();
1900  OP_Utils::evalOpParm(result, thissop, "scaleattrib", cookparms.getCookTime(), 0);
1901  return result;
1902  }
1903  UT_Vector3D getUpval() const { return myUpval; }
1904  void setUpval(UT_Vector3D val) { myUpval = val; }
1906  {
1907  SOP_Node *thissop = cookparms.getNode();
1908  if (!thissop) return getUpval();
1910  OP_Utils::evalOpParm(result, thissop, "upval", cookparms.getCookTime(), 0);
1911  return result;
1912  }
1913  fpreal64 getUprot() const { return myUprot; }
1914  void setUprot(fpreal64 val) { myUprot = val; }
1915  fpreal64 opUprot(const SOP_NodeVerb::CookParms &cookparms) const
1916  {
1917  SOP_Node *thissop = cookparms.getNode();
1918  if (!thissop) return getUprot();
1919  fpreal64 result;
1920  OP_Utils::evalOpParm(result, thissop, "uprot", cookparms.getCookTime(), 0);
1921  return result;
1922  }
1923  const UT_StringHolder & getUpcontrolpoints() const { return myUpcontrolpoints; }
1924  void setUpcontrolpoints(const UT_StringHolder & val) { myUpcontrolpoints = val; }
1926  {
1927  SOP_Node *thissop = cookparms.getNode();
1928  if (!thissop) return getUpcontrolpoints();
1930  OP_Utils::evalOpParm(result, thissop, "upcontrolpoints", cookparms.getCookTime(), 0);
1931  return result;
1932  }
1933  const UT_StringHolder & getUpattrib() const { return myUpattrib; }
1934  void setUpattrib(const UT_StringHolder & val) { myUpattrib = val; }
1936  {
1937  SOP_Node *thissop = cookparms.getNode();
1938  if (!thissop) return getUpattrib();
1940  OP_Utils::evalOpParm(result, thissop, "upattrib", cookparms.getCookTime(), 0);
1941  return result;
1942  }
1943  Primtype getPrimtype() const { return Primtype(myPrimtype); }
1944  void setPrimtype(Primtype val) { myPrimtype = int64(val); }
1946  {
1947  SOP_Node *thissop = cookparms.getNode();
1948  if (!thissop) return getPrimtype();
1949  int64 result;
1950  OP_Utils::evalOpParm(result, thissop, "primtype", cookparms.getCookTime(), 0);
1951  return Primtype(result);
1952  }
1953  int64 getOrder() const { return myOrder; }
1955  int64 opOrder(const SOP_NodeVerb::CookParms &cookparms) const
1956  {
1957  SOP_Node *thissop = cookparms.getNode();
1958  if (!thissop) return getOrder();
1959  int64 result;
1960  OP_Utils::evalOpParm(result, thissop, "order", cookparms.getCookTime(), 0);
1961  return result;
1962  }
1963  int64 getConvertdivs() const { return myConvertdivs; }
1964  void setConvertdivs(int64 val) { myConvertdivs = val; }
1966  {
1967  SOP_Node *thissop = cookparms.getNode();
1968  if (!thissop) return getConvertdivs();
1969  int64 result;
1970  OP_Utils::evalOpParm(result, thissop, "convertdivs", cookparms.getCookTime(), 0);
1971  return result;
1972  }
1973 
1974 private:
1975  int64 myOptype;
1976  UT_StringHolder myGroup;
1977  bool myEnableoutputgroup;
1978  UT_StringHolder myOutputgroup;
1979  bool myApplykeys;
1980  bool myInsertkeys;
1981  bool myDensebake;
1982  bool mySynchronizekeys;
1983  bool myPrefixtangents;
1984  UT_StringHolder myChannelprefix;
1985  UT_StringHolder myCornerpts;
1986  UT_StringHolder mySmoothpts;
1987  UT_StringHolder myAutopts;
1988  bool myEnableoutputcornersgroup;
1989  UT_StringHolder myOutputcornersgroup;
1990  bool myEnableoutputsmoothgroup;
1991  UT_StringHolder myOutputsmoothgroup;
1992  bool myEnableoutputautogroup;
1993  UT_StringHolder myOutputautogroup;
1994  bool myTransformallkeys;
1995  bool mySofttransform;
1996  fpreal64 mySofttransformrad;
1997  UT_Vector3D myTranslate;
1998  UT_Vector3D myRotate;
1999  UT_Vector3D myScale;
2000  UT_Vector3D myPivottranslate;
2001  UT_Vector3D myPivotrotate;
2002  bool myConstrainstraighten;
2003  UT_Vector3D myPlanenml;
2004  UT_Vector3D myPlaneorig;
2005  int64 myActiveprim;
2006  UT_StringHolder myData;
2007  int64 myNewpointtype;
2008  bool myDrawsymmetric;
2009  int64 mySegment;
2010  fpreal64 myUpos;
2011  fpreal64 myInterpfalloff;
2012  bool myApproxshapedel;
2013  bool myApproxtangentsdel;
2014  bool myConvertmatchpoly;
2015  bool myViewrounded;
2016  fpreal64 myRoundrad;
2017  UT_StringHolder myRoundedpts;
2018  UT_StringHolder myRadiusattrib;
2019  UT_StringHolder myRoundposattrib;
2020  bool myChangerelative;
2021  fpreal64 myScaleval;
2022  UT_StringHolder myScalecontrolpoints;
2023  UT_StringHolder myScaleattrib;
2024  UT_Vector3D myUpval;
2025  fpreal64 myUprot;
2026  UT_StringHolder myUpcontrolpoints;
2027  UT_StringHolder myUpattrib;
2028  int64 myPrimtype;
2029  int64 myOrder;
2030  int64 myConvertdivs;
2031 
2032 };
bool getTransformallkeys() const
type
Definition: core.h:556
int64 opOrder(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opRoundedpts(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opAutopts(const SOP_NodeVerb::CookParms &cookparms) const
void setTranslate(UT_Vector3D val)
const UT_StringHolder & getOutputautogroup() const
static void loadData(UT_IStream &is, UT_Matrix3D &v)
const UT_StringHolder & getGroup() const
void setEnableoutputsmoothgroup(bool val)
bool load(UT_IStream &is)
void setInsertkeys(bool val)
bool opDrawsymmetric(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3D opPlanenml(const SOP_NodeVerb::CookParms &cookparms) const
void setSmoothpts(const UT_StringHolder &val)
const UT_StringHolder & getOutputgroup() const
void setRotate(UT_Vector3D val)
bool opSofttransform(const SOP_NodeVerb::CookParms &cookparms) const
bool getEnableoutputautogroup() const
void setConvertdivs(int64 val)
bool opConvertmatchpoly(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getUpattrib() const
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:403
bool getEnableoutputcornersgroup() const
UT_StringHolder opData(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
bool opApproxtangentsdel(const SOP_NodeVerb::CookParms &cookparms) const
void setPivotrotate(UT_Vector3D val)
static void loadData(UT_IStream &is, UT_Matrix4D &v)
fpreal64 getRoundrad() const
void setScaleattrib(const UT_StringHolder &val)
UT_Vector3D opRotate(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getScaleval() const
bool getApproxtangentsdel() const
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
void setData(const UT_StringHolder &val)
bool opEnableoutputcornersgroup(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
static void saveData(std::ostream &os, bool v)
int64 getActiveprim() const
int myOrder
Definition: GT_CurveEval.h:263
fpreal64 getUpos() const
GLboolean * data
Definition: glcorearb.h:131
GT_API const UT_StringHolder time
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector4.h:495
const GLdouble * v
Definition: glcorearb.h:837
void setInterpfalloff(fpreal64 val)
fpreal getTime() const
Definition: OP_Context.h:63
static void saveData(std::ostream &os, UT_Vector4D v)
bool getPrefixtangents() const
static void loadData(UT_IStream &is, UT_Vector3I &v)
bool getConvertmatchpoly() const
Primtype opPrimtype(const SOP_NodeVerb::CookParms &cookparms) const
GLsizei const GLfloat * value
Definition: glcorearb.h:824
UT_StringHolder opUpcontrolpoints(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opRoundposattrib(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3D getPlaneorig() const
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
bool opChangerelative(const SOP_NodeVerb::CookParms &cookparms) const
void setScalecontrolpoints(const UT_StringHolder &val)
bool opViewrounded(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
void setApproxtangentsdel(bool val)
static void loadData(UT_IStream &is, UT_Vector2I &v)
const OP_Context & context() const
Definition: OP_NodeParms.h:97
UT_Vector3D opPlaneorig(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getInterpfalloff() const
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:669
int64 exint
Definition: SYS_Types.h:125
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
static void saveData(std::ostream &os, UT_Matrix4D v)
SYS_FORCE_INLINE const char * buffer() const
GLdouble s
Definition: glad.h:3009
void setConvertmatchpoly(bool val)
An output stream object that owns its own string buffer storage.
void setNewpointtype(Newpointtype val)
void setUpos(fpreal64 val)
static void loadData(UT_IStream &is, int64 &v)
void save(std::ostream &os) const
bool opPrefixtangents(const SOP_NodeVerb::CookParms &cookparms) const
void setScaleval(fpreal64 val)
void setUpcontrolpoints(const UT_StringHolder &val)
**But if you need a result
Definition: thread.h:622
void setPrefixtangents(bool val)
bool getViewrounded() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
exint getNestNumParms(TempIndex idx) const override
exint nodeIdx() const
Definition: OP_NodeParms.h:95
void setUpval(UT_Vector3D val)
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 UT_Matrix2D &value) override
UT_Vector3D getPivottranslate() const
bool opEnableoutputgroup(const SOP_NodeVerb::CookParms &cookparms) const
void setOrder(int64 val)
void setEnableoutputgroup(bool val)
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:493
bool getChangerelative() const
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
double fpreal64
Definition: SYS_Types.h:201
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: APEX_Include.h:55
bool opInsertkeys(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:426
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
static void loadData(UT_IStream &is, fpreal64 &v)
void setRoundrad(fpreal64 val)
fpreal64 getSofttransformrad() const
void setSofttransformrad(fpreal64 val)
void setDensebake(bool val)
void setPlaneorig(UT_Vector3D val)
bool opApplykeys(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
void setSynchronizekeys(bool val)
static void saveData(std::ostream &os, int64 v)
void setOutputautogroup(const UT_StringHolder &val)
void setGroup(const UT_StringHolder &val)
const UT_StringHolder & getScalecontrolpoints() const
static void loadData(UT_IStream &is, UT_StringHolder &v)
exint length() const
void setUprot(fpreal64 val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
void setOutputgroup(const UT_StringHolder &val)
SYS_FORCE_INLINE const char * buffer() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:36
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:497
void setChannelprefix(const UT_StringHolder &val)
const UT_StringHolder & getAutopts() const
void setApproxshapedel(bool val)
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
#define SYS_FORCE_INLINE
Definition: SYS_Inline.h:45
void setOutputcornersgroup(const UT_StringHolder &val)
bool operator==(const SOP_Curve_3_0Parms &src) const
UT_Vector3D getUpval() const
const char * getNestParmName(TempIndex fieldnum) const override
const UT_StringHolder & getOutputsmoothgroup() const
static void loadData(UT_IStream &is, UT_Vector3D &v)
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
void setSofttransform(bool val)
UT_StringHolder opOutputgroup(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opScaleval(const SOP_NodeVerb::CookParms &cookparms) const
int64 opConvertdivs(const SOP_NodeVerb::CookParms &cookparms) const
bool opSynchronizekeys(const SOP_NodeVerb::CookParms &cookparms) const
bool opEnableoutputsmoothgroup(const SOP_NodeVerb::CookParms &cookparms) const
void setConstrainstraighten(bool val)
void setCornerpts(const UT_StringHolder &val)
long long int64
Definition: SYS_Types.h:116
void setApplykeys(bool val)
UT_Vector3T< fpreal64 > UT_Vector3D
fpreal64 opRoundrad(const SOP_NodeVerb::CookParms &cookparms) const
Newpointtype getNewpointtype() const
void setActiveprim(int64 val)
static void saveData(std::ostream &os, UT_Vector2D v)
Optype opOptype(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Matrix2D &v)
UT_StringHolder opSmoothpts(const SOP_NodeVerb::CookParms &cookparms) const
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
SYS_FORCE_INLINE UT_StringHolder getToken(Optype enum_value)
static void loadData(UT_IStream &is, UT_Vector4I &v)
void setScale(UT_Vector3D val)
bool getSofttransform() const
void setAutopts(const UT_StringHolder &val)
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:306
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
fpreal64 opSofttransformrad(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opOutputautogroup(const SOP_NodeVerb::CookParms &cookparms) const
bool getEnableoutputgroup() const
GT_API const UT_StringHolder version
Optype getOptype() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
bool operator!=(const SOP_Curve_3_0Parms &src) const
void setOutputsmoothgroup(const UT_StringHolder &val)
void setRoundposattrib(const UT_StringHolder &val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
fpreal64 opInterpfalloff(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3D getScale() const
int64 getConvertdivs() const
void setEnableoutputautogroup(bool val)
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
const UT_StringHolder & getRoundposattrib() const
void setChangerelative(bool val)
UT_StringHolder opOutputsmoothgroup(const SOP_NodeVerb::CookParms &cookparms) const
void setDrawsymmetric(bool val)
UT_Vector3D opTranslate(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3D getPivotrotate() const
static void saveData(std::ostream &os, UT_Matrix3D v)
static void loadData(UT_IStream &is, UT_Vector2D &v)
bool opEnableoutputautogroup(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_StringHolder s)
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
const UT_StringHolder & getRadiusattrib() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
UT_StringHolder opOutputcornersgroup(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 fpreal
Definition: SYS_Types.h:283
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
UT_StringHolder opRadiusattrib(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opChannelprefix(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getChannelprefix() const
bool opTransformallkeys(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getUprot() const
LeafData & operator=(const LeafData &)=delete
Utility class for containing a color ramp.
Definition: UT_Ramp.h:96
void setPrimtype(Primtype val)
UT_StringHolder opScalecontrolpoints(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
const UT_StringHolder & getCornerpts() const
UT_Vector3D opPivottranslate(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opUpattrib(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:499
static void loadData(UT_IStream &is, bool &v)
const UT_StringHolder & getRoundedpts() const
GLuint GLfloat * val
Definition: glcorearb.h:1608
virtual UT_StringHolder baseGetSignature() const
Definition: OP_NodeParms.h:294
Vec3< typename MatType::value_type > getScale(const MatType &mat)
Return a Vec3 representing the lengths of the passed matrix's upper 3×3's rows.
Definition: Mat.h:633
void setOptype(Optype val)
const UT_StringHolder & getOutputcornersgroup() const
#define SOP_API
Definition: SOP_API.h:10
UT_StringHolder opScaleattrib(const SOP_NodeVerb::CookParms &cookparms) const
bool getDrawsymmetric() const
const UT_StringHolder & getSmoothpts() const
static void saveData(std::ostream &os, UT_Matrix2D v)
UT_StringHolder opCornerpts(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3D opPivotrotate(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:432
int64 opActiveprim(const SOP_NodeVerb::CookParms &cookparms) const
void copyFrom(const OP_NodeParms *src) override
UT_Vector3D getRotate() const
fpreal64 opUprot(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
Primtype getPrimtype() const
static void saveData(std::ostream &os, fpreal64 v)
UT_Vector3D getTranslate() const
bool getSynchronizekeys() const
const UT_StringHolder & getScaleattrib() const
ParmType getNestParmType(TempIndex fieldnum) const override
const char * findChar(int c) const
Definition: UT_String.h:1421
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:165
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
bool getApproxshapedel() const
bool opConstrainstraighten(const SOP_NodeVerb::CookParms &cookparms) const
int64 opSegment(const SOP_NodeVerb::CookParms &cookparms) const
bool opApproxshapedel(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getUpcontrolpoints() const
GLboolean r
Definition: glcorearb.h:1222
void setTransformallkeys(bool val)
exint bread(uint8 *buffer, exint asize=1)
Newpointtype opNewpointtype(const SOP_NodeVerb::CookParms &cookparms) const
void loadFromOpSubclass(const LoadParms &loadparms) override
void setPivottranslate(UT_Vector3D val)
bool getConstrainstraighten() const
void setRadiusattrib(const UT_StringHolder &val)
fpreal64 opUpos(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:667
void setPlanenml(UT_Vector3D val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
void setViewrounded(bool val)
virtual bool isDirect() const =0
Direct proxies mirror actual nodes:
UT_Vector3D getPlanenml() const
const UT_StringHolder & getData() const
UT_Vector3D opUpval(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
void setRoundedpts(const UT_StringHolder &val)
void setEnableoutputcornersgroup(bool val)
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:428
static void saveData(std::ostream &os, PRM_DataItemHandle s)
static void saveData(std::ostream &os, UT_Vector3D v)
SYS_FORCE_INLINE bool isstring() const
UT_Vector3D opScale(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
GLenum src
Definition: glcorearb.h:1793
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:665
bool isParmColorRamp(exint idx) const override
bool getEnableoutputsmoothgroup() const
UT_StringHolder opGroup(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector4D &v)
void setUpattrib(const UT_StringHolder &val)
bool opDensebake(const SOP_NodeVerb::CookParms &cookparms) const
void setSegment(int64 val)