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 <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_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_Ramp::buildFromDefault("1pos ( 0 ) 1c ( 0 0 1 ) 1interp ( linear ) 2pos ( 0.5 ) 2c ( 1 1 1 ) 2interp ( linear ) 3pos ( 1.0 ) 3c ( 1 0 0 ) 3interp ( linear )");
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  myDivideElementArea = false;
291 
292  }
293 
294  explicit SOP_Measure_2_0Parms(const SOP_Measure_2_0Parms &) = default;
296  SOP_Measure_2_0Parms(SOP_Measure_2_0Parms &&) noexcept = default;
297  SOP_Measure_2_0Parms &operator=(SOP_Measure_2_0Parms &&) noexcept = default;
298 
299  ~SOP_Measure_2_0Parms() override {}
300 
302  {
303  if (myGroup != src.myGroup) return false;
304  if (myGroupType != src.myGroupType) return false;
305  if (myMeasure != src.myMeasure) return false;
306  if (myCurvatureType != src.myCurvatureType) return false;
307  if (myPrincipalType != src.myPrincipalType) return false;
308  if (myPrincipalSign != src.myPrincipalSign) return false;
309  if (myPrincipalReportAs != src.myPrincipalReportAs) return false;
310  if (myUmbilicCutoff != src.myUmbilicCutoff) return false;
311  if (myIntegrationMode != src.myIntegrationMode) return false;
312  if (mySrcAttrib != src.mySrcAttrib) return false;
313  if (mySrcComp != src.mySrcComp) return false;
314  if (myScaleNormalize != src.myScaleNormalize) return false;
315  if (myIntegrationDomain != src.myIntegrationDomain) return false;
316  if (myRefineToManifold != src.myRefineToManifold) return false;
317  if (myPieceAttrib != src.myPieceAttrib) return false;
318  if (myUseCustomPos != src.myUseCustomPos) return false;
319  if (myPosAttrib != src.myPosAttrib) return false;
320  if (myUseRangeMin != src.myUseRangeMin) return false;
321  if (myRangeMin != src.myRangeMin) return false;
322  if (myUseRangeMax != src.myUseRangeMax) return false;
323  if (myRangeMax != src.myRangeMax) return false;
324  if (myUseCenterWidth != src.myUseCenterWidth) return false;
325  if (myWidth != src.myWidth) return false;
326  if (myWidthScale != src.myWidthScale) return false;
327  if (myCenterType != src.myCenterType) return false;
328  if (myFixedCenter != src.myFixedCenter) return false;
329  if (myColorramp != src.myColorramp)
330  { if (!myColorramp || !src.myColorramp || !(*myColorramp == *src.myColorramp)) return false; }
331  if (myVectorScale != src.myVectorScale) return false;
332  if (myAttribName != src.myAttribName) return false;
333  if (myUseTotalAttrib != src.myUseTotalAttrib) return false;
334  if (myTotalAttribName != src.myTotalAttribName) return false;
335  if (myUseRangeGroup != src.myUseRangeGroup) return false;
336  if (myRangeGroup != src.myRangeGroup) return false;
337  if (myBakeIntoOutput != src.myBakeIntoOutput) return false;
338  if (myUseRemapRange != src.myUseRemapRange) return false;
339  if (myRemapRange != src.myRemapRange) return false;
340  if (myDivideElementArea != src.myDivideElementArea) return false;
341 
342 
343  if (baseGetSignature() != src.baseGetSignature()) return false;
344 
345  return true;
346  }
348  {
349  return !operator==(src);
350  }
362 
363 
364 
365  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
366  {
367  myGroup = ""_UTsh;
368  if (true)
369  graph->evalOpParm(myGroup, nodeidx, "group", time, graph->isDirect()?nullptr:depnode);
370  myGroupType = 1;
371  if (true)
372  graph->evalOpParm(myGroupType, nodeidx, "grouptype", time, graph->isDirect()?nullptr:depnode);
373  myMeasure = 1;
374  if (true)
375  graph->evalOpParm(myMeasure, nodeidx, "measure", time, graph->isDirect()?nullptr:depnode);
376  myCurvatureType = 3;
377  if (true && ( (true&&!(((int64(getMeasure())!=4)))) ) )
378  graph->evalOpParm(myCurvatureType, nodeidx, "curvaturetype", time, graph->isDirect()?nullptr:depnode);
379  myPrincipalType = 0;
380  if (true && ( (true&&!(((int64(getMeasure())!=4))||((int64(getCurvatureType())!=2)))) ) )
381  graph->evalOpParm(myPrincipalType, nodeidx, "principaltype", time, graph->isDirect()?nullptr:depnode);
382  myPrincipalSign = 0;
383  if (true && ( (true&&!(((int64(getMeasure())!=4))||((int64(getCurvatureType())!=2)))) ) )
384  graph->evalOpParm(myPrincipalSign, nodeidx, "principalsign", time, graph->isDirect()?nullptr:depnode);
385  myPrincipalReportAs = 0;
386  if (true && ( (true&&!(((int64(getMeasure())!=4))||((int64(getCurvatureType())!=2)))) ) )
387  graph->evalOpParm(myPrincipalReportAs, nodeidx, "principalreportas", time, graph->isDirect()?nullptr:depnode);
388  myUmbilicCutoff = 0;
389  if (true && ( (true&&!(((int64(getMeasure())!=4))||((int64(getCurvatureType())!=2))||((int64(getPrincipalReportAs())==0)))) ) )
390  graph->evalOpParm(myUmbilicCutoff, nodeidx, "umbiliccutoff", time, graph->isDirect()?nullptr:depnode);
391  myIntegrationMode = 0;
392  if (true && ( (true&&!(((int64(getMeasure())!=7)&&(int64(getMeasure())!=8)))) ) )
393  graph->evalOpParm(myIntegrationMode, nodeidx, "integrationmode", time, graph->isDirect()?nullptr:depnode);
394  mySrcAttrib = "P"_UTsh;
395  if (true && ( (true&&!(((int64(getMeasure())==4))||((int64(getMeasure())==2))||((int64(getMeasure())==0))||((int64(getMeasure())==1))||((int64(getMeasure())==3)))) ) )
396  graph->evalOpParm(mySrcAttrib, nodeidx, "srcattrib", time, graph->isDirect()?nullptr:depnode);
397  mySrcComp = 0;
398  if (true && ( (true&&!(((int64(getMeasure())==4))||((int64(getMeasure())==2))||((int64(getMeasure())==0))||((int64(getMeasure())==1))||((int64(getMeasure())==3)))) ) )
399  graph->evalOpParm(mySrcComp, nodeidx, "srccomp", time, graph->isDirect()?nullptr:depnode);
400  myScaleNormalize = true;
401  if (true && ( (true&&!(((int64(getMeasure())!=4)&&(int64(getMeasure())!=5)&&(int64(getMeasure())!=6)&&(int64(getMeasure())!=8))||((int64(getMeasure())==4)&&(int64(getCurvatureType())==0)))) ) )
402  graph->evalOpParm(myScaleNormalize, nodeidx, "scalenormalize", time, graph->isDirect()?nullptr:depnode);
403  myIntegrationDomain = 0;
404  if (true)
405  graph->evalOpParm(myIntegrationDomain, nodeidx, "integrationdomain", time, graph->isDirect()?nullptr:depnode);
406  myRefineToManifold = true;
407  if (true && ( (true&&!(((int64(getIntegrationDomain())!=1)))) ) )
408  graph->evalOpParm(myRefineToManifold, nodeidx, "refinetomanifold", time, graph->isDirect()?nullptr:depnode);
409  myPieceAttrib = "class"_UTsh;
410  if (true && ( (true&&!(((int64(getIntegrationDomain())!=1)))) ) )
411  graph->evalOpParm(myPieceAttrib, nodeidx, "pieceattrib", time, graph->isDirect()?nullptr:depnode);
412  myUseCustomPos = false;
413  if (true)
414  graph->evalOpParm(myUseCustomPos, nodeidx, "usecustompos", time, graph->isDirect()?nullptr:depnode);
415  myPosAttrib = "P"_UTsh;
416  if (true && ( (true&&!(((getUseCustomPos()==0)))) ) )
417  graph->evalOpParm(myPosAttrib, nodeidx, "posattrib", time, graph->isDirect()?nullptr:depnode);
418  myUseRangeMin = false;
419  if (true && ( (true&&!(((int64(getMeasure())==3))||((int64(getMeasure())==4)&&(int64(getPrincipalReportAs())==1)))) ) )
420  graph->evalOpParm(myUseRangeMin, nodeidx, "userangemin", time, graph->isDirect()?nullptr:depnode);
421  myRangeMin = -1;
422  if (true && ( (true&&!(((int64(getMeasure())==3))||((int64(getMeasure())==4)&&(int64(getPrincipalReportAs())==1))||((getUseRangeMin()==0)))) ) )
423  graph->evalOpParm(myRangeMin, nodeidx, "rangemin", time, graph->isDirect()?nullptr:depnode);
424  myUseRangeMax = false;
425  if (true && ( (true&&!(((int64(getMeasure())==3))||((int64(getMeasure())==4)&&(int64(getPrincipalReportAs())==1)))) ) )
426  graph->evalOpParm(myUseRangeMax, nodeidx, "userangemax", time, graph->isDirect()?nullptr:depnode);
427  myRangeMax = 1;
428  if (true && ( (true&&!(((int64(getMeasure())==3))||((int64(getMeasure())==4)&&(int64(getPrincipalReportAs())==1))||((getUseRangeMax()==0)))) ) )
429  graph->evalOpParm(myRangeMax, nodeidx, "rangemax", time, graph->isDirect()?nullptr:depnode);
430  myUseCenterWidth = true;
431  if (true && ( (true&&!(((int64(getMeasure())==3))||((int64(getMeasure())==4)&&(int64(getPrincipalReportAs())==1)))) ) )
432  graph->evalOpParm(myUseCenterWidth, nodeidx, "usecenterwidth", time, graph->isDirect()?nullptr:depnode);
433  myWidth = 6;
434  if (true && ( (true&&!(((int64(getMeasure())==3))||((int64(getMeasure())==4)&&(int64(getPrincipalReportAs())==1))||((getUseCenterWidth()==0)))) ) )
435  graph->evalOpParm(myWidth, nodeidx, "width", time, graph->isDirect()?nullptr:depnode);
436  myWidthScale = 2;
437  if (true && ( (true&&!(((int64(getMeasure())==3))||((int64(getMeasure())==4)&&(int64(getPrincipalReportAs())==1))||((getUseCenterWidth()==0)))) ) )
438  graph->evalOpParm(myWidthScale, nodeidx, "widthscale", time, graph->isDirect()?nullptr:depnode);
439  myCenterType = 2;
440  if (true && ( (true&&!(((int64(getMeasure())==3))||((int64(getMeasure())==4)&&(int64(getPrincipalReportAs())==1))||((getUseCenterWidth()==0)))) ) )
441  graph->evalOpParm(myCenterType, nodeidx, "centertype", time, graph->isDirect()?nullptr:depnode);
442  myFixedCenter = 0;
443  if (true && ( (true&&!(((int64(getCenterType())!=0))||((int64(getMeasure())==3))||((int64(getMeasure())==4)&&(int64(getPrincipalReportAs())==1))||((getUseCenterWidth()==0)))) ) )
444  graph->evalOpParm(myFixedCenter, nodeidx, "fixedcenter", time, graph->isDirect()?nullptr:depnode);
445  myColorramp = UT_Ramp::buildFromDefault("1pos ( 0 ) 1c ( 0 0 1 ) 1interp ( linear ) 2pos ( 0.5 ) 2c ( 1 1 1 ) 2interp ( linear ) 3pos ( 1.0 ) 3c ( 1 0 0 ) 3interp ( linear )");
446  if (true && ( (true&&!(((int64(getMeasure())==3))||((int64(getMeasure())==4)&&(int64(getPrincipalReportAs())==1)))) ) )
447  graph->evalOpParm(myColorramp, nodeidx, "colorramp", time, graph->isDirect()?nullptr:depnode);
448  myVectorScale = 1;
449  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)))) ) )
450  graph->evalOpParm(myVectorScale, nodeidx, "vectorscale", time, graph->isDirect()?nullptr:depnode);
451  myAttribName = "area"_UTsh;
452  if (true)
453  graph->evalOpParm(myAttribName, nodeidx, "attribname", time, graph->isDirect()?nullptr:depnode);
454  myUseTotalAttrib = false;
455  if (true)
456  graph->evalOpParm(myUseTotalAttrib, nodeidx, "usetotalattrib", time, graph->isDirect()?nullptr:depnode);
457  myTotalAttribName = "totalarea"_UTsh;
458  if (true && ( (true&&!(((getUseTotalAttrib()==0)))) ) )
459  graph->evalOpParm(myTotalAttribName, nodeidx, "totalattribname", time, graph->isDirect()?nullptr:depnode);
460  myUseRangeGroup = false;
461  if (true && ( (true&&!(((int64(getMeasure())==3))||((int64(getMeasure())==4)&&(int64(getPrincipalReportAs())==1))||((getUseRangeMin()==0)&&(getUseRangeMax()==0)&&(getUseCenterWidth()==0)))) ) )
462  graph->evalOpParm(myUseRangeGroup, nodeidx, "userangegroup", time, graph->isDirect()?nullptr:depnode);
463  myRangeGroup = "inrange"_UTsh;
464  if (true && ( (true&&!(((getUseRangeGroup()==0)))) ) )
465  graph->evalOpParm(myRangeGroup, nodeidx, "rangegroup", time, graph->isDirect()?nullptr:depnode);
466  myBakeIntoOutput = false;
467  if (true && ( (true&&!(((int64(getMeasure())==3))||((int64(getMeasure())==4)&&(int64(getPrincipalReportAs())==1))||((getUseRangeMin()==0)&&(getUseRangeMax()==0)&&(getUseCenterWidth()==0)))) ) )
468  graph->evalOpParm(myBakeIntoOutput, nodeidx, "bakeintooutput", time, graph->isDirect()?nullptr:depnode);
469  myUseRemapRange = false;
470  if (true && ( (true&&!(((getBakeIntoOutput()==0)))) ) )
471  graph->evalOpParm(myUseRemapRange, nodeidx, "useremaprange", time, graph->isDirect()?nullptr:depnode);
472  myRemapRange = UT_Vector2D(0,1);
473  if (true && ( (true&&!(((getBakeIntoOutput()==0))||((getUseRemapRange()==0)))) ) )
474  graph->evalOpParm(myRemapRange, nodeidx, "remaprange", time, graph->isDirect()?nullptr:depnode);
475  myDivideElementArea = false;
476  if (true && ( (true&&!(((int64(getMeasure())!=4))||((int64(getIntegrationDomain())!=0)))) ) )
477  graph->evalOpParm(myDivideElementArea, nodeidx, "divideelementarea", time, graph->isDirect()?nullptr:depnode);
478 
479  }
480 
481 
482  void loadFromOpSubclass(const LoadParms &loadparms) override
483  {
484  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
485  }
486 
487 
488  void copyFrom(const OP_NodeParms *src) override
489  {
490  *this = *((const SOP_Measure_2_0Parms *)src);
491  }
492 
493  template <typename T>
494  void
495  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
496  {
497  if (idx.size() < 1)
498  return;
499  UT_ASSERT(idx.size() == instance.size()+1);
500  if (idx.size() != instance.size()+1)
501  return;
502  switch (idx[0])
503  {
504  case 0:
505  coerceValue(value, myGroup);
506  break;
507  case 1:
508  coerceValue(value, myGroupType);
509  break;
510  case 2:
511  coerceValue(value, myMeasure);
512  break;
513  case 3:
514  coerceValue(value, myCurvatureType);
515  break;
516  case 4:
517  coerceValue(value, myPrincipalType);
518  break;
519  case 5:
520  coerceValue(value, myPrincipalSign);
521  break;
522  case 6:
523  coerceValue(value, myPrincipalReportAs);
524  break;
525  case 7:
526  coerceValue(value, myUmbilicCutoff);
527  break;
528  case 8:
529  coerceValue(value, myIntegrationMode);
530  break;
531  case 9:
532  coerceValue(value, mySrcAttrib);
533  break;
534  case 10:
535  coerceValue(value, mySrcComp);
536  break;
537  case 11:
538  coerceValue(value, myScaleNormalize);
539  break;
540  case 12:
541  coerceValue(value, myIntegrationDomain);
542  break;
543  case 13:
544  coerceValue(value, myRefineToManifold);
545  break;
546  case 14:
547  coerceValue(value, myPieceAttrib);
548  break;
549  case 15:
550  coerceValue(value, myUseCustomPos);
551  break;
552  case 16:
553  coerceValue(value, myPosAttrib);
554  break;
555  case 17:
556  coerceValue(value, myUseRangeMin);
557  break;
558  case 18:
559  coerceValue(value, myRangeMin);
560  break;
561  case 19:
562  coerceValue(value, myUseRangeMax);
563  break;
564  case 20:
565  coerceValue(value, myRangeMax);
566  break;
567  case 21:
568  coerceValue(value, myUseCenterWidth);
569  break;
570  case 22:
571  coerceValue(value, myWidth);
572  break;
573  case 23:
574  coerceValue(value, myWidthScale);
575  break;
576  case 24:
577  coerceValue(value, myCenterType);
578  break;
579  case 25:
580  coerceValue(value, myFixedCenter);
581  break;
582  case 26:
583  coerceValue(value, myColorramp);
584  break;
585  case 27:
586  coerceValue(value, myVectorScale);
587  break;
588  case 28:
589  coerceValue(value, myAttribName);
590  break;
591  case 29:
592  coerceValue(value, myUseTotalAttrib);
593  break;
594  case 30:
595  coerceValue(value, myTotalAttribName);
596  break;
597  case 31:
598  coerceValue(value, myUseRangeGroup);
599  break;
600  case 32:
601  coerceValue(value, myRangeGroup);
602  break;
603  case 33:
604  coerceValue(value, myBakeIntoOutput);
605  break;
606  case 34:
607  coerceValue(value, myUseRemapRange);
608  break;
609  case 35:
610  coerceValue(value, myRemapRange);
611  break;
612  case 36:
613  coerceValue(value, myDivideElementArea);
614  break;
615 
616  }
617  }
618 
619  bool isParmColorRamp(exint idx) const override
620  {
621  switch (idx)
622  {
623  case 26:
624  return true;
625  }
626  return false;
627  }
628 
629  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
630  { doGetParmValue(idx, instance, value); }
631  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
632  { doGetParmValue(idx, instance, value); }
633  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
634  { doGetParmValue(idx, instance, value); }
635  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
636  { doGetParmValue(idx, instance, value); }
637  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
638  { doGetParmValue(idx, instance, value); }
639  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
640  { doGetParmValue(idx, instance, value); }
641  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
642  { doGetParmValue(idx, instance, value); }
643  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
644  { doGetParmValue(idx, instance, value); }
645  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
646  { doGetParmValue(idx, instance, value); }
647  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
648  { doGetParmValue(idx, instance, value); }
649  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
650  { doGetParmValue(idx, instance, value); }
651 
652  template <typename T>
653  void
654  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
655  {
656  if (idx.size() < 1)
657  return;
658  UT_ASSERT(idx.size() == instance.size()+1);
659  if (idx.size() != instance.size()+1)
660  return;
661  switch (idx[0])
662  {
663  case 0:
664  coerceValue(myGroup, ( ( value ) ));
665  break;
666  case 1:
667  coerceValue(myGroupType, clampMinValue(0, clampMaxValue(1, value ) ));
668  break;
669  case 2:
670  coerceValue(myMeasure, clampMinValue(0, clampMaxValue(8, value ) ));
671  break;
672  case 3:
673  coerceValue(myCurvatureType, clampMinValue(0, clampMaxValue(3, value ) ));
674  break;
675  case 4:
676  coerceValue(myPrincipalType, clampMinValue(0, clampMaxValue(1, value ) ));
677  break;
678  case 5:
679  coerceValue(myPrincipalSign, clampMinValue(0, clampMaxValue(1, value ) ));
680  break;
681  case 6:
682  coerceValue(myPrincipalReportAs, clampMinValue(0, clampMaxValue(2, value ) ));
683  break;
684  case 7:
685  coerceValue(myUmbilicCutoff, clampMinValue(0, clampMaxValue(1, value ) ));
686  break;
687  case 8:
688  coerceValue(myIntegrationMode, clampMinValue(0, clampMaxValue(2, value ) ));
689  break;
690  case 9:
691  coerceValue(mySrcAttrib, ( ( value ) ));
692  break;
693  case 10:
694  coerceValue(mySrcComp, clampMinValue(0, clampMaxValue(3, value ) ));
695  break;
696  case 11:
697  coerceValue(myScaleNormalize, ( ( value ) ));
698  break;
699  case 12:
700  coerceValue(myIntegrationDomain, clampMinValue(0, clampMaxValue(2, value ) ));
701  break;
702  case 13:
703  coerceValue(myRefineToManifold, ( ( value ) ));
704  break;
705  case 14:
706  coerceValue(myPieceAttrib, ( ( value ) ));
707  break;
708  case 15:
709  coerceValue(myUseCustomPos, ( ( value ) ));
710  break;
711  case 16:
712  coerceValue(myPosAttrib, ( ( value ) ));
713  break;
714  case 17:
715  coerceValue(myUseRangeMin, ( ( value ) ));
716  break;
717  case 18:
718  coerceValue(myRangeMin, ( ( value ) ));
719  break;
720  case 19:
721  coerceValue(myUseRangeMax, ( ( value ) ));
722  break;
723  case 20:
724  coerceValue(myRangeMax, ( ( value ) ));
725  break;
726  case 21:
727  coerceValue(myUseCenterWidth, ( ( value ) ));
728  break;
729  case 22:
730  coerceValue(myWidth, clampMinValue(0, ( value ) ));
731  break;
732  case 23:
733  coerceValue(myWidthScale, clampMinValue(0, clampMaxValue(2, value ) ));
734  break;
735  case 24:
736  coerceValue(myCenterType, clampMinValue(0, clampMaxValue(2, value ) ));
737  break;
738  case 25:
739  coerceValue(myFixedCenter, ( ( value ) ));
740  break;
741  case 26:
742  coerceValue(myColorramp, clampMinValue(2, ( value ) ));
743  break;
744  case 27:
745  coerceValue(myVectorScale, clampMinValue(0, ( value ) ));
746  break;
747  case 28:
748  coerceValue(myAttribName, ( ( value ) ));
749  break;
750  case 29:
751  coerceValue(myUseTotalAttrib, ( ( value ) ));
752  break;
753  case 30:
754  coerceValue(myTotalAttribName, ( ( value ) ));
755  break;
756  case 31:
757  coerceValue(myUseRangeGroup, ( ( value ) ));
758  break;
759  case 32:
760  coerceValue(myRangeGroup, ( ( value ) ));
761  break;
762  case 33:
763  coerceValue(myBakeIntoOutput, ( ( value ) ));
764  break;
765  case 34:
766  coerceValue(myUseRemapRange, ( ( value ) ));
767  break;
768  case 35:
769  coerceValue(myRemapRange, ( ( value ) ));
770  break;
771  case 36:
772  coerceValue(myDivideElementArea, ( ( value ) ));
773  break;
774 
775  }
776  }
777 
778  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
779  { doSetParmValue(idx, instance, value); }
780  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
781  { doSetParmValue(idx, instance, value); }
782  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
783  { doSetParmValue(idx, instance, value); }
784  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
785  { doSetParmValue(idx, instance, value); }
786  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
787  { doSetParmValue(idx, instance, value); }
788  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
789  { doSetParmValue(idx, instance, value); }
790  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
791  { doSetParmValue(idx, instance, value); }
792  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
793  { doSetParmValue(idx, instance, value); }
794  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
795  { doSetParmValue(idx, instance, value); }
796  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
797  { doSetParmValue(idx, instance, value); }
798  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
799  { doSetParmValue(idx, instance, value); }
800 
801  exint getNestNumParms(TempIndex idx) const override
802  {
803  if (idx.size() == 0)
804  return 37;
805  switch (idx[0])
806  {
807 
808  }
809  // Invalid
810  return 0;
811  }
812 
813  const char *getNestParmName(TempIndex fieldnum) const override
814  {
815  if (fieldnum.size() < 1)
816  return 0;
817  switch (fieldnum[0])
818  {
819  case 0:
820  return "group";
821  case 1:
822  return "grouptype";
823  case 2:
824  return "measure";
825  case 3:
826  return "curvaturetype";
827  case 4:
828  return "principaltype";
829  case 5:
830  return "principalsign";
831  case 6:
832  return "principalreportas";
833  case 7:
834  return "umbiliccutoff";
835  case 8:
836  return "integrationmode";
837  case 9:
838  return "srcattrib";
839  case 10:
840  return "srccomp";
841  case 11:
842  return "scalenormalize";
843  case 12:
844  return "integrationdomain";
845  case 13:
846  return "refinetomanifold";
847  case 14:
848  return "pieceattrib";
849  case 15:
850  return "usecustompos";
851  case 16:
852  return "posattrib";
853  case 17:
854  return "userangemin";
855  case 18:
856  return "rangemin";
857  case 19:
858  return "userangemax";
859  case 20:
860  return "rangemax";
861  case 21:
862  return "usecenterwidth";
863  case 22:
864  return "width";
865  case 23:
866  return "widthscale";
867  case 24:
868  return "centertype";
869  case 25:
870  return "fixedcenter";
871  case 26:
872  return "colorramp";
873  case 27:
874  return "vectorscale";
875  case 28:
876  return "attribname";
877  case 29:
878  return "usetotalattrib";
879  case 30:
880  return "totalattribname";
881  case 31:
882  return "userangegroup";
883  case 32:
884  return "rangegroup";
885  case 33:
886  return "bakeintooutput";
887  case 34:
888  return "useremaprange";
889  case 35:
890  return "remaprange";
891  case 36:
892  return "divideelementarea";
893 
894  }
895  return 0;
896  }
897 
898  ParmType getNestParmType(TempIndex fieldnum) const override
899  {
900  if (fieldnum.size() < 1)
901  return PARM_UNSUPPORTED;
902  switch (fieldnum[0])
903  {
904  case 0:
905  return PARM_STRING;
906  case 1:
907  return PARM_INTEGER;
908  case 2:
909  return PARM_INTEGER;
910  case 3:
911  return PARM_INTEGER;
912  case 4:
913  return PARM_INTEGER;
914  case 5:
915  return PARM_INTEGER;
916  case 6:
917  return PARM_INTEGER;
918  case 7:
919  return PARM_FLOAT;
920  case 8:
921  return PARM_INTEGER;
922  case 9:
923  return PARM_STRING;
924  case 10:
925  return PARM_INTEGER;
926  case 11:
927  return PARM_INTEGER;
928  case 12:
929  return PARM_INTEGER;
930  case 13:
931  return PARM_INTEGER;
932  case 14:
933  return PARM_STRING;
934  case 15:
935  return PARM_INTEGER;
936  case 16:
937  return PARM_STRING;
938  case 17:
939  return PARM_INTEGER;
940  case 18:
941  return PARM_FLOAT;
942  case 19:
943  return PARM_INTEGER;
944  case 20:
945  return PARM_FLOAT;
946  case 21:
947  return PARM_INTEGER;
948  case 22:
949  return PARM_FLOAT;
950  case 23:
951  return PARM_INTEGER;
952  case 24:
953  return PARM_INTEGER;
954  case 25:
955  return PARM_FLOAT;
956  case 26:
957  return PARM_RAMP;
958  case 27:
959  return PARM_FLOAT;
960  case 28:
961  return PARM_STRING;
962  case 29:
963  return PARM_INTEGER;
964  case 30:
965  return PARM_STRING;
966  case 31:
967  return PARM_INTEGER;
968  case 32:
969  return PARM_STRING;
970  case 33:
971  return PARM_INTEGER;
972  case 34:
973  return PARM_INTEGER;
974  case 35:
975  return PARM_VECTOR2;
976  case 36:
977  return PARM_INTEGER;
978 
979  }
980  return PARM_UNSUPPORTED;
981  }
982 
983  // Boiler plate to load individual types.
984  static void loadData(UT_IStream &is, int64 &v)
985  { is.bread(&v, 1); }
986  static void loadData(UT_IStream &is, bool &v)
987  { int64 iv; is.bread(&iv, 1); v = iv; }
988  static void loadData(UT_IStream &is, fpreal64 &v)
989  { is.bread<fpreal64>(&v, 1); }
990  static void loadData(UT_IStream &is, UT_Vector2D &v)
991  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
992  static void loadData(UT_IStream &is, UT_Vector3D &v)
993  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
994  is.bread<fpreal64>(&v.z(), 1); }
995  static void loadData(UT_IStream &is, UT_Vector4D &v)
996  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
997  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
998  static void loadData(UT_IStream &is, UT_Matrix2D &v)
999  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
1000  static void loadData(UT_IStream &is, UT_Matrix3D &v)
1001  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
1002  static void loadData(UT_IStream &is, UT_Matrix4D &v)
1003  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
1004  static void loadData(UT_IStream &is, UT_Vector2I &v)
1005  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
1006  static void loadData(UT_IStream &is, UT_Vector3I &v)
1007  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
1008  is.bread<int64>(&v.z(), 1); }
1009  static void loadData(UT_IStream &is, UT_Vector4I &v)
1010  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
1011  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
1013  { is.bread(v); }
1015  { UT_StringHolder rampdata;
1016  loadData(is, rampdata);
1017  if (rampdata.isstring())
1018  {
1019  v.reset(new UT_Ramp());
1020  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
1021  v->load(istr);
1022  }
1023  else v.reset();
1024  }
1027  loadData(is, data);
1028  if (data.isstring())
1029  {
1030  // Find the data type.
1031  const char *colon = UT_StringWrap(data).findChar(':');
1032  if (colon)
1033  {
1034  int typelen = colon - data.buffer();
1036  type.strncpy(data.buffer(), typelen);
1037  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
1038 
1039  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
1040  }
1041  }
1042  else v.reset();
1043  }
1044 
1045  static void saveData(std::ostream &os, int64 v)
1046  { UTwrite(os, &v); }
1047  static void saveData(std::ostream &os, bool v)
1048  { int64 iv = v; UTwrite(os, &iv); }
1049  static void saveData(std::ostream &os, fpreal64 v)
1050  { UTwrite<fpreal64>(os, &v); }
1051  static void saveData(std::ostream &os, UT_Vector2D v)
1052  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
1053  static void saveData(std::ostream &os, UT_Vector3D v)
1054  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
1055  UTwrite<fpreal64>(os, &v.z()); }
1056  static void saveData(std::ostream &os, UT_Vector4D v)
1057  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
1058  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
1059  static void saveData(std::ostream &os, UT_Matrix2D v)
1061  static void saveData(std::ostream &os, UT_Matrix3D v)
1063  static void saveData(std::ostream &os, UT_Matrix4D v)
1065  static void saveData(std::ostream &os, UT_StringHolder s)
1066  { UT_StringWrap(s).saveBinary(os); }
1067  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
1069  UT_OStringStream ostr;
1070  if (s) s->save(ostr);
1071  result = ostr.str();
1072  saveData(os, result);
1073  }
1074  static void saveData(std::ostream &os, PRM_DataItemHandle s)
1076  UT_OStringStream ostr;
1077  if (s)
1078  {
1079  ostr << s->getDataTypeToken();
1080  ostr << ":";
1081  s->saveBinary(ostr);
1082  }
1083  result = ostr.str();
1084  saveData(os, result);
1085  }
1086 
1087 
1088  void save(std::ostream &os) const
1089  {
1090  int32 v = version();
1091  UTwrite(os, &v);
1092  saveData(os, myGroup);
1093  saveData(os, myGroupType);
1094  saveData(os, myMeasure);
1095  saveData(os, myCurvatureType);
1096  saveData(os, myPrincipalType);
1097  saveData(os, myPrincipalSign);
1098  saveData(os, myPrincipalReportAs);
1099  saveData(os, myUmbilicCutoff);
1100  saveData(os, myIntegrationMode);
1101  saveData(os, mySrcAttrib);
1102  saveData(os, mySrcComp);
1103  saveData(os, myScaleNormalize);
1104  saveData(os, myIntegrationDomain);
1105  saveData(os, myRefineToManifold);
1106  saveData(os, myPieceAttrib);
1107  saveData(os, myUseCustomPos);
1108  saveData(os, myPosAttrib);
1109  saveData(os, myUseRangeMin);
1110  saveData(os, myRangeMin);
1111  saveData(os, myUseRangeMax);
1112  saveData(os, myRangeMax);
1113  saveData(os, myUseCenterWidth);
1114  saveData(os, myWidth);
1115  saveData(os, myWidthScale);
1116  saveData(os, myCenterType);
1117  saveData(os, myFixedCenter);
1118  saveData(os, myColorramp);
1119  saveData(os, myVectorScale);
1120  saveData(os, myAttribName);
1121  saveData(os, myUseTotalAttrib);
1122  saveData(os, myTotalAttribName);
1123  saveData(os, myUseRangeGroup);
1124  saveData(os, myRangeGroup);
1125  saveData(os, myBakeIntoOutput);
1126  saveData(os, myUseRemapRange);
1127  saveData(os, myRemapRange);
1128  saveData(os, myDivideElementArea);
1129 
1130  }
1131 
1132  bool load(UT_IStream &is)
1133  {
1134  int32 v;
1135  is.bread(&v, 1);
1136  if (version() != v)
1137  {
1138  // Fail incompatible versions
1139  return false;
1140  }
1141  loadData(is, myGroup);
1142  loadData(is, myGroupType);
1143  loadData(is, myMeasure);
1144  loadData(is, myCurvatureType);
1145  loadData(is, myPrincipalType);
1146  loadData(is, myPrincipalSign);
1147  loadData(is, myPrincipalReportAs);
1148  loadData(is, myUmbilicCutoff);
1149  loadData(is, myIntegrationMode);
1150  loadData(is, mySrcAttrib);
1151  loadData(is, mySrcComp);
1152  loadData(is, myScaleNormalize);
1153  loadData(is, myIntegrationDomain);
1154  loadData(is, myRefineToManifold);
1155  loadData(is, myPieceAttrib);
1156  loadData(is, myUseCustomPos);
1157  loadData(is, myPosAttrib);
1158  loadData(is, myUseRangeMin);
1159  loadData(is, myRangeMin);
1160  loadData(is, myUseRangeMax);
1161  loadData(is, myRangeMax);
1162  loadData(is, myUseCenterWidth);
1163  loadData(is, myWidth);
1164  loadData(is, myWidthScale);
1165  loadData(is, myCenterType);
1166  loadData(is, myFixedCenter);
1167  loadData(is, myColorramp);
1168  loadData(is, myVectorScale);
1169  loadData(is, myAttribName);
1170  loadData(is, myUseTotalAttrib);
1171  loadData(is, myTotalAttribName);
1172  loadData(is, myUseRangeGroup);
1173  loadData(is, myRangeGroup);
1174  loadData(is, myBakeIntoOutput);
1175  loadData(is, myUseRemapRange);
1176  loadData(is, myRemapRange);
1177  loadData(is, myDivideElementArea);
1178 
1179  return true;
1180  }
1181 
1182  const UT_StringHolder & getGroup() const { return myGroup; }
1183  void setGroup(const UT_StringHolder & val) { myGroup = val; }
1185  {
1186  SOP_Node *thissop = cookparms.getNode();
1187  if (!thissop) return getGroup();
1189  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
1190  return result;
1191  }
1192  GroupType getGroupType() const { return GroupType(myGroupType); }
1193  void setGroupType(GroupType val) { myGroupType = int64(val); }
1195  {
1196  SOP_Node *thissop = cookparms.getNode();
1197  if (!thissop) return getGroupType();
1198  int64 result;
1199  OP_Utils::evalOpParm(result, thissop, "grouptype", cookparms.getCookTime(), 0);
1200  return GroupType(result);
1201  }
1202  Measure getMeasure() const { return Measure(myMeasure); }
1203  void setMeasure(Measure val) { myMeasure = int64(val); }
1205  {
1206  SOP_Node *thissop = cookparms.getNode();
1207  if (!thissop) return getMeasure();
1208  int64 result;
1209  OP_Utils::evalOpParm(result, thissop, "measure", cookparms.getCookTime(), 0);
1210  return Measure(result);
1211  }
1212  CurvatureType getCurvatureType() const { return CurvatureType(myCurvatureType); }
1213  void setCurvatureType(CurvatureType val) { myCurvatureType = int64(val); }
1215  {
1216  SOP_Node *thissop = cookparms.getNode();
1217  if (!thissop) return getCurvatureType();
1218  int64 result;
1219  OP_Utils::evalOpParm(result, thissop, "curvaturetype", cookparms.getCookTime(), 0);
1220  return CurvatureType(result);
1221  }
1222  PrincipalType getPrincipalType() const { return PrincipalType(myPrincipalType); }
1223  void setPrincipalType(PrincipalType val) { myPrincipalType = int64(val); }
1225  {
1226  SOP_Node *thissop = cookparms.getNode();
1227  if (!thissop) return getPrincipalType();
1228  int64 result;
1229  OP_Utils::evalOpParm(result, thissop, "principaltype", cookparms.getCookTime(), 0);
1230  return PrincipalType(result);
1231  }
1232  PrincipalSign getPrincipalSign() const { return PrincipalSign(myPrincipalSign); }
1233  void setPrincipalSign(PrincipalSign val) { myPrincipalSign = int64(val); }
1235  {
1236  SOP_Node *thissop = cookparms.getNode();
1237  if (!thissop) return getPrincipalSign();
1238  int64 result;
1239  OP_Utils::evalOpParm(result, thissop, "principalsign", cookparms.getCookTime(), 0);
1240  return PrincipalSign(result);
1241  }
1242  PrincipalReportAs getPrincipalReportAs() const { return PrincipalReportAs(myPrincipalReportAs); }
1243  void setPrincipalReportAs(PrincipalReportAs val) { myPrincipalReportAs = int64(val); }
1245  {
1246  SOP_Node *thissop = cookparms.getNode();
1247  if (!thissop) return getPrincipalReportAs();
1248  int64 result;
1249  OP_Utils::evalOpParm(result, thissop, "principalreportas", cookparms.getCookTime(), 0);
1250  return PrincipalReportAs(result);
1251  }
1252  fpreal64 getUmbilicCutoff() const { return myUmbilicCutoff; }
1253  void setUmbilicCutoff(fpreal64 val) { myUmbilicCutoff = val; }
1255  {
1256  SOP_Node *thissop = cookparms.getNode();
1257  if (!thissop) return getUmbilicCutoff();
1258  fpreal64 result;
1259  OP_Utils::evalOpParm(result, thissop, "umbiliccutoff", cookparms.getCookTime(), 0);
1260  return result;
1261  }
1262  IntegrationMode getIntegrationMode() const { return IntegrationMode(myIntegrationMode); }
1263  void setIntegrationMode(IntegrationMode val) { myIntegrationMode = int64(val); }
1265  {
1266  SOP_Node *thissop = cookparms.getNode();
1267  if (!thissop) return getIntegrationMode();
1268  int64 result;
1269  OP_Utils::evalOpParm(result, thissop, "integrationmode", cookparms.getCookTime(), 0);
1270  return IntegrationMode(result);
1271  }
1272  const UT_StringHolder & getSrcAttrib() const { return mySrcAttrib; }
1273  void setSrcAttrib(const UT_StringHolder & val) { mySrcAttrib = val; }
1275  {
1276  SOP_Node *thissop = cookparms.getNode();
1277  if (!thissop) return getSrcAttrib();
1279  OP_Utils::evalOpParm(result, thissop, "srcattrib", cookparms.getCookTime(), 0);
1280  return result;
1281  }
1282  SrcComp getSrcComp() const { return SrcComp(mySrcComp); }
1283  void setSrcComp(SrcComp val) { mySrcComp = int64(val); }
1285  {
1286  SOP_Node *thissop = cookparms.getNode();
1287  if (!thissop) return getSrcComp();
1288  int64 result;
1289  OP_Utils::evalOpParm(result, thissop, "srccomp", cookparms.getCookTime(), 0);
1290  return SrcComp(result);
1291  }
1292  bool getScaleNormalize() const { return myScaleNormalize; }
1293  void setScaleNormalize(bool val) { myScaleNormalize = val; }
1294  bool opScaleNormalize(const SOP_NodeVerb::CookParms &cookparms) const
1295  {
1296  SOP_Node *thissop = cookparms.getNode();
1297  if (!thissop) return getScaleNormalize();
1298  bool result;
1299  OP_Utils::evalOpParm(result, thissop, "scalenormalize", cookparms.getCookTime(), 0);
1300  return result;
1301  }
1302  IntegrationDomain getIntegrationDomain() const { return IntegrationDomain(myIntegrationDomain); }
1303  void setIntegrationDomain(IntegrationDomain val) { myIntegrationDomain = int64(val); }
1305  {
1306  SOP_Node *thissop = cookparms.getNode();
1307  if (!thissop) return getIntegrationDomain();
1308  int64 result;
1309  OP_Utils::evalOpParm(result, thissop, "integrationdomain", cookparms.getCookTime(), 0);
1310  return IntegrationDomain(result);
1311  }
1312  bool getRefineToManifold() const { return myRefineToManifold; }
1313  void setRefineToManifold(bool val) { myRefineToManifold = val; }
1314  bool opRefineToManifold(const SOP_NodeVerb::CookParms &cookparms) const
1315  {
1316  SOP_Node *thissop = cookparms.getNode();
1317  if (!thissop) return getRefineToManifold();
1318  bool result;
1319  OP_Utils::evalOpParm(result, thissop, "refinetomanifold", cookparms.getCookTime(), 0);
1320  return result;
1321  }
1322  const UT_StringHolder & getPieceAttrib() const { return myPieceAttrib; }
1323  void setPieceAttrib(const UT_StringHolder & val) { myPieceAttrib = val; }
1325  {
1326  SOP_Node *thissop = cookparms.getNode();
1327  if (!thissop) return getPieceAttrib();
1329  OP_Utils::evalOpParm(result, thissop, "pieceattrib", cookparms.getCookTime(), 0);
1330  return result;
1331  }
1332  bool getUseCustomPos() const { return myUseCustomPos; }
1333  void setUseCustomPos(bool val) { myUseCustomPos = val; }
1334  bool opUseCustomPos(const SOP_NodeVerb::CookParms &cookparms) const
1335  {
1336  SOP_Node *thissop = cookparms.getNode();
1337  if (!thissop) return getUseCustomPos();
1338  bool result;
1339  OP_Utils::evalOpParm(result, thissop, "usecustompos", cookparms.getCookTime(), 0);
1340  return result;
1341  }
1342  const UT_StringHolder & getPosAttrib() const { return myPosAttrib; }
1343  void setPosAttrib(const UT_StringHolder & val) { myPosAttrib = val; }
1345  {
1346  SOP_Node *thissop = cookparms.getNode();
1347  if (!thissop) return getPosAttrib();
1349  OP_Utils::evalOpParm(result, thissop, "posattrib", cookparms.getCookTime(), 0);
1350  return result;
1351  }
1352  bool getUseRangeMin() const { return myUseRangeMin; }
1353  void setUseRangeMin(bool val) { myUseRangeMin = val; }
1354  bool opUseRangeMin(const SOP_NodeVerb::CookParms &cookparms) const
1355  {
1356  SOP_Node *thissop = cookparms.getNode();
1357  if (!thissop) return getUseRangeMin();
1358  bool result;
1359  OP_Utils::evalOpParm(result, thissop, "userangemin", cookparms.getCookTime(), 0);
1360  return result;
1361  }
1362  fpreal64 getRangeMin() const { return myRangeMin; }
1363  void setRangeMin(fpreal64 val) { myRangeMin = val; }
1365  {
1366  SOP_Node *thissop = cookparms.getNode();
1367  if (!thissop) return getRangeMin();
1368  fpreal64 result;
1369  OP_Utils::evalOpParm(result, thissop, "rangemin", cookparms.getCookTime(), 0);
1370  return result;
1371  }
1372  bool getUseRangeMax() const { return myUseRangeMax; }
1373  void setUseRangeMax(bool val) { myUseRangeMax = val; }
1374  bool opUseRangeMax(const SOP_NodeVerb::CookParms &cookparms) const
1375  {
1376  SOP_Node *thissop = cookparms.getNode();
1377  if (!thissop) return getUseRangeMax();
1378  bool result;
1379  OP_Utils::evalOpParm(result, thissop, "userangemax", cookparms.getCookTime(), 0);
1380  return result;
1381  }
1382  fpreal64 getRangeMax() const { return myRangeMax; }
1383  void setRangeMax(fpreal64 val) { myRangeMax = val; }
1385  {
1386  SOP_Node *thissop = cookparms.getNode();
1387  if (!thissop) return getRangeMax();
1388  fpreal64 result;
1389  OP_Utils::evalOpParm(result, thissop, "rangemax", cookparms.getCookTime(), 0);
1390  return result;
1391  }
1392  bool getUseCenterWidth() const { return myUseCenterWidth; }
1393  void setUseCenterWidth(bool val) { myUseCenterWidth = val; }
1394  bool opUseCenterWidth(const SOP_NodeVerb::CookParms &cookparms) const
1395  {
1396  SOP_Node *thissop = cookparms.getNode();
1397  if (!thissop) return getUseCenterWidth();
1398  bool result;
1399  OP_Utils::evalOpParm(result, thissop, "usecenterwidth", cookparms.getCookTime(), 0);
1400  return result;
1401  }
1402  fpreal64 getWidth() const { return myWidth; }
1403  void setWidth(fpreal64 val) { myWidth = val; }
1404  fpreal64 opWidth(const SOP_NodeVerb::CookParms &cookparms) const
1405  {
1406  SOP_Node *thissop = cookparms.getNode();
1407  if (!thissop) return getWidth();
1408  fpreal64 result;
1409  OP_Utils::evalOpParm(result, thissop, "width", cookparms.getCookTime(), 0);
1410  return result;
1411  }
1412  WidthScale getWidthScale() const { return WidthScale(myWidthScale); }
1413  void setWidthScale(WidthScale val) { myWidthScale = int64(val); }
1415  {
1416  SOP_Node *thissop = cookparms.getNode();
1417  if (!thissop) return getWidthScale();
1418  int64 result;
1419  OP_Utils::evalOpParm(result, thissop, "widthscale", cookparms.getCookTime(), 0);
1420  return WidthScale(result);
1421  }
1422  CenterType getCenterType() const { return CenterType(myCenterType); }
1423  void setCenterType(CenterType val) { myCenterType = int64(val); }
1425  {
1426  SOP_Node *thissop = cookparms.getNode();
1427  if (!thissop) return getCenterType();
1428  int64 result;
1429  OP_Utils::evalOpParm(result, thissop, "centertype", cookparms.getCookTime(), 0);
1430  return CenterType(result);
1431  }
1432  fpreal64 getFixedCenter() const { return myFixedCenter; }
1433  void setFixedCenter(fpreal64 val) { myFixedCenter = val; }
1435  {
1436  SOP_Node *thissop = cookparms.getNode();
1437  if (!thissop) return getFixedCenter();
1438  fpreal64 result;
1439  OP_Utils::evalOpParm(result, thissop, "fixedcenter", cookparms.getCookTime(), 0);
1440  return result;
1441  }
1442  UT_SharedPtr<UT_Ramp> getColorramp() const { return myColorramp; }
1443  void setColorramp(UT_SharedPtr<UT_Ramp> val) { myColorramp = val; }
1445  {
1446  SOP_Node *thissop = cookparms.getNode();
1447  if (!thissop) return getColorramp();
1449  OP_Utils::evalOpParm(result, thissop, "colorramp", cookparms.getCookTime(), 0);
1450  return result;
1451  }
1452  fpreal64 getVectorScale() const { return myVectorScale; }
1453  void setVectorScale(fpreal64 val) { myVectorScale = val; }
1455  {
1456  SOP_Node *thissop = cookparms.getNode();
1457  if (!thissop) return getVectorScale();
1458  fpreal64 result;
1459  OP_Utils::evalOpParm(result, thissop, "vectorscale", cookparms.getCookTime(), 0);
1460  return result;
1461  }
1462  const UT_StringHolder & getAttribName() const { return myAttribName; }
1463  void setAttribName(const UT_StringHolder & val) { myAttribName = val; }
1465  {
1466  SOP_Node *thissop = cookparms.getNode();
1467  if (!thissop) return getAttribName();
1469  OP_Utils::evalOpParm(result, thissop, "attribname", cookparms.getCookTime(), 0);
1470  return result;
1471  }
1472  bool getUseTotalAttrib() const { return myUseTotalAttrib; }
1473  void setUseTotalAttrib(bool val) { myUseTotalAttrib = val; }
1474  bool opUseTotalAttrib(const SOP_NodeVerb::CookParms &cookparms) const
1475  {
1476  SOP_Node *thissop = cookparms.getNode();
1477  if (!thissop) return getUseTotalAttrib();
1478  bool result;
1479  OP_Utils::evalOpParm(result, thissop, "usetotalattrib", cookparms.getCookTime(), 0);
1480  return result;
1481  }
1482  const UT_StringHolder & getTotalAttribName() const { return myTotalAttribName; }
1483  void setTotalAttribName(const UT_StringHolder & val) { myTotalAttribName = val; }
1485  {
1486  SOP_Node *thissop = cookparms.getNode();
1487  if (!thissop) return getTotalAttribName();
1489  OP_Utils::evalOpParm(result, thissop, "totalattribname", cookparms.getCookTime(), 0);
1490  return result;
1491  }
1492  bool getUseRangeGroup() const { return myUseRangeGroup; }
1493  void setUseRangeGroup(bool val) { myUseRangeGroup = val; }
1494  bool opUseRangeGroup(const SOP_NodeVerb::CookParms &cookparms) const
1495  {
1496  SOP_Node *thissop = cookparms.getNode();
1497  if (!thissop) return getUseRangeGroup();
1498  bool result;
1499  OP_Utils::evalOpParm(result, thissop, "userangegroup", cookparms.getCookTime(), 0);
1500  return result;
1501  }
1502  const UT_StringHolder & getRangeGroup() const { return myRangeGroup; }
1503  void setRangeGroup(const UT_StringHolder & val) { myRangeGroup = val; }
1505  {
1506  SOP_Node *thissop = cookparms.getNode();
1507  if (!thissop) return getRangeGroup();
1509  OP_Utils::evalOpParm(result, thissop, "rangegroup", cookparms.getCookTime(), 0);
1510  return result;
1511  }
1512  bool getBakeIntoOutput() const { return myBakeIntoOutput; }
1513  void setBakeIntoOutput(bool val) { myBakeIntoOutput = val; }
1514  bool opBakeIntoOutput(const SOP_NodeVerb::CookParms &cookparms) const
1515  {
1516  SOP_Node *thissop = cookparms.getNode();
1517  if (!thissop) return getBakeIntoOutput();
1518  bool result;
1519  OP_Utils::evalOpParm(result, thissop, "bakeintooutput", cookparms.getCookTime(), 0);
1520  return result;
1521  }
1522  bool getUseRemapRange() const { return myUseRemapRange; }
1523  void setUseRemapRange(bool val) { myUseRemapRange = val; }
1524  bool opUseRemapRange(const SOP_NodeVerb::CookParms &cookparms) const
1525  {
1526  SOP_Node *thissop = cookparms.getNode();
1527  if (!thissop) return getUseRemapRange();
1528  bool result;
1529  OP_Utils::evalOpParm(result, thissop, "useremaprange", cookparms.getCookTime(), 0);
1530  return result;
1531  }
1532  UT_Vector2D getRemapRange() const { return myRemapRange; }
1533  void setRemapRange(UT_Vector2D val) { myRemapRange = val; }
1535  {
1536  SOP_Node *thissop = cookparms.getNode();
1537  if (!thissop) return getRemapRange();
1539  OP_Utils::evalOpParm(result, thissop, "remaprange", cookparms.getCookTime(), 0);
1540  return result;
1541  }
1542  bool getDivideElementArea() const { return myDivideElementArea; }
1543  void setDivideElementArea(bool val) { myDivideElementArea = val; }
1544  bool opDivideElementArea(const SOP_NodeVerb::CookParms &cookparms) const
1545  {
1546  SOP_Node *thissop = cookparms.getNode();
1547  if (!thissop) return getDivideElementArea();
1548  bool result;
1549  OP_Utils::evalOpParm(result, thissop, "divideelementarea", cookparms.getCookTime(), 0);
1550  return result;
1551  }
1552 
1553 private:
1554  UT_StringHolder myGroup;
1555  int64 myGroupType;
1556  int64 myMeasure;
1557  int64 myCurvatureType;
1558  int64 myPrincipalType;
1559  int64 myPrincipalSign;
1560  int64 myPrincipalReportAs;
1561  fpreal64 myUmbilicCutoff;
1562  int64 myIntegrationMode;
1563  UT_StringHolder mySrcAttrib;
1564  int64 mySrcComp;
1565  bool myScaleNormalize;
1566  int64 myIntegrationDomain;
1567  bool myRefineToManifold;
1568  UT_StringHolder myPieceAttrib;
1569  bool myUseCustomPos;
1570  UT_StringHolder myPosAttrib;
1571  bool myUseRangeMin;
1572  fpreal64 myRangeMin;
1573  bool myUseRangeMax;
1574  fpreal64 myRangeMax;
1575  bool myUseCenterWidth;
1576  fpreal64 myWidth;
1577  int64 myWidthScale;
1578  int64 myCenterType;
1579  fpreal64 myFixedCenter;
1580  UT_SharedPtr<UT_Ramp> myColorramp;
1581  fpreal64 myVectorScale;
1582  UT_StringHolder myAttribName;
1583  bool myUseTotalAttrib;
1584  UT_StringHolder myTotalAttribName;
1585  bool myUseRangeGroup;
1586  UT_StringHolder myRangeGroup;
1587  bool myBakeIntoOutput;
1588  bool myUseRemapRange;
1589  UT_Vector2D myRemapRange;
1590  bool myDivideElementArea;
1591 
1592 };
const UT_StringHolder & getPieceAttrib() const
Measure opMeasure(const SOP_NodeVerb::CookParms &cookparms) const
CenterType opCenterType(const SOP_NodeVerb::CookParms &cookparms) const
type
Definition: core.h:556
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)
static UT_SharedPtr< UT_Ramp > buildFromDefault(const char *def)
Returns a ramp constructed from the canonical default strings.
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:63
UT_Vector2T< fpreal64 > UT_Vector2D
WidthScale opWidthScale(const SOP_NodeVerb::CookParms &cookparms) const
void setDivideElementArea(bool val)
IntegrationMode opIntegrationMode(const SOP_NodeVerb::CookParms &cookparms) const
GLsizei const GLfloat * value
Definition: glcorearb.h:824
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:622
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 opDivideElementArea(const SOP_NodeVerb::CookParms &cookparms) const
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
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: APEX_Include.h:55
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:303
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:278
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:96
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
virtual UT_StringHolder baseGetSignature() const
Definition: OP_NodeParms.h:294
#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:372
const UT_StringHolder & getRangeGroup() const
void setPrincipalSign(PrincipalSign val)
const char * findChar(int c) const
Definition: UT_String.h:1401
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
fpreal64 opUmbilicCutoff(const SOP_NodeVerb::CookParms &cookparms) const
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
static void saveData(std::ostream &os, UT_StringHolder s)
void setSrcAttrib(const UT_StringHolder &val)
virtual bool isDirect() const =0
Direct proxies mirror actual nodes:
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)
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)