HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_Measure-2.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 <SOP/SOP_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_Measure_2_0Enums
24 {
25  enum class GroupType
26  {
27  POINTS = 0,
28  PRIMS
29  };
30 
32  getToken(GroupType enum_value)
33  {
34  using namespace UT::Literal;
35  switch (enum_value) {
36  case GroupType::POINTS: return "points"_sh;
37  case GroupType::PRIMS: return "prims"_sh;
38  default: UT_ASSERT(false); return ""_sh;
39  }
40  }
41 
42  enum class Measure
43  {
44  PERIMETER = 0,
45  AREA,
46  VOLUME,
47  CENTROID,
48  CURVATURE,
49  GRADIENT,
50  LAPLACIAN,
53  };
54 
56  getToken(Measure enum_value)
57  {
58  using namespace UT::Literal;
59  switch (enum_value) {
60  case Measure::PERIMETER: return "perimeter"_sh;
61  case Measure::AREA: return "area"_sh;
62  case Measure::VOLUME: return "volume"_sh;
63  case Measure::CENTROID: return "centroid"_sh;
64  case Measure::CURVATURE: return "curvature"_sh;
65  case Measure::GRADIENT: return "gradient"_sh;
66  case Measure::LAPLACIAN: return "laplacian"_sh;
67  case Measure::BOUNDARYINTEGRAL: return "boundaryintegral"_sh;
68  case Measure::SURFACEINTEGRAL: return "surfaceintegral"_sh;
69  default: UT_ASSERT(false); return ""_sh;
70  }
71  }
72 
73  enum class CurvatureType
74  {
75  GAUSSIAN = 0,
76  MEAN,
77  PRINCIPAL,
79  };
80 
82  getToken(CurvatureType enum_value)
83  {
84  using namespace UT::Literal;
85  switch (enum_value) {
86  case CurvatureType::GAUSSIAN: return "gaussian"_sh;
87  case CurvatureType::MEAN: return "mean"_sh;
88  case CurvatureType::PRINCIPAL: return "principal"_sh;
89  case CurvatureType::CURVEDNESS: return "curvedness"_sh;
90  default: UT_ASSERT(false); return ""_sh;
91  }
92  }
93 
94  enum class PrincipalType
95  {
96  MIN = 0,
97  MAX
98  };
99 
101  getToken(PrincipalType enum_value)
102  {
103  using namespace UT::Literal;
104  switch (enum_value) {
105  case PrincipalType::MIN: return "min"_sh;
106  case PrincipalType::MAX: return "max"_sh;
107  default: UT_ASSERT(false); return ""_sh;
108  }
109  }
110 
111  enum class PrincipalSign
112  {
113  SIGNED = 0,
114  ABSOLUTE
115  };
116 
118  getToken(PrincipalSign enum_value)
119  {
120  using namespace UT::Literal;
121  switch (enum_value) {
122  case PrincipalSign::SIGNED: return "signed"_sh;
123  case PrincipalSign::ABSOLUTE: return "absolute"_sh;
124  default: UT_ASSERT(false); return ""_sh;
125  }
126  }
127 
128  enum class PrincipalReportAs
129  {
130  SCALAR = 0,
131  DIRECTION,
132  VECTOR
133  };
134 
137  {
138  using namespace UT::Literal;
139  switch (enum_value) {
140  case PrincipalReportAs::SCALAR: return "scalar"_sh;
141  case PrincipalReportAs::DIRECTION: return "direction"_sh;
142  case PrincipalReportAs::VECTOR: return "vector"_sh;
143  default: UT_ASSERT(false); return ""_sh;
144  }
145  }
146 
147  enum class IntegrationMode
148  {
149  COMPONENTWISE = 0,
150  TANGENT,
151  NORMAL
152  };
153 
156  {
157  using namespace UT::Literal;
158  switch (enum_value) {
159  case IntegrationMode::COMPONENTWISE: return "componentwise"_sh;
160  case IntegrationMode::TANGENT: return "tangent"_sh;
161  case IntegrationMode::NORMAL: return "normal"_sh;
162  default: UT_ASSERT(false); return ""_sh;
163  }
164  }
165 
166  enum class SrcComp
167  {
168  X = 0,
169  Y,
170  Z,
171  XYZ
172  };
173 
175  getToken(SrcComp enum_value)
176  {
177  using namespace UT::Literal;
178  switch (enum_value) {
179  case SrcComp::X: return "x"_sh;
180  case SrcComp::Y: return "y"_sh;
181  case SrcComp::Z: return "z"_sh;
182  case SrcComp::XYZ: return "xyz"_sh;
183  default: UT_ASSERT(false); return ""_sh;
184  }
185  }
186 
187  enum class IntegrationDomain
188  {
189  ELEMENT = 0,
190  PIECE,
191  THROUGHOUT
192  };
193 
196  {
197  using namespace UT::Literal;
198  switch (enum_value) {
199  case IntegrationDomain::ELEMENT: return "element"_sh;
200  case IntegrationDomain::PIECE: return "piece"_sh;
201  case IntegrationDomain::THROUGHOUT: return "throughout"_sh;
202  default: UT_ASSERT(false); return ""_sh;
203  }
204  }
205 
206  enum class WidthScale
207  {
208  UNIT = 0,
209  SD,
210  MAD
211  };
212 
214  getToken(WidthScale enum_value)
215  {
216  using namespace UT::Literal;
217  switch (enum_value) {
218  case WidthScale::UNIT: return "unit"_sh;
219  case WidthScale::SD: return "sd"_sh;
220  case WidthScale::MAD: return "mad"_sh;
221  default: UT_ASSERT(false); return ""_sh;
222  }
223  }
224 
225  enum class CenterType
226  {
227  FIXED = 0,
228  MEAN,
229  MEDIAN
230  };
231 
233  getToken(CenterType enum_value)
234  {
235  using namespace UT::Literal;
236  switch (enum_value) {
237  case CenterType::FIXED: return "fixed"_sh;
238  case CenterType::MEAN: return "mean"_sh;
239  case CenterType::MEDIAN: return "median"_sh;
240  default: UT_ASSERT(false); return ""_sh;
241  }
242  }
243 
244 }
245 
246 
248 {
249 public:
250  static int version() { return 1; }
251 
253  {
254  myGroup = ""_UTsh;
255  myGroupType = 1;
256  myMeasure = 1;
257  myCurvatureType = 3;
258  myPrincipalType = 0;
259  myPrincipalSign = 0;
260  myPrincipalReportAs = 0;
261  myUmbilicCutoff = 0;
262  myIntegrationMode = 0;
263  mySrcAttrib = "P"_UTsh;
264  mySrcComp = 0;
265  myScaleNormalize = true;
266  myIntegrationDomain = 0;
267  myRefineToManifold = true;
268  myPieceAttrib = "class"_UTsh;
269  myUseCustomPos = false;
270  myPosAttrib = "P"_UTsh;
271  myUseRangeMin = false;
272  myRangeMin = -1;
273  myUseRangeMax = false;
274  myRangeMax = 1;
275  myUseCenterWidth = true;
276  myWidth = 6;
277  myWidthScale = 2;
278  myCenterType = 2;
279  myFixedCenter = 0;
280  myColorramp = UT_SharedPtr<UT_Ramp>(0);
281  myVectorScale = 1;
282  myAttribName = "area"_UTsh;
283  myUseTotalAttrib = false;
284  myTotalAttribName = "totalarea"_UTsh;
285  myUseRangeGroup = false;
286  myRangeGroup = "inrange"_UTsh;
287  myBakeIntoOutput = false;
288  myUseRemapRange = false;
289  myRemapRange = UT_Vector2D(0,1);
290 
291  }
292 
293  explicit SOP_Measure_2_0Parms(const SOP_Measure_2_0Parms &) = default;
295  SOP_Measure_2_0Parms(SOP_Measure_2_0Parms &&) noexcept = default;
296  SOP_Measure_2_0Parms &operator=(SOP_Measure_2_0Parms &&) noexcept = default;
297 
298  ~SOP_Measure_2_0Parms() override {}
299 
301  {
302  if (myGroup != src.myGroup) return false;
303  if (myGroupType != src.myGroupType) return false;
304  if (myMeasure != src.myMeasure) return false;
305  if (myCurvatureType != src.myCurvatureType) return false;
306  if (myPrincipalType != src.myPrincipalType) return false;
307  if (myPrincipalSign != src.myPrincipalSign) return false;
308  if (myPrincipalReportAs != src.myPrincipalReportAs) return false;
309  if (myUmbilicCutoff != src.myUmbilicCutoff) return false;
310  if (myIntegrationMode != src.myIntegrationMode) return false;
311  if (mySrcAttrib != src.mySrcAttrib) return false;
312  if (mySrcComp != src.mySrcComp) return false;
313  if (myScaleNormalize != src.myScaleNormalize) return false;
314  if (myIntegrationDomain != src.myIntegrationDomain) return false;
315  if (myRefineToManifold != src.myRefineToManifold) return false;
316  if (myPieceAttrib != src.myPieceAttrib) return false;
317  if (myUseCustomPos != src.myUseCustomPos) return false;
318  if (myPosAttrib != src.myPosAttrib) return false;
319  if (myUseRangeMin != src.myUseRangeMin) return false;
320  if (myRangeMin != src.myRangeMin) return false;
321  if (myUseRangeMax != src.myUseRangeMax) return false;
322  if (myRangeMax != src.myRangeMax) return false;
323  if (myUseCenterWidth != src.myUseCenterWidth) return false;
324  if (myWidth != src.myWidth) return false;
325  if (myWidthScale != src.myWidthScale) return false;
326  if (myCenterType != src.myCenterType) return false;
327  if (myFixedCenter != src.myFixedCenter) return false;
328  if (myColorramp != src.myColorramp)
329  { if (!myColorramp || !src.myColorramp || !(*myColorramp == *src.myColorramp)) return false; }
330  if (myVectorScale != src.myVectorScale) return false;
331  if (myAttribName != src.myAttribName) return false;
332  if (myUseTotalAttrib != src.myUseTotalAttrib) return false;
333  if (myTotalAttribName != src.myTotalAttribName) return false;
334  if (myUseRangeGroup != src.myUseRangeGroup) return false;
335  if (myRangeGroup != src.myRangeGroup) return false;
336  if (myBakeIntoOutput != src.myBakeIntoOutput) return false;
337  if (myUseRemapRange != src.myUseRemapRange) return false;
338  if (myRemapRange != src.myRemapRange) return false;
339 
340  return true;
341  }
343  {
344  return !operator==(src);
345  }
357 
358 
359 
360  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
361  {
362  myGroup = ""_UTsh;
363  if (true)
364  graph->evalOpParm(myGroup, nodeidx, "group", time, 0);
365  myGroupType = 1;
366  if (true)
367  graph->evalOpParm(myGroupType, nodeidx, "grouptype", time, 0);
368  myMeasure = 1;
369  if (true)
370  graph->evalOpParm(myMeasure, nodeidx, "measure", time, 0);
371  myCurvatureType = 3;
372  if (true && ( (true&&!(((int64(getMeasure())!=4)))) ) )
373  graph->evalOpParm(myCurvatureType, nodeidx, "curvaturetype", time, 0);
374  myPrincipalType = 0;
375  if (true && ( (true&&!(((int64(getMeasure())!=4))||((int64(getCurvatureType())!=2)))) ) )
376  graph->evalOpParm(myPrincipalType, nodeidx, "principaltype", time, 0);
377  myPrincipalSign = 0;
378  if (true && ( (true&&!(((int64(getMeasure())!=4))||((int64(getCurvatureType())!=2)))) ) )
379  graph->evalOpParm(myPrincipalSign, nodeidx, "principalsign", time, 0);
380  myPrincipalReportAs = 0;
381  if (true && ( (true&&!(((int64(getMeasure())!=4))||((int64(getCurvatureType())!=2)))) ) )
382  graph->evalOpParm(myPrincipalReportAs, nodeidx, "principalreportas", time, 0);
383  myUmbilicCutoff = 0;
384  if (true && ( (true&&!(((int64(getMeasure())!=4))||((int64(getCurvatureType())!=2))||((int64(getPrincipalReportAs())==0)))) ) )
385  graph->evalOpParm(myUmbilicCutoff, nodeidx, "umbiliccutoff", time, 0);
386  myIntegrationMode = 0;
387  if (true && ( (true&&!(((int64(getMeasure())!=7)&&(int64(getMeasure())!=8)))) ) )
388  graph->evalOpParm(myIntegrationMode, nodeidx, "integrationmode", time, 0);
389  mySrcAttrib = "P"_UTsh;
390  if (true && ( (true&&!(((int64(getMeasure())==4))||((int64(getMeasure())==2))||((int64(getMeasure())==0))||((int64(getMeasure())==1))||((int64(getMeasure())==3)))) ) )
391  graph->evalOpParm(mySrcAttrib, nodeidx, "srcattrib", time, 0);
392  mySrcComp = 0;
393  if (true && ( (true&&!(((int64(getMeasure())==4))||((int64(getMeasure())==2))||((int64(getMeasure())==0))||((int64(getMeasure())==1))||((int64(getMeasure())==3)))) ) )
394  graph->evalOpParm(mySrcComp, nodeidx, "srccomp", time, 0);
395  myScaleNormalize = true;
396  if (true && ( (true&&!(((int64(getMeasure())!=4)&&(int64(getMeasure())!=5)&&(int64(getMeasure())!=6)&&(int64(getMeasure())!=8))||((int64(getMeasure())==4)&&(int64(getCurvatureType())==0)))) ) )
397  graph->evalOpParm(myScaleNormalize, nodeidx, "scalenormalize", time, 0);
398  myIntegrationDomain = 0;
399  if (true)
400  graph->evalOpParm(myIntegrationDomain, nodeidx, "integrationdomain", time, 0);
401  myRefineToManifold = true;
402  if (true && ( (true&&!(((int64(getIntegrationDomain())!=1)))) ) )
403  graph->evalOpParm(myRefineToManifold, nodeidx, "refinetomanifold", time, 0);
404  myPieceAttrib = "class"_UTsh;
405  if (true && ( (true&&!(((int64(getIntegrationDomain())!=1)))) ) )
406  graph->evalOpParm(myPieceAttrib, nodeidx, "pieceattrib", time, 0);
407  myUseCustomPos = false;
408  if (true)
409  graph->evalOpParm(myUseCustomPos, nodeidx, "usecustompos", time, 0);
410  myPosAttrib = "P"_UTsh;
411  if (true && ( (true&&!(((getUseCustomPos()==0)))) ) )
412  graph->evalOpParm(myPosAttrib, nodeidx, "posattrib", time, 0);
413  myUseRangeMin = false;
414  if (true && ( (true&&!(((int64(getMeasure())==3))||((int64(getMeasure())==4)&&(int64(getPrincipalReportAs())==1)))) ) )
415  graph->evalOpParm(myUseRangeMin, nodeidx, "userangemin", time, 0);
416  myRangeMin = -1;
417  if (true && ( (true&&!(((int64(getMeasure())==3))||((int64(getMeasure())==4)&&(int64(getPrincipalReportAs())==1))||((getUseRangeMin()==0)))) ) )
418  graph->evalOpParm(myRangeMin, nodeidx, "rangemin", time, 0);
419  myUseRangeMax = false;
420  if (true && ( (true&&!(((int64(getMeasure())==3))||((int64(getMeasure())==4)&&(int64(getPrincipalReportAs())==1)))) ) )
421  graph->evalOpParm(myUseRangeMax, nodeidx, "userangemax", time, 0);
422  myRangeMax = 1;
423  if (true && ( (true&&!(((int64(getMeasure())==3))||((int64(getMeasure())==4)&&(int64(getPrincipalReportAs())==1))||((getUseRangeMax()==0)))) ) )
424  graph->evalOpParm(myRangeMax, nodeidx, "rangemax", time, 0);
425  myUseCenterWidth = true;
426  if (true && ( (true&&!(((int64(getMeasure())==3))||((int64(getMeasure())==4)&&(int64(getPrincipalReportAs())==1)))) ) )
427  graph->evalOpParm(myUseCenterWidth, nodeidx, "usecenterwidth", time, 0);
428  myWidth = 6;
429  if (true && ( (true&&!(((int64(getMeasure())==3))||((int64(getMeasure())==4)&&(int64(getPrincipalReportAs())==1))||((getUseCenterWidth()==0)))) ) )
430  graph->evalOpParm(myWidth, nodeidx, "width", time, 0);
431  myWidthScale = 2;
432  if (true && ( (true&&!(((int64(getMeasure())==3))||((int64(getMeasure())==4)&&(int64(getPrincipalReportAs())==1))||((getUseCenterWidth()==0)))) ) )
433  graph->evalOpParm(myWidthScale, nodeidx, "widthscale", time, 0);
434  myCenterType = 2;
435  if (true && ( (true&&!(((int64(getMeasure())==3))||((int64(getMeasure())==4)&&(int64(getPrincipalReportAs())==1))||((getUseCenterWidth()==0)))) ) )
436  graph->evalOpParm(myCenterType, nodeidx, "centertype", time, 0);
437  myFixedCenter = 0;
438  if (true && ( (true&&!(((int64(getCenterType())!=0))||((int64(getMeasure())==3))||((int64(getMeasure())==4)&&(int64(getPrincipalReportAs())==1))||((getUseCenterWidth()==0)))) ) )
439  graph->evalOpParm(myFixedCenter, nodeidx, "fixedcenter", time, 0);
440  myColorramp = UT_SharedPtr<UT_Ramp>(0);
441  if (true && ( (true&&!(((int64(getMeasure())==3))||((int64(getMeasure())==4)&&(int64(getPrincipalReportAs())==1)))) ) )
442  graph->evalOpParm(myColorramp, nodeidx, "colorramp", time, 0);
443  myVectorScale = 1;
444  if (true && ( (true&&!(((int64(getMeasure())==4)&&(int64(getPrincipalReportAs())==0))||((int64(getMeasure())==2))||((int64(getMeasure())==0))||((int64(getMeasure())==1))||((int64(getMeasure())==3))||((int64(getMeasure())==6)&&(int64(getSrcComp())!=3))||((int64(getMeasure())==8)&&(int64(getSrcComp())!=3))||((int64(getMeasure())==7)&&(int64(getSrcComp())!=3)))) ) )
445  graph->evalOpParm(myVectorScale, nodeidx, "vectorscale", time, 0);
446  myAttribName = "area"_UTsh;
447  if (true)
448  graph->evalOpParm(myAttribName, nodeidx, "attribname", time, 0);
449  myUseTotalAttrib = false;
450  if (true)
451  graph->evalOpParm(myUseTotalAttrib, nodeidx, "usetotalattrib", time, 0);
452  myTotalAttribName = "totalarea"_UTsh;
453  if (true && ( (true&&!(((getUseTotalAttrib()==0)))) ) )
454  graph->evalOpParm(myTotalAttribName, nodeidx, "totalattribname", time, 0);
455  myUseRangeGroup = false;
456  if (true && ( (true&&!(((int64(getMeasure())==3))||((int64(getMeasure())==4)&&(int64(getPrincipalReportAs())==1))||((getUseRangeMin()==0)&&(getUseRangeMax()==0)&&(getUseCenterWidth()==0)))) ) )
457  graph->evalOpParm(myUseRangeGroup, nodeidx, "userangegroup", time, 0);
458  myRangeGroup = "inrange"_UTsh;
459  if (true && ( (true&&!(((getUseRangeGroup()==0)))) ) )
460  graph->evalOpParm(myRangeGroup, nodeidx, "rangegroup", time, 0);
461  myBakeIntoOutput = false;
462  if (true && ( (true&&!(((int64(getMeasure())==3))||((int64(getMeasure())==4)&&(int64(getPrincipalReportAs())==1))||((getUseRangeMin()==0)&&(getUseRangeMax()==0)&&(getUseCenterWidth()==0)))) ) )
463  graph->evalOpParm(myBakeIntoOutput, nodeidx, "bakeintooutput", time, 0);
464  myUseRemapRange = false;
465  if (true && ( (true&&!(((getBakeIntoOutput()==0)))) ) )
466  graph->evalOpParm(myUseRemapRange, nodeidx, "useremaprange", time, 0);
467  myRemapRange = UT_Vector2D(0,1);
468  if (true && ( (true&&!(((getBakeIntoOutput()==0))||((getUseRemapRange()==0)))) ) )
469  graph->evalOpParm(myRemapRange, nodeidx, "remaprange", time, 0);
470 
471  }
472 
473 
474  void loadFromOpSubclass(const LoadParms &loadparms) override
475  {
476  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
477  }
478 
479 
480  void copyFrom(const OP_NodeParms *src) override
481  {
482  *this = *((const SOP_Measure_2_0Parms *)src);
483  }
484 
485  template <typename T>
486  void
487  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
488  {
489  if (idx.size() < 1)
490  return;
491  UT_ASSERT(idx.size() == instance.size()+1);
492  if (idx.size() != instance.size()+1)
493  return;
494  switch (idx[0])
495  {
496  case 0:
497  coerceValue(value, myGroup);
498  break;
499  case 1:
500  coerceValue(value, myGroupType);
501  break;
502  case 2:
503  coerceValue(value, myMeasure);
504  break;
505  case 3:
506  coerceValue(value, myCurvatureType);
507  break;
508  case 4:
509  coerceValue(value, myPrincipalType);
510  break;
511  case 5:
512  coerceValue(value, myPrincipalSign);
513  break;
514  case 6:
515  coerceValue(value, myPrincipalReportAs);
516  break;
517  case 7:
518  coerceValue(value, myUmbilicCutoff);
519  break;
520  case 8:
521  coerceValue(value, myIntegrationMode);
522  break;
523  case 9:
524  coerceValue(value, mySrcAttrib);
525  break;
526  case 10:
527  coerceValue(value, mySrcComp);
528  break;
529  case 11:
530  coerceValue(value, myScaleNormalize);
531  break;
532  case 12:
533  coerceValue(value, myIntegrationDomain);
534  break;
535  case 13:
536  coerceValue(value, myRefineToManifold);
537  break;
538  case 14:
539  coerceValue(value, myPieceAttrib);
540  break;
541  case 15:
542  coerceValue(value, myUseCustomPos);
543  break;
544  case 16:
545  coerceValue(value, myPosAttrib);
546  break;
547  case 17:
548  coerceValue(value, myUseRangeMin);
549  break;
550  case 18:
551  coerceValue(value, myRangeMin);
552  break;
553  case 19:
554  coerceValue(value, myUseRangeMax);
555  break;
556  case 20:
557  coerceValue(value, myRangeMax);
558  break;
559  case 21:
560  coerceValue(value, myUseCenterWidth);
561  break;
562  case 22:
563  coerceValue(value, myWidth);
564  break;
565  case 23:
566  coerceValue(value, myWidthScale);
567  break;
568  case 24:
569  coerceValue(value, myCenterType);
570  break;
571  case 25:
572  coerceValue(value, myFixedCenter);
573  break;
574  case 26:
575  coerceValue(value, myColorramp);
576  break;
577  case 27:
578  coerceValue(value, myVectorScale);
579  break;
580  case 28:
581  coerceValue(value, myAttribName);
582  break;
583  case 29:
584  coerceValue(value, myUseTotalAttrib);
585  break;
586  case 30:
587  coerceValue(value, myTotalAttribName);
588  break;
589  case 31:
590  coerceValue(value, myUseRangeGroup);
591  break;
592  case 32:
593  coerceValue(value, myRangeGroup);
594  break;
595  case 33:
596  coerceValue(value, myBakeIntoOutput);
597  break;
598  case 34:
599  coerceValue(value, myUseRemapRange);
600  break;
601  case 35:
602  coerceValue(value, myRemapRange);
603  break;
604 
605  }
606  }
607 
608  bool isParmColorRamp(exint idx) const override
609  {
610  switch (idx)
611  {
612  case 26:
613  return true;
614  }
615  return false;
616  }
617 
618  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
619  { doGetParmValue(idx, instance, value); }
620  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
621  { doGetParmValue(idx, instance, value); }
622  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
623  { doGetParmValue(idx, instance, value); }
624  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
625  { doGetParmValue(idx, instance, value); }
626  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
627  { doGetParmValue(idx, instance, value); }
628  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
629  { doGetParmValue(idx, instance, value); }
630  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
631  { doGetParmValue(idx, instance, value); }
632  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
633  { doGetParmValue(idx, instance, value); }
634  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
635  { doGetParmValue(idx, instance, value); }
636  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
637  { doGetParmValue(idx, instance, value); }
638  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
639  { doGetParmValue(idx, instance, value); }
640 
641  template <typename T>
642  void
643  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
644  {
645  if (idx.size() < 1)
646  return;
647  UT_ASSERT(idx.size() == instance.size()+1);
648  if (idx.size() != instance.size()+1)
649  return;
650  switch (idx[0])
651  {
652  case 0:
653  coerceValue(myGroup, ( ( value ) ));
654  break;
655  case 1:
656  coerceValue(myGroupType, clampMinValue(0, clampMaxValue(1, value ) ));
657  break;
658  case 2:
659  coerceValue(myMeasure, clampMinValue(0, clampMaxValue(8, value ) ));
660  break;
661  case 3:
662  coerceValue(myCurvatureType, clampMinValue(0, clampMaxValue(3, value ) ));
663  break;
664  case 4:
665  coerceValue(myPrincipalType, clampMinValue(0, clampMaxValue(1, value ) ));
666  break;
667  case 5:
668  coerceValue(myPrincipalSign, clampMinValue(0, clampMaxValue(1, value ) ));
669  break;
670  case 6:
671  coerceValue(myPrincipalReportAs, clampMinValue(0, clampMaxValue(2, value ) ));
672  break;
673  case 7:
674  coerceValue(myUmbilicCutoff, clampMinValue(0, clampMaxValue(1, value ) ));
675  break;
676  case 8:
677  coerceValue(myIntegrationMode, clampMinValue(0, clampMaxValue(2, value ) ));
678  break;
679  case 9:
680  coerceValue(mySrcAttrib, ( ( value ) ));
681  break;
682  case 10:
683  coerceValue(mySrcComp, clampMinValue(0, clampMaxValue(3, value ) ));
684  break;
685  case 11:
686  coerceValue(myScaleNormalize, ( ( value ) ));
687  break;
688  case 12:
689  coerceValue(myIntegrationDomain, clampMinValue(0, clampMaxValue(2, value ) ));
690  break;
691  case 13:
692  coerceValue(myRefineToManifold, ( ( value ) ));
693  break;
694  case 14:
695  coerceValue(myPieceAttrib, ( ( value ) ));
696  break;
697  case 15:
698  coerceValue(myUseCustomPos, ( ( value ) ));
699  break;
700  case 16:
701  coerceValue(myPosAttrib, ( ( value ) ));
702  break;
703  case 17:
704  coerceValue(myUseRangeMin, ( ( value ) ));
705  break;
706  case 18:
707  coerceValue(myRangeMin, ( ( value ) ));
708  break;
709  case 19:
710  coerceValue(myUseRangeMax, ( ( value ) ));
711  break;
712  case 20:
713  coerceValue(myRangeMax, ( ( value ) ));
714  break;
715  case 21:
716  coerceValue(myUseCenterWidth, ( ( value ) ));
717  break;
718  case 22:
719  coerceValue(myWidth, clampMinValue(0, ( value ) ));
720  break;
721  case 23:
722  coerceValue(myWidthScale, clampMinValue(0, clampMaxValue(2, value ) ));
723  break;
724  case 24:
725  coerceValue(myCenterType, clampMinValue(0, clampMaxValue(2, value ) ));
726  break;
727  case 25:
728  coerceValue(myFixedCenter, ( ( value ) ));
729  break;
730  case 26:
731  coerceValue(myColorramp, clampMinValue(2, ( value ) ));
732  break;
733  case 27:
734  coerceValue(myVectorScale, clampMinValue(0, ( value ) ));
735  break;
736  case 28:
737  coerceValue(myAttribName, ( ( value ) ));
738  break;
739  case 29:
740  coerceValue(myUseTotalAttrib, ( ( value ) ));
741  break;
742  case 30:
743  coerceValue(myTotalAttribName, ( ( value ) ));
744  break;
745  case 31:
746  coerceValue(myUseRangeGroup, ( ( value ) ));
747  break;
748  case 32:
749  coerceValue(myRangeGroup, ( ( value ) ));
750  break;
751  case 33:
752  coerceValue(myBakeIntoOutput, ( ( value ) ));
753  break;
754  case 34:
755  coerceValue(myUseRemapRange, ( ( value ) ));
756  break;
757  case 35:
758  coerceValue(myRemapRange, ( ( value ) ));
759  break;
760 
761  }
762  }
763 
764  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
765  { doSetParmValue(idx, instance, value); }
766  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
767  { doSetParmValue(idx, instance, value); }
768  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
769  { doSetParmValue(idx, instance, value); }
770  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
771  { doSetParmValue(idx, instance, value); }
772  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
773  { doSetParmValue(idx, instance, value); }
774  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
775  { doSetParmValue(idx, instance, value); }
776  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
777  { doSetParmValue(idx, instance, value); }
778  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
779  { doSetParmValue(idx, instance, value); }
780  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
781  { doSetParmValue(idx, instance, value); }
782  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
783  { doSetParmValue(idx, instance, value); }
784  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
785  { doSetParmValue(idx, instance, value); }
786 
787  exint getNestNumParms(TempIndex idx) const override
788  {
789  if (idx.size() == 0)
790  return 36;
791  switch (idx[0])
792  {
793 
794  }
795  // Invalid
796  return 0;
797  }
798 
799  const char *getNestParmName(TempIndex fieldnum) const override
800  {
801  if (fieldnum.size() < 1)
802  return 0;
803  switch (fieldnum[0])
804  {
805  case 0:
806  return "group";
807  case 1:
808  return "grouptype";
809  case 2:
810  return "measure";
811  case 3:
812  return "curvaturetype";
813  case 4:
814  return "principaltype";
815  case 5:
816  return "principalsign";
817  case 6:
818  return "principalreportas";
819  case 7:
820  return "umbiliccutoff";
821  case 8:
822  return "integrationmode";
823  case 9:
824  return "srcattrib";
825  case 10:
826  return "srccomp";
827  case 11:
828  return "scalenormalize";
829  case 12:
830  return "integrationdomain";
831  case 13:
832  return "refinetomanifold";
833  case 14:
834  return "pieceattrib";
835  case 15:
836  return "usecustompos";
837  case 16:
838  return "posattrib";
839  case 17:
840  return "userangemin";
841  case 18:
842  return "rangemin";
843  case 19:
844  return "userangemax";
845  case 20:
846  return "rangemax";
847  case 21:
848  return "usecenterwidth";
849  case 22:
850  return "width";
851  case 23:
852  return "widthscale";
853  case 24:
854  return "centertype";
855  case 25:
856  return "fixedcenter";
857  case 26:
858  return "colorramp";
859  case 27:
860  return "vectorscale";
861  case 28:
862  return "attribname";
863  case 29:
864  return "usetotalattrib";
865  case 30:
866  return "totalattribname";
867  case 31:
868  return "userangegroup";
869  case 32:
870  return "rangegroup";
871  case 33:
872  return "bakeintooutput";
873  case 34:
874  return "useremaprange";
875  case 35:
876  return "remaprange";
877 
878  }
879  return 0;
880  }
881 
882  ParmType getNestParmType(TempIndex fieldnum) const override
883  {
884  if (fieldnum.size() < 1)
885  return PARM_UNSUPPORTED;
886  switch (fieldnum[0])
887  {
888  case 0:
889  return PARM_STRING;
890  case 1:
891  return PARM_INTEGER;
892  case 2:
893  return PARM_INTEGER;
894  case 3:
895  return PARM_INTEGER;
896  case 4:
897  return PARM_INTEGER;
898  case 5:
899  return PARM_INTEGER;
900  case 6:
901  return PARM_INTEGER;
902  case 7:
903  return PARM_FLOAT;
904  case 8:
905  return PARM_INTEGER;
906  case 9:
907  return PARM_STRING;
908  case 10:
909  return PARM_INTEGER;
910  case 11:
911  return PARM_INTEGER;
912  case 12:
913  return PARM_INTEGER;
914  case 13:
915  return PARM_INTEGER;
916  case 14:
917  return PARM_STRING;
918  case 15:
919  return PARM_INTEGER;
920  case 16:
921  return PARM_STRING;
922  case 17:
923  return PARM_INTEGER;
924  case 18:
925  return PARM_FLOAT;
926  case 19:
927  return PARM_INTEGER;
928  case 20:
929  return PARM_FLOAT;
930  case 21:
931  return PARM_INTEGER;
932  case 22:
933  return PARM_FLOAT;
934  case 23:
935  return PARM_INTEGER;
936  case 24:
937  return PARM_INTEGER;
938  case 25:
939  return PARM_FLOAT;
940  case 26:
941  return PARM_RAMP;
942  case 27:
943  return PARM_FLOAT;
944  case 28:
945  return PARM_STRING;
946  case 29:
947  return PARM_INTEGER;
948  case 30:
949  return PARM_STRING;
950  case 31:
951  return PARM_INTEGER;
952  case 32:
953  return PARM_STRING;
954  case 33:
955  return PARM_INTEGER;
956  case 34:
957  return PARM_INTEGER;
958  case 35:
959  return PARM_VECTOR2;
960 
961  }
962  return PARM_UNSUPPORTED;
963  }
964 
965  // Boiler plate to load individual types.
966  static void loadData(UT_IStream &is, int64 &v)
967  { is.bread(&v, 1); }
968  static void loadData(UT_IStream &is, bool &v)
969  { int64 iv; is.bread(&iv, 1); v = iv; }
970  static void loadData(UT_IStream &is, fpreal64 &v)
971  { is.bread<fpreal64>(&v, 1); }
972  static void loadData(UT_IStream &is, UT_Vector2D &v)
973  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
974  static void loadData(UT_IStream &is, UT_Vector3D &v)
975  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
976  is.bread<fpreal64>(&v.z(), 1); }
977  static void loadData(UT_IStream &is, UT_Vector4D &v)
978  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
979  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
980  static void loadData(UT_IStream &is, UT_Matrix2D &v)
981  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
982  static void loadData(UT_IStream &is, UT_Matrix3D &v)
983  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
984  static void loadData(UT_IStream &is, UT_Matrix4D &v)
985  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
986  static void loadData(UT_IStream &is, UT_Vector2I &v)
987  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
988  static void loadData(UT_IStream &is, UT_Vector3I &v)
989  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
990  is.bread<int64>(&v.z(), 1); }
991  static void loadData(UT_IStream &is, UT_Vector4I &v)
992  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
993  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
995  { is.bread(v); }
997  { UT_StringHolder rampdata;
998  loadData(is, rampdata);
999  if (rampdata.isstring())
1000  {
1001  v.reset(new UT_Ramp());
1002  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
1003  v->load(istr);
1004  }
1005  else v.reset();
1006  }
1009  loadData(is, data);
1010  if (data.isstring())
1011  {
1012  // Find the data type.
1013  const char *colon = UT_StringWrap(data).findChar(':');
1014  if (colon)
1015  {
1016  int typelen = colon - data.buffer();
1018  type.strncpy(data.buffer(), typelen);
1019  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
1020 
1021  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
1022  }
1023  }
1024  else v.reset();
1025  }
1026 
1027  static void saveData(std::ostream &os, int64 v)
1028  { UTwrite(os, &v); }
1029  static void saveData(std::ostream &os, bool v)
1030  { int64 iv = v; UTwrite(os, &iv); }
1031  static void saveData(std::ostream &os, fpreal64 v)
1032  { UTwrite<fpreal64>(os, &v); }
1033  static void saveData(std::ostream &os, UT_Vector2D v)
1034  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
1035  static void saveData(std::ostream &os, UT_Vector3D v)
1036  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
1037  UTwrite<fpreal64>(os, &v.z()); }
1038  static void saveData(std::ostream &os, UT_Vector4D v)
1039  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
1040  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
1041  static void saveData(std::ostream &os, UT_Matrix2D v)
1043  static void saveData(std::ostream &os, UT_Matrix3D v)
1045  static void saveData(std::ostream &os, UT_Matrix4D v)
1047  static void saveData(std::ostream &os, UT_StringHolder s)
1048  { UT_StringWrap(s).saveBinary(os); }
1049  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
1051  UT_OStringStream ostr;
1052  if (s) s->save(ostr);
1053  result = ostr.str();
1054  saveData(os, result);
1055  }
1056  static void saveData(std::ostream &os, PRM_DataItemHandle s)
1058  UT_OStringStream ostr;
1059  if (s)
1060  {
1061  ostr << s->getDataTypeToken();
1062  ostr << ":";
1063  s->saveBinary(ostr);
1064  }
1065  result = ostr.str();
1066  saveData(os, result);
1067  }
1068 
1069 
1070  void save(std::ostream &os) const
1071  {
1072  int32 v = version();
1073  UTwrite(os, &v);
1074  saveData(os, myGroup);
1075  saveData(os, myGroupType);
1076  saveData(os, myMeasure);
1077  saveData(os, myCurvatureType);
1078  saveData(os, myPrincipalType);
1079  saveData(os, myPrincipalSign);
1080  saveData(os, myPrincipalReportAs);
1081  saveData(os, myUmbilicCutoff);
1082  saveData(os, myIntegrationMode);
1083  saveData(os, mySrcAttrib);
1084  saveData(os, mySrcComp);
1085  saveData(os, myScaleNormalize);
1086  saveData(os, myIntegrationDomain);
1087  saveData(os, myRefineToManifold);
1088  saveData(os, myPieceAttrib);
1089  saveData(os, myUseCustomPos);
1090  saveData(os, myPosAttrib);
1091  saveData(os, myUseRangeMin);
1092  saveData(os, myRangeMin);
1093  saveData(os, myUseRangeMax);
1094  saveData(os, myRangeMax);
1095  saveData(os, myUseCenterWidth);
1096  saveData(os, myWidth);
1097  saveData(os, myWidthScale);
1098  saveData(os, myCenterType);
1099  saveData(os, myFixedCenter);
1100  saveData(os, myColorramp);
1101  saveData(os, myVectorScale);
1102  saveData(os, myAttribName);
1103  saveData(os, myUseTotalAttrib);
1104  saveData(os, myTotalAttribName);
1105  saveData(os, myUseRangeGroup);
1106  saveData(os, myRangeGroup);
1107  saveData(os, myBakeIntoOutput);
1108  saveData(os, myUseRemapRange);
1109  saveData(os, myRemapRange);
1110 
1111  }
1112 
1113  bool load(UT_IStream &is)
1114  {
1115  int32 v;
1116  is.bread(&v, 1);
1117  if (version() != v)
1118  {
1119  // Fail incompatible versions
1120  return false;
1121  }
1122  loadData(is, myGroup);
1123  loadData(is, myGroupType);
1124  loadData(is, myMeasure);
1125  loadData(is, myCurvatureType);
1126  loadData(is, myPrincipalType);
1127  loadData(is, myPrincipalSign);
1128  loadData(is, myPrincipalReportAs);
1129  loadData(is, myUmbilicCutoff);
1130  loadData(is, myIntegrationMode);
1131  loadData(is, mySrcAttrib);
1132  loadData(is, mySrcComp);
1133  loadData(is, myScaleNormalize);
1134  loadData(is, myIntegrationDomain);
1135  loadData(is, myRefineToManifold);
1136  loadData(is, myPieceAttrib);
1137  loadData(is, myUseCustomPos);
1138  loadData(is, myPosAttrib);
1139  loadData(is, myUseRangeMin);
1140  loadData(is, myRangeMin);
1141  loadData(is, myUseRangeMax);
1142  loadData(is, myRangeMax);
1143  loadData(is, myUseCenterWidth);
1144  loadData(is, myWidth);
1145  loadData(is, myWidthScale);
1146  loadData(is, myCenterType);
1147  loadData(is, myFixedCenter);
1148  loadData(is, myColorramp);
1149  loadData(is, myVectorScale);
1150  loadData(is, myAttribName);
1151  loadData(is, myUseTotalAttrib);
1152  loadData(is, myTotalAttribName);
1153  loadData(is, myUseRangeGroup);
1154  loadData(is, myRangeGroup);
1155  loadData(is, myBakeIntoOutput);
1156  loadData(is, myUseRemapRange);
1157  loadData(is, myRemapRange);
1158 
1159  return true;
1160  }
1161 
1162  const UT_StringHolder & getGroup() const { return myGroup; }
1163  void setGroup(const UT_StringHolder & val) { myGroup = val; }
1165  {
1166  SOP_Node *thissop = cookparms.getNode();
1167  if (!thissop) return getGroup();
1169  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
1170  return result;
1171  }
1172  GroupType getGroupType() const { return GroupType(myGroupType); }
1173  void setGroupType(GroupType val) { myGroupType = int64(val); }
1175  {
1176  SOP_Node *thissop = cookparms.getNode();
1177  if (!thissop) return getGroupType();
1178  int64 result;
1179  OP_Utils::evalOpParm(result, thissop, "grouptype", cookparms.getCookTime(), 0);
1180  return GroupType(result);
1181  }
1182  Measure getMeasure() const { return Measure(myMeasure); }
1183  void setMeasure(Measure val) { myMeasure = int64(val); }
1185  {
1186  SOP_Node *thissop = cookparms.getNode();
1187  if (!thissop) return getMeasure();
1188  int64 result;
1189  OP_Utils::evalOpParm(result, thissop, "measure", cookparms.getCookTime(), 0);
1190  return Measure(result);
1191  }
1192  CurvatureType getCurvatureType() const { return CurvatureType(myCurvatureType); }
1193  void setCurvatureType(CurvatureType val) { myCurvatureType = int64(val); }
1195  {
1196  SOP_Node *thissop = cookparms.getNode();
1197  if (!thissop) return getCurvatureType();
1198  int64 result;
1199  OP_Utils::evalOpParm(result, thissop, "curvaturetype", cookparms.getCookTime(), 0);
1200  return CurvatureType(result);
1201  }
1202  PrincipalType getPrincipalType() const { return PrincipalType(myPrincipalType); }
1203  void setPrincipalType(PrincipalType val) { myPrincipalType = int64(val); }
1205  {
1206  SOP_Node *thissop = cookparms.getNode();
1207  if (!thissop) return getPrincipalType();
1208  int64 result;
1209  OP_Utils::evalOpParm(result, thissop, "principaltype", cookparms.getCookTime(), 0);
1210  return PrincipalType(result);
1211  }
1212  PrincipalSign getPrincipalSign() const { return PrincipalSign(myPrincipalSign); }
1213  void setPrincipalSign(PrincipalSign val) { myPrincipalSign = int64(val); }
1215  {
1216  SOP_Node *thissop = cookparms.getNode();
1217  if (!thissop) return getPrincipalSign();
1218  int64 result;
1219  OP_Utils::evalOpParm(result, thissop, "principalsign", cookparms.getCookTime(), 0);
1220  return PrincipalSign(result);
1221  }
1222  PrincipalReportAs getPrincipalReportAs() const { return PrincipalReportAs(myPrincipalReportAs); }
1223  void setPrincipalReportAs(PrincipalReportAs val) { myPrincipalReportAs = int64(val); }
1225  {
1226  SOP_Node *thissop = cookparms.getNode();
1227  if (!thissop) return getPrincipalReportAs();
1228  int64 result;
1229  OP_Utils::evalOpParm(result, thissop, "principalreportas", cookparms.getCookTime(), 0);
1230  return PrincipalReportAs(result);
1231  }
1232  fpreal64 getUmbilicCutoff() const { return myUmbilicCutoff; }
1233  void setUmbilicCutoff(fpreal64 val) { myUmbilicCutoff = val; }
1235  {
1236  SOP_Node *thissop = cookparms.getNode();
1237  if (!thissop) return getUmbilicCutoff();
1238  fpreal64 result;
1239  OP_Utils::evalOpParm(result, thissop, "umbiliccutoff", cookparms.getCookTime(), 0);
1240  return result;
1241  }
1242  IntegrationMode getIntegrationMode() const { return IntegrationMode(myIntegrationMode); }
1243  void setIntegrationMode(IntegrationMode val) { myIntegrationMode = int64(val); }
1245  {
1246  SOP_Node *thissop = cookparms.getNode();
1247  if (!thissop) return getIntegrationMode();
1248  int64 result;
1249  OP_Utils::evalOpParm(result, thissop, "integrationmode", cookparms.getCookTime(), 0);
1250  return IntegrationMode(result);
1251  }
1252  const UT_StringHolder & getSrcAttrib() const { return mySrcAttrib; }
1253  void setSrcAttrib(const UT_StringHolder & val) { mySrcAttrib = val; }
1255  {
1256  SOP_Node *thissop = cookparms.getNode();
1257  if (!thissop) return getSrcAttrib();
1259  OP_Utils::evalOpParm(result, thissop, "srcattrib", cookparms.getCookTime(), 0);
1260  return result;
1261  }
1262  SrcComp getSrcComp() const { return SrcComp(mySrcComp); }
1263  void setSrcComp(SrcComp val) { mySrcComp = int64(val); }
1265  {
1266  SOP_Node *thissop = cookparms.getNode();
1267  if (!thissop) return getSrcComp();
1268  int64 result;
1269  OP_Utils::evalOpParm(result, thissop, "srccomp", cookparms.getCookTime(), 0);
1270  return SrcComp(result);
1271  }
1272  bool getScaleNormalize() const { return myScaleNormalize; }
1273  void setScaleNormalize(bool val) { myScaleNormalize = val; }
1274  bool opScaleNormalize(const SOP_NodeVerb::CookParms &cookparms) const
1275  {
1276  SOP_Node *thissop = cookparms.getNode();
1277  if (!thissop) return getScaleNormalize();
1278  bool result;
1279  OP_Utils::evalOpParm(result, thissop, "scalenormalize", cookparms.getCookTime(), 0);
1280  return result;
1281  }
1282  IntegrationDomain getIntegrationDomain() const { return IntegrationDomain(myIntegrationDomain); }
1283  void setIntegrationDomain(IntegrationDomain val) { myIntegrationDomain = int64(val); }
1285  {
1286  SOP_Node *thissop = cookparms.getNode();
1287  if (!thissop) return getIntegrationDomain();
1288  int64 result;
1289  OP_Utils::evalOpParm(result, thissop, "integrationdomain", cookparms.getCookTime(), 0);
1290  return IntegrationDomain(result);
1291  }
1292  bool getRefineToManifold() const { return myRefineToManifold; }
1293  void setRefineToManifold(bool val) { myRefineToManifold = val; }
1294  bool opRefineToManifold(const SOP_NodeVerb::CookParms &cookparms) const
1295  {
1296  SOP_Node *thissop = cookparms.getNode();
1297  if (!thissop) return getRefineToManifold();
1298  bool result;
1299  OP_Utils::evalOpParm(result, thissop, "refinetomanifold", cookparms.getCookTime(), 0);
1300  return result;
1301  }
1302  const UT_StringHolder & getPieceAttrib() const { return myPieceAttrib; }
1303  void setPieceAttrib(const UT_StringHolder & val) { myPieceAttrib = val; }
1305  {
1306  SOP_Node *thissop = cookparms.getNode();
1307  if (!thissop) return getPieceAttrib();
1309  OP_Utils::evalOpParm(result, thissop, "pieceattrib", cookparms.getCookTime(), 0);
1310  return result;
1311  }
1312  bool getUseCustomPos() const { return myUseCustomPos; }
1313  void setUseCustomPos(bool val) { myUseCustomPos = val; }
1314  bool opUseCustomPos(const SOP_NodeVerb::CookParms &cookparms) const
1315  {
1316  SOP_Node *thissop = cookparms.getNode();
1317  if (!thissop) return getUseCustomPos();
1318  bool result;
1319  OP_Utils::evalOpParm(result, thissop, "usecustompos", cookparms.getCookTime(), 0);
1320  return result;
1321  }
1322  const UT_StringHolder & getPosAttrib() const { return myPosAttrib; }
1323  void setPosAttrib(const UT_StringHolder & val) { myPosAttrib = val; }
1325  {
1326  SOP_Node *thissop = cookparms.getNode();
1327  if (!thissop) return getPosAttrib();
1329  OP_Utils::evalOpParm(result, thissop, "posattrib", cookparms.getCookTime(), 0);
1330  return result;
1331  }
1332  bool getUseRangeMin() const { return myUseRangeMin; }
1333  void setUseRangeMin(bool val) { myUseRangeMin = val; }
1334  bool opUseRangeMin(const SOP_NodeVerb::CookParms &cookparms) const
1335  {
1336  SOP_Node *thissop = cookparms.getNode();
1337  if (!thissop) return getUseRangeMin();
1338  bool result;
1339  OP_Utils::evalOpParm(result, thissop, "userangemin", cookparms.getCookTime(), 0);
1340  return result;
1341  }
1342  fpreal64 getRangeMin() const { return myRangeMin; }
1343  void setRangeMin(fpreal64 val) { myRangeMin = val; }
1345  {
1346  SOP_Node *thissop = cookparms.getNode();
1347  if (!thissop) return getRangeMin();
1348  fpreal64 result;
1349  OP_Utils::evalOpParm(result, thissop, "rangemin", cookparms.getCookTime(), 0);
1350  return result;
1351  }
1352  bool getUseRangeMax() const { return myUseRangeMax; }
1353  void setUseRangeMax(bool val) { myUseRangeMax = val; }
1354  bool opUseRangeMax(const SOP_NodeVerb::CookParms &cookparms) const
1355  {
1356  SOP_Node *thissop = cookparms.getNode();
1357  if (!thissop) return getUseRangeMax();
1358  bool result;
1359  OP_Utils::evalOpParm(result, thissop, "userangemax", cookparms.getCookTime(), 0);
1360  return result;
1361  }
1362  fpreal64 getRangeMax() const { return myRangeMax; }
1363  void setRangeMax(fpreal64 val) { myRangeMax = val; }
1365  {
1366  SOP_Node *thissop = cookparms.getNode();
1367  if (!thissop) return getRangeMax();
1368  fpreal64 result;
1369  OP_Utils::evalOpParm(result, thissop, "rangemax", cookparms.getCookTime(), 0);
1370  return result;
1371  }
1372  bool getUseCenterWidth() const { return myUseCenterWidth; }
1373  void setUseCenterWidth(bool val) { myUseCenterWidth = val; }
1374  bool opUseCenterWidth(const SOP_NodeVerb::CookParms &cookparms) const
1375  {
1376  SOP_Node *thissop = cookparms.getNode();
1377  if (!thissop) return getUseCenterWidth();
1378  bool result;
1379  OP_Utils::evalOpParm(result, thissop, "usecenterwidth", cookparms.getCookTime(), 0);
1380  return result;
1381  }
1382  fpreal64 getWidth() const { return myWidth; }
1383  void setWidth(fpreal64 val) { myWidth = val; }
1384  fpreal64 opWidth(const SOP_NodeVerb::CookParms &cookparms) const
1385  {
1386  SOP_Node *thissop = cookparms.getNode();
1387  if (!thissop) return getWidth();
1388  fpreal64 result;
1389  OP_Utils::evalOpParm(result, thissop, "width", cookparms.getCookTime(), 0);
1390  return result;
1391  }
1392  WidthScale getWidthScale() const { return WidthScale(myWidthScale); }
1393  void setWidthScale(WidthScale val) { myWidthScale = int64(val); }
1395  {
1396  SOP_Node *thissop = cookparms.getNode();
1397  if (!thissop) return getWidthScale();
1398  int64 result;
1399  OP_Utils::evalOpParm(result, thissop, "widthscale", cookparms.getCookTime(), 0);
1400  return WidthScale(result);
1401  }
1402  CenterType getCenterType() const { return CenterType(myCenterType); }
1403  void setCenterType(CenterType val) { myCenterType = int64(val); }
1405  {
1406  SOP_Node *thissop = cookparms.getNode();
1407  if (!thissop) return getCenterType();
1408  int64 result;
1409  OP_Utils::evalOpParm(result, thissop, "centertype", cookparms.getCookTime(), 0);
1410  return CenterType(result);
1411  }
1412  fpreal64 getFixedCenter() const { return myFixedCenter; }
1413  void setFixedCenter(fpreal64 val) { myFixedCenter = val; }
1415  {
1416  SOP_Node *thissop = cookparms.getNode();
1417  if (!thissop) return getFixedCenter();
1418  fpreal64 result;
1419  OP_Utils::evalOpParm(result, thissop, "fixedcenter", cookparms.getCookTime(), 0);
1420  return result;
1421  }
1422  UT_SharedPtr<UT_Ramp> getColorramp() const { return myColorramp; }
1423  void setColorramp(UT_SharedPtr<UT_Ramp> val) { myColorramp = val; }
1425  {
1426  SOP_Node *thissop = cookparms.getNode();
1427  if (!thissop) return getColorramp();
1429  OP_Utils::evalOpParm(result, thissop, "colorramp", cookparms.getCookTime(), 0);
1430  return result;
1431  }
1432  fpreal64 getVectorScale() const { return myVectorScale; }
1433  void setVectorScale(fpreal64 val) { myVectorScale = val; }
1435  {
1436  SOP_Node *thissop = cookparms.getNode();
1437  if (!thissop) return getVectorScale();
1438  fpreal64 result;
1439  OP_Utils::evalOpParm(result, thissop, "vectorscale", cookparms.getCookTime(), 0);
1440  return result;
1441  }
1442  const UT_StringHolder & getAttribName() const { return myAttribName; }
1443  void setAttribName(const UT_StringHolder & val) { myAttribName = val; }
1445  {
1446  SOP_Node *thissop = cookparms.getNode();
1447  if (!thissop) return getAttribName();
1449  OP_Utils::evalOpParm(result, thissop, "attribname", cookparms.getCookTime(), 0);
1450  return result;
1451  }
1452  bool getUseTotalAttrib() const { return myUseTotalAttrib; }
1453  void setUseTotalAttrib(bool val) { myUseTotalAttrib = val; }
1454  bool opUseTotalAttrib(const SOP_NodeVerb::CookParms &cookparms) const
1455  {
1456  SOP_Node *thissop = cookparms.getNode();
1457  if (!thissop) return getUseTotalAttrib();
1458  bool result;
1459  OP_Utils::evalOpParm(result, thissop, "usetotalattrib", cookparms.getCookTime(), 0);
1460  return result;
1461  }
1462  const UT_StringHolder & getTotalAttribName() const { return myTotalAttribName; }
1463  void setTotalAttribName(const UT_StringHolder & val) { myTotalAttribName = val; }
1465  {
1466  SOP_Node *thissop = cookparms.getNode();
1467  if (!thissop) return getTotalAttribName();
1469  OP_Utils::evalOpParm(result, thissop, "totalattribname", cookparms.getCookTime(), 0);
1470  return result;
1471  }
1472  bool getUseRangeGroup() const { return myUseRangeGroup; }
1473  void setUseRangeGroup(bool val) { myUseRangeGroup = val; }
1474  bool opUseRangeGroup(const SOP_NodeVerb::CookParms &cookparms) const
1475  {
1476  SOP_Node *thissop = cookparms.getNode();
1477  if (!thissop) return getUseRangeGroup();
1478  bool result;
1479  OP_Utils::evalOpParm(result, thissop, "userangegroup", cookparms.getCookTime(), 0);
1480  return result;
1481  }
1482  const UT_StringHolder & getRangeGroup() const { return myRangeGroup; }
1483  void setRangeGroup(const UT_StringHolder & val) { myRangeGroup = val; }
1485  {
1486  SOP_Node *thissop = cookparms.getNode();
1487  if (!thissop) return getRangeGroup();
1489  OP_Utils::evalOpParm(result, thissop, "rangegroup", cookparms.getCookTime(), 0);
1490  return result;
1491  }
1492  bool getBakeIntoOutput() const { return myBakeIntoOutput; }
1493  void setBakeIntoOutput(bool val) { myBakeIntoOutput = val; }
1494  bool opBakeIntoOutput(const SOP_NodeVerb::CookParms &cookparms) const
1495  {
1496  SOP_Node *thissop = cookparms.getNode();
1497  if (!thissop) return getBakeIntoOutput();
1498  bool result;
1499  OP_Utils::evalOpParm(result, thissop, "bakeintooutput", cookparms.getCookTime(), 0);
1500  return result;
1501  }
1502  bool getUseRemapRange() const { return myUseRemapRange; }
1503  void setUseRemapRange(bool val) { myUseRemapRange = val; }
1504  bool opUseRemapRange(const SOP_NodeVerb::CookParms &cookparms) const
1505  {
1506  SOP_Node *thissop = cookparms.getNode();
1507  if (!thissop) return getUseRemapRange();
1508  bool result;
1509  OP_Utils::evalOpParm(result, thissop, "useremaprange", cookparms.getCookTime(), 0);
1510  return result;
1511  }
1512  UT_Vector2D getRemapRange() const { return myRemapRange; }
1513  void setRemapRange(UT_Vector2D val) { myRemapRange = val; }
1515  {
1516  SOP_Node *thissop = cookparms.getNode();
1517  if (!thissop) return getRemapRange();
1519  OP_Utils::evalOpParm(result, thissop, "remaprange", cookparms.getCookTime(), 0);
1520  return result;
1521  }
1522 
1523 private:
1524  UT_StringHolder myGroup;
1525  int64 myGroupType;
1526  int64 myMeasure;
1527  int64 myCurvatureType;
1528  int64 myPrincipalType;
1529  int64 myPrincipalSign;
1530  int64 myPrincipalReportAs;
1531  fpreal64 myUmbilicCutoff;
1532  int64 myIntegrationMode;
1533  UT_StringHolder mySrcAttrib;
1534  int64 mySrcComp;
1535  bool myScaleNormalize;
1536  int64 myIntegrationDomain;
1537  bool myRefineToManifold;
1538  UT_StringHolder myPieceAttrib;
1539  bool myUseCustomPos;
1540  UT_StringHolder myPosAttrib;
1541  bool myUseRangeMin;
1542  fpreal64 myRangeMin;
1543  bool myUseRangeMax;
1544  fpreal64 myRangeMax;
1545  bool myUseCenterWidth;
1546  fpreal64 myWidth;
1547  int64 myWidthScale;
1548  int64 myCenterType;
1549  fpreal64 myFixedCenter;
1550  UT_SharedPtr<UT_Ramp> myColorramp;
1551  fpreal64 myVectorScale;
1552  UT_StringHolder myAttribName;
1553  bool myUseTotalAttrib;
1554  UT_StringHolder myTotalAttribName;
1555  bool myUseRangeGroup;
1556  UT_StringHolder myRangeGroup;
1557  bool myBakeIntoOutput;
1558  bool myUseRemapRange;
1559  UT_Vector2D myRemapRange;
1560 
1561 };
const UT_StringHolder & getPieceAttrib() const
Measure opMeasure(const SOP_NodeVerb::CookParms &cookparms) const
CenterType opCenterType(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, bool v)
bool opUseRangeGroup(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getAttribName() const
static void loadData(UT_IStream &is, UT_Matrix4D &v)
UT_StringHolder opPieceAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
static void loadData(UT_IStream &is, UT_Vector3D &v)
PrincipalType getPrincipalType() const
SrcComp opSrcComp(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
void setWidth(fpreal64 val)
static void loadData(UT_IStream &is, bool &v)
fpreal64 opWidth(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, PRM_DataItemHandle s)
void setPrincipalReportAs(PrincipalReportAs val)
static void loadData(UT_IStream &is, UT_Vector2D &v)
void setRangeMax(fpreal64 val)
bool opRefineToManifold(const SOP_NodeVerb::CookParms &cookparms) const
bool opBakeIntoOutput(const SOP_NodeVerb::CookParms &cookparms) const
UT_SharedPtr< UT_Ramp > getColorramp() const
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
CurvatureType getCurvatureType() const
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
bool opUseRangeMin(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Matrix2D v)
exint bread(int32 *buffer, exint asize=1)
GLboolean * data
Definition: glcorearb.h:131
GT_API const UT_StringHolder time
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector4.h:493
const GLdouble * v
Definition: glcorearb.h:837
fpreal getTime() const
Definition: OP_Context.h:62
UT_Vector2T< fpreal64 > UT_Vector2D
WidthScale opWidthScale(const SOP_NodeVerb::CookParms &cookparms) const
IntegrationMode opIntegrationMode(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
const UT_StringHolder & getTotalAttribName() const
static void loadData(UT_IStream &is, UT_Matrix3D &v)
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
const OP_Context & context() const
Definition: OP_NodeParms.h:97
void setIntegrationMode(IntegrationMode val)
exint getNestNumParms(TempIndex idx) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:667
int64 exint
Definition: SYS_Types.h:125
SYS_FORCE_INLINE const char * buffer() const
GLdouble s
Definition: glad.h:3009
PrincipalReportAs opPrincipalReportAs(const SOP_NodeVerb::CookParms &cookparms) const
An output stream object that owns its own string buffer storage.
UT_StringHolder opGroup(const SOP_NodeVerb::CookParms &cookparms) const
ParmType getNestParmType(TempIndex fieldnum) const override
IntegrationDomain opIntegrationDomain(const SOP_NodeVerb::CookParms &cookparms) const
CenterType getCenterType() const
UT_SharedPtr< UT_Ramp > opColorramp(const SOP_NodeVerb::CookParms &cookparms) const
**But if you need a result
Definition: thread.h:613
fpreal64 opVectorScale(const SOP_NodeVerb::CookParms &cookparms) const
void setUmbilicCutoff(fpreal64 val)
static void saveData(std::ostream &os, UT_Vector2D v)
IntegrationDomain getIntegrationDomain() const
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
exint nodeIdx() const
Definition: OP_NodeParms.h:95
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
GroupType getGroupType() const
CurvatureType opCurvatureType(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getSrcAttrib() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
void setPosAttrib(const UT_StringHolder &val)
IntegrationMode getIntegrationMode() const
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
void setRefineToManifold(bool val)
bool isParmColorRamp(exint idx) const override
bool opUseCenterWidth(const SOP_NodeVerb::CookParms &cookparms) const
void setIntegrationDomain(IntegrationDomain val)
UT_StringHolder opRangeGroup(const SOP_NodeVerb::CookParms &cookparms) const
double fpreal64
Definition: SYS_Types.h:201
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
bool opUseRemapRange(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opSrcAttrib(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE UT_StringHolder getToken(GroupType enum_value)
PrincipalType opPrincipalType(const SOP_NodeVerb::CookParms &cookparms) const
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
static void loadData(UT_IStream &is, UT_Vector2I &v)
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
UT_Vector2D getRemapRange() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
bool opUseTotalAttrib(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, fpreal64 &v)
void setMeasure(Measure val)
void setVectorScale(fpreal64 val)
exint length() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
void setRemapRange(UT_Vector2D val)
void setRangeGroup(const UT_StringHolder &val)
SYS_FORCE_INLINE const char * buffer() const
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:495
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
static void loadData(UT_IStream &is, UT_StringHolder &v)
PrincipalSign getPrincipalSign() const
void setPrincipalType(PrincipalType val)
void setGroup(const UT_StringHolder &val)
PrincipalSign opPrincipalSign(const SOP_NodeVerb::CookParms &cookparms) const
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
#define SYS_FORCE_INLINE
Definition: SYS_Inline.h:45
void setTotalAttribName(const UT_StringHolder &val)
void copyFrom(const OP_NodeParms *src) override
bool operator==(const SOP_Measure_2_0Parms &src) const
void setColorramp(UT_SharedPtr< UT_Ramp > val)
bool opUseRangeMax(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opFixedCenter(const SOP_NodeVerb::CookParms &cookparms) const
void setPieceAttrib(const UT_StringHolder &val)
static void saveData(std::ostream &os, fpreal64 v)
long long int64
Definition: SYS_Types.h:116
fpreal64 opRangeMin(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opRangeMax(const SOP_NodeVerb::CookParms &cookparms) const
bool load(UT_IStream &is)
static void loadData(UT_IStream &is, UT_Vector3I &v)
static void loadData(UT_IStream &is, UT_Vector4D &v)
fpreal64 getVectorScale() const
void setAttribName(const UT_StringHolder &val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
static void saveData(std::ostream &os, UT_Vector4D v)
void setRangeMin(fpreal64 val)
void save(std::ostream &os) const
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
fpreal64 getRangeMin() const
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:296
void setFixedCenter(fpreal64 val)
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
static void saveData(std::ostream &os, UT_Matrix4D v)
UT_Vector2D opRemapRange(const SOP_NodeVerb::CookParms &cookparms) const
GT_API const UT_StringHolder version
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
static void loadData(UT_IStream &is, UT_Vector4I &v)
bool opUseCustomPos(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
static void saveData(std::ostream &os, UT_Matrix3D v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
const char * getNestParmName(TempIndex fieldnum) const override
UT_StringHolder opPosAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
fpreal64 fpreal
Definition: SYS_Types.h:277
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
void setGroupType(GroupType val)
WidthScale getWidthScale() const
void setCurvatureType(CurvatureType val)
LeafData & operator=(const LeafData &)=delete
Utility class for containing a color ramp.
Definition: UT_Ramp.h:92
static void loadData(UT_IStream &is, int64 &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
GLuint GLfloat * val
Definition: glcorearb.h:1608
#define SOP_API
Definition: SOP_API.h:10
static void saveData(std::ostream &os, UT_Vector3D v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:361
const UT_StringHolder & getRangeGroup() const
void setPrincipalSign(PrincipalSign val)
const char * findChar(int c) const
Definition: UT_String.h:1395
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
fpreal64 opUmbilicCutoff(const SOP_NodeVerb::CookParms &cookparms) const
Definition: core.h:1131
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
UT_StringHolder opTotalAttribName(const SOP_NodeVerb::CookParms &cookparms) const
GLboolean r
Definition: glcorearb.h:1222
fpreal64 getFixedCenter() const
UT_StringHolder opAttribName(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getUmbilicCutoff() const
void setCenterType(CenterType val)
bool opScaleNormalize(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getGroup() const
PrincipalReportAs getPrincipalReportAs() const
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
type
Definition: core.h:1059
static void saveData(std::ostream &os, UT_StringHolder s)
void setSrcAttrib(const UT_StringHolder &val)
static void loadData(UT_IStream &is, UT_Matrix2D &v)
fpreal64 getRangeMax() const
bool operator!=(const SOP_Measure_2_0Parms &src) const
static void saveData(std::ostream &os, int64 v)
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: PRM_Parm.h:97
void loadFromOpSubclass(const LoadParms &loadparms) override
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
SYS_FORCE_INLINE bool isstring() const
const UT_StringHolder & getPosAttrib() const
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
void setSrcComp(SrcComp val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
GLenum src
Definition: glcorearb.h:1793
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663
GroupType opGroupType(const SOP_NodeVerb::CookParms &cookparms) const
void setWidthScale(WidthScale val)