HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_GroupFindPath.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_NodeVerb.h>
7 #include <SOP/SOP_GraphProxy.h>
8 
9 #include <OP/OP_Utils.h>
10 #include <PRM/PRM_Parm.h>
11 #include <UT/UT_IStream.h>
12 #include <UT/UT_NTStreamUtil.h>
13 #include <UT/UT_Ramp.h>
14 #include <UT/UT_SharedPtr.h>
15 #include <UT/UT_StringHolder.h>
16 #include <UT/UT_StringStream.h>
17 #include <UT/UT_VectorTypes.h>
18 #include <SYS/SYS_Types.h>
19 
20 using namespace UT::Literal;
21 
22 class DEP_MicroNode;
23 namespace SOP_GroupFindPathEnums
24 {
25  enum class Grouptype
26  {
27  AUTO = 0,
28  EDGES,
29  POINTS,
30  PRIMS,
31  VERTICES
32  };
33  enum class Pathcontroltype
34  {
35  CONTROLS = 0,
36  STARTS,
37  STARTEND
38  };
39  enum class Operation
40  {
41  PATH = 0,
44  };
45  enum class Edgestyle
46  {
47  AUTO = 0,
48  LOOP,
49  RING
50  };
51  enum class Colgrouptype
52  {
53  AUTO = 0,
54  EDGES,
55  POINTS,
56  PRIMS,
57  VERTICES
58  };
59 }
60 
61 
63 {
64 public:
65  static int version() { return 1; }
66 
68  {
69  myOutgroup = ""_sh;
70  myGroup = ""_sh;
71  myGrouptype = 0;
72  myPathcontroltype = 0;
73  myOperation = 0;
74  myAvoidprevious = true;
75  myEdgestyle = 0;
76  myUseuvattrib = false;
77  myUvattrib = "uv"_sh;
78  myUsecolgroup = false;
79  myColgroup = ""_sh;
80  myColgrouptype = 0;
81  myColgroupinvert = false;
82  myColgrouponbnd = false;
83 
84  }
85 
86  explicit SOP_GroupFindPathParms(const SOP_GroupFindPathParms &) = default;
87 
89 
91  {
92  if (myOutgroup != src.myOutgroup) return false;
93  if (myGroup != src.myGroup) return false;
94  if (myGrouptype != src.myGrouptype) return false;
95  if (myPathcontroltype != src.myPathcontroltype) return false;
96  if (myOperation != src.myOperation) return false;
97  if (myAvoidprevious != src.myAvoidprevious) return false;
98  if (myEdgestyle != src.myEdgestyle) return false;
99  if (myUseuvattrib != src.myUseuvattrib) return false;
100  if (myUvattrib != src.myUvattrib) return false;
101  if (myUsecolgroup != src.myUsecolgroup) return false;
102  if (myColgroup != src.myColgroup) return false;
103  if (myColgrouptype != src.myColgrouptype) return false;
104  if (myColgroupinvert != src.myColgroupinvert) return false;
105  if (myColgrouponbnd != src.myColgrouponbnd) return false;
106 
107  return true;
108  }
110  {
111  return !operator==(src);
112  }
118 
119 
120 
121  void buildFromOp(const SOP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
122  {
123  myOutgroup = ""_sh;
124  if (true)
125  graph->evalOpParm(myOutgroup, nodeidx, "outgroup", time, 0);
126  myGroup = ""_sh;
127  if (true)
128  graph->evalOpParm(myGroup, nodeidx, "group", time, 0);
129  myGrouptype = 0;
130  if (true)
131  graph->evalOpParm(myGrouptype, nodeidx, "grouptype", time, 0);
132  myPathcontroltype = 0;
133  if (true)
134  graph->evalOpParm(myPathcontroltype, nodeidx, "pathcontroltype", time, 0);
135  myOperation = 0;
136  if (true)
137  graph->evalOpParm(myOperation, nodeidx, "operation", time, 0);
138  myAvoidprevious = true;
139  if (true)
140  graph->evalOpParm(myAvoidprevious, nodeidx, "avoidprevious", time, 0);
141  myEdgestyle = 0;
142  if (true && ( (!(((int64(getGrouptype())==2))||((int64(getGrouptype())==3))||((int64(getGrouptype())==4)))) ) )
143  graph->evalOpParm(myEdgestyle, nodeidx, "edgestyle", time, 0);
144  myUseuvattrib = false;
145  if (true)
146  graph->evalOpParm(myUseuvattrib, nodeidx, "useuvattrib", time, 0);
147  myUvattrib = "uv"_sh;
148  if (true && ( (!(((getUseuvattrib()==0)))) ) )
149  graph->evalOpParm(myUvattrib, nodeidx, "uvattrib", time, 0);
150  myUsecolgroup = false;
151  if (true)
152  graph->evalOpParm(myUsecolgroup, nodeidx, "usecolgroup", time, 0);
153  myColgroup = ""_sh;
154  if (true && ( (!(((getUsecolgroup()==0)))) ) )
155  graph->evalOpParm(myColgroup, nodeidx, "colgroup", time, 0);
156  myColgrouptype = 0;
157  if (true && ( (!(((getUsecolgroup()==0)))) ) )
158  graph->evalOpParm(myColgrouptype, nodeidx, "colgrouptype", time, 0);
159  myColgroupinvert = false;
160  if (true && ( (!(((getUsecolgroup()==0)))) ) )
161  graph->evalOpParm(myColgroupinvert, nodeidx, "colgroupinvert", time, 0);
162  myColgrouponbnd = false;
163  if (true && ( (!(((getUsecolgroup()==0))||((getColgroupinvert()==1)))) ) )
164  graph->evalOpParm(myColgrouponbnd, nodeidx, "colgrouponbnd", time, 0);
165 
166  }
167 
168 
169  void loadFromOpSubclass(const LoadParms &loadparms) override
170  {
171  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
172  }
173 
174 
175  void copyFrom(const SOP_NodeParms *src) override
176  {
177  *this = *((const SOP_GroupFindPathParms *)src);
178  }
179 
180  template <typename T>
181  void
182  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
183  {
184  if (idx.size() < 1)
185  return;
186  UT_ASSERT(idx.size() == instance.size()+1);
187  if (idx.size() != instance.size()+1)
188  return;
189  switch (idx[0])
190  {
191  case 0:
192  coerceValue(value, myOutgroup);
193  break;
194  case 1:
195  coerceValue(value, myGroup);
196  break;
197  case 2:
198  coerceValue(value, myGrouptype);
199  break;
200  case 3:
201  coerceValue(value, myPathcontroltype);
202  break;
203  case 4:
204  coerceValue(value, myOperation);
205  break;
206  case 5:
207  coerceValue(value, myAvoidprevious);
208  break;
209  case 6:
210  coerceValue(value, myEdgestyle);
211  break;
212  case 7:
213  coerceValue(value, myUseuvattrib);
214  break;
215  case 8:
216  coerceValue(value, myUvattrib);
217  break;
218  case 9:
219  coerceValue(value, myUsecolgroup);
220  break;
221  case 10:
222  coerceValue(value, myColgroup);
223  break;
224  case 11:
225  coerceValue(value, myColgrouptype);
226  break;
227  case 12:
228  coerceValue(value, myColgroupinvert);
229  break;
230  case 13:
231  coerceValue(value, myColgrouponbnd);
232  break;
233 
234  }
235  }
236 
237  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
238  { doGetParmValue(idx, instance, value); }
239  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
240  { doGetParmValue(idx, instance, value); }
241  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
242  { doGetParmValue(idx, instance, value); }
243  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
244  { doGetParmValue(idx, instance, value); }
245  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
246  { doGetParmValue(idx, instance, value); }
247  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
248  { doGetParmValue(idx, instance, value); }
249  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
250  { doGetParmValue(idx, instance, value); }
251  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
252  { doGetParmValue(idx, instance, value); }
253  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
254  { doGetParmValue(idx, instance, value); }
255  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
256  { doGetParmValue(idx, instance, value); }
257  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
258  { doGetParmValue(idx, instance, value); }
259 
260  template <typename T>
261  void
262  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
263  {
264  if (idx.size() < 1)
265  return;
266  UT_ASSERT(idx.size() == instance.size()+1);
267  if (idx.size() != instance.size()+1)
268  return;
269  switch (idx[0])
270  {
271  case 0:
272  coerceValue(myOutgroup, value);
273  break;
274  case 1:
275  coerceValue(myGroup, value);
276  break;
277  case 2:
278  coerceValue(myGrouptype, value);
279  break;
280  case 3:
281  coerceValue(myPathcontroltype, value);
282  break;
283  case 4:
284  coerceValue(myOperation, value);
285  break;
286  case 5:
287  coerceValue(myAvoidprevious, value);
288  break;
289  case 6:
290  coerceValue(myEdgestyle, value);
291  break;
292  case 7:
293  coerceValue(myUseuvattrib, value);
294  break;
295  case 8:
296  coerceValue(myUvattrib, value);
297  break;
298  case 9:
299  coerceValue(myUsecolgroup, value);
300  break;
301  case 10:
302  coerceValue(myColgroup, value);
303  break;
304  case 11:
305  coerceValue(myColgrouptype, value);
306  break;
307  case 12:
308  coerceValue(myColgroupinvert, value);
309  break;
310  case 13:
311  coerceValue(myColgrouponbnd, value);
312  break;
313 
314  }
315  }
316 
317  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
318  { doSetParmValue(idx, instance, value); }
319  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
320  { doSetParmValue(idx, instance, value); }
321  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
322  { doSetParmValue(idx, instance, value); }
323  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
324  { doSetParmValue(idx, instance, value); }
325  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
326  { doSetParmValue(idx, instance, value); }
327  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
328  { doSetParmValue(idx, instance, value); }
329  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
330  { doSetParmValue(idx, instance, value); }
331  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
332  { doSetParmValue(idx, instance, value); }
333  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
334  { doSetParmValue(idx, instance, value); }
335  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
336  { doSetParmValue(idx, instance, value); }
337  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
338  { doSetParmValue(idx, instance, value); }
339 
340  exint getNestNumParms(TempIndex idx) const override
341  {
342  if (idx.size() == 0)
343  return 14;
344  switch (idx[0])
345  {
346 
347  }
348  // Invalid
349  return 0;
350  }
351 
352  const char *getNestParmName(TempIndex fieldnum) const override
353  {
354  if (fieldnum.size() < 1)
355  return 0;
356  switch (fieldnum[0])
357  {
358  case 0:
359  return "outgroup";
360  case 1:
361  return "group";
362  case 2:
363  return "grouptype";
364  case 3:
365  return "pathcontroltype";
366  case 4:
367  return "operation";
368  case 5:
369  return "avoidprevious";
370  case 6:
371  return "edgestyle";
372  case 7:
373  return "useuvattrib";
374  case 8:
375  return "uvattrib";
376  case 9:
377  return "usecolgroup";
378  case 10:
379  return "colgroup";
380  case 11:
381  return "colgrouptype";
382  case 12:
383  return "colgroupinvert";
384  case 13:
385  return "colgrouponbnd";
386 
387  }
388  return 0;
389  }
390 
391  ParmType getNestParmType(TempIndex fieldnum) const override
392  {
393  if (fieldnum.size() < 1)
394  return PARM_UNSUPPORTED;
395  switch (fieldnum[0])
396  {
397  case 0:
398  return PARM_STRING;
399  case 1:
400  return PARM_STRING;
401  case 2:
402  return PARM_INTEGER;
403  case 3:
404  return PARM_INTEGER;
405  case 4:
406  return PARM_INTEGER;
407  case 5:
408  return PARM_INTEGER;
409  case 6:
410  return PARM_INTEGER;
411  case 7:
412  return PARM_INTEGER;
413  case 8:
414  return PARM_STRING;
415  case 9:
416  return PARM_INTEGER;
417  case 10:
418  return PARM_STRING;
419  case 11:
420  return PARM_INTEGER;
421  case 12:
422  return PARM_INTEGER;
423  case 13:
424  return PARM_INTEGER;
425 
426  }
427  return PARM_UNSUPPORTED;
428  }
429 
430  // Boiler plate to load individual types.
431  static void loadData(UT_IStream &is, int64 &v)
432  { is.bread(&v, 1); }
433  static void loadData(UT_IStream &is, bool &v)
434  { int64 iv; is.bread(&iv, 1); v = iv; }
435  static void loadData(UT_IStream &is, fpreal64 &v)
436  { is.bread<fpreal64>(&v, 1); }
437  static void loadData(UT_IStream &is, UT_Vector2D &v)
438  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
439  static void loadData(UT_IStream &is, UT_Vector3D &v)
440  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
441  is.bread<fpreal64>(&v.z(), 1); }
442  static void loadData(UT_IStream &is, UT_Vector4D &v)
443  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
444  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
445  static void loadData(UT_IStream &is, UT_Matrix2D &v)
446  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
447  static void loadData(UT_IStream &is, UT_Matrix3D &v)
448  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
449  static void loadData(UT_IStream &is, UT_Matrix4D &v)
450  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
451  static void loadData(UT_IStream &is, UT_Vector2I &v)
452  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
453  static void loadData(UT_IStream &is, UT_Vector3I &v)
454  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
455  is.bread<int64>(&v.z(), 1); }
456  static void loadData(UT_IStream &is, UT_Vector4I &v)
457  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
458  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
460  { is.bread(v); }
462  { UT_StringHolder rampdata;
463  loadData(is, rampdata);
464  if (rampdata.isstring())
465  {
466  v.reset(new UT_Ramp());
467  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
468  v->load(istr);
469  }
470  else v.reset();
471  }
474  loadData(is, data);
475  if (data.isstring())
476  {
477  // Find the data type.
478  const char *colon = UT_StringWrap(data).findChar(':');
479  if (colon)
480  {
481  int typelen = colon - data.buffer();
483  type.strncpy(data.buffer(), typelen);
484  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
485 
486  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
487  }
488  }
489  else v.reset();
490  }
491 
492  static void saveData(std::ostream &os, int64 v)
493  { UTwrite(os, &v); }
494  static void saveData(std::ostream &os, bool v)
495  { int64 iv = v; UTwrite(os, &iv); }
496  static void saveData(std::ostream &os, fpreal64 v)
497  { UTwrite<fpreal64>(os, &v); }
498  static void saveData(std::ostream &os, UT_Vector2D v)
499  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
500  static void saveData(std::ostream &os, UT_Vector3D v)
501  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
502  UTwrite<fpreal64>(os, &v.z()); }
503  static void saveData(std::ostream &os, UT_Vector4D v)
504  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
505  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
506  static void saveData(std::ostream &os, UT_Matrix2D v)
508  static void saveData(std::ostream &os, UT_Matrix3D v)
510  static void saveData(std::ostream &os, UT_Matrix4D v)
512  static void saveData(std::ostream &os, UT_StringHolder s)
513  { UT_StringWrap(s).saveBinary(os); }
514  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
516  UT_OStringStream ostr;
517  if (s) s->save(ostr);
518  result = ostr.str();
519  saveData(os, result);
520  }
521  static void saveData(std::ostream &os, PRM_DataItemHandle s)
523  UT_OStringStream ostr;
524  if (s)
525  {
526  ostr << s->getDataTypeToken();
527  ostr << ":";
528  s->saveBinary(ostr);
529  }
530  result = ostr.str();
531  saveData(os, result);
532  }
533 
534 
535  void save(std::ostream &os) const
536  {
537  int32 v = version();
538  UTwrite(os, &v);
539  saveData(os, myOutgroup);
540  saveData(os, myGroup);
541  saveData(os, myGrouptype);
542  saveData(os, myPathcontroltype);
543  saveData(os, myOperation);
544  saveData(os, myAvoidprevious);
545  saveData(os, myEdgestyle);
546  saveData(os, myUseuvattrib);
547  saveData(os, myUvattrib);
548  saveData(os, myUsecolgroup);
549  saveData(os, myColgroup);
550  saveData(os, myColgrouptype);
551  saveData(os, myColgroupinvert);
552  saveData(os, myColgrouponbnd);
553 
554  }
555 
556  bool load(UT_IStream &is)
557  {
558  int32 v;
559  is.bread(&v, 1);
560  if (version() != v)
561  {
562  // Fail incompatible versions
563  return false;
564  }
565  loadData(is, myOutgroup);
566  loadData(is, myGroup);
567  loadData(is, myGrouptype);
568  loadData(is, myPathcontroltype);
569  loadData(is, myOperation);
570  loadData(is, myAvoidprevious);
571  loadData(is, myEdgestyle);
572  loadData(is, myUseuvattrib);
573  loadData(is, myUvattrib);
574  loadData(is, myUsecolgroup);
575  loadData(is, myColgroup);
576  loadData(is, myColgrouptype);
577  loadData(is, myColgroupinvert);
578  loadData(is, myColgrouponbnd);
579 
580  return true;
581  }
582 
583  const UT_StringHolder & getOutgroup() const { return myOutgroup; }
584  void setOutgroup(const UT_StringHolder & val) { myOutgroup = val; }
586  {
587  SOP_Node *thissop = cookparms.getNode();
588  if (!thissop) return getOutgroup();
590  OP_Utils::evalOpParm(result, thissop, "outgroup", cookparms.getCookTime(), 0);
591  return result;
592  }
593  const UT_StringHolder & getGroup() const { return myGroup; }
594  void setGroup(const UT_StringHolder & val) { myGroup = val; }
596  {
597  SOP_Node *thissop = cookparms.getNode();
598  if (!thissop) return getGroup();
600  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
601  return result;
602  }
603  Grouptype getGrouptype() const { return Grouptype(myGrouptype); }
604  void setGrouptype(Grouptype val) { myGrouptype = int64(val); }
606  {
607  SOP_Node *thissop = cookparms.getNode();
608  if (!thissop) return getGrouptype();
609  int64 result;
610  OP_Utils::evalOpParm(result, thissop, "grouptype", cookparms.getCookTime(), 0);
611  return Grouptype(result);
612  }
613  Pathcontroltype getPathcontroltype() const { return Pathcontroltype(myPathcontroltype); }
614  void setPathcontroltype(Pathcontroltype val) { myPathcontroltype = int64(val); }
616  {
617  SOP_Node *thissop = cookparms.getNode();
618  if (!thissop) return getPathcontroltype();
619  int64 result;
620  OP_Utils::evalOpParm(result, thissop, "pathcontroltype", cookparms.getCookTime(), 0);
621  return Pathcontroltype(result);
622  }
623  Operation getOperation() const { return Operation(myOperation); }
624  void setOperation(Operation val) { myOperation = int64(val); }
626  {
627  SOP_Node *thissop = cookparms.getNode();
628  if (!thissop) return getOperation();
629  int64 result;
630  OP_Utils::evalOpParm(result, thissop, "operation", cookparms.getCookTime(), 0);
631  return Operation(result);
632  }
633  bool getAvoidprevious() const { return myAvoidprevious; }
634  void setAvoidprevious(bool val) { myAvoidprevious = val; }
635  bool opAvoidprevious(const SOP_NodeVerb::CookParms &cookparms) const
636  {
637  SOP_Node *thissop = cookparms.getNode();
638  if (!thissop) return getAvoidprevious();
639  bool result;
640  OP_Utils::evalOpParm(result, thissop, "avoidprevious", cookparms.getCookTime(), 0);
641  return result;
642  }
643  Edgestyle getEdgestyle() const { return Edgestyle(myEdgestyle); }
644  void setEdgestyle(Edgestyle val) { myEdgestyle = int64(val); }
646  {
647  SOP_Node *thissop = cookparms.getNode();
648  if (!thissop) return getEdgestyle();
649  int64 result;
650  OP_Utils::evalOpParm(result, thissop, "edgestyle", cookparms.getCookTime(), 0);
651  return Edgestyle(result);
652  }
653  bool getUseuvattrib() const { return myUseuvattrib; }
654  void setUseuvattrib(bool val) { myUseuvattrib = val; }
655  bool opUseuvattrib(const SOP_NodeVerb::CookParms &cookparms) const
656  {
657  SOP_Node *thissop = cookparms.getNode();
658  if (!thissop) return getUseuvattrib();
659  bool result;
660  OP_Utils::evalOpParm(result, thissop, "useuvattrib", cookparms.getCookTime(), 0);
661  return result;
662  }
663  const UT_StringHolder & getUvattrib() const { return myUvattrib; }
664  void setUvattrib(const UT_StringHolder & val) { myUvattrib = val; }
666  {
667  SOP_Node *thissop = cookparms.getNode();
668  if (!thissop) return getUvattrib();
670  OP_Utils::evalOpParm(result, thissop, "uvattrib", cookparms.getCookTime(), 0);
671  return result;
672  }
673  bool getUsecolgroup() const { return myUsecolgroup; }
674  void setUsecolgroup(bool val) { myUsecolgroup = val; }
675  bool opUsecolgroup(const SOP_NodeVerb::CookParms &cookparms) const
676  {
677  SOP_Node *thissop = cookparms.getNode();
678  if (!thissop) return getUsecolgroup();
679  bool result;
680  OP_Utils::evalOpParm(result, thissop, "usecolgroup", cookparms.getCookTime(), 0);
681  return result;
682  }
683  const UT_StringHolder & getColgroup() const { return myColgroup; }
684  void setColgroup(const UT_StringHolder & val) { myColgroup = val; }
686  {
687  SOP_Node *thissop = cookparms.getNode();
688  if (!thissop) return getColgroup();
690  OP_Utils::evalOpParm(result, thissop, "colgroup", cookparms.getCookTime(), 0);
691  return result;
692  }
693  Colgrouptype getColgrouptype() const { return Colgrouptype(myColgrouptype); }
694  void setColgrouptype(Colgrouptype val) { myColgrouptype = int64(val); }
696  {
697  SOP_Node *thissop = cookparms.getNode();
698  if (!thissop) return getColgrouptype();
699  int64 result;
700  OP_Utils::evalOpParm(result, thissop, "colgrouptype", cookparms.getCookTime(), 0);
701  return Colgrouptype(result);
702  }
703  bool getColgroupinvert() const { return myColgroupinvert; }
704  void setColgroupinvert(bool val) { myColgroupinvert = val; }
705  bool opColgroupinvert(const SOP_NodeVerb::CookParms &cookparms) const
706  {
707  SOP_Node *thissop = cookparms.getNode();
708  if (!thissop) return getColgroupinvert();
709  bool result;
710  OP_Utils::evalOpParm(result, thissop, "colgroupinvert", cookparms.getCookTime(), 0);
711  return result;
712  }
713  bool getColgrouponbnd() const { return myColgrouponbnd; }
714  void setColgrouponbnd(bool val) { myColgrouponbnd = val; }
715  bool opColgrouponbnd(const SOP_NodeVerb::CookParms &cookparms) const
716  {
717  SOP_Node *thissop = cookparms.getNode();
718  if (!thissop) return getColgrouponbnd();
719  bool result;
720  OP_Utils::evalOpParm(result, thissop, "colgrouponbnd", cookparms.getCookTime(), 0);
721  return result;
722  }
723 
724 private:
725  UT_StringHolder myOutgroup;
726  UT_StringHolder myGroup;
727  int64 myGrouptype;
728  int64 myPathcontroltype;
729  int64 myOperation;
730  bool myAvoidprevious;
731  int64 myEdgestyle;
732  bool myUseuvattrib;
733  UT_StringHolder myUvattrib;
734  bool myUsecolgroup;
735  UT_StringHolder myColgroup;
736  int64 myColgrouptype;
737  bool myColgroupinvert;
738  bool myColgrouponbnd;
739 
740 };
GLdouble s
Definition: glew.h:1390
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
static void loadData(UT_IStream &is, UT_Vector4D &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
exint nodeIdx() const
Definition: SOP_NodeVerb.h:114
const char * getNestParmName(TempIndex fieldnum) const override
GLenum src
Definition: glew.h:2410
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:640
Grouptype opGrouptype(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
static void loadData(UT_IStream &is, UT_Vector4I &v)
static void saveData(std::ostream &os, UT_Vector2D v)
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
Pathcontroltype getPathcontroltype() const
exint bread(int32 *buffer, exint asize=1)
GT_API const UT_StringHolder time
fpreal getTime() const
Definition: OP_Context.h:60
GLuint const GLfloat * val
Definition: glew.h:2794
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
bool opAvoidprevious(const SOP_NodeVerb::CookParms &cookparms) const
void setColgroup(const UT_StringHolder &val)
static void loadData(UT_IStream &is, int64 &v)
int64 exint
Definition: SYS_Types.h:125
Operation opOperation(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE const char * buffer() const
const SOP_GraphProxy * graph() const
Definition: SOP_NodeVerb.h:113
static void saveData(std::ostream &os, bool v)
void setPathcontroltype(Pathcontroltype val)
An output stream object that owns its own string buffer storage.
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
void setEdgestyle(Edgestyle val)
void setOperation(Operation val)
const GLdouble * v
Definition: glew.h:1391
const UT_StringHolder & getUvattrib() const
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
bool opColgrouponbnd(const SOP_NodeVerb::CookParms &cookparms) const
Colgrouptype opColgrouptype(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
static void saveData(std::ostream &os, fpreal64 v)
const UT_StringHolder & getGroup() const
static void saveData(std::ostream &os, UT_Matrix4D v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
static void loadData(UT_IStream &is, UT_Matrix4D &v)
double fpreal64
Definition: SYS_Types.h:201
bool operator==(const SOP_GroupFindPathParms &src) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
void setGroup(const UT_StringHolder &val)
void setGrouptype(Grouptype val)
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
static void loadData(UT_IStream &is, UT_Vector2I &v)
void copyFrom(const SOP_NodeParms *src) override
ParmType getNestParmType(TempIndex fieldnum) const override
const UT_StringHolder & getColgroup() const
SYS_FORCE_INLINE T & y()
Definition: UT_Vector3.h:513
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
exint length() const
UT_StringHolder opOutgroup(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:28
GLint GLenum GLsizei GLint GLsizei const void * data
Definition: glew.h:1379
bool opUsecolgroup(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE T & z()
Definition: UT_Vector3.h:515
static void loadData(UT_IStream &is, UT_Matrix2D &v)
static void saveData(std::ostream &os, UT_StringHolder s)
const GLfloat * c
Definition: glew.h:16296
exint getNestNumParms(TempIndex idx) const override
UT_StringHolder opColgroup(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
long long int64
Definition: SYS_Types.h:116
static void saveData(std::ostream &os, UT_Matrix2D v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
bool operator!=(const SOP_GroupFindPathParms &src) const
static void loadData(UT_IStream &is, UT_Vector2D &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
static void saveData(std::ostream &os, UT_Vector3D v)
static void saveData(std::ostream &os, int64 v)
UT_StringHolder opUvattrib(const SOP_NodeVerb::CookParms &cookparms) const
void setOutgroup(const UT_StringHolder &val)
Colgrouptype getColgrouptype() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:294
void loadFromOpSubclass(const LoadParms &loadparms) override
GT_API const UT_StringHolder version
DEP_MicroNode * depnode() const
Definition: SOP_NodeVerb.h:121
static void loadData(UT_IStream &is, UT_Vector3I &v)
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
static void saveData(std::ostream &os, PRM_DataItemHandle s)
void setUvattrib(const UT_StringHolder &val)
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
fpreal64 fpreal
Definition: SYS_Types.h:277
Utility class for containing a color ramp.
Definition: UT_Ramp.h:84
GLdouble GLdouble GLdouble r
Definition: glew.h:1406
static void loadData(UT_IStream &is, UT_StringHolder &v)
#define SOP_API
Definition: SOP_API.h:10
static void loadData(UT_IStream &is, bool &v)
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
SYS_FORCE_INLINE T & x()
Definition: UT_Vector3.h:511
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:654
GLuint64EXT * result
Definition: glew.h:14007
static void loadData(UT_IStream &is, fpreal64 &v)
const char * findChar(int c) const
Definition: UT_String.h:1367
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:135
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
Edgestyle opEdgestyle(const SOP_NodeVerb::CookParms &cookparms) const
bool opUseuvattrib(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opGroup(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
void save(std::ostream &os) const
static void saveData(std::ostream &os, UT_Vector4D v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
const UT_StringHolder & getOutgroup() const
GLsizei const GLfloat * value
Definition: glew.h:1849
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
static void loadData(UT_IStream &is, UT_Vector3D &v)
const OP_Context & context() const
Definition: SOP_NodeVerb.h:119
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: PRM_Parm.h:89
static void saveData(std::ostream &os, UT_Matrix3D v)
SYS_FORCE_INLINE bool isstring() const
void setColgrouptype(Colgrouptype val)
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
type
Definition: core.h:528
static void loadData(UT_IStream &is, UT_Matrix3D &v)
Pathcontroltype opPathcontroltype(const SOP_NodeVerb::CookParms &cookparms) const
void buildFromOp(const SOP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
bool opColgroupinvert(const SOP_NodeVerb::CookParms &cookparms) const