HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_GroupExpand.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_GroupExpandEnums
24 {
25  enum class Grouptype
26  {
27  AUTO = 0,
28  VERTICES,
29  EDGES,
30  POINTS,
31  PRIMS
32  };
33  enum class Colgrouptype
34  {
35  AUTO = 0,
36  EDGES,
37  POINTS,
38  PRIMS,
39  VERTICES
40  };
41 }
42 
43 
45 {
46 public:
47  static int version() { return 1; }
48 
50  {
51  myOutputgroup = ""_UTsh;
52  myGroup = ""_UTsh;
53  myGrouptype = 0;
54  myPrimshareedge = false;
55  myFloodfill = false;
56  myNumsteps = 1;
57  myUsestepattrib = false;
58  myStepattrib = "step"_UTsh;
59  myBynormal = false;
60  myNormalangle = 60;
61  myOverridenormal = false;
62  myNormalattrib = "N"_UTsh;
63  myUseconnectivityattrib = false;
64  myConnectivityattrib = "uv"_UTsh;
65  myUsecolgroup = false;
66  myColgroup = ""_UTsh;
67  myColgrouptype = 0;
68  myColgroupinvert = false;
69  myColgroupallowonbound = false;
70 
71  }
72 
73  explicit SOP_GroupExpandParms(const SOP_GroupExpandParms &) = default;
75  SOP_GroupExpandParms(SOP_GroupExpandParms &&) noexcept = default;
76  SOP_GroupExpandParms &operator=(SOP_GroupExpandParms &&) noexcept = default;
77 
78  ~SOP_GroupExpandParms() override {}
79 
80  bool operator==(const SOP_GroupExpandParms &src) const
81  {
82  if (myOutputgroup != src.myOutputgroup) return false;
83  if (myGroup != src.myGroup) return false;
84  if (myGrouptype != src.myGrouptype) return false;
85  if (myPrimshareedge != src.myPrimshareedge) return false;
86  if (myFloodfill != src.myFloodfill) return false;
87  if (myNumsteps != src.myNumsteps) return false;
88  if (myUsestepattrib != src.myUsestepattrib) return false;
89  if (myStepattrib != src.myStepattrib) return false;
90  if (myBynormal != src.myBynormal) return false;
91  if (myNormalangle != src.myNormalangle) return false;
92  if (myOverridenormal != src.myOverridenormal) return false;
93  if (myNormalattrib != src.myNormalattrib) return false;
94  if (myUseconnectivityattrib != src.myUseconnectivityattrib) return false;
95  if (myConnectivityattrib != src.myConnectivityattrib) return false;
96  if (myUsecolgroup != src.myUsecolgroup) return false;
97  if (myColgroup != src.myColgroup) return false;
98  if (myColgrouptype != src.myColgrouptype) return false;
99  if (myColgroupinvert != src.myColgroupinvert) return false;
100  if (myColgroupallowonbound != src.myColgroupallowonbound) return false;
101 
102  return true;
103  }
105  {
106  return !operator==(src);
107  }
110 
111 
112 
113  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
114  {
115  myOutputgroup = ""_UTsh;
116  if (true)
117  graph->evalOpParm(myOutputgroup, nodeidx, "outputgroup", time, 0);
118  myGroup = ""_UTsh;
119  if (true)
120  graph->evalOpParm(myGroup, nodeidx, "group", time, 0);
121  myGrouptype = 0;
122  if (true)
123  graph->evalOpParm(myGrouptype, nodeidx, "grouptype", time, 0);
124  myPrimshareedge = false;
125  if (true && ( (true&&!(((int64(getGrouptype())==1))||((int64(getGrouptype())==2))||((int64(getGrouptype())==3)))) ) )
126  graph->evalOpParm(myPrimshareedge, nodeidx, "primshareedge", time, 0);
127  myFloodfill = false;
128  if (true)
129  graph->evalOpParm(myFloodfill, nodeidx, "floodfill", time, 0);
130  myNumsteps = 1;
131  if (true && ( (true&&!(((getFloodfill()==1)))) ) )
132  graph->evalOpParm(myNumsteps, nodeidx, "numsteps", time, 0);
133  myUsestepattrib = false;
134  if (true)
135  graph->evalOpParm(myUsestepattrib, nodeidx, "usestepattrib", time, 0);
136  myStepattrib = "step"_UTsh;
137  if (true && ( (true&&!(((getUsestepattrib()==0)))) ) )
138  graph->evalOpParm(myStepattrib, nodeidx, "stepattrib", time, 0);
139  myBynormal = false;
140  if (true)
141  graph->evalOpParm(myBynormal, nodeidx, "bynormal", time, 0);
142  myNormalangle = 60;
143  if (true && ( (true&&!(((getBynormal()==0)))) ) )
144  graph->evalOpParm(myNormalangle, nodeidx, "normalangle", time, 0);
145  myOverridenormal = false;
146  if (true && ( (true&&!(((getBynormal()==0)))) ) )
147  graph->evalOpParm(myOverridenormal, nodeidx, "overridenormal", time, 0);
148  myNormalattrib = "N"_UTsh;
149  if (true && ( (true&&!(((getBynormal()==0))||((getOverridenormal()==0)))) ) )
150  graph->evalOpParm(myNormalattrib, nodeidx, "normalattrib", time, 0);
151  myUseconnectivityattrib = false;
152  if (true)
153  graph->evalOpParm(myUseconnectivityattrib, nodeidx, "useconnectivityattrib", time, 0);
154  myConnectivityattrib = "uv"_UTsh;
155  if (true && ( (true&&!(((getUseconnectivityattrib()==0)))) ) )
156  graph->evalOpParm(myConnectivityattrib, nodeidx, "connectivityattrib", time, 0);
157  myUsecolgroup = false;
158  if (true)
159  graph->evalOpParm(myUsecolgroup, nodeidx, "usecolgroup", time, 0);
160  myColgroup = ""_UTsh;
161  if (true && ( (true&&!(((getUsecolgroup()==0)))) ) )
162  graph->evalOpParm(myColgroup, nodeidx, "colgroup", time, 0);
163  myColgrouptype = 0;
164  if (true && ( (true&&!(((getUsecolgroup()==0)))) ) )
165  graph->evalOpParm(myColgrouptype, nodeidx, "colgrouptype", time, 0);
166  myColgroupinvert = false;
167  if (true && ( (true&&!(((getUsecolgroup()==0)))) ) )
168  graph->evalOpParm(myColgroupinvert, nodeidx, "colgroupinvert", time, 0);
169  myColgroupallowonbound = false;
170  if (true && ( (true&&!(((getUsecolgroup()==0))||((getColgroupinvert()==1)))) ) )
171  graph->evalOpParm(myColgroupallowonbound, nodeidx, "colgroupallowonbound", time, 0);
172 
173  }
174 
175 
176  void loadFromOpSubclass(const LoadParms &loadparms) override
177  {
178  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
179  }
180 
181 
182  void copyFrom(const OP_NodeParms *src) override
183  {
184  *this = *((const SOP_GroupExpandParms *)src);
185  }
186 
187  template <typename T>
188  void
189  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
190  {
191  if (idx.size() < 1)
192  return;
193  UT_ASSERT(idx.size() == instance.size()+1);
194  if (idx.size() != instance.size()+1)
195  return;
196  switch (idx[0])
197  {
198  case 0:
199  coerceValue(value, myOutputgroup);
200  break;
201  case 1:
202  coerceValue(value, myGroup);
203  break;
204  case 2:
205  coerceValue(value, myGrouptype);
206  break;
207  case 3:
208  coerceValue(value, myPrimshareedge);
209  break;
210  case 4:
211  coerceValue(value, myFloodfill);
212  break;
213  case 5:
214  coerceValue(value, myNumsteps);
215  break;
216  case 6:
217  coerceValue(value, myUsestepattrib);
218  break;
219  case 7:
220  coerceValue(value, myStepattrib);
221  break;
222  case 8:
223  coerceValue(value, myBynormal);
224  break;
225  case 9:
226  coerceValue(value, myNormalangle);
227  break;
228  case 10:
229  coerceValue(value, myOverridenormal);
230  break;
231  case 11:
232  coerceValue(value, myNormalattrib);
233  break;
234  case 12:
235  coerceValue(value, myUseconnectivityattrib);
236  break;
237  case 13:
238  coerceValue(value, myConnectivityattrib);
239  break;
240  case 14:
241  coerceValue(value, myUsecolgroup);
242  break;
243  case 15:
244  coerceValue(value, myColgroup);
245  break;
246  case 16:
247  coerceValue(value, myColgrouptype);
248  break;
249  case 17:
250  coerceValue(value, myColgroupinvert);
251  break;
252  case 18:
253  coerceValue(value, myColgroupallowonbound);
254  break;
255 
256  }
257  }
258 
259  bool isParmColorRamp(exint idx) const override
260  {
261  switch (idx)
262  {
263 
264  }
265  return false;
266  }
267 
268  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
269  { doGetParmValue(idx, instance, value); }
270  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
271  { doGetParmValue(idx, instance, value); }
272  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
273  { doGetParmValue(idx, instance, value); }
274  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
275  { doGetParmValue(idx, instance, value); }
276  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
277  { doGetParmValue(idx, instance, value); }
278  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
279  { doGetParmValue(idx, instance, value); }
280  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
281  { doGetParmValue(idx, instance, value); }
282  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
283  { doGetParmValue(idx, instance, value); }
284  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
285  { doGetParmValue(idx, instance, value); }
286  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
287  { doGetParmValue(idx, instance, value); }
288  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
289  { doGetParmValue(idx, instance, value); }
290 
291  template <typename T>
292  void
293  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
294  {
295  if (idx.size() < 1)
296  return;
297  UT_ASSERT(idx.size() == instance.size()+1);
298  if (idx.size() != instance.size()+1)
299  return;
300  switch (idx[0])
301  {
302  case 0:
303  coerceValue(myOutputgroup, ( ( value ) ));
304  break;
305  case 1:
306  coerceValue(myGroup, ( ( value ) ));
307  break;
308  case 2:
309  coerceValue(myGrouptype, clampMinValue(0, clampMaxValue(4, value ) ));
310  break;
311  case 3:
312  coerceValue(myPrimshareedge, ( ( value ) ));
313  break;
314  case 4:
315  coerceValue(myFloodfill, ( ( value ) ));
316  break;
317  case 5:
318  coerceValue(myNumsteps, ( ( value ) ));
319  break;
320  case 6:
321  coerceValue(myUsestepattrib, ( ( value ) ));
322  break;
323  case 7:
324  coerceValue(myStepattrib, ( ( value ) ));
325  break;
326  case 8:
327  coerceValue(myBynormal, ( ( value ) ));
328  break;
329  case 9:
330  coerceValue(myNormalangle, ( ( value ) ));
331  break;
332  case 10:
333  coerceValue(myOverridenormal, ( ( value ) ));
334  break;
335  case 11:
336  coerceValue(myNormalattrib, ( ( value ) ));
337  break;
338  case 12:
339  coerceValue(myUseconnectivityattrib, ( ( value ) ));
340  break;
341  case 13:
342  coerceValue(myConnectivityattrib, ( ( value ) ));
343  break;
344  case 14:
345  coerceValue(myUsecolgroup, ( ( value ) ));
346  break;
347  case 15:
348  coerceValue(myColgroup, ( ( value ) ));
349  break;
350  case 16:
351  coerceValue(myColgrouptype, clampMinValue(0, clampMaxValue(4, value ) ));
352  break;
353  case 17:
354  coerceValue(myColgroupinvert, ( ( value ) ));
355  break;
356  case 18:
357  coerceValue(myColgroupallowonbound, ( ( value ) ));
358  break;
359 
360  }
361  }
362 
363  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
364  { doSetParmValue(idx, instance, value); }
365  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
366  { doSetParmValue(idx, instance, value); }
367  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
368  { doSetParmValue(idx, instance, value); }
369  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
370  { doSetParmValue(idx, instance, value); }
371  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
372  { doSetParmValue(idx, instance, value); }
373  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
374  { doSetParmValue(idx, instance, value); }
375  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
376  { doSetParmValue(idx, instance, value); }
377  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
378  { doSetParmValue(idx, instance, value); }
379  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
380  { doSetParmValue(idx, instance, value); }
381  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
382  { doSetParmValue(idx, instance, value); }
383  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
384  { doSetParmValue(idx, instance, value); }
385 
386  exint getNestNumParms(TempIndex idx) const override
387  {
388  if (idx.size() == 0)
389  return 19;
390  switch (idx[0])
391  {
392 
393  }
394  // Invalid
395  return 0;
396  }
397 
398  const char *getNestParmName(TempIndex fieldnum) const override
399  {
400  if (fieldnum.size() < 1)
401  return 0;
402  switch (fieldnum[0])
403  {
404  case 0:
405  return "outputgroup";
406  case 1:
407  return "group";
408  case 2:
409  return "grouptype";
410  case 3:
411  return "primshareedge";
412  case 4:
413  return "floodfill";
414  case 5:
415  return "numsteps";
416  case 6:
417  return "usestepattrib";
418  case 7:
419  return "stepattrib";
420  case 8:
421  return "bynormal";
422  case 9:
423  return "normalangle";
424  case 10:
425  return "overridenormal";
426  case 11:
427  return "normalattrib";
428  case 12:
429  return "useconnectivityattrib";
430  case 13:
431  return "connectivityattrib";
432  case 14:
433  return "usecolgroup";
434  case 15:
435  return "colgroup";
436  case 16:
437  return "colgrouptype";
438  case 17:
439  return "colgroupinvert";
440  case 18:
441  return "colgroupallowonbound";
442 
443  }
444  return 0;
445  }
446 
447  ParmType getNestParmType(TempIndex fieldnum) const override
448  {
449  if (fieldnum.size() < 1)
450  return PARM_UNSUPPORTED;
451  switch (fieldnum[0])
452  {
453  case 0:
454  return PARM_STRING;
455  case 1:
456  return PARM_STRING;
457  case 2:
458  return PARM_INTEGER;
459  case 3:
460  return PARM_INTEGER;
461  case 4:
462  return PARM_INTEGER;
463  case 5:
464  return PARM_INTEGER;
465  case 6:
466  return PARM_INTEGER;
467  case 7:
468  return PARM_STRING;
469  case 8:
470  return PARM_INTEGER;
471  case 9:
472  return PARM_FLOAT;
473  case 10:
474  return PARM_INTEGER;
475  case 11:
476  return PARM_STRING;
477  case 12:
478  return PARM_INTEGER;
479  case 13:
480  return PARM_STRING;
481  case 14:
482  return PARM_INTEGER;
483  case 15:
484  return PARM_STRING;
485  case 16:
486  return PARM_INTEGER;
487  case 17:
488  return PARM_INTEGER;
489  case 18:
490  return PARM_INTEGER;
491 
492  }
493  return PARM_UNSUPPORTED;
494  }
495 
496  // Boiler plate to load individual types.
497  static void loadData(UT_IStream &is, int64 &v)
498  { is.bread(&v, 1); }
499  static void loadData(UT_IStream &is, bool &v)
500  { int64 iv; is.bread(&iv, 1); v = iv; }
501  static void loadData(UT_IStream &is, fpreal64 &v)
502  { is.bread<fpreal64>(&v, 1); }
503  static void loadData(UT_IStream &is, UT_Vector2D &v)
504  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
505  static void loadData(UT_IStream &is, UT_Vector3D &v)
506  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
507  is.bread<fpreal64>(&v.z(), 1); }
508  static void loadData(UT_IStream &is, UT_Vector4D &v)
509  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
510  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
511  static void loadData(UT_IStream &is, UT_Matrix2D &v)
512  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
513  static void loadData(UT_IStream &is, UT_Matrix3D &v)
514  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
515  static void loadData(UT_IStream &is, UT_Matrix4D &v)
516  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
517  static void loadData(UT_IStream &is, UT_Vector2I &v)
518  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
519  static void loadData(UT_IStream &is, UT_Vector3I &v)
520  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
521  is.bread<int64>(&v.z(), 1); }
522  static void loadData(UT_IStream &is, UT_Vector4I &v)
523  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
524  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
526  { is.bread(v); }
528  { UT_StringHolder rampdata;
529  loadData(is, rampdata);
530  if (rampdata.isstring())
531  {
532  v.reset(new UT_Ramp());
533  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
534  v->load(istr);
535  }
536  else v.reset();
537  }
540  loadData(is, data);
541  if (data.isstring())
542  {
543  // Find the data type.
544  const char *colon = UT_StringWrap(data).findChar(':');
545  if (colon)
546  {
547  int typelen = colon - data.buffer();
549  type.strncpy(data.buffer(), typelen);
550  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
551 
552  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
553  }
554  }
555  else v.reset();
556  }
557 
558  static void saveData(std::ostream &os, int64 v)
559  { UTwrite(os, &v); }
560  static void saveData(std::ostream &os, bool v)
561  { int64 iv = v; UTwrite(os, &iv); }
562  static void saveData(std::ostream &os, fpreal64 v)
563  { UTwrite<fpreal64>(os, &v); }
564  static void saveData(std::ostream &os, UT_Vector2D v)
565  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
566  static void saveData(std::ostream &os, UT_Vector3D v)
567  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
568  UTwrite<fpreal64>(os, &v.z()); }
569  static void saveData(std::ostream &os, UT_Vector4D v)
570  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
571  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
572  static void saveData(std::ostream &os, UT_Matrix2D v)
574  static void saveData(std::ostream &os, UT_Matrix3D v)
576  static void saveData(std::ostream &os, UT_Matrix4D v)
578  static void saveData(std::ostream &os, UT_StringHolder s)
579  { UT_StringWrap(s).saveBinary(os); }
580  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
582  UT_OStringStream ostr;
583  if (s) s->save(ostr);
584  result = ostr.str();
585  saveData(os, result);
586  }
587  static void saveData(std::ostream &os, PRM_DataItemHandle s)
589  UT_OStringStream ostr;
590  if (s)
591  {
592  ostr << s->getDataTypeToken();
593  ostr << ":";
594  s->saveBinary(ostr);
595  }
596  result = ostr.str();
597  saveData(os, result);
598  }
599 
600 
601  void save(std::ostream &os) const
602  {
603  int32 v = version();
604  UTwrite(os, &v);
605  saveData(os, myOutputgroup);
606  saveData(os, myGroup);
607  saveData(os, myGrouptype);
608  saveData(os, myPrimshareedge);
609  saveData(os, myFloodfill);
610  saveData(os, myNumsteps);
611  saveData(os, myUsestepattrib);
612  saveData(os, myStepattrib);
613  saveData(os, myBynormal);
614  saveData(os, myNormalangle);
615  saveData(os, myOverridenormal);
616  saveData(os, myNormalattrib);
617  saveData(os, myUseconnectivityattrib);
618  saveData(os, myConnectivityattrib);
619  saveData(os, myUsecolgroup);
620  saveData(os, myColgroup);
621  saveData(os, myColgrouptype);
622  saveData(os, myColgroupinvert);
623  saveData(os, myColgroupallowonbound);
624 
625  }
626 
627  bool load(UT_IStream &is)
628  {
629  int32 v;
630  is.bread(&v, 1);
631  if (version() != v)
632  {
633  // Fail incompatible versions
634  return false;
635  }
636  loadData(is, myOutputgroup);
637  loadData(is, myGroup);
638  loadData(is, myGrouptype);
639  loadData(is, myPrimshareedge);
640  loadData(is, myFloodfill);
641  loadData(is, myNumsteps);
642  loadData(is, myUsestepattrib);
643  loadData(is, myStepattrib);
644  loadData(is, myBynormal);
645  loadData(is, myNormalangle);
646  loadData(is, myOverridenormal);
647  loadData(is, myNormalattrib);
648  loadData(is, myUseconnectivityattrib);
649  loadData(is, myConnectivityattrib);
650  loadData(is, myUsecolgroup);
651  loadData(is, myColgroup);
652  loadData(is, myColgrouptype);
653  loadData(is, myColgroupinvert);
654  loadData(is, myColgroupallowonbound);
655 
656  return true;
657  }
658 
659  const UT_StringHolder & getOutputgroup() const { return myOutputgroup; }
660  void setOutputgroup(const UT_StringHolder & val) { myOutputgroup = val; }
662  {
663  SOP_Node *thissop = cookparms.getNode();
664  if (!thissop) return getOutputgroup();
666  OP_Utils::evalOpParm(result, thissop, "outputgroup", cookparms.getCookTime(), 0);
667  return result;
668  }
669  const UT_StringHolder & getGroup() const { return myGroup; }
670  void setGroup(const UT_StringHolder & val) { myGroup = val; }
672  {
673  SOP_Node *thissop = cookparms.getNode();
674  if (!thissop) return getGroup();
676  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
677  return result;
678  }
679  Grouptype getGrouptype() const { return Grouptype(myGrouptype); }
680  void setGrouptype(Grouptype val) { myGrouptype = int64(val); }
682  {
683  SOP_Node *thissop = cookparms.getNode();
684  if (!thissop) return getGrouptype();
685  int64 result;
686  OP_Utils::evalOpParm(result, thissop, "grouptype", cookparms.getCookTime(), 0);
687  return Grouptype(result);
688  }
689  bool getPrimshareedge() const { return myPrimshareedge; }
690  void setPrimshareedge(bool val) { myPrimshareedge = val; }
691  bool opPrimshareedge(const SOP_NodeVerb::CookParms &cookparms) const
692  {
693  SOP_Node *thissop = cookparms.getNode();
694  if (!thissop) return getPrimshareedge();
695  bool result;
696  OP_Utils::evalOpParm(result, thissop, "primshareedge", cookparms.getCookTime(), 0);
697  return result;
698  }
699  bool getFloodfill() const { return myFloodfill; }
700  void setFloodfill(bool val) { myFloodfill = val; }
701  bool opFloodfill(const SOP_NodeVerb::CookParms &cookparms) const
702  {
703  SOP_Node *thissop = cookparms.getNode();
704  if (!thissop) return getFloodfill();
705  bool result;
706  OP_Utils::evalOpParm(result, thissop, "floodfill", cookparms.getCookTime(), 0);
707  return result;
708  }
709  int64 getNumsteps() const { return myNumsteps; }
710  void setNumsteps(int64 val) { myNumsteps = val; }
711  int64 opNumsteps(const SOP_NodeVerb::CookParms &cookparms) const
712  {
713  SOP_Node *thissop = cookparms.getNode();
714  if (!thissop) return getNumsteps();
715  int64 result;
716  OP_Utils::evalOpParm(result, thissop, "numsteps", cookparms.getCookTime(), 0);
717  return result;
718  }
719  bool getUsestepattrib() const { return myUsestepattrib; }
720  void setUsestepattrib(bool val) { myUsestepattrib = val; }
721  bool opUsestepattrib(const SOP_NodeVerb::CookParms &cookparms) const
722  {
723  SOP_Node *thissop = cookparms.getNode();
724  if (!thissop) return getUsestepattrib();
725  bool result;
726  OP_Utils::evalOpParm(result, thissop, "usestepattrib", cookparms.getCookTime(), 0);
727  return result;
728  }
729  const UT_StringHolder & getStepattrib() const { return myStepattrib; }
730  void setStepattrib(const UT_StringHolder & val) { myStepattrib = val; }
732  {
733  SOP_Node *thissop = cookparms.getNode();
734  if (!thissop) return getStepattrib();
736  OP_Utils::evalOpParm(result, thissop, "stepattrib", cookparms.getCookTime(), 0);
737  return result;
738  }
739  bool getBynormal() const { return myBynormal; }
740  void setBynormal(bool val) { myBynormal = val; }
741  bool opBynormal(const SOP_NodeVerb::CookParms &cookparms) const
742  {
743  SOP_Node *thissop = cookparms.getNode();
744  if (!thissop) return getBynormal();
745  bool result;
746  OP_Utils::evalOpParm(result, thissop, "bynormal", cookparms.getCookTime(), 0);
747  return result;
748  }
749  fpreal64 getNormalangle() const { return myNormalangle; }
750  void setNormalangle(fpreal64 val) { myNormalangle = val; }
752  {
753  SOP_Node *thissop = cookparms.getNode();
754  if (!thissop) return getNormalangle();
756  OP_Utils::evalOpParm(result, thissop, "normalangle", cookparms.getCookTime(), 0);
757  return result;
758  }
759  bool getOverridenormal() const { return myOverridenormal; }
760  void setOverridenormal(bool val) { myOverridenormal = val; }
761  bool opOverridenormal(const SOP_NodeVerb::CookParms &cookparms) const
762  {
763  SOP_Node *thissop = cookparms.getNode();
764  if (!thissop) return getOverridenormal();
765  bool result;
766  OP_Utils::evalOpParm(result, thissop, "overridenormal", cookparms.getCookTime(), 0);
767  return result;
768  }
769  const UT_StringHolder & getNormalattrib() const { return myNormalattrib; }
770  void setNormalattrib(const UT_StringHolder & val) { myNormalattrib = val; }
772  {
773  SOP_Node *thissop = cookparms.getNode();
774  if (!thissop) return getNormalattrib();
776  OP_Utils::evalOpParm(result, thissop, "normalattrib", cookparms.getCookTime(), 0);
777  return result;
778  }
779  bool getUseconnectivityattrib() const { return myUseconnectivityattrib; }
780  void setUseconnectivityattrib(bool val) { myUseconnectivityattrib = val; }
782  {
783  SOP_Node *thissop = cookparms.getNode();
784  if (!thissop) return getUseconnectivityattrib();
785  bool result;
786  OP_Utils::evalOpParm(result, thissop, "useconnectivityattrib", cookparms.getCookTime(), 0);
787  return result;
788  }
789  const UT_StringHolder & getConnectivityattrib() const { return myConnectivityattrib; }
790  void setConnectivityattrib(const UT_StringHolder & val) { myConnectivityattrib = val; }
792  {
793  SOP_Node *thissop = cookparms.getNode();
794  if (!thissop) return getConnectivityattrib();
796  OP_Utils::evalOpParm(result, thissop, "connectivityattrib", cookparms.getCookTime(), 0);
797  return result;
798  }
799  bool getUsecolgroup() const { return myUsecolgroup; }
800  void setUsecolgroup(bool val) { myUsecolgroup = val; }
801  bool opUsecolgroup(const SOP_NodeVerb::CookParms &cookparms) const
802  {
803  SOP_Node *thissop = cookparms.getNode();
804  if (!thissop) return getUsecolgroup();
805  bool result;
806  OP_Utils::evalOpParm(result, thissop, "usecolgroup", cookparms.getCookTime(), 0);
807  return result;
808  }
809  const UT_StringHolder & getColgroup() const { return myColgroup; }
810  void setColgroup(const UT_StringHolder & val) { myColgroup = val; }
812  {
813  SOP_Node *thissop = cookparms.getNode();
814  if (!thissop) return getColgroup();
816  OP_Utils::evalOpParm(result, thissop, "colgroup", cookparms.getCookTime(), 0);
817  return result;
818  }
819  Colgrouptype getColgrouptype() const { return Colgrouptype(myColgrouptype); }
820  void setColgrouptype(Colgrouptype val) { myColgrouptype = int64(val); }
822  {
823  SOP_Node *thissop = cookparms.getNode();
824  if (!thissop) return getColgrouptype();
825  int64 result;
826  OP_Utils::evalOpParm(result, thissop, "colgrouptype", cookparms.getCookTime(), 0);
827  return Colgrouptype(result);
828  }
829  bool getColgroupinvert() const { return myColgroupinvert; }
830  void setColgroupinvert(bool val) { myColgroupinvert = val; }
831  bool opColgroupinvert(const SOP_NodeVerb::CookParms &cookparms) const
832  {
833  SOP_Node *thissop = cookparms.getNode();
834  if (!thissop) return getColgroupinvert();
835  bool result;
836  OP_Utils::evalOpParm(result, thissop, "colgroupinvert", cookparms.getCookTime(), 0);
837  return result;
838  }
839  bool getColgroupallowonbound() const { return myColgroupallowonbound; }
840  void setColgroupallowonbound(bool val) { myColgroupallowonbound = val; }
841  bool opColgroupallowonbound(const SOP_NodeVerb::CookParms &cookparms) const
842  {
843  SOP_Node *thissop = cookparms.getNode();
844  if (!thissop) return getColgroupallowonbound();
845  bool result;
846  OP_Utils::evalOpParm(result, thissop, "colgroupallowonbound", cookparms.getCookTime(), 0);
847  return result;
848  }
849 
850 private:
851  UT_StringHolder myOutputgroup;
852  UT_StringHolder myGroup;
853  int64 myGrouptype;
854  bool myPrimshareedge;
855  bool myFloodfill;
856  int64 myNumsteps;
857  bool myUsestepattrib;
858  UT_StringHolder myStepattrib;
859  bool myBynormal;
860  fpreal64 myNormalangle;
861  bool myOverridenormal;
862  UT_StringHolder myNormalattrib;
863  bool myUseconnectivityattrib;
864  UT_StringHolder myConnectivityattrib;
865  bool myUsecolgroup;
866  UT_StringHolder myColgroup;
867  int64 myColgrouptype;
868  bool myColgroupinvert;
869  bool myColgroupallowonbound;
870 
871 };
void loadFromOpSubclass(const LoadParms &loadparms) override
UT_StringHolder opOutputgroup(const SOP_NodeVerb::CookParms &cookparms) const
void setConnectivityattrib(const UT_StringHolder &val)
const UT_StringHolder & getConnectivityattrib() const
static void loadData(UT_IStream &is, UT_Matrix4D &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
bool opColgroupinvert(const SOP_NodeVerb::CookParms &cookparms) const
int int32
Definition: SYS_Types.h:39
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
const UT_StringHolder & getColgroup() const
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
static void loadData(UT_IStream &is, int64 &v)
T clampMaxValue(fpreal maxvalue, const T &src) const
Definition: OP_NodeParms.h:315
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
const UT_StringHolder & getGroup() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
bool load(UT_IStream &is)
exint bread(int32 *buffer, exint asize=1)
GLboolean * data
Definition: glcorearb.h:131
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
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
fpreal64 getNormalangle() const
void setColgroupinvert(bool val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
bool getUseconnectivityattrib() const
const OP_Context & context() const
Definition: OP_NodeParms.h:97
const UT_StringHolder & getStepattrib() const
bool opOverridenormal(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:667
int64 exint
Definition: SYS_Types.h:125
SYS_FORCE_INLINE const char * buffer() const
static void saveData(std::ostream &os, UT_Matrix3D v)
GLdouble s
Definition: glad.h:3009
Colgrouptype opColgrouptype(const SOP_NodeVerb::CookParms &cookparms) const
An output stream object that owns its own string buffer storage.
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
void setStepattrib(const UT_StringHolder &val)
static void loadData(UT_IStream &is, UT_Vector2I &v)
**But if you need a result
Definition: thread.h:613
bool opPrimshareedge(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Matrix2D v)
T clampMinValue(fpreal minvalue, const T &src) const
Definition: OP_NodeParms.h:308
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
exint nodeIdx() const
Definition: OP_NodeParms.h:95
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
void setOverridenormal(bool val)
exint getNestNumParms(TempIndex idx) const override
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
Colgrouptype getColgrouptype() const
static void loadData(UT_IStream &is, UT_Vector3I &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
static void saveData(std::ostream &os, UT_Vector3D v)
bool opUseconnectivityattrib(const SOP_NodeVerb::CookParms &cookparms) const
bool opColgroupallowonbound(const SOP_NodeVerb::CookParms &cookparms) const
double fpreal64
Definition: SYS_Types.h:201
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
static void saveData(std::ostream &os, UT_Vector2D v)
static void loadData(UT_IStream &is, UT_Vector3D &v)
exint length() const
UT_StringHolder opColgroup(const SOP_NodeVerb::CookParms &cookparms) const
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
void setOutputgroup(const UT_StringHolder &val)
static void saveData(std::ostream &os, UT_Matrix4D v)
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
static void saveData(std::ostream &os, int64 v)
static void loadData(UT_IStream &is, UT_StringHolder &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
void setColgrouptype(Colgrouptype val)
long long int64
Definition: SYS_Types.h:116
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
const UT_StringHolder & getOutputgroup() const
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
Grouptype opGrouptype(const SOP_NodeVerb::CookParms &cookparms) const
const char * getNestParmName(TempIndex fieldnum) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
static void saveData(std::ostream &os, UT_StringHolder s)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
static void saveData(std::ostream &os, PRM_DataItemHandle s)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
static void loadData(UT_IStream &is, UT_Matrix2D &v)
Grouptype getGrouptype() const
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
void setUseconnectivityattrib(bool val)
UT_StringHolder opConnectivityattrib(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getNormalattrib() const
static void loadData(UT_IStream &is, UT_Vector2D &v)
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:296
static void loadData(UT_IStream &is, fpreal64 &v)
static void saveData(std::ostream &os, UT_Vector4D v)
bool operator==(const SOP_GroupExpandParms &src) const
GT_API const UT_StringHolder version
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
static void loadData(UT_IStream &is, bool &v)
void setColgroupallowonbound(bool val)
void setNormalattrib(const UT_StringHolder &val)
void setColgroup(const UT_StringHolder &val)
bool opUsestepattrib(const SOP_NodeVerb::CookParms &cookparms) const
void coerceValue(T &result, const S &src) const
Definition: OP_NodeParms.h:301
void setGroup(const UT_StringHolder &val)
UT_StringHolder opNormalattrib(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Matrix3D &v)
fpreal64 fpreal
Definition: SYS_Types.h:277
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
void save(std::ostream &os) const
bool opUsecolgroup(const SOP_NodeVerb::CookParms &cookparms) const
Utility class for containing a color ramp.
Definition: UT_Ramp.h:88
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
GLuint GLfloat * val
Definition: glcorearb.h:1608
void setGrouptype(Grouptype val)
#define SOP_API
Definition: SOP_API.h:10
static void loadData(UT_IStream &is, UT_Vector4I &v)
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:361
bool getColgroupallowonbound() const
UT_StringHolder opGroup(const SOP_NodeVerb::CookParms &cookparms) const
int64 opNumsteps(const SOP_NodeVerb::CookParms &cookparms) const
const char * findChar(int c) const
Definition: UT_String.h:1385
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
Definition: core.h:1131
ParmType getNestParmType(TempIndex fieldnum) const override
GLboolean r
Definition: glcorearb.h:1222
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
fpreal64 opNormalangle(const SOP_NodeVerb::CookParms &cookparms) const
bool isParmColorRamp(exint idx) const override
void setNormalangle(fpreal64 val)
bool opBynormal(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
bool opFloodfill(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
type
Definition: core.h:1059
static void loadData(UT_IStream &is, UT_Vector4D &v)
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: PRM_Parm.h:89
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
UT_StringHolder opStepattrib(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE bool isstring() const
static void saveData(std::ostream &os, bool v)
OP_NodeParms & operator=(const OP_NodeParms &)=default
static void saveData(std::ostream &os, fpreal64 v)
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
bool operator!=(const SOP_GroupExpandParms &src) const
GLenum src
Definition: glcorearb.h:1793
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663