HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_Clip-2.0.proto.h
Go to the documentation of this file.
1 /* Automagically Generated by generate_proto.py
2  * Do not Edit
3  */
4 #pragma once
5 
6 #include <SOP/SOP_API.h>
7 #include <SOP/SOP_NodeVerb.h>
8 #include <OP/OP_GraphProxy.h>
9 
10 #include <OP/OP_Utils.h>
11 #include <PRM/PRM_Parm.h>
12 #include <UT/UT_IStream.h>
13 #include <UT/UT_NTStreamUtil.h>
14 #include <UT/UT_Ramp.h>
15 #include <UT/UT_SharedPtr.h>
16 #include <UT/UT_StringHolder.h>
17 #include <UT/UT_StringStream.h>
18 #include <UT/UT_VectorTypes.h>
19 #include <UT/UT_EnvControl.h>
20 #include <SYS/SYS_Types.h>
21 
22 class DEP_MicroNode;
23 namespace SOP_Clip_2_0Enums
24 {
25  enum class ClipOp
26  {
27  ABOVE = 0,
28  BELOW,
29  BOTH
30  };
31 
33  getToken(ClipOp enum_value)
34  {
35  using namespace UT::Literal;
36  switch (enum_value) {
37  case ClipOp::ABOVE: return "above"_sh;
38  case ClipOp::BELOW: return "below"_sh;
39  case ClipOp::BOTH: return "both"_sh;
40  default: UT_ASSERT(false); return ""_sh;
41  }
42  }
43 
44  enum class DirType
45  {
46  DIRECTION = 0,
47  XFORM
48  };
49 
51  getToken(DirType enum_value)
52  {
53  using namespace UT::Literal;
54  switch (enum_value) {
55  case DirType::DIRECTION: return "direction"_sh;
56  case DirType::XFORM: return "xform"_sh;
57  default: UT_ASSERT(false); return ""_sh;
58  }
59  }
60 
61 }
62 
63 
65 {
66 public:
67  static int version() { return 1; }
68 
70  {
71  myGroup = ""_UTsh;
72  myAttrib = "P"_UTsh;
73  myClipOp = 0;
74  myDirType = 0;
75  myT = UT_Vector3D(0,0,0);
76  myR = UT_Vector3D(0,0,0);
77  myOrigin = UT_Vector3D(0,0,0);
78  myDir = UT_Vector3D(1,0,0);
79  myDist = 0;
80  mySnapTol = 1e-5;
81  myDoFill = false;
82  myDoSplit = false;
83  myReplace = true;
84  myUseClipEdges = false;
85  myClipEdges = "clippededges"_UTsh;
86  myUseClipPrims = false;
87  myClipPrims = "clipped"_UTsh;
88  myUseAbovePrims = false;
89  myAbovePrims = "above"_UTsh;
90  myUseBelowPrims = false;
91  myBelowPrims = "below"_UTsh;
92  myUseFillPolygons = true;
93  myFillPolygons = "filled"_UTsh;
94 
95  }
96 
97  explicit SOP_Clip_2_0Parms(const SOP_Clip_2_0Parms &) = default;
98  SOP_Clip_2_0Parms &operator=(const SOP_Clip_2_0Parms &) = default;
99  SOP_Clip_2_0Parms(SOP_Clip_2_0Parms &&) noexcept = default;
100  SOP_Clip_2_0Parms &operator=(SOP_Clip_2_0Parms &&) noexcept = default;
101 
102  ~SOP_Clip_2_0Parms() override {}
103 
104  bool operator==(const SOP_Clip_2_0Parms &src) const
105  {
106  if (myGroup != src.myGroup) return false;
107  if (myAttrib != src.myAttrib) return false;
108  if (myClipOp != src.myClipOp) return false;
109  if (myDirType != src.myDirType) return false;
110  if (myT != src.myT) return false;
111  if (myR != src.myR) return false;
112  if (myOrigin != src.myOrigin) return false;
113  if (myDir != src.myDir) return false;
114  if (myDist != src.myDist) return false;
115  if (mySnapTol != src.mySnapTol) return false;
116  if (myDoFill != src.myDoFill) return false;
117  if (myDoSplit != src.myDoSplit) return false;
118  if (myReplace != src.myReplace) return false;
119  if (myUseClipEdges != src.myUseClipEdges) return false;
120  if (myClipEdges != src.myClipEdges) return false;
121  if (myUseClipPrims != src.myUseClipPrims) return false;
122  if (myClipPrims != src.myClipPrims) return false;
123  if (myUseAbovePrims != src.myUseAbovePrims) return false;
124  if (myAbovePrims != src.myAbovePrims) return false;
125  if (myUseBelowPrims != src.myUseBelowPrims) return false;
126  if (myBelowPrims != src.myBelowPrims) return false;
127  if (myUseFillPolygons != src.myUseFillPolygons) return false;
128  if (myFillPolygons != src.myFillPolygons) return false;
129 
130 
131  if (baseGetSignature() != src.baseGetSignature()) return false;
132 
133  return true;
134  }
135  bool operator!=(const SOP_Clip_2_0Parms &src) const
136  {
137  return !operator==(src);
138  }
141 
142 
143 
144  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
145  {
146  myGroup = ""_UTsh;
147  if (true)
148  graph->evalOpParm(myGroup, nodeidx, "group", time, graph->isDirect()?nullptr:depnode);
149  myAttrib = "P"_UTsh;
150  if (true)
151  graph->evalOpParm(myAttrib, nodeidx, "attrib", time, graph->isDirect()?nullptr:depnode);
152  myClipOp = 0;
153  if (true)
154  graph->evalOpParm(myClipOp, nodeidx, "clipop", time, graph->isDirect()?nullptr:depnode);
155  myDirType = 0;
156  if (true)
157  graph->evalOpParm(myDirType, nodeidx, "dirtype", time, graph->isDirect()?nullptr:depnode);
158  myT = UT_Vector3D(0,0,0);
159  if (true && ( (true&&!(((int64(getDirType())!=1))||((int64(getDirType())!=1)))) ) )
160  graph->evalOpParm(myT, nodeidx, "t", time, graph->isDirect()?nullptr:depnode);
161  myR = UT_Vector3D(0,0,0);
162  if (true && ( (true&&!(((int64(getDirType())!=1))||((int64(getDirType())!=1)))) ) )
163  graph->evalOpParm(myR, nodeidx, "r", time, graph->isDirect()?nullptr:depnode);
164  myOrigin = UT_Vector3D(0,0,0);
165  if (true && ( (true&&!(((int64(getDirType())!=0))||((int64(getDirType())!=0)))) ) )
166  graph->evalOpParm(myOrigin, nodeidx, "origin", time, graph->isDirect()?nullptr:depnode);
167  myDir = UT_Vector3D(1,0,0);
168  if (true && ( (true&&!(((int64(getDirType())!=0))||((int64(getDirType())!=0)))) ) )
169  graph->evalOpParm(myDir, nodeidx, "dir", time, graph->isDirect()?nullptr:depnode);
170  myDist = 0;
171  if (true)
172  graph->evalOpParm(myDist, nodeidx, "dist", time, graph->isDirect()?nullptr:depnode);
173  mySnapTol = 1e-5;
174  if (true)
175  graph->evalOpParm(mySnapTol, nodeidx, "snaptol", time, graph->isDirect()?nullptr:depnode);
176  myDoFill = false;
177  if (true)
178  graph->evalOpParm(myDoFill, nodeidx, "dofill", time, graph->isDirect()?nullptr:depnode);
179  myDoSplit = false;
180  if (true && ( (true&&!(((int64(getClipOp())!=2))||((int64(getClipOp())!=2))||((int64(getClipOp())==2)&&(getDoFill()==1)))) ) )
181  graph->evalOpParm(myDoSplit, nodeidx, "dosplit", time, graph->isDirect()?nullptr:depnode);
182  myReplace = true;
183  if (true)
184  graph->evalOpParm(myReplace, nodeidx, "replace", time, graph->isDirect()?nullptr:depnode);
185  myUseClipEdges = false;
186  if (true)
187  graph->evalOpParm(myUseClipEdges, nodeidx, "useclipedges", time, graph->isDirect()?nullptr:depnode);
188  myClipEdges = "clippededges"_UTsh;
189  if (true && ( (true&&!(((getUseClipEdges()==0)))) ) )
190  graph->evalOpParm(myClipEdges, nodeidx, "clipedges", time, graph->isDirect()?nullptr:depnode);
191  myUseClipPrims = false;
192  if (true)
193  graph->evalOpParm(myUseClipPrims, nodeidx, "useclipprims", time, graph->isDirect()?nullptr:depnode);
194  myClipPrims = "clipped"_UTsh;
195  if (true && ( (true&&!(((getUseClipPrims()==0)))) ) )
196  graph->evalOpParm(myClipPrims, nodeidx, "clipprims", time, graph->isDirect()?nullptr:depnode);
197  myUseAbovePrims = false;
198  if (true && ( (true&&!(((int64(getClipOp())!=2)))) ) )
199  graph->evalOpParm(myUseAbovePrims, nodeidx, "useaboveprims", time, graph->isDirect()?nullptr:depnode);
200  myAbovePrims = "above"_UTsh;
201  if (true && ( (true&&!(((int64(getClipOp())!=2))||((int64(getClipOp())!=2))||((getUseAbovePrims()==0)))) ) )
202  graph->evalOpParm(myAbovePrims, nodeidx, "aboveprims", time, graph->isDirect()?nullptr:depnode);
203  myUseBelowPrims = false;
204  if (true && ( (true&&!(((int64(getClipOp())!=2)))) ) )
205  graph->evalOpParm(myUseBelowPrims, nodeidx, "usebelowprims", time, graph->isDirect()?nullptr:depnode);
206  myBelowPrims = "below"_UTsh;
207  if (true && ( (true&&!(((int64(getClipOp())!=2))||((int64(getClipOp())!=2))||((getUseBelowPrims()==0)))) ) )
208  graph->evalOpParm(myBelowPrims, nodeidx, "belowprims", time, graph->isDirect()?nullptr:depnode);
209  myUseFillPolygons = true;
210  if (true && ( (true&&!(((getDoFill()==0))||((getDoFill()==0)))) ) )
211  graph->evalOpParm(myUseFillPolygons, nodeidx, "usefillpolygons", time, graph->isDirect()?nullptr:depnode);
212  myFillPolygons = "filled"_UTsh;
213  if (true && ( (true&&!(((getDoFill()==0))||((getUseFillPolygons()==0))||((getDoFill()==0)))) ) )
214  graph->evalOpParm(myFillPolygons, nodeidx, "fillpolygons", time, graph->isDirect()?nullptr:depnode);
215 
216  }
217 
218 
219  void loadFromOpSubclass(const LoadParms &loadparms) override
220  {
221  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
222  }
223 
224 
225  void copyFrom(const OP_NodeParms *src) override
226  {
227  *this = *((const SOP_Clip_2_0Parms *)src);
228  }
229 
230  template <typename T>
231  void
232  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
233  {
234  if (idx.size() < 1)
235  return;
236  UT_ASSERT(idx.size() == instance.size()+1);
237  if (idx.size() != instance.size()+1)
238  return;
239  switch (idx[0])
240  {
241  case 0:
242  coerceValue(value, myGroup);
243  break;
244  case 1:
245  coerceValue(value, myAttrib);
246  break;
247  case 2:
248  coerceValue(value, myClipOp);
249  break;
250  case 3:
251  coerceValue(value, myDirType);
252  break;
253  case 4:
254  coerceValue(value, myT);
255  break;
256  case 5:
257  coerceValue(value, myR);
258  break;
259  case 6:
260  coerceValue(value, myOrigin);
261  break;
262  case 7:
263  coerceValue(value, myDir);
264  break;
265  case 8:
266  coerceValue(value, myDist);
267  break;
268  case 9:
269  coerceValue(value, mySnapTol);
270  break;
271  case 10:
272  coerceValue(value, myDoFill);
273  break;
274  case 11:
275  coerceValue(value, myDoSplit);
276  break;
277  case 12:
278  coerceValue(value, myReplace);
279  break;
280  case 13:
281  coerceValue(value, myUseClipEdges);
282  break;
283  case 14:
284  coerceValue(value, myClipEdges);
285  break;
286  case 15:
287  coerceValue(value, myUseClipPrims);
288  break;
289  case 16:
290  coerceValue(value, myClipPrims);
291  break;
292  case 17:
293  coerceValue(value, myUseAbovePrims);
294  break;
295  case 18:
296  coerceValue(value, myAbovePrims);
297  break;
298  case 19:
299  coerceValue(value, myUseBelowPrims);
300  break;
301  case 20:
302  coerceValue(value, myBelowPrims);
303  break;
304  case 21:
305  coerceValue(value, myUseFillPolygons);
306  break;
307  case 22:
308  coerceValue(value, myFillPolygons);
309  break;
310 
311  }
312  }
313 
314  bool isParmColorRamp(exint idx) const override
315  {
316  switch (idx)
317  {
318 
319  }
320  return false;
321  }
322 
323  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
324  { doGetParmValue(idx, instance, value); }
325  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
326  { doGetParmValue(idx, instance, value); }
327  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
328  { doGetParmValue(idx, instance, value); }
329  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
330  { doGetParmValue(idx, instance, value); }
331  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
332  { doGetParmValue(idx, instance, value); }
333  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
334  { doGetParmValue(idx, instance, value); }
335  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
336  { doGetParmValue(idx, instance, value); }
337  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
338  { doGetParmValue(idx, instance, value); }
339  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
340  { doGetParmValue(idx, instance, value); }
341  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
342  { doGetParmValue(idx, instance, value); }
343  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
344  { doGetParmValue(idx, instance, value); }
345 
346  template <typename T>
347  void
348  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
349  {
350  if (idx.size() < 1)
351  return;
352  UT_ASSERT(idx.size() == instance.size()+1);
353  if (idx.size() != instance.size()+1)
354  return;
355  switch (idx[0])
356  {
357  case 0:
358  coerceValue(myGroup, ( ( value ) ));
359  break;
360  case 1:
361  coerceValue(myAttrib, ( ( value ) ));
362  break;
363  case 2:
364  coerceValue(myClipOp, clampMinValue(0, clampMaxValue(2, value ) ));
365  break;
366  case 3:
367  coerceValue(myDirType, clampMinValue(0, clampMaxValue(1, value ) ));
368  break;
369  case 4:
370  coerceValue(myT, ( ( value ) ));
371  break;
372  case 5:
373  coerceValue(myR, ( ( value ) ));
374  break;
375  case 6:
376  coerceValue(myOrigin, ( ( value ) ));
377  break;
378  case 7:
379  coerceValue(myDir, ( ( value ) ));
380  break;
381  case 8:
382  coerceValue(myDist, ( ( value ) ));
383  break;
384  case 9:
385  coerceValue(mySnapTol, clampMinValue(0, ( value ) ));
386  break;
387  case 10:
388  coerceValue(myDoFill, ( ( value ) ));
389  break;
390  case 11:
391  coerceValue(myDoSplit, ( ( value ) ));
392  break;
393  case 12:
394  coerceValue(myReplace, ( ( value ) ));
395  break;
396  case 13:
397  coerceValue(myUseClipEdges, ( ( value ) ));
398  break;
399  case 14:
400  coerceValue(myClipEdges, ( ( value ) ));
401  break;
402  case 15:
403  coerceValue(myUseClipPrims, ( ( value ) ));
404  break;
405  case 16:
406  coerceValue(myClipPrims, ( ( value ) ));
407  break;
408  case 17:
409  coerceValue(myUseAbovePrims, ( ( value ) ));
410  break;
411  case 18:
412  coerceValue(myAbovePrims, ( ( value ) ));
413  break;
414  case 19:
415  coerceValue(myUseBelowPrims, ( ( value ) ));
416  break;
417  case 20:
418  coerceValue(myBelowPrims, ( ( value ) ));
419  break;
420  case 21:
421  coerceValue(myUseFillPolygons, ( ( value ) ));
422  break;
423  case 22:
424  coerceValue(myFillPolygons, ( ( value ) ));
425  break;
426 
427  }
428  }
429 
430  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
431  { doSetParmValue(idx, instance, value); }
432  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
433  { doSetParmValue(idx, instance, value); }
434  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
435  { doSetParmValue(idx, instance, value); }
436  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
437  { doSetParmValue(idx, instance, value); }
438  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
439  { doSetParmValue(idx, instance, value); }
440  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
441  { doSetParmValue(idx, instance, value); }
442  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
443  { doSetParmValue(idx, instance, value); }
444  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
445  { doSetParmValue(idx, instance, value); }
446  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
447  { doSetParmValue(idx, instance, value); }
448  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
449  { doSetParmValue(idx, instance, value); }
450  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
451  { doSetParmValue(idx, instance, value); }
452 
453  exint getNestNumParms(TempIndex idx) const override
454  {
455  if (idx.size() == 0)
456  return 23;
457  switch (idx[0])
458  {
459 
460  }
461  // Invalid
462  return 0;
463  }
464 
465  const char *getNestParmName(TempIndex fieldnum) const override
466  {
467  if (fieldnum.size() < 1)
468  return 0;
469  switch (fieldnum[0])
470  {
471  case 0:
472  return "group";
473  case 1:
474  return "attrib";
475  case 2:
476  return "clipop";
477  case 3:
478  return "dirtype";
479  case 4:
480  return "t";
481  case 5:
482  return "r";
483  case 6:
484  return "origin";
485  case 7:
486  return "dir";
487  case 8:
488  return "dist";
489  case 9:
490  return "snaptol";
491  case 10:
492  return "dofill";
493  case 11:
494  return "dosplit";
495  case 12:
496  return "replace";
497  case 13:
498  return "useclipedges";
499  case 14:
500  return "clipedges";
501  case 15:
502  return "useclipprims";
503  case 16:
504  return "clipprims";
505  case 17:
506  return "useaboveprims";
507  case 18:
508  return "aboveprims";
509  case 19:
510  return "usebelowprims";
511  case 20:
512  return "belowprims";
513  case 21:
514  return "usefillpolygons";
515  case 22:
516  return "fillpolygons";
517 
518  }
519  return 0;
520  }
521 
522  ParmType getNestParmType(TempIndex fieldnum) const override
523  {
524  if (fieldnum.size() < 1)
525  return PARM_UNSUPPORTED;
526  switch (fieldnum[0])
527  {
528  case 0:
529  return PARM_STRING;
530  case 1:
531  return PARM_STRING;
532  case 2:
533  return PARM_INTEGER;
534  case 3:
535  return PARM_INTEGER;
536  case 4:
537  return PARM_VECTOR3;
538  case 5:
539  return PARM_VECTOR3;
540  case 6:
541  return PARM_VECTOR3;
542  case 7:
543  return PARM_VECTOR3;
544  case 8:
545  return PARM_FLOAT;
546  case 9:
547  return PARM_FLOAT;
548  case 10:
549  return PARM_INTEGER;
550  case 11:
551  return PARM_INTEGER;
552  case 12:
553  return PARM_INTEGER;
554  case 13:
555  return PARM_INTEGER;
556  case 14:
557  return PARM_STRING;
558  case 15:
559  return PARM_INTEGER;
560  case 16:
561  return PARM_STRING;
562  case 17:
563  return PARM_INTEGER;
564  case 18:
565  return PARM_STRING;
566  case 19:
567  return PARM_INTEGER;
568  case 20:
569  return PARM_STRING;
570  case 21:
571  return PARM_INTEGER;
572  case 22:
573  return PARM_STRING;
574 
575  }
576  return PARM_UNSUPPORTED;
577  }
578 
579  // Boiler plate to load individual types.
580  static void loadData(UT_IStream &is, int64 &v)
581  { is.bread(&v, 1); }
582  static void loadData(UT_IStream &is, bool &v)
583  { int64 iv; is.bread(&iv, 1); v = iv; }
584  static void loadData(UT_IStream &is, fpreal64 &v)
585  { is.bread<fpreal64>(&v, 1); }
586  static void loadData(UT_IStream &is, UT_Vector2D &v)
587  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
588  static void loadData(UT_IStream &is, UT_Vector3D &v)
589  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
590  is.bread<fpreal64>(&v.z(), 1); }
591  static void loadData(UT_IStream &is, UT_Vector4D &v)
592  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
593  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
594  static void loadData(UT_IStream &is, UT_Matrix2D &v)
595  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
596  static void loadData(UT_IStream &is, UT_Matrix3D &v)
597  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
598  static void loadData(UT_IStream &is, UT_Matrix4D &v)
599  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
600  static void loadData(UT_IStream &is, UT_Vector2I &v)
601  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
602  static void loadData(UT_IStream &is, UT_Vector3I &v)
603  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
604  is.bread<int64>(&v.z(), 1); }
605  static void loadData(UT_IStream &is, UT_Vector4I &v)
606  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
607  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
609  { is.bread(v); }
611  { UT_StringHolder rampdata;
612  loadData(is, rampdata);
613  if (rampdata.isstring())
614  {
615  v.reset(new UT_Ramp());
616  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
617  v->load(istr);
618  }
619  else v.reset();
620  }
623  loadData(is, data);
624  if (data.isstring())
625  {
626  // Find the data type.
627  const char *colon = UT_StringWrap(data).findChar(':');
628  if (colon)
629  {
630  int typelen = colon - data.buffer();
632  type.strncpy(data.buffer(), typelen);
633  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
634 
635  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
636  }
637  }
638  else v.reset();
639  }
640 
641  static void saveData(std::ostream &os, int64 v)
642  { UTwrite(os, &v); }
643  static void saveData(std::ostream &os, bool v)
644  { int64 iv = v; UTwrite(os, &iv); }
645  static void saveData(std::ostream &os, fpreal64 v)
646  { UTwrite<fpreal64>(os, &v); }
647  static void saveData(std::ostream &os, UT_Vector2D v)
648  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
649  static void saveData(std::ostream &os, UT_Vector3D v)
650  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
651  UTwrite<fpreal64>(os, &v.z()); }
652  static void saveData(std::ostream &os, UT_Vector4D v)
653  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
654  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
655  static void saveData(std::ostream &os, UT_Matrix2D v)
657  static void saveData(std::ostream &os, UT_Matrix3D v)
659  static void saveData(std::ostream &os, UT_Matrix4D v)
661  static void saveData(std::ostream &os, UT_StringHolder s)
662  { UT_StringWrap(s).saveBinary(os); }
663  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
665  UT_OStringStream ostr;
666  if (s) s->save(ostr);
667  result = ostr.str();
668  saveData(os, result);
669  }
670  static void saveData(std::ostream &os, PRM_DataItemHandle s)
672  UT_OStringStream ostr;
673  if (s)
674  {
675  ostr << s->getDataTypeToken();
676  ostr << ":";
677  s->saveBinary(ostr);
678  }
679  result = ostr.str();
680  saveData(os, result);
681  }
682 
683 
684  void save(std::ostream &os) const
685  {
686  int32 v = version();
687  UTwrite(os, &v);
688  saveData(os, myGroup);
689  saveData(os, myAttrib);
690  saveData(os, myClipOp);
691  saveData(os, myDirType);
692  saveData(os, myT);
693  saveData(os, myR);
694  saveData(os, myOrigin);
695  saveData(os, myDir);
696  saveData(os, myDist);
697  saveData(os, mySnapTol);
698  saveData(os, myDoFill);
699  saveData(os, myDoSplit);
700  saveData(os, myReplace);
701  saveData(os, myUseClipEdges);
702  saveData(os, myClipEdges);
703  saveData(os, myUseClipPrims);
704  saveData(os, myClipPrims);
705  saveData(os, myUseAbovePrims);
706  saveData(os, myAbovePrims);
707  saveData(os, myUseBelowPrims);
708  saveData(os, myBelowPrims);
709  saveData(os, myUseFillPolygons);
710  saveData(os, myFillPolygons);
711 
712  }
713 
714  bool load(UT_IStream &is)
715  {
716  int32 v;
717  is.bread(&v, 1);
718  if (version() != v)
719  {
720  // Fail incompatible versions
721  return false;
722  }
723  loadData(is, myGroup);
724  loadData(is, myAttrib);
725  loadData(is, myClipOp);
726  loadData(is, myDirType);
727  loadData(is, myT);
728  loadData(is, myR);
729  loadData(is, myOrigin);
730  loadData(is, myDir);
731  loadData(is, myDist);
732  loadData(is, mySnapTol);
733  loadData(is, myDoFill);
734  loadData(is, myDoSplit);
735  loadData(is, myReplace);
736  loadData(is, myUseClipEdges);
737  loadData(is, myClipEdges);
738  loadData(is, myUseClipPrims);
739  loadData(is, myClipPrims);
740  loadData(is, myUseAbovePrims);
741  loadData(is, myAbovePrims);
742  loadData(is, myUseBelowPrims);
743  loadData(is, myBelowPrims);
744  loadData(is, myUseFillPolygons);
745  loadData(is, myFillPolygons);
746 
747  return true;
748  }
749 
750  const UT_StringHolder & getGroup() const { return myGroup; }
751  void setGroup(const UT_StringHolder & val) { myGroup = val; }
753  {
754  SOP_Node *thissop = cookparms.getNode();
755  if (!thissop) return getGroup();
757  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
758  return result;
759  }
760  const UT_StringHolder & getAttrib() const { return myAttrib; }
761  void setAttrib(const UT_StringHolder & val) { myAttrib = val; }
763  {
764  SOP_Node *thissop = cookparms.getNode();
765  if (!thissop) return getAttrib();
767  OP_Utils::evalOpParm(result, thissop, "attrib", cookparms.getCookTime(), 0);
768  return result;
769  }
770  ClipOp getClipOp() const { return ClipOp(myClipOp); }
771  void setClipOp(ClipOp val) { myClipOp = int64(val); }
772  ClipOp opClipOp(const SOP_NodeVerb::CookParms &cookparms) const
773  {
774  SOP_Node *thissop = cookparms.getNode();
775  if (!thissop) return getClipOp();
776  int64 result;
777  OP_Utils::evalOpParm(result, thissop, "clipop", cookparms.getCookTime(), 0);
778  return ClipOp(result);
779  }
780  DirType getDirType() const { return DirType(myDirType); }
781  void setDirType(DirType val) { myDirType = int64(val); }
782  DirType opDirType(const SOP_NodeVerb::CookParms &cookparms) const
783  {
784  SOP_Node *thissop = cookparms.getNode();
785  if (!thissop) return getDirType();
786  int64 result;
787  OP_Utils::evalOpParm(result, thissop, "dirtype", cookparms.getCookTime(), 0);
788  return DirType(result);
789  }
790  UT_Vector3D getT() const { return myT; }
791  void setT(UT_Vector3D val) { myT = val; }
792  UT_Vector3D opT(const SOP_NodeVerb::CookParms &cookparms) const
793  {
794  SOP_Node *thissop = cookparms.getNode();
795  if (!thissop) return getT();
797  OP_Utils::evalOpParm(result, thissop, "t", cookparms.getCookTime(), 0);
798  return result;
799  }
800  UT_Vector3D getR() const { return myR; }
801  void setR(UT_Vector3D val) { myR = val; }
802  UT_Vector3D opR(const SOP_NodeVerb::CookParms &cookparms) const
803  {
804  SOP_Node *thissop = cookparms.getNode();
805  if (!thissop) return getR();
807  OP_Utils::evalOpParm(result, thissop, "r", cookparms.getCookTime(), 0);
808  return result;
809  }
810  UT_Vector3D getOrigin() const { return myOrigin; }
811  void setOrigin(UT_Vector3D val) { myOrigin = val; }
813  {
814  SOP_Node *thissop = cookparms.getNode();
815  if (!thissop) return getOrigin();
817  OP_Utils::evalOpParm(result, thissop, "origin", cookparms.getCookTime(), 0);
818  return result;
819  }
820  UT_Vector3D getDir() const { return myDir; }
821  void setDir(UT_Vector3D val) { myDir = val; }
822  UT_Vector3D opDir(const SOP_NodeVerb::CookParms &cookparms) const
823  {
824  SOP_Node *thissop = cookparms.getNode();
825  if (!thissop) return getDir();
827  OP_Utils::evalOpParm(result, thissop, "dir", cookparms.getCookTime(), 0);
828  return result;
829  }
830  fpreal64 getDist() const { return myDist; }
831  void setDist(fpreal64 val) { myDist = val; }
832  fpreal64 opDist(const SOP_NodeVerb::CookParms &cookparms) const
833  {
834  SOP_Node *thissop = cookparms.getNode();
835  if (!thissop) return getDist();
837  OP_Utils::evalOpParm(result, thissop, "dist", cookparms.getCookTime(), 0);
838  return result;
839  }
840  fpreal64 getSnapTol() const { return mySnapTol; }
841  void setSnapTol(fpreal64 val) { mySnapTol = val; }
843  {
844  SOP_Node *thissop = cookparms.getNode();
845  if (!thissop) return getSnapTol();
847  OP_Utils::evalOpParm(result, thissop, "snaptol", cookparms.getCookTime(), 0);
848  return result;
849  }
850  bool getDoFill() const { return myDoFill; }
851  void setDoFill(bool val) { myDoFill = val; }
852  bool opDoFill(const SOP_NodeVerb::CookParms &cookparms) const
853  {
854  SOP_Node *thissop = cookparms.getNode();
855  if (!thissop) return getDoFill();
856  bool result;
857  OP_Utils::evalOpParm(result, thissop, "dofill", cookparms.getCookTime(), 0);
858  return result;
859  }
860  bool getDoSplit() const { return myDoSplit; }
861  void setDoSplit(bool val) { myDoSplit = val; }
862  bool opDoSplit(const SOP_NodeVerb::CookParms &cookparms) const
863  {
864  SOP_Node *thissop = cookparms.getNode();
865  if (!thissop) return getDoSplit();
866  bool result;
867  OP_Utils::evalOpParm(result, thissop, "dosplit", cookparms.getCookTime(), 0);
868  return result;
869  }
870  bool getReplace() const { return myReplace; }
871  void setReplace(bool val) { myReplace = val; }
872  bool opReplace(const SOP_NodeVerb::CookParms &cookparms) const
873  {
874  SOP_Node *thissop = cookparms.getNode();
875  if (!thissop) return getReplace();
876  bool result;
877  OP_Utils::evalOpParm(result, thissop, "replace", cookparms.getCookTime(), 0);
878  return result;
879  }
880  bool getUseClipEdges() const { return myUseClipEdges; }
881  void setUseClipEdges(bool val) { myUseClipEdges = val; }
882  bool opUseClipEdges(const SOP_NodeVerb::CookParms &cookparms) const
883  {
884  SOP_Node *thissop = cookparms.getNode();
885  if (!thissop) return getUseClipEdges();
886  bool result;
887  OP_Utils::evalOpParm(result, thissop, "useclipedges", cookparms.getCookTime(), 0);
888  return result;
889  }
890  const UT_StringHolder & getClipEdges() const { return myClipEdges; }
891  void setClipEdges(const UT_StringHolder & val) { myClipEdges = val; }
893  {
894  SOP_Node *thissop = cookparms.getNode();
895  if (!thissop) return getClipEdges();
897  OP_Utils::evalOpParm(result, thissop, "clipedges", cookparms.getCookTime(), 0);
898  return result;
899  }
900  bool getUseClipPrims() const { return myUseClipPrims; }
901  void setUseClipPrims(bool val) { myUseClipPrims = val; }
902  bool opUseClipPrims(const SOP_NodeVerb::CookParms &cookparms) const
903  {
904  SOP_Node *thissop = cookparms.getNode();
905  if (!thissop) return getUseClipPrims();
906  bool result;
907  OP_Utils::evalOpParm(result, thissop, "useclipprims", cookparms.getCookTime(), 0);
908  return result;
909  }
910  const UT_StringHolder & getClipPrims() const { return myClipPrims; }
911  void setClipPrims(const UT_StringHolder & val) { myClipPrims = val; }
913  {
914  SOP_Node *thissop = cookparms.getNode();
915  if (!thissop) return getClipPrims();
917  OP_Utils::evalOpParm(result, thissop, "clipprims", cookparms.getCookTime(), 0);
918  return result;
919  }
920  bool getUseAbovePrims() const { return myUseAbovePrims; }
921  void setUseAbovePrims(bool val) { myUseAbovePrims = val; }
922  bool opUseAbovePrims(const SOP_NodeVerb::CookParms &cookparms) const
923  {
924  SOP_Node *thissop = cookparms.getNode();
925  if (!thissop) return getUseAbovePrims();
926  bool result;
927  OP_Utils::evalOpParm(result, thissop, "useaboveprims", cookparms.getCookTime(), 0);
928  return result;
929  }
930  const UT_StringHolder & getAbovePrims() const { return myAbovePrims; }
931  void setAbovePrims(const UT_StringHolder & val) { myAbovePrims = val; }
933  {
934  SOP_Node *thissop = cookparms.getNode();
935  if (!thissop) return getAbovePrims();
937  OP_Utils::evalOpParm(result, thissop, "aboveprims", cookparms.getCookTime(), 0);
938  return result;
939  }
940  bool getUseBelowPrims() const { return myUseBelowPrims; }
941  void setUseBelowPrims(bool val) { myUseBelowPrims = val; }
942  bool opUseBelowPrims(const SOP_NodeVerb::CookParms &cookparms) const
943  {
944  SOP_Node *thissop = cookparms.getNode();
945  if (!thissop) return getUseBelowPrims();
946  bool result;
947  OP_Utils::evalOpParm(result, thissop, "usebelowprims", cookparms.getCookTime(), 0);
948  return result;
949  }
950  const UT_StringHolder & getBelowPrims() const { return myBelowPrims; }
951  void setBelowPrims(const UT_StringHolder & val) { myBelowPrims = val; }
953  {
954  SOP_Node *thissop = cookparms.getNode();
955  if (!thissop) return getBelowPrims();
957  OP_Utils::evalOpParm(result, thissop, "belowprims", cookparms.getCookTime(), 0);
958  return result;
959  }
960  bool getUseFillPolygons() const { return myUseFillPolygons; }
961  void setUseFillPolygons(bool val) { myUseFillPolygons = val; }
962  bool opUseFillPolygons(const SOP_NodeVerb::CookParms &cookparms) const
963  {
964  SOP_Node *thissop = cookparms.getNode();
965  if (!thissop) return getUseFillPolygons();
966  bool result;
967  OP_Utils::evalOpParm(result, thissop, "usefillpolygons", cookparms.getCookTime(), 0);
968  return result;
969  }
970  const UT_StringHolder & getFillPolygons() const { return myFillPolygons; }
971  void setFillPolygons(const UT_StringHolder & val) { myFillPolygons = val; }
973  {
974  SOP_Node *thissop = cookparms.getNode();
975  if (!thissop) return getFillPolygons();
977  OP_Utils::evalOpParm(result, thissop, "fillpolygons", cookparms.getCookTime(), 0);
978  return result;
979  }
980 
981 private:
982  UT_StringHolder myGroup;
983  UT_StringHolder myAttrib;
984  int64 myClipOp;
985  int64 myDirType;
986  UT_Vector3D myT;
987  UT_Vector3D myR;
988  UT_Vector3D myOrigin;
989  UT_Vector3D myDir;
990  fpreal64 myDist;
991  fpreal64 mySnapTol;
992  bool myDoFill;
993  bool myDoSplit;
994  bool myReplace;
995  bool myUseClipEdges;
996  UT_StringHolder myClipEdges;
997  bool myUseClipPrims;
998  UT_StringHolder myClipPrims;
999  bool myUseAbovePrims;
1000  UT_StringHolder myAbovePrims;
1001  bool myUseBelowPrims;
1002  UT_StringHolder myBelowPrims;
1003  bool myUseFillPolygons;
1004  UT_StringHolder myFillPolygons;
1005 
1006 };
type
Definition: core.h:556
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
static void saveData(std::ostream &os, PRM_DataItemHandle s)
static void loadData(UT_IStream &is, UT_Matrix3D &v)
static void saveData(std::ostream &os, UT_Vector3D v)
bool getDoSplit() const
static void loadData(UT_IStream &is, bool &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
void setUseAbovePrims(bool val)
void setDir(UT_Vector3D val)
bool opReplace(const SOP_NodeVerb::CookParms &cookparms) const
void setSnapTol(fpreal64 val)
exint getNestNumParms(TempIndex idx) const override
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
void setUseBelowPrims(bool val)
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
exint bread(int32 *buffer, exint asize=1)
bool opUseFillPolygons(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opClipPrims(const SOP_NodeVerb::CookParms &cookparms) const
GLboolean * data
Definition: glcorearb.h:131
UT_StringHolder opClipEdges(const SOP_NodeVerb::CookParms &cookparms) const
GT_API const UT_StringHolder time
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector4.h:493
ClipOp opClipOp(const SOP_NodeVerb::CookParms &cookparms) const
const GLdouble * v
Definition: glcorearb.h:837
fpreal getTime() const
Definition: OP_Context.h:63
bool opDoSplit(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3D getDir() const
static void saveData(std::ostream &os, fpreal64 v)
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
GLsizei const GLfloat * value
Definition: glcorearb.h:824
void setUseFillPolygons(bool val)
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
bool getReplace() const
DirType getDirType() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
const OP_Context & context() const
Definition: OP_NodeParms.h:97
static void loadData(UT_IStream &is, UT_StringHolder &v)
static void loadData(UT_IStream &is, UT_Matrix2D &v)
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
UT_Vector3D getOrigin() const
static void loadData(UT_IStream &is, UT_Vector4D &v)
GLdouble s
Definition: glad.h:3009
void setUseClipEdges(bool val)
static void loadData(UT_IStream &is, UT_Vector2D &v)
An output stream object that owns its own string buffer storage.
bool opUseAbovePrims(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
**But if you need a result
Definition: thread.h:622
void copyFrom(const OP_NodeParms *src) override
void setAttrib(const UT_StringHolder &val)
void setDoFill(bool val)
UT_Vector3D getR() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
bool opDoFill(const SOP_NodeVerb::CookParms &cookparms) const
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 setReplace(bool val)
void setDist(fpreal64 val)
UT_Vector3D opT(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
void setT(UT_Vector3D val)
static void saveData(std::ostream &os, UT_StringHolder s)
const UT_StringHolder & getClipPrims() const
ParmType getNestParmType(TempIndex fieldnum) const override
void setClipOp(ClipOp val)
double fpreal64
Definition: SYS_Types.h:201
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: APEX_Include.h:55
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
UT_Vector3D getT() const
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
bool opUseClipEdges(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
static void saveData(std::ostream &os, UT_Matrix3D v)
bool getDoFill() const
exint length() const
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
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 setDoSplit(bool val)
static void saveData(std::ostream &os, bool v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
UT_Vector3D opR(const SOP_NodeVerb::CookParms &cookparms) const
#define SYS_FORCE_INLINE
Definition: SYS_Inline.h:45
UT_StringHolder opAttrib(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Vector4D v)
static void loadData(UT_IStream &is, UT_Vector4I &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
long long int64
Definition: SYS_Types.h:116
bool isParmColorRamp(exint idx) const override
UT_Vector3D opDir(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getFillPolygons() const
bool getUseBelowPrims() const
UT_Vector3T< fpreal64 > UT_Vector3D
const UT_StringHolder & getAttrib() const
const char * getNestParmName(TempIndex fieldnum) const override
static void loadData(UT_IStream &is, UT_Matrix4D &v)
const UT_StringHolder & getClipEdges() const
static void saveData(std::ostream &os, UT_Vector2D v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
bool load(UT_IStream &is)
void setFillPolygons(const UT_StringHolder &val)
fpreal64 getSnapTol() const
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:303
bool getUseFillPolygons() const
GT_API const UT_StringHolder version
void setClipEdges(const UT_StringHolder &val)
bool getUseClipPrims() const
void setAbovePrims(const UT_StringHolder &val)
void setR(UT_Vector3D val)
UT_StringHolder opGroup(const SOP_NodeVerb::CookParms &cookparms) const
void setBelowPrims(const UT_StringHolder &val)
void setDirType(DirType val)
void setClipPrims(const UT_StringHolder &val)
ClipOp getClipOp() const
void setOrigin(UT_Vector3D val)
static void loadData(UT_IStream &is, UT_Vector2I &v)
bool getUseAbovePrims() const
void setGroup(const UT_StringHolder &val)
void save(std::ostream &os) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
bool opUseBelowPrims(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opDist(const SOP_NodeVerb::CookParms &cookparms) const
void setUseClipPrims(bool val)
UT_Vector3D opOrigin(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getBelowPrims() const
fpreal64 fpreal
Definition: SYS_Types.h:278
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
bool getUseClipEdges() const
LeafData & operator=(const LeafData &)=delete
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
Utility class for containing a color ramp.
Definition: UT_Ramp.h:96
bool operator!=(const SOP_Clip_2_0Parms &src) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
GLuint GLfloat * val
Definition: glcorearb.h:1608
virtual UT_StringHolder baseGetSignature() const
Definition: OP_NodeParms.h:294
DirType opDirType(const SOP_NodeVerb::CookParms &cookparms) const
#define SOP_API
Definition: SOP_API.h:10
static void loadData(UT_IStream &is, UT_Vector3D &v)
static void loadData(UT_IStream &is, fpreal64 &v)
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:372
bool opUseClipPrims(const SOP_NodeVerb::CookParms &cookparms) const
const char * findChar(int c) const
Definition: UT_String.h:1401
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
UT_StringHolder opAbovePrims(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
const UT_StringHolder & getGroup() const
GLboolean r
Definition: glcorearb.h:1222
void loadFromOpSubclass(const LoadParms &loadparms) override
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
fpreal64 opSnapTol(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opBelowPrims(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE UT_StringHolder getToken(ClipOp enum_value)
static void saveData(std::ostream &os, int64 v)
virtual bool isDirect() const =0
Direct proxies mirror actual nodes:
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
const UT_StringHolder & getAbovePrims() const
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
static void loadData(UT_IStream &is, int64 &v)
SYS_FORCE_INLINE bool isstring() const
static void loadData(UT_IStream &is, UT_Vector3I &v)
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
fpreal64 getDist() const
static void saveData(std::ostream &os, UT_Matrix4D v)
static void saveData(std::ostream &os, UT_Matrix2D v)
GLenum src
Definition: glcorearb.h:1793
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663
UT_StringHolder opFillPolygons(const SOP_NodeVerb::CookParms &cookparms) const
bool operator==(const SOP_Clip_2_0Parms &src) const