HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_Bound.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_BoundEnums
24 {
25  enum class Grouptype
26  {
27  GUESS = 0,
29  EDGES,
30  POINTS,
31  PRIMS
32  };
33 
35  getToken(Grouptype enum_value)
36  {
37  using namespace UT::Literal;
38  switch (enum_value) {
39  case Grouptype::GUESS: return "guess"_sh;
40  case Grouptype::BREAKPOINTS: return "breakpoints"_sh;
41  case Grouptype::EDGES: return "edges"_sh;
42  case Grouptype::POINTS: return "points"_sh;
43  case Grouptype::PRIMS: return "prims"_sh;
44  default: UT_ASSERT(false); return ""_sh;
45  }
46  }
47 
48  enum class BoundType
49  {
50  OFF = 0,
51  ON,
52  RECTANGLE
53  };
54 
56  getToken(BoundType enum_value)
57  {
58  using namespace UT::Literal;
59  switch (enum_value) {
60  case BoundType::OFF: return "off"_sh;
61  case BoundType::ON: return "on"_sh;
62  case BoundType::RECTANGLE: return "rectangle"_sh;
63  default: UT_ASSERT(false); return ""_sh;
64  }
65  }
66 
67  enum class Orient
68  {
69  X = 0,
70  Y,
71  Z
72  };
73 
75  getToken(Orient enum_value)
76  {
77  using namespace UT::Literal;
78  switch (enum_value) {
79  case Orient::X: return "x"_sh;
80  case Orient::Y: return "y"_sh;
81  case Orient::Z: return "z"_sh;
82  default: UT_ASSERT(false); return ""_sh;
83  }
84  }
85 
86 }
87 
88 
90 {
91 public:
92  static int version() { return 1; }
93 
95  {
96  myGroup = ""_UTsh;
97  myGrouptype = 0;
98  myKeeporiginal = false;
99  myCreateBoundingGeo = true;
100  myCreateempty = true;
101  myBoundType = 0;
102  myOrientedbbox = false;
103  myRefinementIterations = 6;
104  myDodivs = false;
105  myDivs = UT_Vector3I(3,3,3);
106  myRebar = false;
107  myMinsize = UT_Vector3D(0,0,0);
108  myOrient = 1;
109  myAccurate = false;
110  myMinradius = 0;
111  myOrientedBRect = false;
112  myOrigin = UT_Vector3D(0,0,0);
113  myDistance = 0;
114  myDirection = UT_Vector3D(0,1,0);
115  myMinpad = UT_Vector3D(0,0,0);
116  myMaxpad = UT_Vector3D(0,0,0);
117  myAddBoundsGroup = false;
118  myBoundsGroup = "bounds"_UTsh;
119  myAddXformAttrib = false;
120  myXformAttrib = "xform"_UTsh;
121  myAddRadiiAttrib = false;
122  myRadiiAttrib = "radii"_UTsh;
123 
124  }
125 
126  explicit SOP_BoundParms(const SOP_BoundParms &) = default;
127  SOP_BoundParms &operator=(const SOP_BoundParms &) = default;
128  SOP_BoundParms(SOP_BoundParms &&) noexcept = default;
129  SOP_BoundParms &operator=(SOP_BoundParms &&) noexcept = default;
130 
131  ~SOP_BoundParms() override {}
132 
133  bool operator==(const SOP_BoundParms &src) const
134  {
135  if (myGroup != src.myGroup) return false;
136  if (myGrouptype != src.myGrouptype) return false;
137  if (myKeeporiginal != src.myKeeporiginal) return false;
138  if (myCreateBoundingGeo != src.myCreateBoundingGeo) return false;
139  if (myCreateempty != src.myCreateempty) return false;
140  if (myBoundType != src.myBoundType) return false;
141  if (myOrientedbbox != src.myOrientedbbox) return false;
142  if (myRefinementIterations != src.myRefinementIterations) return false;
143  if (myDodivs != src.myDodivs) return false;
144  if (myDivs != src.myDivs) return false;
145  if (myRebar != src.myRebar) return false;
146  if (myMinsize != src.myMinsize) return false;
147  if (myOrient != src.myOrient) return false;
148  if (myAccurate != src.myAccurate) return false;
149  if (myMinradius != src.myMinradius) return false;
150  if (myOrientedBRect != src.myOrientedBRect) return false;
151  if (myOrigin != src.myOrigin) return false;
152  if (myDistance != src.myDistance) return false;
153  if (myDirection != src.myDirection) return false;
154  if (myMinpad != src.myMinpad) return false;
155  if (myMaxpad != src.myMaxpad) return false;
156  if (myAddBoundsGroup != src.myAddBoundsGroup) return false;
157  if (myBoundsGroup != src.myBoundsGroup) return false;
158  if (myAddXformAttrib != src.myAddXformAttrib) return false;
159  if (myXformAttrib != src.myXformAttrib) return false;
160  if (myAddRadiiAttrib != src.myAddRadiiAttrib) return false;
161  if (myRadiiAttrib != src.myRadiiAttrib) return false;
162 
163 
164  if (baseGetSignature() != src.baseGetSignature()) return false;
165 
166  return true;
167  }
168  bool operator!=(const SOP_BoundParms &src) const
169  {
170  return !operator==(src);
171  }
175 
176 
177 
178  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
179  {
180  myGroup = ""_UTsh;
181  if (true)
182  graph->evalOpParm(myGroup, nodeidx, "group", time, graph->isDirect()?nullptr:depnode);
183  myGrouptype = 0;
184  if (true)
185  graph->evalOpParm(myGrouptype, nodeidx, "grouptype", time, graph->isDirect()?nullptr:depnode);
186  myKeeporiginal = false;
187  if (true)
188  graph->evalOpParm(myKeeporiginal, nodeidx, "keepOriginal", time, graph->isDirect()?nullptr:depnode);
189  myCreateBoundingGeo = true;
190  if (true)
191  graph->evalOpParm(myCreateBoundingGeo, nodeidx, "createboundinggeo", time, graph->isDirect()?nullptr:depnode);
192  myCreateempty = true;
193  if (true && ( (true&&!(((getCreateBoundingGeo()==0)))) ) )
194  graph->evalOpParm(myCreateempty, nodeidx, "createempty", time, graph->isDirect()?nullptr:depnode);
195  myBoundType = 0;
196  if (true)
197  graph->evalOpParm(myBoundType, nodeidx, "boundtype", time, graph->isDirect()?nullptr:depnode);
198  myOrientedbbox = false;
199  if (true && ( (true&&!(((int64(getBoundType())!=0)))) ) )
200  graph->evalOpParm(myOrientedbbox, nodeidx, "orientedbbox", time, graph->isDirect()?nullptr:depnode);
201  myRefinementIterations = 6;
202  if (true && ( (true&&!(((int64(getBoundType())!=0))||((getOrientedbbox()==0))||((int64(getBoundType())!=0))||((getOrientedbbox()==0)))) ) )
203  graph->evalOpParm(myRefinementIterations, nodeidx, "refinementiterations", time, graph->isDirect()?nullptr:depnode);
204  myDodivs = false;
205  if (true && ( (true&&!(((getCreateBoundingGeo()==0))||((int64(getBoundType())!=0)))) ) )
206  graph->evalOpParm(myDodivs, nodeidx, "dodivs", time, graph->isDirect()?nullptr:depnode);
207  myDivs = UT_Vector3I(3,3,3);
208  if (true && ( (true&&!(((getDodivs()==0))||((getCreateBoundingGeo()==0))||((int64(getBoundType())!=0)))) ) )
209  graph->evalOpParm(myDivs, nodeidx, "divs", time, graph->isDirect()?nullptr:depnode);
210  myRebar = false;
211  if (true && ( (true&&!(((getDodivs()==0))||((getCreateBoundingGeo()==0))||((int64(getBoundType())!=0)))) ) )
212  graph->evalOpParm(myRebar, nodeidx, "rebar", time, graph->isDirect()?nullptr:depnode);
213  myMinsize = UT_Vector3D(0,0,0);
214  if (true && ( (true&&!(((int64(getBoundType())!=0)))) ) )
215  graph->evalOpParm(myMinsize, nodeidx, "minsize", time, graph->isDirect()?nullptr:depnode);
216  myOrient = 1;
217  if (true && ( (true&&!(((getCreateBoundingGeo()==0))||((int64(getBoundType())!=1)))) ) )
218  graph->evalOpParm(myOrient, nodeidx, "orient", time, graph->isDirect()?nullptr:depnode);
219  myAccurate = false;
220  if (true && ( (true&&!(((int64(getBoundType())!=1)))) ) )
221  graph->evalOpParm(myAccurate, nodeidx, "accurate", time, graph->isDirect()?nullptr:depnode);
222  myMinradius = 0;
223  if (true && ( (true&&!(((int64(getBoundType())!=1)))) ) )
224  graph->evalOpParm(myMinradius, nodeidx, "minradius", time, graph->isDirect()?nullptr:depnode);
225  myOrientedBRect = false;
226  if (true && ( (true&&!(((int64(getBoundType())!=2)))) ) )
227  graph->evalOpParm(myOrientedBRect, nodeidx, "orientedbrect", time, graph->isDirect()?nullptr:depnode);
228  myOrigin = UT_Vector3D(0,0,0);
229  if (true && ( (true&&!(((int64(getBoundType())!=2)))) ) )
230  graph->evalOpParm(myOrigin, nodeidx, "origin", time, graph->isDirect()?nullptr:depnode);
231  myDistance = 0;
232  if (true && ( (true&&!(((int64(getBoundType())!=2)))) ) )
233  graph->evalOpParm(myDistance, nodeidx, "dist", time, graph->isDirect()?nullptr:depnode);
234  myDirection = UT_Vector3D(0,1,0);
235  if (true && ( (true&&!(((int64(getBoundType())!=2)))) ) )
236  graph->evalOpParm(myDirection, nodeidx, "dir", time, graph->isDirect()?nullptr:depnode);
237  myMinpad = UT_Vector3D(0,0,0);
238  if (true)
239  graph->evalOpParm(myMinpad, nodeidx, "minpad", time, graph->isDirect()?nullptr:depnode);
240  myMaxpad = UT_Vector3D(0,0,0);
241  if (true)
242  graph->evalOpParm(myMaxpad, nodeidx, "maxpad", time, graph->isDirect()?nullptr:depnode);
243  myAddBoundsGroup = false;
244  if (true && ( (true&&!(((getCreateBoundingGeo()==0)))) ) )
245  graph->evalOpParm(myAddBoundsGroup, nodeidx, "addboundsgroup", time, graph->isDirect()?nullptr:depnode);
246  myBoundsGroup = "bounds"_UTsh;
247  if (true && ( (true&&!(((getAddBoundsGroup()==0))||((getCreateBoundingGeo()==0)))) ) )
248  graph->evalOpParm(myBoundsGroup, nodeidx, "boundsgroup", time, graph->isDirect()?nullptr:depnode);
249  myAddXformAttrib = false;
250  if (true)
251  graph->evalOpParm(myAddXformAttrib, nodeidx, "addxformattrib", time, graph->isDirect()?nullptr:depnode);
252  myXformAttrib = "xform"_UTsh;
253  if (true && ( (true&&!(((getAddXformAttrib()==0)))) ) )
254  graph->evalOpParm(myXformAttrib, nodeidx, "xformattrib", time, graph->isDirect()?nullptr:depnode);
255  myAddRadiiAttrib = false;
256  if (true)
257  graph->evalOpParm(myAddRadiiAttrib, nodeidx, "addradiiattrib", time, graph->isDirect()?nullptr:depnode);
258  myRadiiAttrib = "radii"_UTsh;
259  if (true && ( (true&&!(((getAddRadiiAttrib()==0)))) ) )
260  graph->evalOpParm(myRadiiAttrib, nodeidx, "radiiattrib", time, graph->isDirect()?nullptr:depnode);
261 
262  }
263 
264 
265  void loadFromOpSubclass(const LoadParms &loadparms) override
266  {
267  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
268  }
269 
270 
271  void copyFrom(const OP_NodeParms *src) override
272  {
273  *this = *((const SOP_BoundParms *)src);
274  }
275 
276  template <typename T>
277  void
278  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
279  {
280  if (idx.size() < 1)
281  return;
282  UT_ASSERT(idx.size() == instance.size()+1);
283  if (idx.size() != instance.size()+1)
284  return;
285  switch (idx[0])
286  {
287  case 0:
288  coerceValue(value, myGroup);
289  break;
290  case 1:
291  coerceValue(value, myGrouptype);
292  break;
293  case 2:
294  coerceValue(value, myKeeporiginal);
295  break;
296  case 3:
297  coerceValue(value, myCreateBoundingGeo);
298  break;
299  case 4:
300  coerceValue(value, myCreateempty);
301  break;
302  case 5:
303  coerceValue(value, myBoundType);
304  break;
305  case 6:
306  coerceValue(value, myOrientedbbox);
307  break;
308  case 7:
309  coerceValue(value, myRefinementIterations);
310  break;
311  case 8:
312  coerceValue(value, myDodivs);
313  break;
314  case 9:
315  coerceValue(value, myDivs);
316  break;
317  case 10:
318  coerceValue(value, myRebar);
319  break;
320  case 11:
321  coerceValue(value, myMinsize);
322  break;
323  case 12:
324  coerceValue(value, myOrient);
325  break;
326  case 13:
327  coerceValue(value, myAccurate);
328  break;
329  case 14:
330  coerceValue(value, myMinradius);
331  break;
332  case 15:
333  coerceValue(value, myOrientedBRect);
334  break;
335  case 16:
336  coerceValue(value, myOrigin);
337  break;
338  case 17:
339  coerceValue(value, myDistance);
340  break;
341  case 18:
342  coerceValue(value, myDirection);
343  break;
344  case 19:
345  coerceValue(value, myMinpad);
346  break;
347  case 20:
348  coerceValue(value, myMaxpad);
349  break;
350  case 21:
351  coerceValue(value, myAddBoundsGroup);
352  break;
353  case 22:
354  coerceValue(value, myBoundsGroup);
355  break;
356  case 23:
357  coerceValue(value, myAddXformAttrib);
358  break;
359  case 24:
360  coerceValue(value, myXformAttrib);
361  break;
362  case 25:
363  coerceValue(value, myAddRadiiAttrib);
364  break;
365  case 26:
366  coerceValue(value, myRadiiAttrib);
367  break;
368 
369  }
370  }
371 
372  bool isParmColorRamp(exint idx) const override
373  {
374  switch (idx)
375  {
376 
377  }
378  return false;
379  }
380 
381  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
382  { doGetParmValue(idx, instance, value); }
383  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
384  { doGetParmValue(idx, instance, value); }
385  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
386  { doGetParmValue(idx, instance, value); }
387  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
388  { doGetParmValue(idx, instance, value); }
389  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
390  { doGetParmValue(idx, instance, value); }
391  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
392  { doGetParmValue(idx, instance, value); }
393  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
394  { doGetParmValue(idx, instance, value); }
395  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
396  { doGetParmValue(idx, instance, value); }
397  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
398  { doGetParmValue(idx, instance, value); }
399  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
400  { doGetParmValue(idx, instance, value); }
401  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
402  { doGetParmValue(idx, instance, value); }
403 
404  template <typename T>
405  void
406  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
407  {
408  if (idx.size() < 1)
409  return;
410  UT_ASSERT(idx.size() == instance.size()+1);
411  if (idx.size() != instance.size()+1)
412  return;
413  switch (idx[0])
414  {
415  case 0:
416  coerceValue(myGroup, ( ( value ) ));
417  break;
418  case 1:
419  coerceValue(myGrouptype, clampMinValue(0, clampMaxValue(4, value ) ));
420  break;
421  case 2:
422  coerceValue(myKeeporiginal, ( ( value ) ));
423  break;
424  case 3:
425  coerceValue(myCreateBoundingGeo, ( ( value ) ));
426  break;
427  case 4:
428  coerceValue(myCreateempty, ( ( value ) ));
429  break;
430  case 5:
431  coerceValue(myBoundType, clampMinValue(0, clampMaxValue(2, value ) ));
432  break;
433  case 6:
434  coerceValue(myOrientedbbox, ( ( value ) ));
435  break;
436  case 7:
437  coerceValue(myRefinementIterations, clampMinValue(0, ( value ) ));
438  break;
439  case 8:
440  coerceValue(myDodivs, ( ( value ) ));
441  break;
442  case 9:
443  coerceValue(myDivs, clampMinValue(1, ( value ) ));
444  break;
445  case 10:
446  coerceValue(myRebar, ( ( value ) ));
447  break;
448  case 11:
449  coerceValue(myMinsize, clampMinValue(0, ( value ) ));
450  break;
451  case 12:
452  coerceValue(myOrient, clampMinValue(0, clampMaxValue(2, value ) ));
453  break;
454  case 13:
455  coerceValue(myAccurate, ( ( value ) ));
456  break;
457  case 14:
458  coerceValue(myMinradius, clampMinValue(0, ( value ) ));
459  break;
460  case 15:
461  coerceValue(myOrientedBRect, ( ( value ) ));
462  break;
463  case 16:
464  coerceValue(myOrigin, ( ( value ) ));
465  break;
466  case 17:
467  coerceValue(myDistance, ( ( value ) ));
468  break;
469  case 18:
470  coerceValue(myDirection, ( ( value ) ));
471  break;
472  case 19:
473  coerceValue(myMinpad, ( ( value ) ));
474  break;
475  case 20:
476  coerceValue(myMaxpad, ( ( value ) ));
477  break;
478  case 21:
479  coerceValue(myAddBoundsGroup, ( ( value ) ));
480  break;
481  case 22:
482  coerceValue(myBoundsGroup, ( ( value ) ));
483  break;
484  case 23:
485  coerceValue(myAddXformAttrib, ( ( value ) ));
486  break;
487  case 24:
488  coerceValue(myXformAttrib, ( ( value ) ));
489  break;
490  case 25:
491  coerceValue(myAddRadiiAttrib, ( ( value ) ));
492  break;
493  case 26:
494  coerceValue(myRadiiAttrib, ( ( value ) ));
495  break;
496 
497  }
498  }
499 
500  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
501  { doSetParmValue(idx, instance, value); }
502  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
503  { doSetParmValue(idx, instance, value); }
504  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
505  { doSetParmValue(idx, instance, value); }
506  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
507  { doSetParmValue(idx, instance, value); }
508  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
509  { doSetParmValue(idx, instance, value); }
510  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
511  { doSetParmValue(idx, instance, value); }
512  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
513  { doSetParmValue(idx, instance, value); }
514  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
515  { doSetParmValue(idx, instance, value); }
516  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
517  { doSetParmValue(idx, instance, value); }
518  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
519  { doSetParmValue(idx, instance, value); }
520  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
521  { doSetParmValue(idx, instance, value); }
522 
523  exint getNestNumParms(TempIndex idx) const override
524  {
525  if (idx.size() == 0)
526  return 27;
527  switch (idx[0])
528  {
529 
530  }
531  // Invalid
532  return 0;
533  }
534 
535  const char *getNestParmName(TempIndex fieldnum) const override
536  {
537  if (fieldnum.size() < 1)
538  return 0;
539  switch (fieldnum[0])
540  {
541  case 0:
542  return "group";
543  case 1:
544  return "grouptype";
545  case 2:
546  return "keepOriginal";
547  case 3:
548  return "createboundinggeo";
549  case 4:
550  return "createempty";
551  case 5:
552  return "boundtype";
553  case 6:
554  return "orientedbbox";
555  case 7:
556  return "refinementiterations";
557  case 8:
558  return "dodivs";
559  case 9:
560  return "divs";
561  case 10:
562  return "rebar";
563  case 11:
564  return "minsize";
565  case 12:
566  return "orient";
567  case 13:
568  return "accurate";
569  case 14:
570  return "minradius";
571  case 15:
572  return "orientedbrect";
573  case 16:
574  return "origin";
575  case 17:
576  return "dist";
577  case 18:
578  return "dir";
579  case 19:
580  return "minpad";
581  case 20:
582  return "maxpad";
583  case 21:
584  return "addboundsgroup";
585  case 22:
586  return "boundsgroup";
587  case 23:
588  return "addxformattrib";
589  case 24:
590  return "xformattrib";
591  case 25:
592  return "addradiiattrib";
593  case 26:
594  return "radiiattrib";
595 
596  }
597  return 0;
598  }
599 
600  ParmType getNestParmType(TempIndex fieldnum) const override
601  {
602  if (fieldnum.size() < 1)
603  return PARM_UNSUPPORTED;
604  switch (fieldnum[0])
605  {
606  case 0:
607  return PARM_STRING;
608  case 1:
609  return PARM_INTEGER;
610  case 2:
611  return PARM_INTEGER;
612  case 3:
613  return PARM_INTEGER;
614  case 4:
615  return PARM_INTEGER;
616  case 5:
617  return PARM_INTEGER;
618  case 6:
619  return PARM_INTEGER;
620  case 7:
621  return PARM_INTEGER;
622  case 8:
623  return PARM_INTEGER;
624  case 9:
625  return PARM_VECTOR3;
626  case 10:
627  return PARM_INTEGER;
628  case 11:
629  return PARM_VECTOR3;
630  case 12:
631  return PARM_INTEGER;
632  case 13:
633  return PARM_INTEGER;
634  case 14:
635  return PARM_FLOAT;
636  case 15:
637  return PARM_INTEGER;
638  case 16:
639  return PARM_VECTOR3;
640  case 17:
641  return PARM_FLOAT;
642  case 18:
643  return PARM_VECTOR3;
644  case 19:
645  return PARM_VECTOR3;
646  case 20:
647  return PARM_VECTOR3;
648  case 21:
649  return PARM_INTEGER;
650  case 22:
651  return PARM_STRING;
652  case 23:
653  return PARM_INTEGER;
654  case 24:
655  return PARM_STRING;
656  case 25:
657  return PARM_INTEGER;
658  case 26:
659  return PARM_STRING;
660 
661  }
662  return PARM_UNSUPPORTED;
663  }
664 
665  // Boiler plate to load individual types.
666  static void loadData(UT_IStream &is, int64 &v)
667  { is.bread(&v, 1); }
668  static void loadData(UT_IStream &is, bool &v)
669  { int64 iv; is.bread(&iv, 1); v = iv; }
670  static void loadData(UT_IStream &is, fpreal64 &v)
671  { is.bread<fpreal64>(&v, 1); }
672  static void loadData(UT_IStream &is, UT_Vector2D &v)
673  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
674  static void loadData(UT_IStream &is, UT_Vector3D &v)
675  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
676  is.bread<fpreal64>(&v.z(), 1); }
677  static void loadData(UT_IStream &is, UT_Vector4D &v)
678  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
679  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
680  static void loadData(UT_IStream &is, UT_Matrix2D &v)
681  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
682  static void loadData(UT_IStream &is, UT_Matrix3D &v)
683  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
684  static void loadData(UT_IStream &is, UT_Matrix4D &v)
685  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
686  static void loadData(UT_IStream &is, UT_Vector2I &v)
687  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
688  static void loadData(UT_IStream &is, UT_Vector3I &v)
689  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
690  is.bread<int64>(&v.z(), 1); }
691  static void loadData(UT_IStream &is, UT_Vector4I &v)
692  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
693  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
695  { is.bread(v); }
697  { UT_StringHolder rampdata;
698  loadData(is, rampdata);
699  if (rampdata.isstring())
700  {
701  v.reset(new UT_Ramp());
702  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
703  v->load(istr);
704  }
705  else v.reset();
706  }
709  loadData(is, data);
710  if (data.isstring())
711  {
712  // Find the data type.
713  const char *colon = UT_StringWrap(data).findChar(':');
714  if (colon)
715  {
716  int typelen = colon - data.buffer();
718  type.strncpy(data.buffer(), typelen);
719  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
720 
721  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
722  }
723  }
724  else v.reset();
725  }
726 
727  static void saveData(std::ostream &os, int64 v)
728  { UTwrite(os, &v); }
729  static void saveData(std::ostream &os, bool v)
730  { int64 iv = v; UTwrite(os, &iv); }
731  static void saveData(std::ostream &os, fpreal64 v)
732  { UTwrite<fpreal64>(os, &v); }
733  static void saveData(std::ostream &os, UT_Vector2D v)
734  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
735  static void saveData(std::ostream &os, UT_Vector3D v)
736  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
737  UTwrite<fpreal64>(os, &v.z()); }
738  static void saveData(std::ostream &os, UT_Vector4D v)
739  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
740  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
741  static void saveData(std::ostream &os, UT_Matrix2D v)
743  static void saveData(std::ostream &os, UT_Matrix3D v)
745  static void saveData(std::ostream &os, UT_Matrix4D v)
747  static void saveData(std::ostream &os, UT_StringHolder s)
748  { UT_StringWrap(s).saveBinary(os); }
749  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
751  UT_OStringStream ostr;
752  if (s) s->save(ostr);
753  result = ostr.str();
754  saveData(os, result);
755  }
756  static void saveData(std::ostream &os, PRM_DataItemHandle s)
758  UT_OStringStream ostr;
759  if (s)
760  {
761  ostr << s->getDataTypeToken();
762  ostr << ":";
763  s->saveBinary(ostr);
764  }
765  result = ostr.str();
766  saveData(os, result);
767  }
768 
769 
770  void save(std::ostream &os) const
771  {
772  int32 v = version();
773  UTwrite(os, &v);
774  saveData(os, myGroup);
775  saveData(os, myGrouptype);
776  saveData(os, myKeeporiginal);
777  saveData(os, myCreateBoundingGeo);
778  saveData(os, myCreateempty);
779  saveData(os, myBoundType);
780  saveData(os, myOrientedbbox);
781  saveData(os, myRefinementIterations);
782  saveData(os, myDodivs);
783  saveData(os, myDivs);
784  saveData(os, myRebar);
785  saveData(os, myMinsize);
786  saveData(os, myOrient);
787  saveData(os, myAccurate);
788  saveData(os, myMinradius);
789  saveData(os, myOrientedBRect);
790  saveData(os, myOrigin);
791  saveData(os, myDistance);
792  saveData(os, myDirection);
793  saveData(os, myMinpad);
794  saveData(os, myMaxpad);
795  saveData(os, myAddBoundsGroup);
796  saveData(os, myBoundsGroup);
797  saveData(os, myAddXformAttrib);
798  saveData(os, myXformAttrib);
799  saveData(os, myAddRadiiAttrib);
800  saveData(os, myRadiiAttrib);
801 
802  }
803 
804  bool load(UT_IStream &is)
805  {
806  int32 v;
807  is.bread(&v, 1);
808  if (version() != v)
809  {
810  // Fail incompatible versions
811  return false;
812  }
813  loadData(is, myGroup);
814  loadData(is, myGrouptype);
815  loadData(is, myKeeporiginal);
816  loadData(is, myCreateBoundingGeo);
817  loadData(is, myCreateempty);
818  loadData(is, myBoundType);
819  loadData(is, myOrientedbbox);
820  loadData(is, myRefinementIterations);
821  loadData(is, myDodivs);
822  loadData(is, myDivs);
823  loadData(is, myRebar);
824  loadData(is, myMinsize);
825  loadData(is, myOrient);
826  loadData(is, myAccurate);
827  loadData(is, myMinradius);
828  loadData(is, myOrientedBRect);
829  loadData(is, myOrigin);
830  loadData(is, myDistance);
831  loadData(is, myDirection);
832  loadData(is, myMinpad);
833  loadData(is, myMaxpad);
834  loadData(is, myAddBoundsGroup);
835  loadData(is, myBoundsGroup);
836  loadData(is, myAddXformAttrib);
837  loadData(is, myXformAttrib);
838  loadData(is, myAddRadiiAttrib);
839  loadData(is, myRadiiAttrib);
840 
841  return true;
842  }
843 
844  const UT_StringHolder & getGroup() const { return myGroup; }
845  void setGroup(const UT_StringHolder & val) { myGroup = val; }
847  {
848  SOP_Node *thissop = cookparms.getNode();
849  if (!thissop) return getGroup();
851  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
852  return result;
853  }
854  Grouptype getGrouptype() const { return Grouptype(myGrouptype); }
855  void setGrouptype(Grouptype val) { myGrouptype = int64(val); }
857  {
858  SOP_Node *thissop = cookparms.getNode();
859  if (!thissop) return getGrouptype();
860  int64 result;
861  OP_Utils::evalOpParm(result, thissop, "grouptype", cookparms.getCookTime(), 0);
862  return Grouptype(result);
863  }
864  bool getKeeporiginal() const { return myKeeporiginal; }
865  void setKeeporiginal(bool val) { myKeeporiginal = val; }
866  bool opKeeporiginal(const SOP_NodeVerb::CookParms &cookparms) const
867  {
868  SOP_Node *thissop = cookparms.getNode();
869  if (!thissop) return getKeeporiginal();
870  bool result;
871  OP_Utils::evalOpParm(result, thissop, "keepOriginal", cookparms.getCookTime(), 0);
872  return result;
873  }
874  bool getCreateBoundingGeo() const { return myCreateBoundingGeo; }
875  void setCreateBoundingGeo(bool val) { myCreateBoundingGeo = val; }
876  bool opCreateBoundingGeo(const SOP_NodeVerb::CookParms &cookparms) const
877  {
878  SOP_Node *thissop = cookparms.getNode();
879  if (!thissop) return getCreateBoundingGeo();
880  bool result;
881  OP_Utils::evalOpParm(result, thissop, "createboundinggeo", cookparms.getCookTime(), 0);
882  return result;
883  }
884  bool getCreateempty() const { return myCreateempty; }
885  void setCreateempty(bool val) { myCreateempty = val; }
886  bool opCreateempty(const SOP_NodeVerb::CookParms &cookparms) const
887  {
888  SOP_Node *thissop = cookparms.getNode();
889  if (!thissop) return getCreateempty();
890  bool result;
891  OP_Utils::evalOpParm(result, thissop, "createempty", cookparms.getCookTime(), 0);
892  return result;
893  }
894  BoundType getBoundType() const { return BoundType(myBoundType); }
895  void setBoundType(BoundType val) { myBoundType = int64(val); }
897  {
898  SOP_Node *thissop = cookparms.getNode();
899  if (!thissop) return getBoundType();
900  int64 result;
901  OP_Utils::evalOpParm(result, thissop, "boundtype", cookparms.getCookTime(), 0);
902  return BoundType(result);
903  }
904  bool getOrientedbbox() const { return myOrientedbbox; }
905  void setOrientedbbox(bool val) { myOrientedbbox = val; }
906  bool opOrientedbbox(const SOP_NodeVerb::CookParms &cookparms) const
907  {
908  SOP_Node *thissop = cookparms.getNode();
909  if (!thissop) return getOrientedbbox();
910  bool result;
911  OP_Utils::evalOpParm(result, thissop, "orientedbbox", cookparms.getCookTime(), 0);
912  return result;
913  }
914  int64 getRefinementIterations() const { return myRefinementIterations; }
915  void setRefinementIterations(int64 val) { myRefinementIterations = val; }
917  {
918  SOP_Node *thissop = cookparms.getNode();
919  if (!thissop) return getRefinementIterations();
920  int64 result;
921  OP_Utils::evalOpParm(result, thissop, "refinementiterations", cookparms.getCookTime(), 0);
922  return result;
923  }
924  bool getDodivs() const { return myDodivs; }
925  void setDodivs(bool val) { myDodivs = val; }
926  bool opDodivs(const SOP_NodeVerb::CookParms &cookparms) const
927  {
928  SOP_Node *thissop = cookparms.getNode();
929  if (!thissop) return getDodivs();
930  bool result;
931  OP_Utils::evalOpParm(result, thissop, "dodivs", cookparms.getCookTime(), 0);
932  return result;
933  }
934  UT_Vector3I getDivs() const { return myDivs; }
935  void setDivs(UT_Vector3I val) { myDivs = val; }
937  {
938  SOP_Node *thissop = cookparms.getNode();
939  if (!thissop) return getDivs();
941  OP_Utils::evalOpParm(result, thissop, "divs", cookparms.getCookTime(), 0);
942  return result;
943  }
944  bool getRebar() const { return myRebar; }
945  void setRebar(bool val) { myRebar = val; }
946  bool opRebar(const SOP_NodeVerb::CookParms &cookparms) const
947  {
948  SOP_Node *thissop = cookparms.getNode();
949  if (!thissop) return getRebar();
950  bool result;
951  OP_Utils::evalOpParm(result, thissop, "rebar", cookparms.getCookTime(), 0);
952  return result;
953  }
954  UT_Vector3D getMinsize() const { return myMinsize; }
955  void setMinsize(UT_Vector3D val) { myMinsize = val; }
957  {
958  SOP_Node *thissop = cookparms.getNode();
959  if (!thissop) return getMinsize();
961  OP_Utils::evalOpParm(result, thissop, "minsize", cookparms.getCookTime(), 0);
962  return result;
963  }
964  Orient getOrient() const { return Orient(myOrient); }
965  void setOrient(Orient val) { myOrient = int64(val); }
966  Orient opOrient(const SOP_NodeVerb::CookParms &cookparms) const
967  {
968  SOP_Node *thissop = cookparms.getNode();
969  if (!thissop) return getOrient();
970  int64 result;
971  OP_Utils::evalOpParm(result, thissop, "orient", cookparms.getCookTime(), 0);
972  return Orient(result);
973  }
974  bool getAccurate() const { return myAccurate; }
975  void setAccurate(bool val) { myAccurate = val; }
976  bool opAccurate(const SOP_NodeVerb::CookParms &cookparms) const
977  {
978  SOP_Node *thissop = cookparms.getNode();
979  if (!thissop) return getAccurate();
980  bool result;
981  OP_Utils::evalOpParm(result, thissop, "accurate", cookparms.getCookTime(), 0);
982  return result;
983  }
984  fpreal64 getMinradius() const { return myMinradius; }
985  void setMinradius(fpreal64 val) { myMinradius = val; }
987  {
988  SOP_Node *thissop = cookparms.getNode();
989  if (!thissop) return getMinradius();
991  OP_Utils::evalOpParm(result, thissop, "minradius", cookparms.getCookTime(), 0);
992  return result;
993  }
994  bool getOrientedBRect() const { return myOrientedBRect; }
995  void setOrientedBRect(bool val) { myOrientedBRect = val; }
996  bool opOrientedBRect(const SOP_NodeVerb::CookParms &cookparms) const
997  {
998  SOP_Node *thissop = cookparms.getNode();
999  if (!thissop) return getOrientedBRect();
1000  bool result;
1001  OP_Utils::evalOpParm(result, thissop, "orientedbrect", cookparms.getCookTime(), 0);
1002  return result;
1003  }
1004  UT_Vector3D getOrigin() const { return myOrigin; }
1005  void setOrigin(UT_Vector3D val) { myOrigin = val; }
1007  {
1008  SOP_Node *thissop = cookparms.getNode();
1009  if (!thissop) return getOrigin();
1011  OP_Utils::evalOpParm(result, thissop, "origin", cookparms.getCookTime(), 0);
1012  return result;
1013  }
1014  fpreal64 getDistance() const { return myDistance; }
1015  void setDistance(fpreal64 val) { myDistance = val; }
1017  {
1018  SOP_Node *thissop = cookparms.getNode();
1019  if (!thissop) return getDistance();
1020  fpreal64 result;
1021  OP_Utils::evalOpParm(result, thissop, "dist", cookparms.getCookTime(), 0);
1022  return result;
1023  }
1024  UT_Vector3D getDirection() const { return myDirection; }
1025  void setDirection(UT_Vector3D val) { myDirection = val; }
1027  {
1028  SOP_Node *thissop = cookparms.getNode();
1029  if (!thissop) return getDirection();
1031  OP_Utils::evalOpParm(result, thissop, "dir", cookparms.getCookTime(), 0);
1032  return result;
1033  }
1034  UT_Vector3D getMinpad() const { return myMinpad; }
1035  void setMinpad(UT_Vector3D val) { myMinpad = val; }
1037  {
1038  SOP_Node *thissop = cookparms.getNode();
1039  if (!thissop) return getMinpad();
1041  OP_Utils::evalOpParm(result, thissop, "minpad", cookparms.getCookTime(), 0);
1042  return result;
1043  }
1044  UT_Vector3D getMaxpad() const { return myMaxpad; }
1045  void setMaxpad(UT_Vector3D val) { myMaxpad = val; }
1047  {
1048  SOP_Node *thissop = cookparms.getNode();
1049  if (!thissop) return getMaxpad();
1051  OP_Utils::evalOpParm(result, thissop, "maxpad", cookparms.getCookTime(), 0);
1052  return result;
1053  }
1054  bool getAddBoundsGroup() const { return myAddBoundsGroup; }
1055  void setAddBoundsGroup(bool val) { myAddBoundsGroup = val; }
1056  bool opAddBoundsGroup(const SOP_NodeVerb::CookParms &cookparms) const
1057  {
1058  SOP_Node *thissop = cookparms.getNode();
1059  if (!thissop) return getAddBoundsGroup();
1060  bool result;
1061  OP_Utils::evalOpParm(result, thissop, "addboundsgroup", cookparms.getCookTime(), 0);
1062  return result;
1063  }
1064  const UT_StringHolder & getBoundsGroup() const { return myBoundsGroup; }
1065  void setBoundsGroup(const UT_StringHolder & val) { myBoundsGroup = val; }
1067  {
1068  SOP_Node *thissop = cookparms.getNode();
1069  if (!thissop) return getBoundsGroup();
1071  OP_Utils::evalOpParm(result, thissop, "boundsgroup", cookparms.getCookTime(), 0);
1072  return result;
1073  }
1074  bool getAddXformAttrib() const { return myAddXformAttrib; }
1075  void setAddXformAttrib(bool val) { myAddXformAttrib = val; }
1076  bool opAddXformAttrib(const SOP_NodeVerb::CookParms &cookparms) const
1077  {
1078  SOP_Node *thissop = cookparms.getNode();
1079  if (!thissop) return getAddXformAttrib();
1080  bool result;
1081  OP_Utils::evalOpParm(result, thissop, "addxformattrib", cookparms.getCookTime(), 0);
1082  return result;
1083  }
1084  const UT_StringHolder & getXformAttrib() const { return myXformAttrib; }
1085  void setXformAttrib(const UT_StringHolder & val) { myXformAttrib = val; }
1087  {
1088  SOP_Node *thissop = cookparms.getNode();
1089  if (!thissop) return getXformAttrib();
1091  OP_Utils::evalOpParm(result, thissop, "xformattrib", cookparms.getCookTime(), 0);
1092  return result;
1093  }
1094  bool getAddRadiiAttrib() const { return myAddRadiiAttrib; }
1095  void setAddRadiiAttrib(bool val) { myAddRadiiAttrib = val; }
1096  bool opAddRadiiAttrib(const SOP_NodeVerb::CookParms &cookparms) const
1097  {
1098  SOP_Node *thissop = cookparms.getNode();
1099  if (!thissop) return getAddRadiiAttrib();
1100  bool result;
1101  OP_Utils::evalOpParm(result, thissop, "addradiiattrib", cookparms.getCookTime(), 0);
1102  return result;
1103  }
1104  const UT_StringHolder & getRadiiAttrib() const { return myRadiiAttrib; }
1105  void setRadiiAttrib(const UT_StringHolder & val) { myRadiiAttrib = val; }
1107  {
1108  SOP_Node *thissop = cookparms.getNode();
1109  if (!thissop) return getRadiiAttrib();
1111  OP_Utils::evalOpParm(result, thissop, "radiiattrib", cookparms.getCookTime(), 0);
1112  return result;
1113  }
1114 
1115 private:
1116  UT_StringHolder myGroup;
1117  int64 myGrouptype;
1118  bool myKeeporiginal;
1119  bool myCreateBoundingGeo;
1120  bool myCreateempty;
1121  int64 myBoundType;
1122  bool myOrientedbbox;
1123  int64 myRefinementIterations;
1124  bool myDodivs;
1125  UT_Vector3I myDivs;
1126  bool myRebar;
1127  UT_Vector3D myMinsize;
1128  int64 myOrient;
1129  bool myAccurate;
1130  fpreal64 myMinradius;
1131  bool myOrientedBRect;
1132  UT_Vector3D myOrigin;
1133  fpreal64 myDistance;
1134  UT_Vector3D myDirection;
1135  UT_Vector3D myMinpad;
1136  UT_Vector3D myMaxpad;
1137  bool myAddBoundsGroup;
1138  UT_StringHolder myBoundsGroup;
1139  bool myAddXformAttrib;
1140  UT_StringHolder myXformAttrib;
1141  bool myAddRadiiAttrib;
1142  UT_StringHolder myRadiiAttrib;
1143 
1144 };
bool getKeeporiginal() const
type
Definition: core.h:556
bool getAddXformAttrib() const
static void saveData(std::ostream &os, bool v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
void setMaxpad(UT_Vector3D val)
bool load(UT_IStream &is)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
static int version()
Orient getOrient() const
UT_StringHolder opGroup(const SOP_NodeVerb::CookParms &cookparms) const
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
bool opCreateempty(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector2I &v)
UT_StringHolder opXformAttrib(const SOP_NodeVerb::CookParms &cookparms) const
bool getOrientedbbox() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
bool opDodivs(const SOP_NodeVerb::CookParms &cookparms) const
ParmType getNestParmType(TempIndex fieldnum) const override
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
Orient opOrient(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
static void loadData(UT_IStream &is, UT_Matrix3D &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
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
static void loadData(UT_IStream &is, UT_Vector4I &v)
UT_Vector3D getOrigin() const
bool isParmColorRamp(exint idx) const override
GLsizei const GLfloat * value
Definition: glcorearb.h:824
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
bool getAddRadiiAttrib() const
static void saveData(std::ostream &os, UT_Vector3D v)
const OP_Context & context() const
Definition: OP_NodeParms.h:97
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:667
int64 exint
Definition: SYS_Types.h:125
UT_Vector3D getMinsize() const
const UT_StringHolder & getGroup() const
SYS_FORCE_INLINE const char * buffer() const
UT_Vector3D opDirection(const SOP_NodeVerb::CookParms &cookparms) const
GLdouble s
Definition: glad.h:3009
static void saveData(std::ostream &os, UT_StringHolder s)
void setXformAttrib(const UT_StringHolder &val)
bool opCreateBoundingGeo(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
An output stream object that owns its own string buffer storage.
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
bool opAddXformAttrib(const SOP_NodeVerb::CookParms &cookparms) const
bool getCreateBoundingGeo() const
static void loadData(UT_IStream &is, UT_Vector4D &v)
**But if you need a result
Definition: thread.h:622
void setGroup(const UT_StringHolder &val)
UT_Vector3T< int64 > UT_Vector3I
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
bool opAccurate(const SOP_NodeVerb::CookParms &cookparms) const
bool opKeeporiginal(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Matrix2D v)
exint nodeIdx() const
Definition: OP_NodeParms.h:95
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
static void saveData(std::ostream &os, PRM_DataItemHandle s)
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
void setOrientedbbox(bool val)
bool getDodivs() const
static void saveData(std::ostream &os, UT_Matrix3D v)
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
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
void setCreateBoundingGeo(bool val)
bool getRebar() const
void loadFromOpSubclass(const LoadParms &loadparms) override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
int64 opRefinementIterations(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector3D &v)
UT_Vector3D opMaxpad(const SOP_NodeVerb::CookParms &cookparms) const
void save(std::ostream &os) const
void setAddRadiiAttrib(bool val)
exint length() const
void setRefinementIterations(int64 val)
void copyFrom(const OP_NodeParms *src) override
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
bool opAddRadiiAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void setDistance(fpreal64 val)
UT_Vector3I opDivs(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Vector2D v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
#define SYS_FORCE_INLINE
Definition: SYS_Inline.h:45
UT_Vector3D opOrigin(const SOP_NodeVerb::CookParms &cookparms) const
void setAddXformAttrib(bool val)
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
void setMinradius(fpreal64 val)
void setAddBoundsGroup(bool val)
UT_Vector3D opMinsize(const SOP_NodeVerb::CookParms &cookparms) const
BoundType opBoundType(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3I getDivs() const
long long int64
Definition: SYS_Types.h:116
void setKeeporiginal(bool val)
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
bool opOrientedBRect(const SOP_NodeVerb::CookParms &cookparms) const
void setMinsize(UT_Vector3D val)
void setCreateempty(bool val)
void setBoundType(BoundType val)
UT_Vector3T< fpreal64 > UT_Vector3D
static void loadData(UT_IStream &is, int64 &v)
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
bool opOrientedbbox(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Matrix2D &v)
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
void setDivs(UT_Vector3I val)
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
void setRadiiAttrib(const UT_StringHolder &val)
bool operator!=(const SOP_BoundParms &src) const
static void saveData(std::ostream &os, int64 v)
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:303
void setOrigin(UT_Vector3D val)
UT_Vector3D getMinpad() const
GT_API const UT_StringHolder version
Grouptype getGrouptype() const
int64 getRefinementIterations() const
void setAccurate(bool val)
bool opRebar(const SOP_NodeVerb::CookParms &cookparms) const
void setOrient(Orient val)
bool getAddBoundsGroup() const
UT_StringHolder opBoundsGroup(const SOP_NodeVerb::CookParms &cookparms) const
void setDirection(UT_Vector3D val)
UT_StringHolder opRadiiAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
fpreal64 getMinradius() const
fpreal64 fpreal
Definition: SYS_Types.h:278
static void loadData(UT_IStream &is, bool &v)
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
UT_Vector3D opMinpad(const SOP_NodeVerb::CookParms &cookparms) const
LeafData & operator=(const LeafData &)=delete
Utility class for containing a color ramp.
Definition: UT_Ramp.h:96
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
SYS_FORCE_INLINE UT_StringHolder getToken(Grouptype enum_value)
void setRebar(bool val)
static void saveData(std::ostream &os, fpreal64 v)
const char * getNestParmName(TempIndex fieldnum) const override
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
bool getCreateempty() const
void setBoundsGroup(const UT_StringHolder &val)
GLuint GLfloat * val
Definition: glcorearb.h:1608
virtual UT_StringHolder baseGetSignature() const
Definition: OP_NodeParms.h:294
void setOrientedBRect(bool val)
#define SOP_API
Definition: SOP_API.h:10
const UT_StringHolder & getRadiiAttrib() const
static void loadData(UT_IStream &is, UT_Vector2D &v)
fpreal64 opMinradius(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_StringHolder &v)
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:372
BoundType getBoundType() const
bool getAccurate() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
static void loadData(UT_IStream &is, UT_Vector3I &v)
const char * findChar(int c) const
Definition: UT_String.h:1401
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
const UT_StringHolder & getBoundsGroup() const
UT_Vector3D getMaxpad() const
fpreal64 getDistance() const
static void loadData(UT_IStream &is, UT_Matrix4D &v)
GLboolean r
Definition: glcorearb.h:1222
bool getOrientedBRect() const
Grouptype opGrouptype(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opDistance(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
UT_Vector3D getDirection() const
const UT_StringHolder & getXformAttrib() const
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
virtual bool isDirect() const =0
Direct proxies mirror actual nodes:
exint getNestNumParms(TempIndex idx) const override
void setDodivs(bool val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
bool operator==(const SOP_BoundParms &src) const
static void saveData(std::ostream &os, UT_Matrix4D v)
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
void setGrouptype(Grouptype val)
SYS_FORCE_INLINE bool isstring() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
void setMinpad(UT_Vector3D val)
bool opAddBoundsGroup(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, fpreal64 &v)
static void saveData(std::ostream &os, UT_Vector4D v)
GLenum src
Definition: glcorearb.h:1793
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)