HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_PolyWire.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_PolyWireEnums
24 {
25  enum class UseScaleAttrib
26  {
27  CONSTANT = 0,
28  ATTRIB
29  };
30 
32  getToken(UseScaleAttrib enum_value)
33  {
34  using namespace UT::Literal;
35  switch (enum_value) {
36  case UseScaleAttrib::CONSTANT: return "constant"_sh;
37  case UseScaleAttrib::ATTRIB: return "attrib"_sh;
38  default: UT_ASSERT(false); return ""_sh;
39  }
40  }
41 
42  enum class UseSmoothAttrib
43  {
44  CONSTANT = 0,
45  ATTRIB
46  };
47 
50  {
51  using namespace UT::Literal;
52  switch (enum_value) {
53  case UseSmoothAttrib::CONSTANT: return "constant"_sh;
54  case UseSmoothAttrib::ATTRIB: return "attrib"_sh;
55  default: UT_ASSERT(false); return ""_sh;
56  }
57  }
58 
59  enum class UseDivAttrib
60  {
61  CONSTANT = 0,
62  ATTRIB
63  };
64 
66  getToken(UseDivAttrib enum_value)
67  {
68  using namespace UT::Literal;
69  switch (enum_value) {
70  case UseDivAttrib::CONSTANT: return "constant"_sh;
71  case UseDivAttrib::ATTRIB: return "attrib"_sh;
72  default: UT_ASSERT(false); return ""_sh;
73  }
74  }
75 
76  enum class UseSegsAttrib
77  {
78  CONSTANT = 0,
79  ATTRIB
80  };
81 
83  getToken(UseSegsAttrib enum_value)
84  {
85  using namespace UT::Literal;
86  switch (enum_value) {
87  case UseSegsAttrib::CONSTANT: return "constant"_sh;
88  case UseSegsAttrib::ATTRIB: return "attrib"_sh;
89  default: UT_ASSERT(false); return ""_sh;
90  }
91  }
92 
93  enum class UseTextVAttrib
94  {
95  CONSTANT = 0,
96  ATTRIB
97  };
98 
101  {
102  using namespace UT::Literal;
103  switch (enum_value) {
104  case UseTextVAttrib::CONSTANT: return "constant"_sh;
105  case UseTextVAttrib::ATTRIB: return "attrib"_sh;
106  default: UT_ASSERT(false); return ""_sh;
107  }
108  }
109 
110  enum class UseUpAttrib
111  {
112  OFF = 0,
113  ON,
114  ATTRIB
115  };
116 
118  getToken(UseUpAttrib enum_value)
119  {
120  using namespace UT::Literal;
121  switch (enum_value) {
122  case UseUpAttrib::OFF: return "off"_sh;
123  case UseUpAttrib::ON: return "on"_sh;
124  case UseUpAttrib::ATTRIB: return "attrib"_sh;
125  default: UT_ASSERT(false); return ""_sh;
126  }
127  }
128 
129 }
130 
131 
133 {
134 public:
135  static int version() { return 1; }
136 
138  {
139  myGroup = ""_UTsh;
140  myRadius = 0.1;
141  myUseScaleAttrib = 0;
142  myScaleAttrib = "pscale"_UTsh;
143  myJointcorrect = true;
144  myMaxscale = 2;
145  mySmooth = 1;
146  myUseSmoothAttrib = 0;
147  mySmoothAttrib = "smooth"_UTsh;
148  myMaxValence = 25;
149  myDiv = 4;
150  myUseDivAttrib = 0;
151  myDivAttrib = "div"_UTsh;
152  mySegs = 1;
153  myUseSegsAttrib = 0;
154  mySegsAttrib = "segs"_UTsh;
155  myUseSegScale = true;
156  mySegScale = UT_Vector2D(0,0);
157  myDotexture = true;
158  myUoff = 0;
159  myTextu = UT_Vector2D(0,1);
160  myUseTextVAttrib = 0;
161  myTextVAttrib = "arc"_UTsh;
162  myTextv = UT_Vector2D(0,1);
163  myUseUpAttrib = 0;
164  myUpvector = UT_Vector3D(0,1,0);
165  myUpAttrib = "up"_UTsh;
166 
167  }
168 
169  explicit SOP_PolyWireParms(const SOP_PolyWireParms &) = default;
170  SOP_PolyWireParms &operator=(const SOP_PolyWireParms &) = default;
171  SOP_PolyWireParms(SOP_PolyWireParms &&) noexcept = default;
172  SOP_PolyWireParms &operator=(SOP_PolyWireParms &&) noexcept = default;
173 
174  ~SOP_PolyWireParms() override {}
175 
176  bool operator==(const SOP_PolyWireParms &src) const
177  {
178  if (myGroup != src.myGroup) return false;
179  if (myRadius != src.myRadius) return false;
180  if (myUseScaleAttrib != src.myUseScaleAttrib) return false;
181  if (myScaleAttrib != src.myScaleAttrib) return false;
182  if (myJointcorrect != src.myJointcorrect) return false;
183  if (myMaxscale != src.myMaxscale) return false;
184  if (mySmooth != src.mySmooth) return false;
185  if (myUseSmoothAttrib != src.myUseSmoothAttrib) return false;
186  if (mySmoothAttrib != src.mySmoothAttrib) return false;
187  if (myMaxValence != src.myMaxValence) return false;
188  if (myDiv != src.myDiv) return false;
189  if (myUseDivAttrib != src.myUseDivAttrib) return false;
190  if (myDivAttrib != src.myDivAttrib) return false;
191  if (mySegs != src.mySegs) return false;
192  if (myUseSegsAttrib != src.myUseSegsAttrib) return false;
193  if (mySegsAttrib != src.mySegsAttrib) return false;
194  if (myUseSegScale != src.myUseSegScale) return false;
195  if (mySegScale != src.mySegScale) return false;
196  if (myDotexture != src.myDotexture) return false;
197  if (myUoff != src.myUoff) return false;
198  if (myTextu != src.myTextu) return false;
199  if (myUseTextVAttrib != src.myUseTextVAttrib) return false;
200  if (myTextVAttrib != src.myTextVAttrib) return false;
201  if (myTextv != src.myTextv) return false;
202  if (myUseUpAttrib != src.myUseUpAttrib) return false;
203  if (myUpvector != src.myUpvector) return false;
204  if (myUpAttrib != src.myUpAttrib) return false;
205 
206 
207  if (baseGetSignature() != src.baseGetSignature()) return false;
208 
209  return true;
210  }
211  bool operator!=(const SOP_PolyWireParms &src) const
212  {
213  return !operator==(src);
214  }
221 
222 
223 
224  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
225  {
226  myGroup = ""_UTsh;
227  if (true)
228  graph->evalOpParm(myGroup, nodeidx, "group", time, graph->isDirect()?nullptr:depnode);
229  myRadius = 0.1;
230  if (true)
231  graph->evalOpParm(myRadius, nodeidx, "radius", time, graph->isDirect()?nullptr:depnode);
232  myUseScaleAttrib = 0;
233  if (true)
234  graph->evalOpParm(myUseScaleAttrib, nodeidx, "usescaleattrib", time, graph->isDirect()?nullptr:depnode);
235  myScaleAttrib = "pscale"_UTsh;
236  if (true && ( (true&&!(((int64(getUseScaleAttrib())==0)))) ) )
237  graph->evalOpParm(myScaleAttrib, nodeidx, "scaleattrib", time, graph->isDirect()?nullptr:depnode);
238  myJointcorrect = true;
239  if (true)
240  graph->evalOpParm(myJointcorrect, nodeidx, "jointcorrect", time, graph->isDirect()?nullptr:depnode);
241  myMaxscale = 2;
242  if (true && ( (true&&!(((getJointcorrect()==0)))) ) )
243  graph->evalOpParm(myMaxscale, nodeidx, "maxscale", time, graph->isDirect()?nullptr:depnode);
244  mySmooth = 1;
245  if (true)
246  graph->evalOpParm(mySmooth, nodeidx, "smooth", time, graph->isDirect()?nullptr:depnode);
247  myUseSmoothAttrib = 0;
248  if (true)
249  graph->evalOpParm(myUseSmoothAttrib, nodeidx, "usesmoothattrib", time, graph->isDirect()?nullptr:depnode);
250  mySmoothAttrib = "smooth"_UTsh;
251  if (true && ( (true&&!(((int64(getUseSmoothAttrib())==0)))) ) )
252  graph->evalOpParm(mySmoothAttrib, nodeidx, "smoothattrib", time, graph->isDirect()?nullptr:depnode);
253  myMaxValence = 25;
254  if (true)
255  graph->evalOpParm(myMaxValence, nodeidx, "maxvalence", time, graph->isDirect()?nullptr:depnode);
256  myDiv = 4;
257  if (true)
258  graph->evalOpParm(myDiv, nodeidx, "div", time, graph->isDirect()?nullptr:depnode);
259  myUseDivAttrib = 0;
260  if (true)
261  graph->evalOpParm(myUseDivAttrib, nodeidx, "usedivattrib", time, graph->isDirect()?nullptr:depnode);
262  myDivAttrib = "div"_UTsh;
263  if (true && ( (true&&!(((int64(getUseDivAttrib())==0)))) ) )
264  graph->evalOpParm(myDivAttrib, nodeidx, "divattrib", time, graph->isDirect()?nullptr:depnode);
265  mySegs = 1;
266  if (true)
267  graph->evalOpParm(mySegs, nodeidx, "segs", time, graph->isDirect()?nullptr:depnode);
268  myUseSegsAttrib = 0;
269  if (true)
270  graph->evalOpParm(myUseSegsAttrib, nodeidx, "usesegsattrib", time, graph->isDirect()?nullptr:depnode);
271  mySegsAttrib = "segs"_UTsh;
272  if (true && ( (true&&!(((int64(getUseSegsAttrib())==0)))) ) )
273  graph->evalOpParm(mySegsAttrib, nodeidx, "segsattrib", time, graph->isDirect()?nullptr:depnode);
274  myUseSegScale = true;
275  if (true)
276  graph->evalOpParm(myUseSegScale, nodeidx, "usesegscale", time, graph->isDirect()?nullptr:depnode);
277  mySegScale = UT_Vector2D(0,0);
278  if (true && ( (true&&!(((getUseSegScale()==0)))) ) )
279  graph->evalOpParm(mySegScale, nodeidx, "segscale", time, graph->isDirect()?nullptr:depnode);
280  myDotexture = true;
281  if (true)
282  graph->evalOpParm(myDotexture, nodeidx, "dotexture", time, graph->isDirect()?nullptr:depnode);
283  myUoff = 0;
284  if (true && ( (true&&!(((getDotexture()==0)))) ) )
285  graph->evalOpParm(myUoff, nodeidx, "uoff", time, graph->isDirect()?nullptr:depnode);
286  myTextu = UT_Vector2D(0,1);
287  if (true && ( (true&&!(((getDotexture()==0)))) ) )
288  graph->evalOpParm(myTextu, nodeidx, "textu", time, graph->isDirect()?nullptr:depnode);
289  myUseTextVAttrib = 0;
290  if (true && ( (true&&!(((getDotexture()==0)))) ) )
291  graph->evalOpParm(myUseTextVAttrib, nodeidx, "usetextvattrib", time, graph->isDirect()?nullptr:depnode);
292  myTextVAttrib = "arc"_UTsh;
293  if (true && ( (true&&!(((getDotexture()==0))||((int64(getUseTextVAttrib())!=1)))) ) )
294  graph->evalOpParm(myTextVAttrib, nodeidx, "textvattrib", time, graph->isDirect()?nullptr:depnode);
295  myTextv = UT_Vector2D(0,1);
296  if (true && ( (true&&!(((getDotexture()==0))||((int64(getUseTextVAttrib())!=0)))) ) )
297  graph->evalOpParm(myTextv, nodeidx, "textv", time, graph->isDirect()?nullptr:depnode);
298  myUseUpAttrib = 0;
299  if (true)
300  graph->evalOpParm(myUseUpAttrib, nodeidx, "upenable", time, graph->isDirect()?nullptr:depnode);
301  myUpvector = UT_Vector3D(0,1,0);
302  if (true && ( (true&&!(((int64(getUseUpAttrib())!=1)))) ) )
303  graph->evalOpParm(myUpvector, nodeidx, "upvector", time, graph->isDirect()?nullptr:depnode);
304  myUpAttrib = "up"_UTsh;
305  if (true && ( (true&&!(((int64(getUseUpAttrib())!=2)))) ) )
306  graph->evalOpParm(myUpAttrib, nodeidx, "upattrib", time, graph->isDirect()?nullptr:depnode);
307 
308  }
309 
310 
311  void loadFromOpSubclass(const LoadParms &loadparms) override
312  {
313  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
314  }
315 
316 
317  void copyFrom(const OP_NodeParms *src) override
318  {
319  *this = *((const SOP_PolyWireParms *)src);
320  }
321 
322  template <typename T>
323  void
324  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
325  {
326  if (idx.size() < 1)
327  return;
328  UT_ASSERT(idx.size() == instance.size()+1);
329  if (idx.size() != instance.size()+1)
330  return;
331  switch (idx[0])
332  {
333  case 0:
334  coerceValue(value, myGroup);
335  break;
336  case 1:
337  coerceValue(value, myRadius);
338  break;
339  case 2:
340  coerceValue(value, myUseScaleAttrib);
341  break;
342  case 3:
343  coerceValue(value, myScaleAttrib);
344  break;
345  case 4:
346  coerceValue(value, myJointcorrect);
347  break;
348  case 5:
349  coerceValue(value, myMaxscale);
350  break;
351  case 6:
352  coerceValue(value, mySmooth);
353  break;
354  case 7:
355  coerceValue(value, myUseSmoothAttrib);
356  break;
357  case 8:
358  coerceValue(value, mySmoothAttrib);
359  break;
360  case 9:
361  coerceValue(value, myMaxValence);
362  break;
363  case 10:
364  coerceValue(value, myDiv);
365  break;
366  case 11:
367  coerceValue(value, myUseDivAttrib);
368  break;
369  case 12:
370  coerceValue(value, myDivAttrib);
371  break;
372  case 13:
373  coerceValue(value, mySegs);
374  break;
375  case 14:
376  coerceValue(value, myUseSegsAttrib);
377  break;
378  case 15:
379  coerceValue(value, mySegsAttrib);
380  break;
381  case 16:
382  coerceValue(value, myUseSegScale);
383  break;
384  case 17:
385  coerceValue(value, mySegScale);
386  break;
387  case 18:
388  coerceValue(value, myDotexture);
389  break;
390  case 19:
391  coerceValue(value, myUoff);
392  break;
393  case 20:
394  coerceValue(value, myTextu);
395  break;
396  case 21:
397  coerceValue(value, myUseTextVAttrib);
398  break;
399  case 22:
400  coerceValue(value, myTextVAttrib);
401  break;
402  case 23:
403  coerceValue(value, myTextv);
404  break;
405  case 24:
406  coerceValue(value, myUseUpAttrib);
407  break;
408  case 25:
409  coerceValue(value, myUpvector);
410  break;
411  case 26:
412  coerceValue(value, myUpAttrib);
413  break;
414 
415  }
416  }
417 
418  bool isParmColorRamp(exint idx) const override
419  {
420  switch (idx)
421  {
422 
423  }
424  return false;
425  }
426 
427  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
428  { doGetParmValue(idx, instance, value); }
429  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
430  { doGetParmValue(idx, instance, value); }
431  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
432  { doGetParmValue(idx, instance, value); }
433  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
434  { doGetParmValue(idx, instance, value); }
435  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
436  { doGetParmValue(idx, instance, value); }
437  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
438  { doGetParmValue(idx, instance, value); }
439  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
440  { doGetParmValue(idx, instance, value); }
441  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
442  { doGetParmValue(idx, instance, value); }
443  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
444  { doGetParmValue(idx, instance, value); }
445  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
446  { doGetParmValue(idx, instance, value); }
447  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
448  { doGetParmValue(idx, instance, value); }
449 
450  template <typename T>
451  void
452  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
453  {
454  if (idx.size() < 1)
455  return;
456  UT_ASSERT(idx.size() == instance.size()+1);
457  if (idx.size() != instance.size()+1)
458  return;
459  switch (idx[0])
460  {
461  case 0:
462  coerceValue(myGroup, ( ( value ) ));
463  break;
464  case 1:
465  coerceValue(myRadius, ( ( value ) ));
466  break;
467  case 2:
468  coerceValue(myUseScaleAttrib, clampMinValue(0, clampMaxValue(1, value ) ));
469  break;
470  case 3:
471  coerceValue(myScaleAttrib, ( ( value ) ));
472  break;
473  case 4:
474  coerceValue(myJointcorrect, ( ( value ) ));
475  break;
476  case 5:
477  coerceValue(myMaxscale, clampMinValue(1, ( value ) ));
478  break;
479  case 6:
480  coerceValue(mySmooth, ( ( value ) ));
481  break;
482  case 7:
483  coerceValue(myUseSmoothAttrib, clampMinValue(0, clampMaxValue(1, value ) ));
484  break;
485  case 8:
486  coerceValue(mySmoothAttrib, ( ( value ) ));
487  break;
488  case 9:
489  coerceValue(myMaxValence, clampMinValue(0, ( value ) ));
490  break;
491  case 10:
492  coerceValue(myDiv, clampMinValue(3, ( value ) ));
493  break;
494  case 11:
495  coerceValue(myUseDivAttrib, clampMinValue(0, clampMaxValue(1, value ) ));
496  break;
497  case 12:
498  coerceValue(myDivAttrib, ( ( value ) ));
499  break;
500  case 13:
501  coerceValue(mySegs, clampMinValue(1, ( value ) ));
502  break;
503  case 14:
504  coerceValue(myUseSegsAttrib, clampMinValue(0, clampMaxValue(1, value ) ));
505  break;
506  case 15:
507  coerceValue(mySegsAttrib, ( ( value ) ));
508  break;
509  case 16:
510  coerceValue(myUseSegScale, ( ( value ) ));
511  break;
512  case 17:
513  coerceValue(mySegScale, ( ( value ) ));
514  break;
515  case 18:
516  coerceValue(myDotexture, ( ( value ) ));
517  break;
518  case 19:
519  coerceValue(myUoff, ( ( value ) ));
520  break;
521  case 20:
522  coerceValue(myTextu, ( ( value ) ));
523  break;
524  case 21:
525  coerceValue(myUseTextVAttrib, clampMinValue(0, clampMaxValue(1, value ) ));
526  break;
527  case 22:
528  coerceValue(myTextVAttrib, ( ( value ) ));
529  break;
530  case 23:
531  coerceValue(myTextv, ( ( value ) ));
532  break;
533  case 24:
534  coerceValue(myUseUpAttrib, clampMinValue(0, clampMaxValue(2, value ) ));
535  break;
536  case 25:
537  coerceValue(myUpvector, ( ( value ) ));
538  break;
539  case 26:
540  coerceValue(myUpAttrib, ( ( value ) ));
541  break;
542 
543  }
544  }
545 
546  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
547  { doSetParmValue(idx, instance, value); }
548  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
549  { doSetParmValue(idx, instance, value); }
550  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
551  { doSetParmValue(idx, instance, value); }
552  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
553  { doSetParmValue(idx, instance, value); }
554  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
555  { doSetParmValue(idx, instance, value); }
556  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
557  { doSetParmValue(idx, instance, value); }
558  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
559  { doSetParmValue(idx, instance, value); }
560  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
561  { doSetParmValue(idx, instance, value); }
562  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
563  { doSetParmValue(idx, instance, value); }
564  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
565  { doSetParmValue(idx, instance, value); }
566  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
567  { doSetParmValue(idx, instance, value); }
568 
569  exint getNestNumParms(TempIndex idx) const override
570  {
571  if (idx.size() == 0)
572  return 27;
573  switch (idx[0])
574  {
575 
576  }
577  // Invalid
578  return 0;
579  }
580 
581  const char *getNestParmName(TempIndex fieldnum) const override
582  {
583  if (fieldnum.size() < 1)
584  return 0;
585  switch (fieldnum[0])
586  {
587  case 0:
588  return "group";
589  case 1:
590  return "radius";
591  case 2:
592  return "usescaleattrib";
593  case 3:
594  return "scaleattrib";
595  case 4:
596  return "jointcorrect";
597  case 5:
598  return "maxscale";
599  case 6:
600  return "smooth";
601  case 7:
602  return "usesmoothattrib";
603  case 8:
604  return "smoothattrib";
605  case 9:
606  return "maxvalence";
607  case 10:
608  return "div";
609  case 11:
610  return "usedivattrib";
611  case 12:
612  return "divattrib";
613  case 13:
614  return "segs";
615  case 14:
616  return "usesegsattrib";
617  case 15:
618  return "segsattrib";
619  case 16:
620  return "usesegscale";
621  case 17:
622  return "segscale";
623  case 18:
624  return "dotexture";
625  case 19:
626  return "uoff";
627  case 20:
628  return "textu";
629  case 21:
630  return "usetextvattrib";
631  case 22:
632  return "textvattrib";
633  case 23:
634  return "textv";
635  case 24:
636  return "upenable";
637  case 25:
638  return "upvector";
639  case 26:
640  return "upattrib";
641 
642  }
643  return 0;
644  }
645 
646  ParmType getNestParmType(TempIndex fieldnum) const override
647  {
648  if (fieldnum.size() < 1)
649  return PARM_UNSUPPORTED;
650  switch (fieldnum[0])
651  {
652  case 0:
653  return PARM_STRING;
654  case 1:
655  return PARM_FLOAT;
656  case 2:
657  return PARM_INTEGER;
658  case 3:
659  return PARM_STRING;
660  case 4:
661  return PARM_INTEGER;
662  case 5:
663  return PARM_FLOAT;
664  case 6:
665  return PARM_INTEGER;
666  case 7:
667  return PARM_INTEGER;
668  case 8:
669  return PARM_STRING;
670  case 9:
671  return PARM_INTEGER;
672  case 10:
673  return PARM_INTEGER;
674  case 11:
675  return PARM_INTEGER;
676  case 12:
677  return PARM_STRING;
678  case 13:
679  return PARM_INTEGER;
680  case 14:
681  return PARM_INTEGER;
682  case 15:
683  return PARM_STRING;
684  case 16:
685  return PARM_INTEGER;
686  case 17:
687  return PARM_VECTOR2;
688  case 18:
689  return PARM_INTEGER;
690  case 19:
691  return PARM_FLOAT;
692  case 20:
693  return PARM_VECTOR2;
694  case 21:
695  return PARM_INTEGER;
696  case 22:
697  return PARM_STRING;
698  case 23:
699  return PARM_VECTOR2;
700  case 24:
701  return PARM_INTEGER;
702  case 25:
703  return PARM_VECTOR3;
704  case 26:
705  return PARM_STRING;
706 
707  }
708  return PARM_UNSUPPORTED;
709  }
710 
711  // Boiler plate to load individual types.
712  static void loadData(UT_IStream &is, int64 &v)
713  { is.bread(&v, 1); }
714  static void loadData(UT_IStream &is, bool &v)
715  { int64 iv; is.bread(&iv, 1); v = iv; }
716  static void loadData(UT_IStream &is, fpreal64 &v)
717  { is.bread<fpreal64>(&v, 1); }
718  static void loadData(UT_IStream &is, UT_Vector2D &v)
719  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
720  static void loadData(UT_IStream &is, UT_Vector3D &v)
721  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
722  is.bread<fpreal64>(&v.z(), 1); }
723  static void loadData(UT_IStream &is, UT_Vector4D &v)
724  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
725  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
726  static void loadData(UT_IStream &is, UT_Matrix2D &v)
727  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
728  static void loadData(UT_IStream &is, UT_Matrix3D &v)
729  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
730  static void loadData(UT_IStream &is, UT_Matrix4D &v)
731  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
732  static void loadData(UT_IStream &is, UT_Vector2I &v)
733  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
734  static void loadData(UT_IStream &is, UT_Vector3I &v)
735  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
736  is.bread<int64>(&v.z(), 1); }
737  static void loadData(UT_IStream &is, UT_Vector4I &v)
738  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
739  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
741  { is.bread(v); }
743  { UT_StringHolder rampdata;
744  loadData(is, rampdata);
745  if (rampdata.isstring())
746  {
747  v.reset(new UT_Ramp());
748  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
749  v->load(istr);
750  }
751  else v.reset();
752  }
755  loadData(is, data);
756  if (data.isstring())
757  {
758  // Find the data type.
759  const char *colon = UT_StringWrap(data).findChar(':');
760  if (colon)
761  {
762  int typelen = colon - data.buffer();
764  type.strncpy(data.buffer(), typelen);
765  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
766 
767  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
768  }
769  }
770  else v.reset();
771  }
772 
773  static void saveData(std::ostream &os, int64 v)
774  { UTwrite(os, &v); }
775  static void saveData(std::ostream &os, bool v)
776  { int64 iv = v; UTwrite(os, &iv); }
777  static void saveData(std::ostream &os, fpreal64 v)
778  { UTwrite<fpreal64>(os, &v); }
779  static void saveData(std::ostream &os, UT_Vector2D v)
780  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
781  static void saveData(std::ostream &os, UT_Vector3D v)
782  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
783  UTwrite<fpreal64>(os, &v.z()); }
784  static void saveData(std::ostream &os, UT_Vector4D v)
785  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
786  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
787  static void saveData(std::ostream &os, UT_Matrix2D v)
789  static void saveData(std::ostream &os, UT_Matrix3D v)
791  static void saveData(std::ostream &os, UT_Matrix4D v)
793  static void saveData(std::ostream &os, UT_StringHolder s)
794  { UT_StringWrap(s).saveBinary(os); }
795  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
797  UT_OStringStream ostr;
798  if (s) s->save(ostr);
799  result = ostr.str();
800  saveData(os, result);
801  }
802  static void saveData(std::ostream &os, PRM_DataItemHandle s)
804  UT_OStringStream ostr;
805  if (s)
806  {
807  ostr << s->getDataTypeToken();
808  ostr << ":";
809  s->saveBinary(ostr);
810  }
811  result = ostr.str();
812  saveData(os, result);
813  }
814 
815 
816  void save(std::ostream &os) const
817  {
818  int32 v = version();
819  UTwrite(os, &v);
820  saveData(os, myGroup);
821  saveData(os, myRadius);
822  saveData(os, myUseScaleAttrib);
823  saveData(os, myScaleAttrib);
824  saveData(os, myJointcorrect);
825  saveData(os, myMaxscale);
826  saveData(os, mySmooth);
827  saveData(os, myUseSmoothAttrib);
828  saveData(os, mySmoothAttrib);
829  saveData(os, myMaxValence);
830  saveData(os, myDiv);
831  saveData(os, myUseDivAttrib);
832  saveData(os, myDivAttrib);
833  saveData(os, mySegs);
834  saveData(os, myUseSegsAttrib);
835  saveData(os, mySegsAttrib);
836  saveData(os, myUseSegScale);
837  saveData(os, mySegScale);
838  saveData(os, myDotexture);
839  saveData(os, myUoff);
840  saveData(os, myTextu);
841  saveData(os, myUseTextVAttrib);
842  saveData(os, myTextVAttrib);
843  saveData(os, myTextv);
844  saveData(os, myUseUpAttrib);
845  saveData(os, myUpvector);
846  saveData(os, myUpAttrib);
847 
848  }
849 
850  bool load(UT_IStream &is)
851  {
852  int32 v;
853  is.bread(&v, 1);
854  if (version() != v)
855  {
856  // Fail incompatible versions
857  return false;
858  }
859  loadData(is, myGroup);
860  loadData(is, myRadius);
861  loadData(is, myUseScaleAttrib);
862  loadData(is, myScaleAttrib);
863  loadData(is, myJointcorrect);
864  loadData(is, myMaxscale);
865  loadData(is, mySmooth);
866  loadData(is, myUseSmoothAttrib);
867  loadData(is, mySmoothAttrib);
868  loadData(is, myMaxValence);
869  loadData(is, myDiv);
870  loadData(is, myUseDivAttrib);
871  loadData(is, myDivAttrib);
872  loadData(is, mySegs);
873  loadData(is, myUseSegsAttrib);
874  loadData(is, mySegsAttrib);
875  loadData(is, myUseSegScale);
876  loadData(is, mySegScale);
877  loadData(is, myDotexture);
878  loadData(is, myUoff);
879  loadData(is, myTextu);
880  loadData(is, myUseTextVAttrib);
881  loadData(is, myTextVAttrib);
882  loadData(is, myTextv);
883  loadData(is, myUseUpAttrib);
884  loadData(is, myUpvector);
885  loadData(is, myUpAttrib);
886 
887  return true;
888  }
889 
890  const UT_StringHolder & getGroup() const { return myGroup; }
891  void setGroup(const UT_StringHolder & val) { myGroup = val; }
893  {
894  SOP_Node *thissop = cookparms.getNode();
895  if (!thissop) return getGroup();
897  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
898  return result;
899  }
900  fpreal64 getRadius() const { return myRadius; }
901  void setRadius(fpreal64 val) { myRadius = val; }
902  fpreal64 opRadius(const SOP_NodeVerb::CookParms &cookparms) const
903  {
904  SOP_Node *thissop = cookparms.getNode();
905  if (!thissop) return getRadius();
907  OP_Utils::evalOpParm(result, thissop, "radius", cookparms.getCookTime(), 0);
908  return result;
909  }
910  UseScaleAttrib getUseScaleAttrib() const { return UseScaleAttrib(myUseScaleAttrib); }
911  void setUseScaleAttrib(UseScaleAttrib val) { myUseScaleAttrib = int64(val); }
913  {
914  SOP_Node *thissop = cookparms.getNode();
915  if (!thissop) return getUseScaleAttrib();
916  int64 result;
917  OP_Utils::evalOpParm(result, thissop, "usescaleattrib", cookparms.getCookTime(), 0);
918  return UseScaleAttrib(result);
919  }
920  const UT_StringHolder & getScaleAttrib() const { return myScaleAttrib; }
921  void setScaleAttrib(const UT_StringHolder & val) { myScaleAttrib = val; }
923  {
924  SOP_Node *thissop = cookparms.getNode();
925  if (!thissop) return getScaleAttrib();
927  OP_Utils::evalOpParm(result, thissop, "scaleattrib", cookparms.getCookTime(), 0);
928  return result;
929  }
930  bool getJointcorrect() const { return myJointcorrect; }
931  void setJointcorrect(bool val) { myJointcorrect = val; }
932  bool opJointcorrect(const SOP_NodeVerb::CookParms &cookparms) const
933  {
934  SOP_Node *thissop = cookparms.getNode();
935  if (!thissop) return getJointcorrect();
936  bool result;
937  OP_Utils::evalOpParm(result, thissop, "jointcorrect", cookparms.getCookTime(), 0);
938  return result;
939  }
940  fpreal64 getMaxscale() const { return myMaxscale; }
941  void setMaxscale(fpreal64 val) { myMaxscale = val; }
943  {
944  SOP_Node *thissop = cookparms.getNode();
945  if (!thissop) return getMaxscale();
947  OP_Utils::evalOpParm(result, thissop, "maxscale", cookparms.getCookTime(), 0);
948  return result;
949  }
950  int64 getSmooth() const { return mySmooth; }
951  void setSmooth(int64 val) { mySmooth = val; }
952  int64 opSmooth(const SOP_NodeVerb::CookParms &cookparms) const
953  {
954  SOP_Node *thissop = cookparms.getNode();
955  if (!thissop) return getSmooth();
956  int64 result;
957  OP_Utils::evalOpParm(result, thissop, "smooth", cookparms.getCookTime(), 0);
958  return result;
959  }
960  UseSmoothAttrib getUseSmoothAttrib() const { return UseSmoothAttrib(myUseSmoothAttrib); }
961  void setUseSmoothAttrib(UseSmoothAttrib val) { myUseSmoothAttrib = int64(val); }
963  {
964  SOP_Node *thissop = cookparms.getNode();
965  if (!thissop) return getUseSmoothAttrib();
966  int64 result;
967  OP_Utils::evalOpParm(result, thissop, "usesmoothattrib", cookparms.getCookTime(), 0);
968  return UseSmoothAttrib(result);
969  }
970  const UT_StringHolder & getSmoothAttrib() const { return mySmoothAttrib; }
971  void setSmoothAttrib(const UT_StringHolder & val) { mySmoothAttrib = val; }
973  {
974  SOP_Node *thissop = cookparms.getNode();
975  if (!thissop) return getSmoothAttrib();
977  OP_Utils::evalOpParm(result, thissop, "smoothattrib", cookparms.getCookTime(), 0);
978  return result;
979  }
980  int64 getMaxValence() const { return myMaxValence; }
981  void setMaxValence(int64 val) { myMaxValence = val; }
983  {
984  SOP_Node *thissop = cookparms.getNode();
985  if (!thissop) return getMaxValence();
986  int64 result;
987  OP_Utils::evalOpParm(result, thissop, "maxvalence", cookparms.getCookTime(), 0);
988  return result;
989  }
990  int64 getDiv() const { return myDiv; }
991  void setDiv(int64 val) { myDiv = val; }
992  int64 opDiv(const SOP_NodeVerb::CookParms &cookparms) const
993  {
994  SOP_Node *thissop = cookparms.getNode();
995  if (!thissop) return getDiv();
996  int64 result;
997  OP_Utils::evalOpParm(result, thissop, "div", cookparms.getCookTime(), 0);
998  return result;
999  }
1000  UseDivAttrib getUseDivAttrib() const { return UseDivAttrib(myUseDivAttrib); }
1001  void setUseDivAttrib(UseDivAttrib val) { myUseDivAttrib = int64(val); }
1003  {
1004  SOP_Node *thissop = cookparms.getNode();
1005  if (!thissop) return getUseDivAttrib();
1006  int64 result;
1007  OP_Utils::evalOpParm(result, thissop, "usedivattrib", cookparms.getCookTime(), 0);
1008  return UseDivAttrib(result);
1009  }
1010  const UT_StringHolder & getDivAttrib() const { return myDivAttrib; }
1011  void setDivAttrib(const UT_StringHolder & val) { myDivAttrib = val; }
1013  {
1014  SOP_Node *thissop = cookparms.getNode();
1015  if (!thissop) return getDivAttrib();
1017  OP_Utils::evalOpParm(result, thissop, "divattrib", cookparms.getCookTime(), 0);
1018  return result;
1019  }
1020  int64 getSegs() const { return mySegs; }
1021  void setSegs(int64 val) { mySegs = val; }
1022  int64 opSegs(const SOP_NodeVerb::CookParms &cookparms) const
1023  {
1024  SOP_Node *thissop = cookparms.getNode();
1025  if (!thissop) return getSegs();
1026  int64 result;
1027  OP_Utils::evalOpParm(result, thissop, "segs", cookparms.getCookTime(), 0);
1028  return result;
1029  }
1030  UseSegsAttrib getUseSegsAttrib() const { return UseSegsAttrib(myUseSegsAttrib); }
1031  void setUseSegsAttrib(UseSegsAttrib val) { myUseSegsAttrib = int64(val); }
1033  {
1034  SOP_Node *thissop = cookparms.getNode();
1035  if (!thissop) return getUseSegsAttrib();
1036  int64 result;
1037  OP_Utils::evalOpParm(result, thissop, "usesegsattrib", cookparms.getCookTime(), 0);
1038  return UseSegsAttrib(result);
1039  }
1040  const UT_StringHolder & getSegsAttrib() const { return mySegsAttrib; }
1041  void setSegsAttrib(const UT_StringHolder & val) { mySegsAttrib = val; }
1043  {
1044  SOP_Node *thissop = cookparms.getNode();
1045  if (!thissop) return getSegsAttrib();
1047  OP_Utils::evalOpParm(result, thissop, "segsattrib", cookparms.getCookTime(), 0);
1048  return result;
1049  }
1050  bool getUseSegScale() const { return myUseSegScale; }
1051  void setUseSegScale(bool val) { myUseSegScale = val; }
1052  bool opUseSegScale(const SOP_NodeVerb::CookParms &cookparms) const
1053  {
1054  SOP_Node *thissop = cookparms.getNode();
1055  if (!thissop) return getUseSegScale();
1056  bool result;
1057  OP_Utils::evalOpParm(result, thissop, "usesegscale", cookparms.getCookTime(), 0);
1058  return result;
1059  }
1060  UT_Vector2D getSegScale() const { return mySegScale; }
1061  void setSegScale(UT_Vector2D val) { mySegScale = val; }
1063  {
1064  SOP_Node *thissop = cookparms.getNode();
1065  if (!thissop) return getSegScale();
1067  OP_Utils::evalOpParm(result, thissop, "segscale", cookparms.getCookTime(), 0);
1068  return result;
1069  }
1070  bool getDotexture() const { return myDotexture; }
1071  void setDotexture(bool val) { myDotexture = val; }
1072  bool opDotexture(const SOP_NodeVerb::CookParms &cookparms) const
1073  {
1074  SOP_Node *thissop = cookparms.getNode();
1075  if (!thissop) return getDotexture();
1076  bool result;
1077  OP_Utils::evalOpParm(result, thissop, "dotexture", cookparms.getCookTime(), 0);
1078  return result;
1079  }
1080  fpreal64 getUoff() const { return myUoff; }
1081  void setUoff(fpreal64 val) { myUoff = val; }
1082  fpreal64 opUoff(const SOP_NodeVerb::CookParms &cookparms) const
1083  {
1084  SOP_Node *thissop = cookparms.getNode();
1085  if (!thissop) return getUoff();
1086  fpreal64 result;
1087  OP_Utils::evalOpParm(result, thissop, "uoff", cookparms.getCookTime(), 0);
1088  return result;
1089  }
1090  UT_Vector2D getTextu() const { return myTextu; }
1091  void setTextu(UT_Vector2D val) { myTextu = val; }
1093  {
1094  SOP_Node *thissop = cookparms.getNode();
1095  if (!thissop) return getTextu();
1097  OP_Utils::evalOpParm(result, thissop, "textu", cookparms.getCookTime(), 0);
1098  return result;
1099  }
1100  UseTextVAttrib getUseTextVAttrib() const { return UseTextVAttrib(myUseTextVAttrib); }
1101  void setUseTextVAttrib(UseTextVAttrib val) { myUseTextVAttrib = int64(val); }
1103  {
1104  SOP_Node *thissop = cookparms.getNode();
1105  if (!thissop) return getUseTextVAttrib();
1106  int64 result;
1107  OP_Utils::evalOpParm(result, thissop, "usetextvattrib", cookparms.getCookTime(), 0);
1108  return UseTextVAttrib(result);
1109  }
1110  const UT_StringHolder & getTextVAttrib() const { return myTextVAttrib; }
1111  void setTextVAttrib(const UT_StringHolder & val) { myTextVAttrib = val; }
1113  {
1114  SOP_Node *thissop = cookparms.getNode();
1115  if (!thissop) return getTextVAttrib();
1117  OP_Utils::evalOpParm(result, thissop, "textvattrib", cookparms.getCookTime(), 0);
1118  return result;
1119  }
1120  UT_Vector2D getTextv() const { return myTextv; }
1121  void setTextv(UT_Vector2D val) { myTextv = val; }
1123  {
1124  SOP_Node *thissop = cookparms.getNode();
1125  if (!thissop) return getTextv();
1127  OP_Utils::evalOpParm(result, thissop, "textv", cookparms.getCookTime(), 0);
1128  return result;
1129  }
1130  UseUpAttrib getUseUpAttrib() const { return UseUpAttrib(myUseUpAttrib); }
1131  void setUseUpAttrib(UseUpAttrib val) { myUseUpAttrib = int64(val); }
1133  {
1134  SOP_Node *thissop = cookparms.getNode();
1135  if (!thissop) return getUseUpAttrib();
1136  int64 result;
1137  OP_Utils::evalOpParm(result, thissop, "upenable", cookparms.getCookTime(), 0);
1138  return UseUpAttrib(result);
1139  }
1140  UT_Vector3D getUpvector() const { return myUpvector; }
1141  void setUpvector(UT_Vector3D val) { myUpvector = val; }
1143  {
1144  SOP_Node *thissop = cookparms.getNode();
1145  if (!thissop) return getUpvector();
1147  OP_Utils::evalOpParm(result, thissop, "upvector", cookparms.getCookTime(), 0);
1148  return result;
1149  }
1150  const UT_StringHolder & getUpAttrib() const { return myUpAttrib; }
1151  void setUpAttrib(const UT_StringHolder & val) { myUpAttrib = val; }
1153  {
1154  SOP_Node *thissop = cookparms.getNode();
1155  if (!thissop) return getUpAttrib();
1157  OP_Utils::evalOpParm(result, thissop, "upattrib", cookparms.getCookTime(), 0);
1158  return result;
1159  }
1160 
1161 private:
1162  UT_StringHolder myGroup;
1163  fpreal64 myRadius;
1164  int64 myUseScaleAttrib;
1165  UT_StringHolder myScaleAttrib;
1166  bool myJointcorrect;
1167  fpreal64 myMaxscale;
1168  int64 mySmooth;
1169  int64 myUseSmoothAttrib;
1170  UT_StringHolder mySmoothAttrib;
1171  int64 myMaxValence;
1172  int64 myDiv;
1173  int64 myUseDivAttrib;
1174  UT_StringHolder myDivAttrib;
1175  int64 mySegs;
1176  int64 myUseSegsAttrib;
1177  UT_StringHolder mySegsAttrib;
1178  bool myUseSegScale;
1179  UT_Vector2D mySegScale;
1180  bool myDotexture;
1181  fpreal64 myUoff;
1182  UT_Vector2D myTextu;
1183  int64 myUseTextVAttrib;
1184  UT_StringHolder myTextVAttrib;
1185  UT_Vector2D myTextv;
1186  int64 myUseUpAttrib;
1187  UT_Vector3D myUpvector;
1188  UT_StringHolder myUpAttrib;
1189 
1190 };
void setGroup(const UT_StringHolder &val)
type
Definition: core.h:556
static void loadData(UT_IStream &is, UT_Vector2I &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
void setSegScale(UT_Vector2D val)
static void saveData(std::ostream &os, UT_Vector4D v)
bool opUseSegScale(const SOP_NodeVerb::CookParms &cookparms) const
void setJointcorrect(bool val)
static void saveData(std::ostream &os, UT_Vector3D v)
bool getJointcorrect() const
SYS_FORCE_INLINE UT_StringHolder getToken(UseScaleAttrib enum_value)
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
static void saveData(std::ostream &os, fpreal64 v)
bool isParmColorRamp(exint idx) const override
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
static void saveData(std::ostream &os, bool v)
exint bread(int32 *buffer, exint asize=1)
GLboolean * data
Definition: glcorearb.h:131
GT_API const UT_StringHolder time
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector4.h:493
const GLdouble * v
Definition: glcorearb.h:837
fpreal getTime() const
Definition: OP_Context.h:63
UT_StringHolder opScaleAttrib(const SOP_NodeVerb::CookParms &cookparms) const
UseUpAttrib getUseUpAttrib() const
UT_Vector2T< fpreal64 > UT_Vector2D
int64 opDiv(const SOP_NodeVerb::CookParms &cookparms) const
GLsizei const GLfloat * value
Definition: glcorearb.h:824
UseSegsAttrib getUseSegsAttrib() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
void setUseDivAttrib(UseDivAttrib val)
static void loadData(UT_IStream &is, UT_Vector3D &v)
const OP_Context & context() const
Definition: OP_NodeParms.h:97
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
const UT_StringHolder & getUpAttrib() const
SYS_FORCE_INLINE const char * buffer() const
GLdouble s
Definition: glad.h:3009
UseSmoothAttrib opUseSmoothAttrib(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
static void loadData(UT_IStream &is, UT_Vector3I &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
An output stream object that owns its own string buffer storage.
UseSmoothAttrib getUseSmoothAttrib() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
void setUpvector(UT_Vector3D val)
fpreal64 opRadius(const SOP_NodeVerb::CookParms &cookparms) const
int64 getSmooth() const
**But if you need a result
Definition: thread.h:622
void copyFrom(const OP_NodeParms *src) override
const UT_StringHolder & getDivAttrib() const
UT_StringHolder opSegsAttrib(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector2D &v)
static void saveData(std::ostream &os, int64 v)
static void saveData(std::ostream &os, UT_Vector2D v)
UT_StringHolder opDivAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
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 setSmooth(int64 val)
bool operator==(const SOP_PolyWireParms &src) const
UseTextVAttrib getUseTextVAttrib() const
static void loadData(UT_IStream &is, UT_Matrix4D &v)
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
fpreal64 opUoff(const SOP_NodeVerb::CookParms &cookparms) const
int64 getMaxValence() const
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
const UT_StringHolder & getTextVAttrib() const
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
int64 opMaxValence(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, int64 &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
static void saveData(std::ostream &os, UT_Matrix2D v)
int64 getSegs() const
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
UT_Vector2D getTextv() const
static void loadData(UT_IStream &is, UT_Vector4I &v)
bool getUseSegScale() const
const UT_StringHolder & getSmoothAttrib() const
void setTextu(UT_Vector2D val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
void setUseSegsAttrib(UseSegsAttrib val)
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
void setDotexture(bool val)
exint length() const
int64 opSegs(const SOP_NodeVerb::CookParms &cookparms) const
void setDiv(int64 val)
bool load(UT_IStream &is)
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:36
void setUseScaleAttrib(UseScaleAttrib val)
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:495
static void loadData(UT_IStream &is, UT_StringHolder &v)
UseTextVAttrib opUseTextVAttrib(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D opSegScale(const SOP_NodeVerb::CookParms &cookparms) const
void setRadius(fpreal64 val)
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
const UT_StringHolder & getSegsAttrib() const
#define SYS_FORCE_INLINE
Definition: SYS_Inline.h:45
fpreal64 getRadius() const
static void loadData(UT_IStream &is, UT_Matrix3D &v)
UT_Vector2D opTextv(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opMaxscale(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opSmoothAttrib(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector4D &v)
long long int64
Definition: SYS_Types.h:116
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
UT_StringHolder opGroup(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3T< fpreal64 > UT_Vector3D
fpreal64 getMaxscale() const
int64 getDiv() const
static void saveData(std::ostream &os, UT_StringHolder s)
const char * getNestParmName(TempIndex fieldnum) const override
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
static void loadData(UT_IStream &is, fpreal64 &v)
bool opDotexture(const SOP_NodeVerb::CookParms &cookparms) const
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:303
UT_Vector3D opUpvector(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
UT_Vector2D getSegScale() const
GT_API const UT_StringHolder version
const UT_StringHolder & getScaleAttrib() const
int64 opSmooth(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
exint getNestNumParms(TempIndex idx) const override
void setUpAttrib(const UT_StringHolder &val)
void setUseTextVAttrib(UseTextVAttrib val)
void setSegsAttrib(const UT_StringHolder &val)
void setSmoothAttrib(const UT_StringHolder &val)
fpreal64 fpreal
Definition: SYS_Types.h:278
ParmType getNestParmType(TempIndex fieldnum) const override
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
LeafData & operator=(const LeafData &)=delete
Utility class for containing a color ramp.
Definition: UT_Ramp.h:96
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
static void saveData(std::ostream &os, UT_Matrix4D v)
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
void setUseSmoothAttrib(UseSmoothAttrib val)
void setUseUpAttrib(UseUpAttrib val)
GLuint GLfloat * val
Definition: glcorearb.h:1608
virtual UT_StringHolder baseGetSignature() const
Definition: OP_NodeParms.h:294
static void saveData(std::ostream &os, PRM_DataItemHandle s)
void setSegs(int64 val)
void setDivAttrib(const UT_StringHolder &val)
#define SOP_API
Definition: SOP_API.h:10
void setTextv(UT_Vector2D val)
UT_StringHolder opTextVAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void save(std::ostream &os) const
void setScaleAttrib(const UT_StringHolder &val)
UT_StringHolder opUpAttrib(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getUoff() const
UseSegsAttrib opUseSegsAttrib(const SOP_NodeVerb::CookParms &cookparms) const
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:372
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
void loadFromOpSubclass(const LoadParms &loadparms) override
UseDivAttrib opUseDivAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
UseScaleAttrib getUseScaleAttrib() const
const char * findChar(int c) const
Definition: UT_String.h:1401
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
void setUoff(fpreal64 val)
UseScaleAttrib opUseScaleAttrib(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
UT_Vector2D opTextu(const SOP_NodeVerb::CookParms &cookparms) const
GLboolean r
Definition: glcorearb.h:1222
bool opJointcorrect(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D getTextu() const
const UT_StringHolder & getGroup() const
static void loadData(UT_IStream &is, bool &v)
void setUseSegScale(bool val)
void setMaxValence(int64 val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
bool operator!=(const SOP_PolyWireParms &src) const
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
void setMaxscale(fpreal64 val)
bool getDotexture() const
void setTextVAttrib(const UT_StringHolder &val)
virtual bool isDirect() const =0
Direct proxies mirror actual nodes:
UT_Vector3D getUpvector() const
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
UseUpAttrib opUseUpAttrib(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE bool isstring() const
static void saveData(std::ostream &os, UT_Matrix3D v)
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
GLenum src
Definition: glcorearb.h:1793
UseDivAttrib getUseDivAttrib() const
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override