HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_PolyBevel-3.0.proto.h
Go to the documentation of this file.
1 /* Automagically Generated by generate_proto.py
2  * Do not Edit
3  */
4 #pragma once
5 
6 #include <SOP/SOP_API.h>
7 #include <SOP/SOP_NodeVerb.h>
8 #include <OP/OP_GraphProxy.h>
9 
10 #include <OP/OP_Utils.h>
11 #include <PRM/PRM_Parm.h>
12 #include <UT/UT_IStream.h>
13 #include <UT/UT_NTStreamUtil.h>
14 #include <UT/UT_Ramp.h>
15 #include <UT/UT_SharedPtr.h>
16 #include <UT/UT_StringHolder.h>
17 #include <UT/UT_StringStream.h>
18 #include <UT/UT_VectorTypes.h>
19 #include <UT/UT_EnvControl.h>
20 #include <SYS/SYS_Types.h>
21 
22 class DEP_MicroNode;
23 namespace SOP_PolyBevel_3_0Enums
24 {
25  enum class GroupType
26  {
27  PRIMS = 0,
28  POINTS,
29  EDGES,
30  GUESS
31  };
32 
34  getToken(GroupType enum_value)
35  {
36  using namespace UT::Literal;
37  switch (enum_value) {
38  case GroupType::PRIMS: return "prims"_sh;
39  case GroupType::POINTS: return "points"_sh;
40  case GroupType::EDGES: return "edges"_sh;
41  case GroupType::GUESS: return "guess"_sh;
42  default: UT_ASSERT(false); return ""_sh;
43  }
44  }
45 
46  enum class UseOffsetScale
47  {
48  UNSCALED = 0,
49  BYATTRIB
50  };
51 
53  getToken(UseOffsetScale enum_value)
54  {
55  using namespace UT::Literal;
56  switch (enum_value) {
57  case UseOffsetScale::UNSCALED: return "unscaled"_sh;
58  case UseOffsetScale::BYATTRIB: return "byattrib"_sh;
59  default: UT_ASSERT(false); return ""_sh;
60  }
61  }
62 
63  enum class Sliding
64  {
65  AUTO = 0,
66  ALWAYS,
67  NEVER
68  };
69 
71  getToken(Sliding enum_value)
72  {
73  using namespace UT::Literal;
74  switch (enum_value) {
75  case Sliding::AUTO: return "auto"_sh;
76  case Sliding::ALWAYS: return "always"_sh;
77  case Sliding::NEVER: return "never"_sh;
78  default: UT_ASSERT(false); return ""_sh;
79  }
80  }
81 
82  enum class Limit
83  {
84  NEVER = 0,
87  };
88 
90  getToken(Limit enum_value)
91  {
92  using namespace UT::Literal;
93  switch (enum_value) {
94  case Limit::NEVER: return "never"_sh;
95  case Limit::INDIVIDUALLY: return "individually"_sh;
96  case Limit::SIMULTANEOUSLY: return "simultaneously"_sh;
97  default: UT_ASSERT(false); return ""_sh;
98  }
99  }
100 
101  enum class FilletShape
102  {
103  NONE = 0,
104  SOLID,
105  CREASE,
106  CHAMFER,
107  ROUND
108  };
109 
111  getToken(FilletShape enum_value)
112  {
113  using namespace UT::Literal;
114  switch (enum_value) {
115  case FilletShape::NONE: return "none"_sh;
116  case FilletShape::SOLID: return "solid"_sh;
117  case FilletShape::CREASE: return "crease"_sh;
118  case FilletShape::CHAMFER: return "chamfer"_sh;
119  case FilletShape::ROUND: return "round"_sh;
120  default: UT_ASSERT(false); return ""_sh;
121  }
122  }
123 
124  enum class ProfileSampling
125  {
126  UNIFORM = 0,
127  ADAPTIVE,
129  };
130 
133  {
134  using namespace UT::Literal;
135  switch (enum_value) {
136  case ProfileSampling::UNIFORM: return "uniform"_sh;
137  case ProfileSampling::ADAPTIVE: return "adaptive"_sh;
138  case ProfileSampling::CONTROLPOINTS: return "controlpoints"_sh;
139  default: UT_ASSERT(false); return ""_sh;
140  }
141  }
142 
143  enum class ProfileSource
144  {
145  BASIC = 0,
146  RAMP,
147  EXTERNAL
148  };
149 
151  getToken(ProfileSource enum_value)
152  {
153  using namespace UT::Literal;
154  switch (enum_value) {
155  case ProfileSource::BASIC: return "basic"_sh;
156  case ProfileSource::RAMP: return "ramp"_sh;
157  case ProfileSource::EXTERNAL: return "external"_sh;
158  default: UT_ASSERT(false); return ""_sh;
159  }
160  }
161 
162 }
163 
164 
166 {
167 public:
168  static int version() { return 1; }
169 
171  {
172  myGroup = ""_UTsh;
173  myGroupType = 3;
174  myIgnoreBridges = true;
175  myIgnoreShared = false;
176  myIgnoreFlatEdges = false;
177  myIgnoreFlatPoints = false;
178  myIgnoreInlinePoints = false;
179  myFlatAngle = 2;
180  myOffset = 0;
181  myUseOffsetScale = 0;
182  myPointScaleAttr = "pscale"_UTsh;
183  mySliding = 0;
184  myAsymTol = 0.5;
185  mySlideEdges = ""_UTsh;
186  myDetectCollisions = true;
187  myRestrictSlides = true;
188  myLimit = 1;
189  myStopAtSlideEnd = true;
190  myStopAtPinches = true;
191  myPinchAngle = 0;
192  myStopAtCollisions = true;
193  myFilletShape = 4;
194  myConvexity = 1.0;
195  myProfileSource = 0;
196  myProfileScale = 1;
197  myReverseProfile = false;
198  mySymmetrizeProfile = true;
199  myProfileDirection = ""_UTsh;
200  myProfileRamp = UT_Ramp::buildFromDefault("1pos ( 0 ) 1value ( 0.5 ) 1interp ( catmull-rom ) 2pos ( 1 ) 2value ( 0.5 ) 2interp ( catmull-rom )");
201  myFlatBoost = 30;
202  myUsePointFilletPolys = false;
203  myPointFilletPolys = "pointfilletpolys"_UTsh;
204  myUsePointFilletEdges = false;
205  myPointFilletEdges = "pointfilletedges"_UTsh;
206  myUseEdgeFilletGroup = false;
207  myEdgeFilletGroup = "edgefilletpolys"_UTsh;
208  myUseOffsetEdges = false;
209  myOffsetEdges = "offsetedges"_UTsh;
210  myUseOffsetPoints = false;
211  myOffsetPoints = "offsetpoints"_UTsh;
212  myUseMergedPoints = false;
213  myMergedPoints = "mergedpoints"_UTsh;
214  myProfileSampling = 0;
215  myDivisions = 1;
216 
217  }
218 
219  explicit SOP_PolyBevel_3_0Parms(const SOP_PolyBevel_3_0Parms &) = default;
221  SOP_PolyBevel_3_0Parms(SOP_PolyBevel_3_0Parms &&) noexcept = default;
222  SOP_PolyBevel_3_0Parms &operator=(SOP_PolyBevel_3_0Parms &&) noexcept = default;
223 
224  ~SOP_PolyBevel_3_0Parms() override {}
225 
227  {
228  if (myGroup != src.myGroup) return false;
229  if (myGroupType != src.myGroupType) return false;
230  if (myIgnoreBridges != src.myIgnoreBridges) return false;
231  if (myIgnoreShared != src.myIgnoreShared) return false;
232  if (myIgnoreFlatEdges != src.myIgnoreFlatEdges) return false;
233  if (myIgnoreFlatPoints != src.myIgnoreFlatPoints) return false;
234  if (myIgnoreInlinePoints != src.myIgnoreInlinePoints) return false;
235  if (myFlatAngle != src.myFlatAngle) return false;
236  if (myOffset != src.myOffset) return false;
237  if (myUseOffsetScale != src.myUseOffsetScale) return false;
238  if (myPointScaleAttr != src.myPointScaleAttr) return false;
239  if (mySliding != src.mySliding) return false;
240  if (myAsymTol != src.myAsymTol) return false;
241  if (mySlideEdges != src.mySlideEdges) return false;
242  if (myDetectCollisions != src.myDetectCollisions) return false;
243  if (myRestrictSlides != src.myRestrictSlides) return false;
244  if (myLimit != src.myLimit) return false;
245  if (myStopAtSlideEnd != src.myStopAtSlideEnd) return false;
246  if (myStopAtPinches != src.myStopAtPinches) return false;
247  if (myPinchAngle != src.myPinchAngle) return false;
248  if (myStopAtCollisions != src.myStopAtCollisions) return false;
249  if (myFilletShape != src.myFilletShape) return false;
250  if (myConvexity != src.myConvexity) return false;
251  if (myProfileSource != src.myProfileSource) return false;
252  if (myProfileScale != src.myProfileScale) return false;
253  if (myReverseProfile != src.myReverseProfile) return false;
254  if (mySymmetrizeProfile != src.mySymmetrizeProfile) return false;
255  if (myProfileDirection != src.myProfileDirection) return false;
256  if (myProfileRamp != src.myProfileRamp)
257  { if (!myProfileRamp || !src.myProfileRamp || !(*myProfileRamp == *src.myProfileRamp)) return false; }
258  if (myFlatBoost != src.myFlatBoost) return false;
259  if (myUsePointFilletPolys != src.myUsePointFilletPolys) return false;
260  if (myPointFilletPolys != src.myPointFilletPolys) return false;
261  if (myUsePointFilletEdges != src.myUsePointFilletEdges) return false;
262  if (myPointFilletEdges != src.myPointFilletEdges) return false;
263  if (myUseEdgeFilletGroup != src.myUseEdgeFilletGroup) return false;
264  if (myEdgeFilletGroup != src.myEdgeFilletGroup) return false;
265  if (myUseOffsetEdges != src.myUseOffsetEdges) return false;
266  if (myOffsetEdges != src.myOffsetEdges) return false;
267  if (myUseOffsetPoints != src.myUseOffsetPoints) return false;
268  if (myOffsetPoints != src.myOffsetPoints) return false;
269  if (myUseMergedPoints != src.myUseMergedPoints) return false;
270  if (myMergedPoints != src.myMergedPoints) return false;
271  if (myProfileSampling != src.myProfileSampling) return false;
272  if (myDivisions != src.myDivisions) return false;
273 
274 
275  if (baseGetSignature() != src.baseGetSignature()) return false;
276 
277  return true;
278  }
280  {
281  return !operator==(src);
282  }
290 
291 
292 
293  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
294  {
295  myGroup = ""_UTsh;
296  if (true)
297  graph->evalOpParm(myGroup, nodeidx, "group", time, graph->isDirect()?nullptr:depnode);
298  myGroupType = 3;
299  if (true)
300  graph->evalOpParm(myGroupType, nodeidx, "grouptype", time, graph->isDirect()?nullptr:depnode);
301  myIgnoreBridges = true;
302  if (true && ( (true&&!(((int64(getGroupType())!=0)))) ) )
303  graph->evalOpParm(myIgnoreBridges, nodeidx, "ignorebridgededges", time, graph->isDirect()?nullptr:depnode);
304  myIgnoreShared = false;
305  if (true && ( (true&&!(((int64(getGroupType())!=0)))) ) )
306  graph->evalOpParm(myIgnoreShared, nodeidx, "ignoresharededges", time, graph->isDirect()?nullptr:depnode);
307  myIgnoreFlatEdges = false;
308  if (true && ( (true&&!(((int64(getGroupType())==1)))) ) )
309  graph->evalOpParm(myIgnoreFlatEdges, nodeidx, "ignoreflatedges", time, graph->isDirect()?nullptr:depnode);
310  myIgnoreFlatPoints = false;
311  if (true && ( (true&&!(((int64(getGroupType())!=1)))) ) )
312  graph->evalOpParm(myIgnoreFlatPoints, nodeidx, "ignoreflatpoints", time, graph->isDirect()?nullptr:depnode);
313  myIgnoreInlinePoints = false;
314  if (true && ( (true&&!(((int64(getGroupType())!=1)))) ) )
315  graph->evalOpParm(myIgnoreInlinePoints, nodeidx, "ignoreinlinepoints", time, graph->isDirect()?nullptr:depnode);
316  myFlatAngle = 2;
317  if (true && ( (true&&!(((getIgnoreFlatEdges()==0)&&(getIgnoreFlatPoints()==0)&&(getIgnoreInlinePoints()==0)))) ) )
318  graph->evalOpParm(myFlatAngle, nodeidx, "flatangle", time, graph->isDirect()?nullptr:depnode);
319  myOffset = 0;
320  if (true)
321  graph->evalOpParm(myOffset, nodeidx, "offset", time, graph->isDirect()?nullptr:depnode);
322  myUseOffsetScale = 0;
323  if (true)
324  graph->evalOpParm(myUseOffsetScale, nodeidx, "useoffsetscale", time, graph->isDirect()?nullptr:depnode);
325  myPointScaleAttr = "pscale"_UTsh;
326  if (true && ( (true&&!(((int64(getUseOffsetScale())==0)))) ) )
327  graph->evalOpParm(myPointScaleAttr, nodeidx, "pointscaleattr", time, graph->isDirect()?nullptr:depnode);
328  mySliding = 0;
329  if (true)
330  graph->evalOpParm(mySliding, nodeidx, "sliding", time, graph->isDirect()?nullptr:depnode);
331  myAsymTol = 0.5;
332  if (true && ( (true&&!(((int64(getSliding())!=0))||((int64(getGroupType())==1)))) ) )
333  graph->evalOpParm(myAsymTol, nodeidx, "asymtol", time, graph->isDirect()?nullptr:depnode);
334  mySlideEdges = ""_UTsh;
335  if (true && ( (true&&!(((int64(getSliding())==1)))) ) )
336  graph->evalOpParm(mySlideEdges, nodeidx, "slideedges", time, graph->isDirect()?nullptr:depnode);
337  myDetectCollisions = true;
338  if (true)
339  graph->evalOpParm(myDetectCollisions, nodeidx, "detectcollisions", time, graph->isDirect()?nullptr:depnode);
340  myRestrictSlides = true;
341  if (true)
342  graph->evalOpParm(myRestrictSlides, nodeidx, "restrictslides", time, graph->isDirect()?nullptr:depnode);
343  myLimit = 1;
344  if (true)
345  graph->evalOpParm(myLimit, nodeidx, "limit", time, graph->isDirect()?nullptr:depnode);
346  myStopAtSlideEnd = true;
347  if (true && ( (true&&!(((int64(getLimit())==0))||((getRestrictSlides()==0)))) ) )
348  graph->evalOpParm(myStopAtSlideEnd, nodeidx, "stopatslideend", time, graph->isDirect()?nullptr:depnode);
349  myStopAtPinches = true;
350  if (true && ( (true&&!(((int64(getLimit())==0))||((getDetectCollisions()==0)))) ) )
351  graph->evalOpParm(myStopAtPinches, nodeidx, "stopatpinches", time, graph->isDirect()?nullptr:depnode);
352  myPinchAngle = 0;
353  if (true && ( (true&&!(((getStopAtPinches()==0)))) ) )
354  graph->evalOpParm(myPinchAngle, nodeidx, "pinchangle", time, graph->isDirect()?nullptr:depnode);
355  myStopAtCollisions = true;
356  if (true && ( (true&&!(((getStopAtPinches()==0)))) ) )
357  graph->evalOpParm(myStopAtCollisions, nodeidx, "stopatcollisions", time, graph->isDirect()?nullptr:depnode);
358  myFilletShape = 4;
359  if (true)
360  graph->evalOpParm(myFilletShape, nodeidx, "filletshape", time, graph->isDirect()?nullptr:depnode);
361  myConvexity = 1.0;
362  if (true && ( (true&&!(((int64(getFilletShape())!=4))||((int64(getGroupType())==1)))) ) )
363  graph->evalOpParm(myConvexity, nodeidx, "convexity", time, graph->isDirect()?nullptr:depnode);
364  myProfileSource = 0;
365  if (true && ( (true&&!(((int64(getGroupType())==1))||((int64(getFilletShape())!=4)))) ) )
366  graph->evalOpParm(myProfileSource, nodeidx, "profilesource", time, graph->isDirect()?nullptr:depnode);
367  myProfileScale = 1;
368  if (true && ( (true&&!(((int64(getGroupType())==1))||((int64(getFilletShape())!=4))||((int64(getProfileSource())==0))||((int64(getGroupType())==1))||((int64(getFilletShape())!=4))||((int64(getProfileSource())==0)))) ) )
369  graph->evalOpParm(myProfileScale, nodeidx, "profilescale", time, graph->isDirect()?nullptr:depnode);
370  myReverseProfile = false;
371  if (true && ( (true&&!(((int64(getGroupType())==1))||((int64(getFilletShape())!=4))||((int64(getProfileSource())==0))||((int64(getGroupType())==1))||((int64(getFilletShape())!=4))||((int64(getProfileSource())==0)))) ) )
372  graph->evalOpParm(myReverseProfile, nodeidx, "reverseprofile", time, graph->isDirect()?nullptr:depnode);
373  mySymmetrizeProfile = true;
374  if (true && ( (true&&!(((int64(getGroupType())==1))||((int64(getFilletShape())!=4))||((int64(getProfileSource())==0))||((int64(getGroupType())==1))||((int64(getFilletShape())!=4))||((int64(getProfileSource())==0)))) ) )
375  graph->evalOpParm(mySymmetrizeProfile, nodeidx, "symmetrizeprofile", time, graph->isDirect()?nullptr:depnode);
376  myProfileDirection = ""_UTsh;
377  if (true && ( (true&&!(((int64(getGroupType())==1))||((int64(getFilletShape())!=4))||((int64(getProfileSource())==0))||((getSymmetrizeProfile()==1)))) ) )
378  graph->evalOpParm(myProfileDirection, nodeidx, "profiledirection", time, graph->isDirect()?nullptr:depnode);
379  myProfileRamp = UT_Ramp::buildFromDefault("1pos ( 0 ) 1value ( 0.5 ) 1interp ( catmull-rom ) 2pos ( 1 ) 2value ( 0.5 ) 2interp ( catmull-rom )");
380  if (true && ( (true&&!(((int64(getGroupType())==1))||((int64(getFilletShape())!=4))||((int64(getProfileSource())==0))||((int64(getGroupType())==1))||((int64(getFilletShape())!=4))||((int64(getProfileSource())!=1)))) ) )
381  graph->evalOpParm(myProfileRamp, nodeidx, "profileramp", time, graph->isDirect()?nullptr:depnode);
382  myFlatBoost = 30;
383  if (true && ( (true&&!(((int64(getGroupType())==1))||((int64(getFilletShape())!=4))||((int64(getProfileSource())==0)))) ) )
384  graph->evalOpParm(myFlatBoost, nodeidx, "flatboost", time, graph->isDirect()?nullptr:depnode);
385  myUsePointFilletPolys = false;
386  if (true)
387  graph->evalOpParm(myUsePointFilletPolys, nodeidx, "useptfilletgroup", time, graph->isDirect()?nullptr:depnode);
388  myPointFilletPolys = "pointfilletpolys"_UTsh;
389  if (true && ( (true&&!(((getUsePointFilletPolys()==0)))) ) )
390  graph->evalOpParm(myPointFilletPolys, nodeidx, "ptfilletgroup", time, graph->isDirect()?nullptr:depnode);
391  myUsePointFilletEdges = false;
392  if (true)
393  graph->evalOpParm(myUsePointFilletEdges, nodeidx, "useptfilletedges", time, graph->isDirect()?nullptr:depnode);
394  myPointFilletEdges = "pointfilletedges"_UTsh;
395  if (true && ( (true&&!(((getUsePointFilletEdges()==0)))) ) )
396  graph->evalOpParm(myPointFilletEdges, nodeidx, "ptfilletedges", time, graph->isDirect()?nullptr:depnode);
397  myUseEdgeFilletGroup = false;
398  if (true && ( (true&&!(((int64(getGroupType())==1)))) ) )
399  graph->evalOpParm(myUseEdgeFilletGroup, nodeidx, "useedgefilletgroup", time, graph->isDirect()?nullptr:depnode);
400  myEdgeFilletGroup = "edgefilletpolys"_UTsh;
401  if (true && ( (true&&!(((getUseEdgeFilletGroup()==0))||((int64(getGroupType())==1)))) ) )
402  graph->evalOpParm(myEdgeFilletGroup, nodeidx, "edgeprims", time, graph->isDirect()?nullptr:depnode);
403  myUseOffsetEdges = false;
404  if (true)
405  graph->evalOpParm(myUseOffsetEdges, nodeidx, "useoffsetedges", time, graph->isDirect()?nullptr:depnode);
406  myOffsetEdges = "offsetedges"_UTsh;
407  if (true && ( (true&&!(((getUseOffsetEdges()==0)))) ) )
408  graph->evalOpParm(myOffsetEdges, nodeidx, "offsetedges", time, graph->isDirect()?nullptr:depnode);
409  myUseOffsetPoints = false;
410  if (true)
411  graph->evalOpParm(myUseOffsetPoints, nodeidx, "useoffsetpoints", time, graph->isDirect()?nullptr:depnode);
412  myOffsetPoints = "offsetpoints"_UTsh;
413  if (true && ( (true&&!(((getUseOffsetPoints()==0)))) ) )
414  graph->evalOpParm(myOffsetPoints, nodeidx, "offsetpoints", time, graph->isDirect()?nullptr:depnode);
415  myUseMergedPoints = false;
416  if (true)
417  graph->evalOpParm(myUseMergedPoints, nodeidx, "usemergedpoints", time, graph->isDirect()?nullptr:depnode);
418  myMergedPoints = "mergedpoints"_UTsh;
419  if (true && ( (true&&!(((getUseMergedPoints()==0)))) ) )
420  graph->evalOpParm(myMergedPoints, nodeidx, "mergedpoints", time, graph->isDirect()?nullptr:depnode);
421  myProfileSampling = 0;
422  if (true && ( (true&&!(((int64(getGroupType())==1))||((int64(getFilletShape())!=4))||((int64(getProfileSource())==0)))) ) )
423  graph->evalOpParm(myProfileSampling, nodeidx, "profilesampling", time, graph->isDirect()?nullptr:depnode);
424  myDivisions = 1;
425  if (true && ( (true&&!(((int64(getFilletShape())==0))||((int64(getProfileSampling())==2)))) ) )
426  graph->evalOpParm(myDivisions, nodeidx, "divisions", time, graph->isDirect()?nullptr:depnode);
427 
428  }
429 
430 
431  void loadFromOpSubclass(const LoadParms &loadparms) override
432  {
433  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
434  }
435 
436 
437  void copyFrom(const OP_NodeParms *src) override
438  {
439  *this = *((const SOP_PolyBevel_3_0Parms *)src);
440  }
441 
442  template <typename T>
443  void
444  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
445  {
446  if (idx.size() < 1)
447  return;
448  UT_ASSERT(idx.size() == instance.size()+1);
449  if (idx.size() != instance.size()+1)
450  return;
451  switch (idx[0])
452  {
453  case 0:
454  coerceValue(value, myGroup);
455  break;
456  case 1:
457  coerceValue(value, myGroupType);
458  break;
459  case 2:
460  coerceValue(value, myIgnoreBridges);
461  break;
462  case 3:
463  coerceValue(value, myIgnoreShared);
464  break;
465  case 4:
466  coerceValue(value, myIgnoreFlatEdges);
467  break;
468  case 5:
469  coerceValue(value, myIgnoreFlatPoints);
470  break;
471  case 6:
472  coerceValue(value, myIgnoreInlinePoints);
473  break;
474  case 7:
475  coerceValue(value, myFlatAngle);
476  break;
477  case 8:
478  coerceValue(value, myOffset);
479  break;
480  case 9:
481  coerceValue(value, myUseOffsetScale);
482  break;
483  case 10:
484  coerceValue(value, myPointScaleAttr);
485  break;
486  case 11:
487  coerceValue(value, mySliding);
488  break;
489  case 12:
490  coerceValue(value, myAsymTol);
491  break;
492  case 13:
493  coerceValue(value, mySlideEdges);
494  break;
495  case 14:
496  coerceValue(value, myDetectCollisions);
497  break;
498  case 15:
499  coerceValue(value, myRestrictSlides);
500  break;
501  case 16:
502  coerceValue(value, myLimit);
503  break;
504  case 17:
505  coerceValue(value, myStopAtSlideEnd);
506  break;
507  case 18:
508  coerceValue(value, myStopAtPinches);
509  break;
510  case 19:
511  coerceValue(value, myPinchAngle);
512  break;
513  case 20:
514  coerceValue(value, myStopAtCollisions);
515  break;
516  case 21:
517  coerceValue(value, myFilletShape);
518  break;
519  case 22:
520  coerceValue(value, myConvexity);
521  break;
522  case 23:
523  coerceValue(value, myProfileSource);
524  break;
525  case 24:
526  coerceValue(value, myProfileScale);
527  break;
528  case 25:
529  coerceValue(value, myReverseProfile);
530  break;
531  case 26:
532  coerceValue(value, mySymmetrizeProfile);
533  break;
534  case 27:
535  coerceValue(value, myProfileDirection);
536  break;
537  case 28:
538  coerceValue(value, myProfileRamp);
539  break;
540  case 29:
541  coerceValue(value, myFlatBoost);
542  break;
543  case 30:
544  coerceValue(value, myUsePointFilletPolys);
545  break;
546  case 31:
547  coerceValue(value, myPointFilletPolys);
548  break;
549  case 32:
550  coerceValue(value, myUsePointFilletEdges);
551  break;
552  case 33:
553  coerceValue(value, myPointFilletEdges);
554  break;
555  case 34:
556  coerceValue(value, myUseEdgeFilletGroup);
557  break;
558  case 35:
559  coerceValue(value, myEdgeFilletGroup);
560  break;
561  case 36:
562  coerceValue(value, myUseOffsetEdges);
563  break;
564  case 37:
565  coerceValue(value, myOffsetEdges);
566  break;
567  case 38:
568  coerceValue(value, myUseOffsetPoints);
569  break;
570  case 39:
571  coerceValue(value, myOffsetPoints);
572  break;
573  case 40:
574  coerceValue(value, myUseMergedPoints);
575  break;
576  case 41:
577  coerceValue(value, myMergedPoints);
578  break;
579  case 42:
580  coerceValue(value, myProfileSampling);
581  break;
582  case 43:
583  coerceValue(value, myDivisions);
584  break;
585 
586  }
587  }
588 
589  bool isParmColorRamp(exint idx) const override
590  {
591  switch (idx)
592  {
593 
594  }
595  return false;
596  }
597 
598  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
599  { doGetParmValue(idx, instance, value); }
600  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
601  { doGetParmValue(idx, instance, value); }
602  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
603  { doGetParmValue(idx, instance, value); }
604  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
605  { doGetParmValue(idx, instance, value); }
606  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
607  { doGetParmValue(idx, instance, value); }
608  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
609  { doGetParmValue(idx, instance, value); }
610  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
611  { doGetParmValue(idx, instance, value); }
612  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
613  { doGetParmValue(idx, instance, value); }
614  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
615  { doGetParmValue(idx, instance, value); }
616  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
617  { doGetParmValue(idx, instance, value); }
618  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
619  { doGetParmValue(idx, instance, value); }
620 
621  template <typename T>
622  void
623  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
624  {
625  if (idx.size() < 1)
626  return;
627  UT_ASSERT(idx.size() == instance.size()+1);
628  if (idx.size() != instance.size()+1)
629  return;
630  switch (idx[0])
631  {
632  case 0:
633  coerceValue(myGroup, ( ( value ) ));
634  break;
635  case 1:
636  coerceValue(myGroupType, clampMinValue(0, clampMaxValue(3, value ) ));
637  break;
638  case 2:
639  coerceValue(myIgnoreBridges, ( ( value ) ));
640  break;
641  case 3:
642  coerceValue(myIgnoreShared, ( ( value ) ));
643  break;
644  case 4:
645  coerceValue(myIgnoreFlatEdges, ( ( value ) ));
646  break;
647  case 5:
648  coerceValue(myIgnoreFlatPoints, ( ( value ) ));
649  break;
650  case 6:
651  coerceValue(myIgnoreInlinePoints, ( ( value ) ));
652  break;
653  case 7:
654  coerceValue(myFlatAngle, clampMinValue(0, clampMaxValue(180, value ) ));
655  break;
656  case 8:
657  coerceValue(myOffset, clampMinValue(0, ( value ) ));
658  break;
659  case 9:
660  coerceValue(myUseOffsetScale, clampMinValue(0, clampMaxValue(1, value ) ));
661  break;
662  case 10:
663  coerceValue(myPointScaleAttr, ( ( value ) ));
664  break;
665  case 11:
666  coerceValue(mySliding, clampMinValue(0, clampMaxValue(2, value ) ));
667  break;
668  case 12:
669  coerceValue(myAsymTol, clampMinValue(0, clampMaxValue(1, value ) ));
670  break;
671  case 13:
672  coerceValue(mySlideEdges, ( ( value ) ));
673  break;
674  case 14:
675  coerceValue(myDetectCollisions, ( ( value ) ));
676  break;
677  case 15:
678  coerceValue(myRestrictSlides, ( ( value ) ));
679  break;
680  case 16:
681  coerceValue(myLimit, clampMinValue(0, clampMaxValue(2, value ) ));
682  break;
683  case 17:
684  coerceValue(myStopAtSlideEnd, ( ( value ) ));
685  break;
686  case 18:
687  coerceValue(myStopAtPinches, ( ( value ) ));
688  break;
689  case 19:
690  coerceValue(myPinchAngle, clampMinValue(0, ( value ) ));
691  break;
692  case 20:
693  coerceValue(myStopAtCollisions, ( ( value ) ));
694  break;
695  case 21:
696  coerceValue(myFilletShape, clampMinValue(0, clampMaxValue(4, value ) ));
697  break;
698  case 22:
699  coerceValue(myConvexity, clampMinValue(-1, clampMaxValue(1, value ) ));
700  break;
701  case 23:
702  coerceValue(myProfileSource, clampMinValue(0, clampMaxValue(2, value ) ));
703  break;
704  case 24:
705  coerceValue(myProfileScale, ( ( value ) ));
706  break;
707  case 25:
708  coerceValue(myReverseProfile, ( ( value ) ));
709  break;
710  case 26:
711  coerceValue(mySymmetrizeProfile, ( ( value ) ));
712  break;
713  case 27:
714  coerceValue(myProfileDirection, ( ( value ) ));
715  break;
716  case 28:
717  coerceValue(myProfileRamp, clampMinValue(1, ( value ) ));
718  break;
719  case 29:
720  coerceValue(myFlatBoost, clampMinValue(0, clampMaxValue(90, value ) ));
721  break;
722  case 30:
723  coerceValue(myUsePointFilletPolys, ( ( value ) ));
724  break;
725  case 31:
726  coerceValue(myPointFilletPolys, ( ( value ) ));
727  break;
728  case 32:
729  coerceValue(myUsePointFilletEdges, ( ( value ) ));
730  break;
731  case 33:
732  coerceValue(myPointFilletEdges, ( ( value ) ));
733  break;
734  case 34:
735  coerceValue(myUseEdgeFilletGroup, ( ( value ) ));
736  break;
737  case 35:
738  coerceValue(myEdgeFilletGroup, ( ( value ) ));
739  break;
740  case 36:
741  coerceValue(myUseOffsetEdges, ( ( value ) ));
742  break;
743  case 37:
744  coerceValue(myOffsetEdges, ( ( value ) ));
745  break;
746  case 38:
747  coerceValue(myUseOffsetPoints, ( ( value ) ));
748  break;
749  case 39:
750  coerceValue(myOffsetPoints, ( ( value ) ));
751  break;
752  case 40:
753  coerceValue(myUseMergedPoints, ( ( value ) ));
754  break;
755  case 41:
756  coerceValue(myMergedPoints, ( ( value ) ));
757  break;
758  case 42:
759  coerceValue(myProfileSampling, clampMinValue(0, clampMaxValue(2, value ) ));
760  break;
761  case 43:
762  coerceValue(myDivisions, clampMinValue(1, ( value ) ));
763  break;
764 
765  }
766  }
767 
768  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
769  { doSetParmValue(idx, instance, value); }
770  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
771  { doSetParmValue(idx, instance, value); }
772  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
773  { doSetParmValue(idx, instance, value); }
774  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
775  { doSetParmValue(idx, instance, value); }
776  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
777  { doSetParmValue(idx, instance, value); }
778  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
779  { doSetParmValue(idx, instance, value); }
780  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
781  { doSetParmValue(idx, instance, value); }
782  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
783  { doSetParmValue(idx, instance, value); }
784  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
785  { doSetParmValue(idx, instance, value); }
786  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
787  { doSetParmValue(idx, instance, value); }
788  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
789  { doSetParmValue(idx, instance, value); }
790 
791  exint getNestNumParms(TempIndex idx) const override
792  {
793  if (idx.size() == 0)
794  return 44;
795  switch (idx[0])
796  {
797 
798  }
799  // Invalid
800  return 0;
801  }
802 
803  const char *getNestParmName(TempIndex fieldnum) const override
804  {
805  if (fieldnum.size() < 1)
806  return 0;
807  switch (fieldnum[0])
808  {
809  case 0:
810  return "group";
811  case 1:
812  return "grouptype";
813  case 2:
814  return "ignorebridgededges";
815  case 3:
816  return "ignoresharededges";
817  case 4:
818  return "ignoreflatedges";
819  case 5:
820  return "ignoreflatpoints";
821  case 6:
822  return "ignoreinlinepoints";
823  case 7:
824  return "flatangle";
825  case 8:
826  return "offset";
827  case 9:
828  return "useoffsetscale";
829  case 10:
830  return "pointscaleattr";
831  case 11:
832  return "sliding";
833  case 12:
834  return "asymtol";
835  case 13:
836  return "slideedges";
837  case 14:
838  return "detectcollisions";
839  case 15:
840  return "restrictslides";
841  case 16:
842  return "limit";
843  case 17:
844  return "stopatslideend";
845  case 18:
846  return "stopatpinches";
847  case 19:
848  return "pinchangle";
849  case 20:
850  return "stopatcollisions";
851  case 21:
852  return "filletshape";
853  case 22:
854  return "convexity";
855  case 23:
856  return "profilesource";
857  case 24:
858  return "profilescale";
859  case 25:
860  return "reverseprofile";
861  case 26:
862  return "symmetrizeprofile";
863  case 27:
864  return "profiledirection";
865  case 28:
866  return "profileramp";
867  case 29:
868  return "flatboost";
869  case 30:
870  return "useptfilletgroup";
871  case 31:
872  return "ptfilletgroup";
873  case 32:
874  return "useptfilletedges";
875  case 33:
876  return "ptfilletedges";
877  case 34:
878  return "useedgefilletgroup";
879  case 35:
880  return "edgeprims";
881  case 36:
882  return "useoffsetedges";
883  case 37:
884  return "offsetedges";
885  case 38:
886  return "useoffsetpoints";
887  case 39:
888  return "offsetpoints";
889  case 40:
890  return "usemergedpoints";
891  case 41:
892  return "mergedpoints";
893  case 42:
894  return "profilesampling";
895  case 43:
896  return "divisions";
897 
898  }
899  return 0;
900  }
901 
902  ParmType getNestParmType(TempIndex fieldnum) const override
903  {
904  if (fieldnum.size() < 1)
905  return PARM_UNSUPPORTED;
906  switch (fieldnum[0])
907  {
908  case 0:
909  return PARM_STRING;
910  case 1:
911  return PARM_INTEGER;
912  case 2:
913  return PARM_INTEGER;
914  case 3:
915  return PARM_INTEGER;
916  case 4:
917  return PARM_INTEGER;
918  case 5:
919  return PARM_INTEGER;
920  case 6:
921  return PARM_INTEGER;
922  case 7:
923  return PARM_FLOAT;
924  case 8:
925  return PARM_FLOAT;
926  case 9:
927  return PARM_INTEGER;
928  case 10:
929  return PARM_STRING;
930  case 11:
931  return PARM_INTEGER;
932  case 12:
933  return PARM_FLOAT;
934  case 13:
935  return PARM_STRING;
936  case 14:
937  return PARM_INTEGER;
938  case 15:
939  return PARM_INTEGER;
940  case 16:
941  return PARM_INTEGER;
942  case 17:
943  return PARM_INTEGER;
944  case 18:
945  return PARM_INTEGER;
946  case 19:
947  return PARM_FLOAT;
948  case 20:
949  return PARM_INTEGER;
950  case 21:
951  return PARM_INTEGER;
952  case 22:
953  return PARM_FLOAT;
954  case 23:
955  return PARM_INTEGER;
956  case 24:
957  return PARM_FLOAT;
958  case 25:
959  return PARM_INTEGER;
960  case 26:
961  return PARM_INTEGER;
962  case 27:
963  return PARM_STRING;
964  case 28:
965  return PARM_RAMP;
966  case 29:
967  return PARM_FLOAT;
968  case 30:
969  return PARM_INTEGER;
970  case 31:
971  return PARM_STRING;
972  case 32:
973  return PARM_INTEGER;
974  case 33:
975  return PARM_STRING;
976  case 34:
977  return PARM_INTEGER;
978  case 35:
979  return PARM_STRING;
980  case 36:
981  return PARM_INTEGER;
982  case 37:
983  return PARM_STRING;
984  case 38:
985  return PARM_INTEGER;
986  case 39:
987  return PARM_STRING;
988  case 40:
989  return PARM_INTEGER;
990  case 41:
991  return PARM_STRING;
992  case 42:
993  return PARM_INTEGER;
994  case 43:
995  return PARM_INTEGER;
996 
997  }
998  return PARM_UNSUPPORTED;
999  }
1000 
1001  // Boiler plate to load individual types.
1002  static void loadData(UT_IStream &is, int64 &v)
1003  { is.bread(&v, 1); }
1004  static void loadData(UT_IStream &is, bool &v)
1005  { int64 iv; is.bread(&iv, 1); v = iv; }
1006  static void loadData(UT_IStream &is, fpreal64 &v)
1007  { is.bread<fpreal64>(&v, 1); }
1008  static void loadData(UT_IStream &is, UT_Vector2D &v)
1009  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
1010  static void loadData(UT_IStream &is, UT_Vector3D &v)
1011  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
1012  is.bread<fpreal64>(&v.z(), 1); }
1013  static void loadData(UT_IStream &is, UT_Vector4D &v)
1014  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
1015  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
1016  static void loadData(UT_IStream &is, UT_Matrix2D &v)
1017  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
1018  static void loadData(UT_IStream &is, UT_Matrix3D &v)
1019  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
1020  static void loadData(UT_IStream &is, UT_Matrix4D &v)
1021  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
1022  static void loadData(UT_IStream &is, UT_Vector2I &v)
1023  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
1024  static void loadData(UT_IStream &is, UT_Vector3I &v)
1025  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
1026  is.bread<int64>(&v.z(), 1); }
1027  static void loadData(UT_IStream &is, UT_Vector4I &v)
1028  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
1029  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
1031  { is.bread(v); }
1033  { UT_StringHolder rampdata;
1034  loadData(is, rampdata);
1035  if (rampdata.isstring())
1036  {
1037  v.reset(new UT_Ramp());
1038  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
1039  v->load(istr);
1040  }
1041  else v.reset();
1042  }
1045  loadData(is, data);
1046  if (data.isstring())
1047  {
1048  // Find the data type.
1049  const char *colon = UT_StringWrap(data).findChar(':');
1050  if (colon)
1051  {
1052  int typelen = colon - data.buffer();
1054  type.strncpy(data.buffer(), typelen);
1055  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
1056 
1057  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
1058  }
1059  }
1060  else v.reset();
1061  }
1062 
1063  static void saveData(std::ostream &os, int64 v)
1064  { UTwrite(os, &v); }
1065  static void saveData(std::ostream &os, bool v)
1066  { int64 iv = v; UTwrite(os, &iv); }
1067  static void saveData(std::ostream &os, fpreal64 v)
1068  { UTwrite<fpreal64>(os, &v); }
1069  static void saveData(std::ostream &os, UT_Vector2D v)
1070  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
1071  static void saveData(std::ostream &os, UT_Vector3D v)
1072  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
1073  UTwrite<fpreal64>(os, &v.z()); }
1074  static void saveData(std::ostream &os, UT_Vector4D v)
1075  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
1076  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
1077  static void saveData(std::ostream &os, UT_Matrix2D v)
1079  static void saveData(std::ostream &os, UT_Matrix3D v)
1081  static void saveData(std::ostream &os, UT_Matrix4D v)
1083  static void saveData(std::ostream &os, UT_StringHolder s)
1084  { UT_StringWrap(s).saveBinary(os); }
1085  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
1087  UT_OStringStream ostr;
1088  if (s) s->save(ostr);
1089  result = ostr.str();
1090  saveData(os, result);
1091  }
1092  static void saveData(std::ostream &os, PRM_DataItemHandle s)
1094  UT_OStringStream ostr;
1095  if (s)
1096  {
1097  ostr << s->getDataTypeToken();
1098  ostr << ":";
1099  s->saveBinary(ostr);
1100  }
1101  result = ostr.str();
1102  saveData(os, result);
1103  }
1104 
1105 
1106  void save(std::ostream &os) const
1107  {
1108  int32 v = version();
1109  UTwrite(os, &v);
1110  saveData(os, myGroup);
1111  saveData(os, myGroupType);
1112  saveData(os, myIgnoreBridges);
1113  saveData(os, myIgnoreShared);
1114  saveData(os, myIgnoreFlatEdges);
1115  saveData(os, myIgnoreFlatPoints);
1116  saveData(os, myIgnoreInlinePoints);
1117  saveData(os, myFlatAngle);
1118  saveData(os, myOffset);
1119  saveData(os, myUseOffsetScale);
1120  saveData(os, myPointScaleAttr);
1121  saveData(os, mySliding);
1122  saveData(os, myAsymTol);
1123  saveData(os, mySlideEdges);
1124  saveData(os, myDetectCollisions);
1125  saveData(os, myRestrictSlides);
1126  saveData(os, myLimit);
1127  saveData(os, myStopAtSlideEnd);
1128  saveData(os, myStopAtPinches);
1129  saveData(os, myPinchAngle);
1130  saveData(os, myStopAtCollisions);
1131  saveData(os, myFilletShape);
1132  saveData(os, myConvexity);
1133  saveData(os, myProfileSource);
1134  saveData(os, myProfileScale);
1135  saveData(os, myReverseProfile);
1136  saveData(os, mySymmetrizeProfile);
1137  saveData(os, myProfileDirection);
1138  saveData(os, myProfileRamp);
1139  saveData(os, myFlatBoost);
1140  saveData(os, myUsePointFilletPolys);
1141  saveData(os, myPointFilletPolys);
1142  saveData(os, myUsePointFilletEdges);
1143  saveData(os, myPointFilletEdges);
1144  saveData(os, myUseEdgeFilletGroup);
1145  saveData(os, myEdgeFilletGroup);
1146  saveData(os, myUseOffsetEdges);
1147  saveData(os, myOffsetEdges);
1148  saveData(os, myUseOffsetPoints);
1149  saveData(os, myOffsetPoints);
1150  saveData(os, myUseMergedPoints);
1151  saveData(os, myMergedPoints);
1152  saveData(os, myProfileSampling);
1153  saveData(os, myDivisions);
1154 
1155  }
1156 
1157  bool load(UT_IStream &is)
1158  {
1159  int32 v;
1160  is.bread(&v, 1);
1161  if (version() != v)
1162  {
1163  // Fail incompatible versions
1164  return false;
1165  }
1166  loadData(is, myGroup);
1167  loadData(is, myGroupType);
1168  loadData(is, myIgnoreBridges);
1169  loadData(is, myIgnoreShared);
1170  loadData(is, myIgnoreFlatEdges);
1171  loadData(is, myIgnoreFlatPoints);
1172  loadData(is, myIgnoreInlinePoints);
1173  loadData(is, myFlatAngle);
1174  loadData(is, myOffset);
1175  loadData(is, myUseOffsetScale);
1176  loadData(is, myPointScaleAttr);
1177  loadData(is, mySliding);
1178  loadData(is, myAsymTol);
1179  loadData(is, mySlideEdges);
1180  loadData(is, myDetectCollisions);
1181  loadData(is, myRestrictSlides);
1182  loadData(is, myLimit);
1183  loadData(is, myStopAtSlideEnd);
1184  loadData(is, myStopAtPinches);
1185  loadData(is, myPinchAngle);
1186  loadData(is, myStopAtCollisions);
1187  loadData(is, myFilletShape);
1188  loadData(is, myConvexity);
1189  loadData(is, myProfileSource);
1190  loadData(is, myProfileScale);
1191  loadData(is, myReverseProfile);
1192  loadData(is, mySymmetrizeProfile);
1193  loadData(is, myProfileDirection);
1194  loadData(is, myProfileRamp);
1195  loadData(is, myFlatBoost);
1196  loadData(is, myUsePointFilletPolys);
1197  loadData(is, myPointFilletPolys);
1198  loadData(is, myUsePointFilletEdges);
1199  loadData(is, myPointFilletEdges);
1200  loadData(is, myUseEdgeFilletGroup);
1201  loadData(is, myEdgeFilletGroup);
1202  loadData(is, myUseOffsetEdges);
1203  loadData(is, myOffsetEdges);
1204  loadData(is, myUseOffsetPoints);
1205  loadData(is, myOffsetPoints);
1206  loadData(is, myUseMergedPoints);
1207  loadData(is, myMergedPoints);
1208  loadData(is, myProfileSampling);
1209  loadData(is, myDivisions);
1210 
1211  return true;
1212  }
1213 
1214  const UT_StringHolder & getGroup() const { return myGroup; }
1215  void setGroup(const UT_StringHolder & val) { myGroup = val; }
1217  {
1218  SOP_Node *thissop = cookparms.getNode();
1219  if (!thissop) return getGroup();
1221  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
1222  return result;
1223  }
1224  GroupType getGroupType() const { return GroupType(myGroupType); }
1225  void setGroupType(GroupType val) { myGroupType = int64(val); }
1227  {
1228  SOP_Node *thissop = cookparms.getNode();
1229  if (!thissop) return getGroupType();
1230  int64 result;
1231  OP_Utils::evalOpParm(result, thissop, "grouptype", cookparms.getCookTime(), 0);
1232  return GroupType(result);
1233  }
1234  bool getIgnoreBridges() const { return myIgnoreBridges; }
1235  void setIgnoreBridges(bool val) { myIgnoreBridges = val; }
1236  bool opIgnoreBridges(const SOP_NodeVerb::CookParms &cookparms) const
1237  {
1238  SOP_Node *thissop = cookparms.getNode();
1239  if (!thissop) return getIgnoreBridges();
1240  bool result;
1241  OP_Utils::evalOpParm(result, thissop, "ignorebridgededges", cookparms.getCookTime(), 0);
1242  return result;
1243  }
1244  bool getIgnoreShared() const { return myIgnoreShared; }
1245  void setIgnoreShared(bool val) { myIgnoreShared = val; }
1246  bool opIgnoreShared(const SOP_NodeVerb::CookParms &cookparms) const
1247  {
1248  SOP_Node *thissop = cookparms.getNode();
1249  if (!thissop) return getIgnoreShared();
1250  bool result;
1251  OP_Utils::evalOpParm(result, thissop, "ignoresharededges", cookparms.getCookTime(), 0);
1252  return result;
1253  }
1254  bool getIgnoreFlatEdges() const { return myIgnoreFlatEdges; }
1255  void setIgnoreFlatEdges(bool val) { myIgnoreFlatEdges = val; }
1256  bool opIgnoreFlatEdges(const SOP_NodeVerb::CookParms &cookparms) const
1257  {
1258  SOP_Node *thissop = cookparms.getNode();
1259  if (!thissop) return getIgnoreFlatEdges();
1260  bool result;
1261  OP_Utils::evalOpParm(result, thissop, "ignoreflatedges", cookparms.getCookTime(), 0);
1262  return result;
1263  }
1264  bool getIgnoreFlatPoints() const { return myIgnoreFlatPoints; }
1265  void setIgnoreFlatPoints(bool val) { myIgnoreFlatPoints = val; }
1266  bool opIgnoreFlatPoints(const SOP_NodeVerb::CookParms &cookparms) const
1267  {
1268  SOP_Node *thissop = cookparms.getNode();
1269  if (!thissop) return getIgnoreFlatPoints();
1270  bool result;
1271  OP_Utils::evalOpParm(result, thissop, "ignoreflatpoints", cookparms.getCookTime(), 0);
1272  return result;
1273  }
1274  bool getIgnoreInlinePoints() const { return myIgnoreInlinePoints; }
1275  void setIgnoreInlinePoints(bool val) { myIgnoreInlinePoints = val; }
1276  bool opIgnoreInlinePoints(const SOP_NodeVerb::CookParms &cookparms) const
1277  {
1278  SOP_Node *thissop = cookparms.getNode();
1279  if (!thissop) return getIgnoreInlinePoints();
1280  bool result;
1281  OP_Utils::evalOpParm(result, thissop, "ignoreinlinepoints", cookparms.getCookTime(), 0);
1282  return result;
1283  }
1284  fpreal64 getFlatAngle() const { return myFlatAngle; }
1285  void setFlatAngle(fpreal64 val) { myFlatAngle = val; }
1287  {
1288  SOP_Node *thissop = cookparms.getNode();
1289  if (!thissop) return getFlatAngle();
1290  fpreal64 result;
1291  OP_Utils::evalOpParm(result, thissop, "flatangle", cookparms.getCookTime(), 0);
1292  return result;
1293  }
1294  fpreal64 getOffset() const { return myOffset; }
1295  void setOffset(fpreal64 val) { myOffset = val; }
1297  {
1298  SOP_Node *thissop = cookparms.getNode();
1299  if (!thissop) return getOffset();
1300  fpreal64 result;
1301  OP_Utils::evalOpParm(result, thissop, "offset", cookparms.getCookTime(), 0);
1302  return result;
1303  }
1304  UseOffsetScale getUseOffsetScale() const { return UseOffsetScale(myUseOffsetScale); }
1305  void setUseOffsetScale(UseOffsetScale val) { myUseOffsetScale = int64(val); }
1307  {
1308  SOP_Node *thissop = cookparms.getNode();
1309  if (!thissop) return getUseOffsetScale();
1310  int64 result;
1311  OP_Utils::evalOpParm(result, thissop, "useoffsetscale", cookparms.getCookTime(), 0);
1312  return UseOffsetScale(result);
1313  }
1314  const UT_StringHolder & getPointScaleAttr() const { return myPointScaleAttr; }
1315  void setPointScaleAttr(const UT_StringHolder & val) { myPointScaleAttr = val; }
1317  {
1318  SOP_Node *thissop = cookparms.getNode();
1319  if (!thissop) return getPointScaleAttr();
1321  OP_Utils::evalOpParm(result, thissop, "pointscaleattr", cookparms.getCookTime(), 0);
1322  return result;
1323  }
1324  Sliding getSliding() const { return Sliding(mySliding); }
1325  void setSliding(Sliding val) { mySliding = int64(val); }
1327  {
1328  SOP_Node *thissop = cookparms.getNode();
1329  if (!thissop) return getSliding();
1330  int64 result;
1331  OP_Utils::evalOpParm(result, thissop, "sliding", cookparms.getCookTime(), 0);
1332  return Sliding(result);
1333  }
1334  fpreal64 getAsymTol() const { return myAsymTol; }
1335  void setAsymTol(fpreal64 val) { myAsymTol = val; }
1337  {
1338  SOP_Node *thissop = cookparms.getNode();
1339  if (!thissop) return getAsymTol();
1340  fpreal64 result;
1341  OP_Utils::evalOpParm(result, thissop, "asymtol", cookparms.getCookTime(), 0);
1342  return result;
1343  }
1344  const UT_StringHolder & getSlideEdges() const { return mySlideEdges; }
1345  void setSlideEdges(const UT_StringHolder & val) { mySlideEdges = val; }
1347  {
1348  SOP_Node *thissop = cookparms.getNode();
1349  if (!thissop) return getSlideEdges();
1351  OP_Utils::evalOpParm(result, thissop, "slideedges", cookparms.getCookTime(), 0);
1352  return result;
1353  }
1354  bool getDetectCollisions() const { return myDetectCollisions; }
1355  void setDetectCollisions(bool val) { myDetectCollisions = val; }
1356  bool opDetectCollisions(const SOP_NodeVerb::CookParms &cookparms) const
1357  {
1358  SOP_Node *thissop = cookparms.getNode();
1359  if (!thissop) return getDetectCollisions();
1360  bool result;
1361  OP_Utils::evalOpParm(result, thissop, "detectcollisions", cookparms.getCookTime(), 0);
1362  return result;
1363  }
1364  bool getRestrictSlides() const { return myRestrictSlides; }
1365  void setRestrictSlides(bool val) { myRestrictSlides = val; }
1366  bool opRestrictSlides(const SOP_NodeVerb::CookParms &cookparms) const
1367  {
1368  SOP_Node *thissop = cookparms.getNode();
1369  if (!thissop) return getRestrictSlides();
1370  bool result;
1371  OP_Utils::evalOpParm(result, thissop, "restrictslides", cookparms.getCookTime(), 0);
1372  return result;
1373  }
1374  Limit getLimit() const { return Limit(myLimit); }
1375  void setLimit(Limit val) { myLimit = int64(val); }
1376  Limit opLimit(const SOP_NodeVerb::CookParms &cookparms) const
1377  {
1378  SOP_Node *thissop = cookparms.getNode();
1379  if (!thissop) return getLimit();
1380  int64 result;
1381  OP_Utils::evalOpParm(result, thissop, "limit", cookparms.getCookTime(), 0);
1382  return Limit(result);
1383  }
1384  bool getStopAtSlideEnd() const { return myStopAtSlideEnd; }
1385  void setStopAtSlideEnd(bool val) { myStopAtSlideEnd = val; }
1386  bool opStopAtSlideEnd(const SOP_NodeVerb::CookParms &cookparms) const
1387  {
1388  SOP_Node *thissop = cookparms.getNode();
1389  if (!thissop) return getStopAtSlideEnd();
1390  bool result;
1391  OP_Utils::evalOpParm(result, thissop, "stopatslideend", cookparms.getCookTime(), 0);
1392  return result;
1393  }
1394  bool getStopAtPinches() const { return myStopAtPinches; }
1395  void setStopAtPinches(bool val) { myStopAtPinches = val; }
1396  bool opStopAtPinches(const SOP_NodeVerb::CookParms &cookparms) const
1397  {
1398  SOP_Node *thissop = cookparms.getNode();
1399  if (!thissop) return getStopAtPinches();
1400  bool result;
1401  OP_Utils::evalOpParm(result, thissop, "stopatpinches", cookparms.getCookTime(), 0);
1402  return result;
1403  }
1404  fpreal64 getPinchAngle() const { return myPinchAngle; }
1405  void setPinchAngle(fpreal64 val) { myPinchAngle = val; }
1407  {
1408  SOP_Node *thissop = cookparms.getNode();
1409  if (!thissop) return getPinchAngle();
1410  fpreal64 result;
1411  OP_Utils::evalOpParm(result, thissop, "pinchangle", cookparms.getCookTime(), 0);
1412  return result;
1413  }
1414  bool getStopAtCollisions() const { return myStopAtCollisions; }
1415  void setStopAtCollisions(bool val) { myStopAtCollisions = val; }
1416  bool opStopAtCollisions(const SOP_NodeVerb::CookParms &cookparms) const
1417  {
1418  SOP_Node *thissop = cookparms.getNode();
1419  if (!thissop) return getStopAtCollisions();
1420  bool result;
1421  OP_Utils::evalOpParm(result, thissop, "stopatcollisions", cookparms.getCookTime(), 0);
1422  return result;
1423  }
1424  FilletShape getFilletShape() const { return FilletShape(myFilletShape); }
1425  void setFilletShape(FilletShape val) { myFilletShape = int64(val); }
1427  {
1428  SOP_Node *thissop = cookparms.getNode();
1429  if (!thissop) return getFilletShape();
1430  int64 result;
1431  OP_Utils::evalOpParm(result, thissop, "filletshape", cookparms.getCookTime(), 0);
1432  return FilletShape(result);
1433  }
1434  fpreal64 getConvexity() const { return myConvexity; }
1435  void setConvexity(fpreal64 val) { myConvexity = val; }
1437  {
1438  SOP_Node *thissop = cookparms.getNode();
1439  if (!thissop) return getConvexity();
1440  fpreal64 result;
1441  OP_Utils::evalOpParm(result, thissop, "convexity", cookparms.getCookTime(), 0);
1442  return result;
1443  }
1444  ProfileSource getProfileSource() const { return ProfileSource(myProfileSource); }
1445  void setProfileSource(ProfileSource val) { myProfileSource = int64(val); }
1447  {
1448  SOP_Node *thissop = cookparms.getNode();
1449  if (!thissop) return getProfileSource();
1450  int64 result;
1451  OP_Utils::evalOpParm(result, thissop, "profilesource", cookparms.getCookTime(), 0);
1452  return ProfileSource(result);
1453  }
1454  fpreal64 getProfileScale() const { return myProfileScale; }
1455  void setProfileScale(fpreal64 val) { myProfileScale = val; }
1457  {
1458  SOP_Node *thissop = cookparms.getNode();
1459  if (!thissop) return getProfileScale();
1460  fpreal64 result;
1461  OP_Utils::evalOpParm(result, thissop, "profilescale", cookparms.getCookTime(), 0);
1462  return result;
1463  }
1464  bool getReverseProfile() const { return myReverseProfile; }
1465  void setReverseProfile(bool val) { myReverseProfile = val; }
1466  bool opReverseProfile(const SOP_NodeVerb::CookParms &cookparms) const
1467  {
1468  SOP_Node *thissop = cookparms.getNode();
1469  if (!thissop) return getReverseProfile();
1470  bool result;
1471  OP_Utils::evalOpParm(result, thissop, "reverseprofile", cookparms.getCookTime(), 0);
1472  return result;
1473  }
1474  bool getSymmetrizeProfile() const { return mySymmetrizeProfile; }
1475  void setSymmetrizeProfile(bool val) { mySymmetrizeProfile = val; }
1476  bool opSymmetrizeProfile(const SOP_NodeVerb::CookParms &cookparms) const
1477  {
1478  SOP_Node *thissop = cookparms.getNode();
1479  if (!thissop) return getSymmetrizeProfile();
1480  bool result;
1481  OP_Utils::evalOpParm(result, thissop, "symmetrizeprofile", cookparms.getCookTime(), 0);
1482  return result;
1483  }
1484  const UT_StringHolder & getProfileDirection() const { return myProfileDirection; }
1485  void setProfileDirection(const UT_StringHolder & val) { myProfileDirection = val; }
1487  {
1488  SOP_Node *thissop = cookparms.getNode();
1489  if (!thissop) return getProfileDirection();
1491  OP_Utils::evalOpParm(result, thissop, "profiledirection", cookparms.getCookTime(), 0);
1492  return result;
1493  }
1494  UT_SharedPtr<UT_Ramp> getProfileRamp() const { return myProfileRamp; }
1495  void setProfileRamp(UT_SharedPtr<UT_Ramp> val) { myProfileRamp = val; }
1497  {
1498  SOP_Node *thissop = cookparms.getNode();
1499  if (!thissop) return getProfileRamp();
1501  OP_Utils::evalOpParm(result, thissop, "profileramp", cookparms.getCookTime(), 0);
1502  return result;
1503  }
1504  fpreal64 getFlatBoost() const { return myFlatBoost; }
1505  void setFlatBoost(fpreal64 val) { myFlatBoost = val; }
1507  {
1508  SOP_Node *thissop = cookparms.getNode();
1509  if (!thissop) return getFlatBoost();
1510  fpreal64 result;
1511  OP_Utils::evalOpParm(result, thissop, "flatboost", cookparms.getCookTime(), 0);
1512  return result;
1513  }
1514  bool getUsePointFilletPolys() const { return myUsePointFilletPolys; }
1515  void setUsePointFilletPolys(bool val) { myUsePointFilletPolys = val; }
1516  bool opUsePointFilletPolys(const SOP_NodeVerb::CookParms &cookparms) const
1517  {
1518  SOP_Node *thissop = cookparms.getNode();
1519  if (!thissop) return getUsePointFilletPolys();
1520  bool result;
1521  OP_Utils::evalOpParm(result, thissop, "useptfilletgroup", cookparms.getCookTime(), 0);
1522  return result;
1523  }
1524  const UT_StringHolder & getPointFilletPolys() const { return myPointFilletPolys; }
1525  void setPointFilletPolys(const UT_StringHolder & val) { myPointFilletPolys = val; }
1527  {
1528  SOP_Node *thissop = cookparms.getNode();
1529  if (!thissop) return getPointFilletPolys();
1531  OP_Utils::evalOpParm(result, thissop, "ptfilletgroup", cookparms.getCookTime(), 0);
1532  return result;
1533  }
1534  bool getUsePointFilletEdges() const { return myUsePointFilletEdges; }
1535  void setUsePointFilletEdges(bool val) { myUsePointFilletEdges = val; }
1536  bool opUsePointFilletEdges(const SOP_NodeVerb::CookParms &cookparms) const
1537  {
1538  SOP_Node *thissop = cookparms.getNode();
1539  if (!thissop) return getUsePointFilletEdges();
1540  bool result;
1541  OP_Utils::evalOpParm(result, thissop, "useptfilletedges", cookparms.getCookTime(), 0);
1542  return result;
1543  }
1544  const UT_StringHolder & getPointFilletEdges() const { return myPointFilletEdges; }
1545  void setPointFilletEdges(const UT_StringHolder & val) { myPointFilletEdges = val; }
1547  {
1548  SOP_Node *thissop = cookparms.getNode();
1549  if (!thissop) return getPointFilletEdges();
1551  OP_Utils::evalOpParm(result, thissop, "ptfilletedges", cookparms.getCookTime(), 0);
1552  return result;
1553  }
1554  bool getUseEdgeFilletGroup() const { return myUseEdgeFilletGroup; }
1555  void setUseEdgeFilletGroup(bool val) { myUseEdgeFilletGroup = val; }
1556  bool opUseEdgeFilletGroup(const SOP_NodeVerb::CookParms &cookparms) const
1557  {
1558  SOP_Node *thissop = cookparms.getNode();
1559  if (!thissop) return getUseEdgeFilletGroup();
1560  bool result;
1561  OP_Utils::evalOpParm(result, thissop, "useedgefilletgroup", cookparms.getCookTime(), 0);
1562  return result;
1563  }
1564  const UT_StringHolder & getEdgeFilletGroup() const { return myEdgeFilletGroup; }
1565  void setEdgeFilletGroup(const UT_StringHolder & val) { myEdgeFilletGroup = val; }
1567  {
1568  SOP_Node *thissop = cookparms.getNode();
1569  if (!thissop) return getEdgeFilletGroup();
1571  OP_Utils::evalOpParm(result, thissop, "edgeprims", cookparms.getCookTime(), 0);
1572  return result;
1573  }
1574  bool getUseOffsetEdges() const { return myUseOffsetEdges; }
1575  void setUseOffsetEdges(bool val) { myUseOffsetEdges = val; }
1576  bool opUseOffsetEdges(const SOP_NodeVerb::CookParms &cookparms) const
1577  {
1578  SOP_Node *thissop = cookparms.getNode();
1579  if (!thissop) return getUseOffsetEdges();
1580  bool result;
1581  OP_Utils::evalOpParm(result, thissop, "useoffsetedges", cookparms.getCookTime(), 0);
1582  return result;
1583  }
1584  const UT_StringHolder & getOffsetEdges() const { return myOffsetEdges; }
1585  void setOffsetEdges(const UT_StringHolder & val) { myOffsetEdges = val; }
1587  {
1588  SOP_Node *thissop = cookparms.getNode();
1589  if (!thissop) return getOffsetEdges();
1591  OP_Utils::evalOpParm(result, thissop, "offsetedges", cookparms.getCookTime(), 0);
1592  return result;
1593  }
1594  bool getUseOffsetPoints() const { return myUseOffsetPoints; }
1595  void setUseOffsetPoints(bool val) { myUseOffsetPoints = val; }
1596  bool opUseOffsetPoints(const SOP_NodeVerb::CookParms &cookparms) const
1597  {
1598  SOP_Node *thissop = cookparms.getNode();
1599  if (!thissop) return getUseOffsetPoints();
1600  bool result;
1601  OP_Utils::evalOpParm(result, thissop, "useoffsetpoints", cookparms.getCookTime(), 0);
1602  return result;
1603  }
1604  const UT_StringHolder & getOffsetPoints() const { return myOffsetPoints; }
1605  void setOffsetPoints(const UT_StringHolder & val) { myOffsetPoints = val; }
1607  {
1608  SOP_Node *thissop = cookparms.getNode();
1609  if (!thissop) return getOffsetPoints();
1611  OP_Utils::evalOpParm(result, thissop, "offsetpoints", cookparms.getCookTime(), 0);
1612  return result;
1613  }
1614  bool getUseMergedPoints() const { return myUseMergedPoints; }
1615  void setUseMergedPoints(bool val) { myUseMergedPoints = val; }
1616  bool opUseMergedPoints(const SOP_NodeVerb::CookParms &cookparms) const
1617  {
1618  SOP_Node *thissop = cookparms.getNode();
1619  if (!thissop) return getUseMergedPoints();
1620  bool result;
1621  OP_Utils::evalOpParm(result, thissop, "usemergedpoints", cookparms.getCookTime(), 0);
1622  return result;
1623  }
1624  const UT_StringHolder & getMergedPoints() const { return myMergedPoints; }
1625  void setMergedPoints(const UT_StringHolder & val) { myMergedPoints = val; }
1627  {
1628  SOP_Node *thissop = cookparms.getNode();
1629  if (!thissop) return getMergedPoints();
1631  OP_Utils::evalOpParm(result, thissop, "mergedpoints", cookparms.getCookTime(), 0);
1632  return result;
1633  }
1634  ProfileSampling getProfileSampling() const { return ProfileSampling(myProfileSampling); }
1635  void setProfileSampling(ProfileSampling val) { myProfileSampling = int64(val); }
1637  {
1638  SOP_Node *thissop = cookparms.getNode();
1639  if (!thissop) return getProfileSampling();
1640  int64 result;
1641  OP_Utils::evalOpParm(result, thissop, "profilesampling", cookparms.getCookTime(), 0);
1642  return ProfileSampling(result);
1643  }
1644  int64 getDivisions() const { return myDivisions; }
1645  void setDivisions(int64 val) { myDivisions = val; }
1647  {
1648  SOP_Node *thissop = cookparms.getNode();
1649  if (!thissop) return getDivisions();
1650  int64 result;
1651  OP_Utils::evalOpParm(result, thissop, "divisions", cookparms.getCookTime(), 0);
1652  return result;
1653  }
1654 
1655 private:
1656  UT_StringHolder myGroup;
1657  int64 myGroupType;
1658  bool myIgnoreBridges;
1659  bool myIgnoreShared;
1660  bool myIgnoreFlatEdges;
1661  bool myIgnoreFlatPoints;
1662  bool myIgnoreInlinePoints;
1663  fpreal64 myFlatAngle;
1664  fpreal64 myOffset;
1665  int64 myUseOffsetScale;
1666  UT_StringHolder myPointScaleAttr;
1667  int64 mySliding;
1668  fpreal64 myAsymTol;
1669  UT_StringHolder mySlideEdges;
1670  bool myDetectCollisions;
1671  bool myRestrictSlides;
1672  int64 myLimit;
1673  bool myStopAtSlideEnd;
1674  bool myStopAtPinches;
1675  fpreal64 myPinchAngle;
1676  bool myStopAtCollisions;
1677  int64 myFilletShape;
1678  fpreal64 myConvexity;
1679  int64 myProfileSource;
1680  fpreal64 myProfileScale;
1681  bool myReverseProfile;
1682  bool mySymmetrizeProfile;
1683  UT_StringHolder myProfileDirection;
1684  UT_SharedPtr<UT_Ramp> myProfileRamp;
1685  fpreal64 myFlatBoost;
1686  bool myUsePointFilletPolys;
1687  UT_StringHolder myPointFilletPolys;
1688  bool myUsePointFilletEdges;
1689  UT_StringHolder myPointFilletEdges;
1690  bool myUseEdgeFilletGroup;
1691  UT_StringHolder myEdgeFilletGroup;
1692  bool myUseOffsetEdges;
1693  UT_StringHolder myOffsetEdges;
1694  bool myUseOffsetPoints;
1695  UT_StringHolder myOffsetPoints;
1696  bool myUseMergedPoints;
1697  UT_StringHolder myMergedPoints;
1698  int64 myProfileSampling;
1699  int64 myDivisions;
1700 
1701 };
type
Definition: core.h:556
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
FilletShape opFilletShape(const SOP_NodeVerb::CookParms &cookparms) const
void copyFrom(const OP_NodeParms *src) override
void setSlideEdges(const UT_StringHolder &val)
static void loadData(UT_IStream &is, UT_Vector2I &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
static void saveData(std::ostream &os, UT_Matrix4D v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
fpreal64 opFlatAngle(const SOP_NodeVerb::CookParms &cookparms) const
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
static void loadData(UT_IStream &is, bool &v)
bool operator==(const SOP_PolyBevel_3_0Parms &src) const
static UT_SharedPtr< UT_Ramp > buildFromDefault(const char *def)
Returns a ramp constructed from the canonical default strings.
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
const UT_StringHolder & getProfileDirection() const
bool opUseEdgeFilletGroup(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector2D &v)
bool operator!=(const SOP_PolyBevel_3_0Parms &src) const
bool opRestrictSlides(const SOP_NodeVerb::CookParms &cookparms) const
ProfileSource getProfileSource() const
void setOffsetPoints(const UT_StringHolder &val)
bool opDetectCollisions(const SOP_NodeVerb::CookParms &cookparms) const
void setMergedPoints(const UT_StringHolder &val)
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
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
const GLdouble * v
Definition: glcorearb.h:837
fpreal getTime() const
Definition: OP_Context.h:63
GLsizei const GLfloat * value
Definition: glcorearb.h:824
void setProfileDirection(const UT_StringHolder &val)
bool opUsePointFilletEdges(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getPointFilletPolys() const
FilletShape getFilletShape() const
const OP_Context & context() const
Definition: OP_NodeParms.h:97
void setProfileRamp(UT_SharedPtr< UT_Ramp > val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
void setGroup(const UT_StringHolder &val)
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:667
int64 exint
Definition: SYS_Types.h:125
fpreal64 opPinchAngle(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Matrix4D &v)
SYS_FORCE_INLINE const char * buffer() const
GroupType opGroupType(const SOP_NodeVerb::CookParms &cookparms) const
GLdouble s
Definition: glad.h:3009
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
An output stream object that owns its own string buffer storage.
bool opIgnoreShared(const SOP_NodeVerb::CookParms &cookparms) const
ParmType getNestParmType(TempIndex fieldnum) const override
bool opUsePointFilletPolys(const SOP_NodeVerb::CookParms &cookparms) const
**But if you need a result
Definition: thread.h:622
bool opIgnoreBridges(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector4I &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
static void loadData(UT_IStream &is, UT_Matrix2D &v)
static void saveData(std::ostream &os, fpreal64 v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
exint nodeIdx() const
Definition: OP_NodeParms.h:95
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
bool opUseOffsetEdges(const SOP_NodeVerb::CookParms &cookparms) const
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
static void loadData(UT_IStream &is, fpreal64 &v)
const UT_StringHolder & getSlideEdges() const
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
bool opIgnoreFlatEdges(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getEdgeFilletGroup() const
UT_StringHolder opOffsetEdges(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
void save(std::ostream &os) const
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
void setProfileSampling(ProfileSampling val)
bool opIgnoreInlinePoints(const SOP_NodeVerb::CookParms &cookparms) const
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
void setOffsetEdges(const UT_StringHolder &val)
bool opUseMergedPoints(const SOP_NodeVerb::CookParms &cookparms) const
void setProfileScale(fpreal64 val)
exint getNestNumParms(TempIndex idx) const override
static void saveData(std::ostream &os, UT_Matrix3D v)
exint length() const
void setProfileSource(ProfileSource val)
UT_StringHolder opPointScaleAttr(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:36
UT_StringHolder opMergedPoints(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector3D &v)
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:495
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
UT_StringHolder opPointFilletPolys(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
ProfileSampling getProfileSampling() const
UseOffsetScale opUseOffsetScale(const SOP_NodeVerb::CookParms &cookparms) const
bool opUseOffsetPoints(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
void setGroupType(GroupType val)
void setPointScaleAttr(const UT_StringHolder &val)
static void loadData(UT_IStream &is, UT_Matrix3D &v)
long long int64
Definition: SYS_Types.h:116
void setPointFilletEdges(const UT_StringHolder &val)
const UT_StringHolder & getGroup() const
UT_StringHolder opProfileDirection(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opConvexity(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
void setEdgeFilletGroup(const UT_StringHolder &val)
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
static void loadData(UT_IStream &is, int64 &v)
const UT_StringHolder & getPointScaleAttr() const
UT_SharedPtr< UT_Ramp > opProfileRamp(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Vector3D v)
Limit opLimit(const SOP_NodeVerb::CookParms &cookparms) const
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
fpreal64 opAsymTol(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opOffset(const SOP_NodeVerb::CookParms &cookparms) const
void setPointFilletPolys(const UT_StringHolder &val)
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
static void saveData(std::ostream &os, bool v)
static void loadData(UT_IStream &is, UT_StringHolder &v)
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:303
static void loadData(UT_IStream &is, UT_Vector4D &v)
UT_StringHolder opOffsetPoints(const SOP_NodeVerb::CookParms &cookparms) const
void setFilletShape(FilletShape val)
GT_API const UT_StringHolder version
static void saveData(std::ostream &os, PRM_DataItemHandle s)
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
void setUseOffsetScale(UseOffsetScale val)
const UT_StringHolder & getMergedPoints() const
bool opStopAtPinches(const SOP_NodeVerb::CookParms &cookparms) const
ProfileSampling opProfileSampling(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector3I &v)
bool opStopAtSlideEnd(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getOffsetPoints() const
UT_StringHolder opGroup(const SOP_NodeVerb::CookParms &cookparms) const
bool opStopAtCollisions(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
fpreal64 fpreal
Definition: SYS_Types.h:278
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
bool opIgnoreFlatPoints(const SOP_NodeVerb::CookParms &cookparms) const
LeafData & operator=(const LeafData &)=delete
Utility class for containing a color ramp.
Definition: UT_Ramp.h:96
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
GLuint GLfloat * val
Definition: glcorearb.h:1608
virtual UT_StringHolder baseGetSignature() const
Definition: OP_NodeParms.h:294
fpreal64 opProfileScale(const SOP_NodeVerb::CookParms &cookparms) const
#define SOP_API
Definition: SOP_API.h:10
const UT_StringHolder & getOffsetEdges() const
UT_StringHolder opEdgeFilletGroup(const SOP_NodeVerb::CookParms &cookparms) const
bool opSymmetrizeProfile(const SOP_NodeVerb::CookParms &cookparms) const
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:372
UT_StringHolder opSlideEdges(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opPointFilletEdges(const SOP_NodeVerb::CookParms &cookparms) const
UT_SharedPtr< UT_Ramp > getProfileRamp() const
ProfileSource opProfileSource(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
const char * findChar(int c) const
Definition: UT_String.h:1401
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
bool isParmColorRamp(exint idx) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
bool opReverseProfile(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Vector4D v)
GLboolean r
Definition: glcorearb.h:1222
Sliding opSliding(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opFlatBoost(const SOP_NodeVerb::CookParms &cookparms) const
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
static void saveData(std::ostream &os, UT_StringHolder s)
virtual bool isDirect() const =0
Direct proxies mirror actual nodes:
static void saveData(std::ostream &os, int64 v)
const UT_StringHolder & getPointFilletEdges() const
void loadFromOpSubclass(const LoadParms &loadparms) override
const char * getNestParmName(TempIndex fieldnum) const override
UseOffsetScale getUseOffsetScale() const
int64 opDivisions(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
SYS_FORCE_INLINE bool isstring() const
static void saveData(std::ostream &os, UT_Matrix2D v)
static void saveData(std::ostream &os, UT_Vector2D v)
SYS_FORCE_INLINE UT_StringHolder getToken(GroupType enum_value)
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
GLenum src
Definition: glcorearb.h:1793
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663