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