HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_Basis.proto.h
Go to the documentation of this file.
1 /* Automagically Generated by generate_proto.py
2  * Do not Edit
3  */
4 #pragma once
5 
6 #include <SOP/SOP_API.h>
7 #include <SOP/SOP_NodeVerb.h>
8 #include <SOP/SOP_GraphProxy.h>
9 
10 #include <OP/OP_Utils.h>
11 #include <PRM/PRM_Parm.h>
12 #include <UT/UT_IStream.h>
13 #include <UT/UT_NTStreamUtil.h>
14 #include <UT/UT_Ramp.h>
15 #include <UT/UT_SharedPtr.h>
16 #include <UT/UT_StringHolder.h>
17 #include <UT/UT_StringStream.h>
18 #include <UT/UT_VectorTypes.h>
19 #include <UT/UT_EnvControl.h>
20 #include <SYS/SYS_Types.h>
21 
22 class DEP_MicroNode;
23 namespace SOP_BasisEnums
24 {
25  enum class UParmType
26  {
27  NOCHANGE = 0,
28  UNIFORM,
29  CHORD,
31  MANUALONE,
32  MANUALALL,
33  SLIDE,
34  APPROXARC
35  };
36  enum class VParmType
37  {
38  NOCHANGE = 0,
39  UNIFORM,
40  CHORD,
42  MANUALONE,
43  MANUALALL,
44  SLIDE,
45  APPROXARC
46  };
47 }
48 
49 
51 {
52 public:
53  static int version() { return 1; }
54 
56  {
57  myGroup = ""_UTsh;
58  myUBasis = true;
59  myUParmType = 0;
60  myUKnots = ""_UTsh;
61  myURange = UT_Vector2D(0.1,0.9);
62  myUBias = 0.5;
63  myUConcat = false;
64  myUDoOrigin = false;
65  myUOrigin = 0;
66  myUDoLength = false;
67  myULength = 1;
68  myUDoScale = false;
69  myUScale = 1;
70  myURaise = false;
71  myOrderU = 4;
72  myVBasis = false;
73  myVParmType = 0;
74  myVKnots = ""_UTsh;
75  myVRange = UT_Vector2D(0.1,0.9);
76  myVBias = 0.5;
77  myVConcat = false;
78  myVDoOrigin = false;
79  myVOrigin = 0;
80  myVDoLength = false;
81  myVLength = 1;
82  myVDoScale = false;
83  myVScale = 1;
84  myVRaise = false;
85  myOrderV = 4;
86 
87  }
88 
89  explicit SOP_BasisParms(const SOP_BasisParms &) = default;
90  SOP_BasisParms &operator=(const SOP_BasisParms &) = default;
91  SOP_BasisParms(SOP_BasisParms &&) noexcept = default;
92  SOP_BasisParms &operator=(SOP_BasisParms &&) noexcept = default;
93 
94  ~SOP_BasisParms() override {}
95 
96  bool operator==(const SOP_BasisParms &src) const
97  {
98  if (myGroup != src.myGroup) return false;
99  if (myUBasis != src.myUBasis) return false;
100  if (myUParmType != src.myUParmType) return false;
101  if (myUKnots != src.myUKnots) return false;
102  if (myURange != src.myURange) return false;
103  if (myUBias != src.myUBias) return false;
104  if (myUConcat != src.myUConcat) return false;
105  if (myUDoOrigin != src.myUDoOrigin) return false;
106  if (myUOrigin != src.myUOrigin) return false;
107  if (myUDoLength != src.myUDoLength) return false;
108  if (myULength != src.myULength) return false;
109  if (myUDoScale != src.myUDoScale) return false;
110  if (myUScale != src.myUScale) return false;
111  if (myURaise != src.myURaise) return false;
112  if (myOrderU != src.myOrderU) return false;
113  if (myVBasis != src.myVBasis) return false;
114  if (myVParmType != src.myVParmType) return false;
115  if (myVKnots != src.myVKnots) return false;
116  if (myVRange != src.myVRange) return false;
117  if (myVBias != src.myVBias) return false;
118  if (myVConcat != src.myVConcat) return false;
119  if (myVDoOrigin != src.myVDoOrigin) return false;
120  if (myVOrigin != src.myVOrigin) return false;
121  if (myVDoLength != src.myVDoLength) return false;
122  if (myVLength != src.myVLength) return false;
123  if (myVDoScale != src.myVDoScale) return false;
124  if (myVScale != src.myVScale) return false;
125  if (myVRaise != src.myVRaise) return false;
126  if (myOrderV != src.myOrderV) return false;
127 
128  return true;
129  }
130  bool operator!=(const SOP_BasisParms &src) const
131  {
132  return !operator==(src);
133  }
136 
137 
138 
139  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
140  {
141  myGroup = ""_UTsh;
142  if (true)
143  graph->evalOpParm(myGroup, nodeidx, "group", time, 0);
144  myUBasis = true;
145  if (true)
146  graph->evalOpParm(myUBasis, nodeidx, "ubasis", time, 0);
147  myUParmType = 0;
148  if (true && ( (true&&!(((getUBasis()==0)))) ) )
149  graph->evalOpParm(myUParmType, nodeidx, "uparmtype", time, 0);
150  myUKnots = ""_UTsh;
151  if (true && ( (true&&!(((int64(getUParmType())!=4)&&(int64(getUParmType())!=5))||((getUBasis()==0)))) ) )
152  graph->evalOpParm(myUKnots, nodeidx, "uknots", time, 0);
153  myURange = UT_Vector2D(0.1,0.9);
154  if (true && ( (true&&!(((int64(getUParmType())!=6))||((getUBasis()==0)))) ) )
155  graph->evalOpParm(myURange, nodeidx, "urange", time, 0);
156  myUBias = 0.5;
157  if (true && ( (true&&!(((int64(getUParmType())!=6))||((getUBasis()==0)))) ) )
158  graph->evalOpParm(myUBias, nodeidx, "ubias", time, 0);
159  myUConcat = false;
160  if (true && ( (true&&!(((getUBasis()==0)))) ) )
161  graph->evalOpParm(myUConcat, nodeidx, "uconcat", time, 0);
162  myUDoOrigin = false;
163  if (true && ( (true&&!(((getUBasis()==0)))) ) )
164  graph->evalOpParm(myUDoOrigin, nodeidx, "udoorigin", time, 0);
165  myUOrigin = 0;
166  if (true && ( (true&&!(((getUDoOrigin()==0))||((getUBasis()==0)))) ) )
167  graph->evalOpParm(myUOrigin, nodeidx, "uorigin", time, 0);
168  myUDoLength = false;
169  if (true && ( (true&&!(((getUBasis()==0)))) ) )
170  graph->evalOpParm(myUDoLength, nodeidx, "udolength", time, 0);
171  myULength = 1;
172  if (true && ( (true&&!(((getUDoLength()==0))||((getUBasis()==0)))) ) )
173  graph->evalOpParm(myULength, nodeidx, "ulength", time, 0);
174  myUDoScale = false;
175  if (true && ( (true&&!(((getUBasis()==0)))) ) )
176  graph->evalOpParm(myUDoScale, nodeidx, "udoscale", time, 0);
177  myUScale = 1;
178  if (true && ( (true&&!(((getUDoScale()==0))||((getUBasis()==0)))) ) )
179  graph->evalOpParm(myUScale, nodeidx, "uscale", time, 0);
180  myURaise = false;
181  if (true && ( (true&&!(((getUBasis()==0)))) ) )
182  graph->evalOpParm(myURaise, nodeidx, "uraise", time, 0);
183  myOrderU = 4;
184  if (true && ( (true&&!(((getURaise()==0))||((getUBasis()==0)))) ) )
185  graph->evalOpParm(myOrderU, nodeidx, "orderu", time, 0);
186  myVBasis = false;
187  if (true)
188  graph->evalOpParm(myVBasis, nodeidx, "vbasis", time, 0);
189  myVParmType = 0;
190  if (true && ( (true&&!(((getVBasis()==0)))) ) )
191  graph->evalOpParm(myVParmType, nodeidx, "vparmtype", time, 0);
192  myVKnots = ""_UTsh;
193  if (true && ( (true&&!(((int64(getVParmType())!=4)&&(int64(getVParmType())!=5))||((getVBasis()==0)))) ) )
194  graph->evalOpParm(myVKnots, nodeidx, "vknots", time, 0);
195  myVRange = UT_Vector2D(0.1,0.9);
196  if (true && ( (true&&!(((int64(getVParmType())!=6))||((getVBasis()==0)))) ) )
197  graph->evalOpParm(myVRange, nodeidx, "vrange", time, 0);
198  myVBias = 0.5;
199  if (true && ( (true&&!(((int64(getVParmType())!=6))||((getVBasis()==0)))) ) )
200  graph->evalOpParm(myVBias, nodeidx, "vbias", time, 0);
201  myVConcat = false;
202  if (true && ( (true&&!(((getVBasis()==0)))) ) )
203  graph->evalOpParm(myVConcat, nodeidx, "vconcat", time, 0);
204  myVDoOrigin = false;
205  if (true && ( (true&&!(((getVBasis()==0)))) ) )
206  graph->evalOpParm(myVDoOrigin, nodeidx, "vdoorigin", time, 0);
207  myVOrigin = 0;
208  if (true && ( (true&&!(((getVDoOrigin()==0))||((getVBasis()==0)))) ) )
209  graph->evalOpParm(myVOrigin, nodeidx, "vorigin", time, 0);
210  myVDoLength = false;
211  if (true && ( (true&&!(((getVBasis()==0)))) ) )
212  graph->evalOpParm(myVDoLength, nodeidx, "vdolength", time, 0);
213  myVLength = 1;
214  if (true && ( (true&&!(((getVDoLength()==0))||((getVBasis()==0)))) ) )
215  graph->evalOpParm(myVLength, nodeidx, "vlength", time, 0);
216  myVDoScale = false;
217  if (true && ( (true&&!(((getVBasis()==0)))) ) )
218  graph->evalOpParm(myVDoScale, nodeidx, "vdoscale", time, 0);
219  myVScale = 1;
220  if (true && ( (true&&!(((getVDoScale()==0))||((getVBasis()==0)))) ) )
221  graph->evalOpParm(myVScale, nodeidx, "vscale", time, 0);
222  myVRaise = false;
223  if (true && ( (true&&!(((getVBasis()==0)))) ) )
224  graph->evalOpParm(myVRaise, nodeidx, "vraise", time, 0);
225  myOrderV = 4;
226  if (true && ( (true&&!(((getVRaise()==0))||((getVBasis()==0)))) ) )
227  graph->evalOpParm(myOrderV, nodeidx, "orderv", time, 0);
228 
229  }
230 
231 
232  void loadFromOpSubclass(const LoadParms &loadparms) override
233  {
234  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
235  }
236 
237 
238  void copyFrom(const OP_NodeParms *src) override
239  {
240  *this = *((const SOP_BasisParms *)src);
241  }
242 
243  template <typename T>
244  void
245  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
246  {
247  if (idx.size() < 1)
248  return;
249  UT_ASSERT(idx.size() == instance.size()+1);
250  if (idx.size() != instance.size()+1)
251  return;
252  switch (idx[0])
253  {
254  case 0:
255  coerceValue(value, myGroup);
256  break;
257  case 1:
258  coerceValue(value, myUBasis);
259  break;
260  case 2:
261  coerceValue(value, myUParmType);
262  break;
263  case 3:
264  coerceValue(value, myUKnots);
265  break;
266  case 4:
267  coerceValue(value, myURange);
268  break;
269  case 5:
270  coerceValue(value, myUBias);
271  break;
272  case 6:
273  coerceValue(value, myUConcat);
274  break;
275  case 7:
276  coerceValue(value, myUDoOrigin);
277  break;
278  case 8:
279  coerceValue(value, myUOrigin);
280  break;
281  case 9:
282  coerceValue(value, myUDoLength);
283  break;
284  case 10:
285  coerceValue(value, myULength);
286  break;
287  case 11:
288  coerceValue(value, myUDoScale);
289  break;
290  case 12:
291  coerceValue(value, myUScale);
292  break;
293  case 13:
294  coerceValue(value, myURaise);
295  break;
296  case 14:
297  coerceValue(value, myOrderU);
298  break;
299  case 15:
300  coerceValue(value, myVBasis);
301  break;
302  case 16:
303  coerceValue(value, myVParmType);
304  break;
305  case 17:
306  coerceValue(value, myVKnots);
307  break;
308  case 18:
309  coerceValue(value, myVRange);
310  break;
311  case 19:
312  coerceValue(value, myVBias);
313  break;
314  case 20:
315  coerceValue(value, myVConcat);
316  break;
317  case 21:
318  coerceValue(value, myVDoOrigin);
319  break;
320  case 22:
321  coerceValue(value, myVOrigin);
322  break;
323  case 23:
324  coerceValue(value, myVDoLength);
325  break;
326  case 24:
327  coerceValue(value, myVLength);
328  break;
329  case 25:
330  coerceValue(value, myVDoScale);
331  break;
332  case 26:
333  coerceValue(value, myVScale);
334  break;
335  case 27:
336  coerceValue(value, myVRaise);
337  break;
338  case 28:
339  coerceValue(value, myOrderV);
340  break;
341 
342  }
343  }
344 
345  bool isParmColorRamp(exint idx) const override
346  {
347  switch (idx)
348  {
349 
350  }
351  return false;
352  }
353 
354  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
355  { doGetParmValue(idx, instance, value); }
356  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
357  { doGetParmValue(idx, instance, value); }
358  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
359  { doGetParmValue(idx, instance, value); }
360  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
361  { doGetParmValue(idx, instance, value); }
362  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
363  { doGetParmValue(idx, instance, value); }
364  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
365  { doGetParmValue(idx, instance, value); }
366  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
367  { doGetParmValue(idx, instance, value); }
368  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
369  { doGetParmValue(idx, instance, value); }
370  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
371  { doGetParmValue(idx, instance, value); }
372  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
373  { doGetParmValue(idx, instance, value); }
374  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
375  { doGetParmValue(idx, instance, value); }
376 
377  template <typename T>
378  void
379  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
380  {
381  if (idx.size() < 1)
382  return;
383  UT_ASSERT(idx.size() == instance.size()+1);
384  if (idx.size() != instance.size()+1)
385  return;
386  switch (idx[0])
387  {
388  case 0:
389  coerceValue(myGroup, ( ( value ) ));
390  break;
391  case 1:
392  coerceValue(myUBasis, ( ( value ) ));
393  break;
394  case 2:
395  coerceValue(myUParmType, clampMinValue(0, clampMaxValue(7, value ) ));
396  break;
397  case 3:
398  coerceValue(myUKnots, ( ( value ) ));
399  break;
400  case 4:
401  coerceValue(myURange, ( ( value ) ));
402  break;
403  case 5:
404  coerceValue(myUBias, clampMinValue(0, clampMaxValue(1, value ) ));
405  break;
406  case 6:
407  coerceValue(myUConcat, ( ( value ) ));
408  break;
409  case 7:
410  coerceValue(myUDoOrigin, ( ( value ) ));
411  break;
412  case 8:
413  coerceValue(myUOrigin, ( ( value ) ));
414  break;
415  case 9:
416  coerceValue(myUDoLength, ( ( value ) ));
417  break;
418  case 10:
419  coerceValue(myULength, clampMinValue(0.0001, ( value ) ));
420  break;
421  case 11:
422  coerceValue(myUDoScale, ( ( value ) ));
423  break;
424  case 12:
425  coerceValue(myUScale, clampMinValue(0.0001, ( value ) ));
426  break;
427  case 13:
428  coerceValue(myURaise, ( ( value ) ));
429  break;
430  case 14:
431  coerceValue(myOrderU, clampMinValue(2, clampMaxValue(11, value ) ));
432  break;
433  case 15:
434  coerceValue(myVBasis, ( ( value ) ));
435  break;
436  case 16:
437  coerceValue(myVParmType, clampMinValue(0, clampMaxValue(7, value ) ));
438  break;
439  case 17:
440  coerceValue(myVKnots, ( ( value ) ));
441  break;
442  case 18:
443  coerceValue(myVRange, ( ( value ) ));
444  break;
445  case 19:
446  coerceValue(myVBias, clampMinValue(0, clampMaxValue(1, value ) ));
447  break;
448  case 20:
449  coerceValue(myVConcat, ( ( value ) ));
450  break;
451  case 21:
452  coerceValue(myVDoOrigin, ( ( value ) ));
453  break;
454  case 22:
455  coerceValue(myVOrigin, ( ( value ) ));
456  break;
457  case 23:
458  coerceValue(myVDoLength, ( ( value ) ));
459  break;
460  case 24:
461  coerceValue(myVLength, clampMinValue(0.0001, ( value ) ));
462  break;
463  case 25:
464  coerceValue(myVDoScale, ( ( value ) ));
465  break;
466  case 26:
467  coerceValue(myVScale, clampMinValue(0.0001, ( value ) ));
468  break;
469  case 27:
470  coerceValue(myVRaise, ( ( value ) ));
471  break;
472  case 28:
473  coerceValue(myOrderV, clampMinValue(2, clampMaxValue(11, value ) ));
474  break;
475 
476  }
477  }
478 
479  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
480  { doSetParmValue(idx, instance, value); }
481  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
482  { doSetParmValue(idx, instance, value); }
483  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
484  { doSetParmValue(idx, instance, value); }
485  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
486  { doSetParmValue(idx, instance, value); }
487  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
488  { doSetParmValue(idx, instance, value); }
489  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
490  { doSetParmValue(idx, instance, value); }
491  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
492  { doSetParmValue(idx, instance, value); }
493  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
494  { doSetParmValue(idx, instance, value); }
495  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
496  { doSetParmValue(idx, instance, value); }
497  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
498  { doSetParmValue(idx, instance, value); }
499  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
500  { doSetParmValue(idx, instance, value); }
501 
502  exint getNestNumParms(TempIndex idx) const override
503  {
504  if (idx.size() == 0)
505  return 29;
506  switch (idx[0])
507  {
508 
509  }
510  // Invalid
511  return 0;
512  }
513 
514  const char *getNestParmName(TempIndex fieldnum) const override
515  {
516  if (fieldnum.size() < 1)
517  return 0;
518  switch (fieldnum[0])
519  {
520  case 0:
521  return "group";
522  case 1:
523  return "ubasis";
524  case 2:
525  return "uparmtype";
526  case 3:
527  return "uknots";
528  case 4:
529  return "urange";
530  case 5:
531  return "ubias";
532  case 6:
533  return "uconcat";
534  case 7:
535  return "udoorigin";
536  case 8:
537  return "uorigin";
538  case 9:
539  return "udolength";
540  case 10:
541  return "ulength";
542  case 11:
543  return "udoscale";
544  case 12:
545  return "uscale";
546  case 13:
547  return "uraise";
548  case 14:
549  return "orderu";
550  case 15:
551  return "vbasis";
552  case 16:
553  return "vparmtype";
554  case 17:
555  return "vknots";
556  case 18:
557  return "vrange";
558  case 19:
559  return "vbias";
560  case 20:
561  return "vconcat";
562  case 21:
563  return "vdoorigin";
564  case 22:
565  return "vorigin";
566  case 23:
567  return "vdolength";
568  case 24:
569  return "vlength";
570  case 25:
571  return "vdoscale";
572  case 26:
573  return "vscale";
574  case 27:
575  return "vraise";
576  case 28:
577  return "orderv";
578 
579  }
580  return 0;
581  }
582 
583  ParmType getNestParmType(TempIndex fieldnum) const override
584  {
585  if (fieldnum.size() < 1)
586  return PARM_UNSUPPORTED;
587  switch (fieldnum[0])
588  {
589  case 0:
590  return PARM_STRING;
591  case 1:
592  return PARM_INTEGER;
593  case 2:
594  return PARM_INTEGER;
595  case 3:
596  return PARM_STRING;
597  case 4:
598  return PARM_VECTOR2;
599  case 5:
600  return PARM_FLOAT;
601  case 6:
602  return PARM_INTEGER;
603  case 7:
604  return PARM_INTEGER;
605  case 8:
606  return PARM_FLOAT;
607  case 9:
608  return PARM_INTEGER;
609  case 10:
610  return PARM_FLOAT;
611  case 11:
612  return PARM_INTEGER;
613  case 12:
614  return PARM_FLOAT;
615  case 13:
616  return PARM_INTEGER;
617  case 14:
618  return PARM_INTEGER;
619  case 15:
620  return PARM_INTEGER;
621  case 16:
622  return PARM_INTEGER;
623  case 17:
624  return PARM_STRING;
625  case 18:
626  return PARM_VECTOR2;
627  case 19:
628  return PARM_FLOAT;
629  case 20:
630  return PARM_INTEGER;
631  case 21:
632  return PARM_INTEGER;
633  case 22:
634  return PARM_FLOAT;
635  case 23:
636  return PARM_INTEGER;
637  case 24:
638  return PARM_FLOAT;
639  case 25:
640  return PARM_INTEGER;
641  case 26:
642  return PARM_FLOAT;
643  case 27:
644  return PARM_INTEGER;
645  case 28:
646  return PARM_INTEGER;
647 
648  }
649  return PARM_UNSUPPORTED;
650  }
651 
652  // Boiler plate to load individual types.
653  static void loadData(UT_IStream &is, int64 &v)
654  { is.bread(&v, 1); }
655  static void loadData(UT_IStream &is, bool &v)
656  { int64 iv; is.bread(&iv, 1); v = iv; }
657  static void loadData(UT_IStream &is, fpreal64 &v)
658  { is.bread<fpreal64>(&v, 1); }
659  static void loadData(UT_IStream &is, UT_Vector2D &v)
660  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
661  static void loadData(UT_IStream &is, UT_Vector3D &v)
662  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
663  is.bread<fpreal64>(&v.z(), 1); }
664  static void loadData(UT_IStream &is, UT_Vector4D &v)
665  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
666  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
667  static void loadData(UT_IStream &is, UT_Matrix2D &v)
668  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
669  static void loadData(UT_IStream &is, UT_Matrix3D &v)
670  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
671  static void loadData(UT_IStream &is, UT_Matrix4D &v)
672  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
673  static void loadData(UT_IStream &is, UT_Vector2I &v)
674  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
675  static void loadData(UT_IStream &is, UT_Vector3I &v)
676  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
677  is.bread<int64>(&v.z(), 1); }
678  static void loadData(UT_IStream &is, UT_Vector4I &v)
679  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
680  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
682  { is.bread(v); }
684  { UT_StringHolder rampdata;
685  loadData(is, rampdata);
686  if (rampdata.isstring())
687  {
688  v.reset(new UT_Ramp());
689  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
690  v->load(istr);
691  }
692  else v.reset();
693  }
696  loadData(is, data);
697  if (data.isstring())
698  {
699  // Find the data type.
700  const char *colon = UT_StringWrap(data).findChar(':');
701  if (colon)
702  {
703  int typelen = colon - data.buffer();
705  type.strncpy(data.buffer(), typelen);
706  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
707 
708  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
709  }
710  }
711  else v.reset();
712  }
713 
714  static void saveData(std::ostream &os, int64 v)
715  { UTwrite(os, &v); }
716  static void saveData(std::ostream &os, bool v)
717  { int64 iv = v; UTwrite(os, &iv); }
718  static void saveData(std::ostream &os, fpreal64 v)
719  { UTwrite<fpreal64>(os, &v); }
720  static void saveData(std::ostream &os, UT_Vector2D v)
721  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
722  static void saveData(std::ostream &os, UT_Vector3D v)
723  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
724  UTwrite<fpreal64>(os, &v.z()); }
725  static void saveData(std::ostream &os, UT_Vector4D v)
726  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
727  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
728  static void saveData(std::ostream &os, UT_Matrix2D v)
730  static void saveData(std::ostream &os, UT_Matrix3D v)
732  static void saveData(std::ostream &os, UT_Matrix4D v)
734  static void saveData(std::ostream &os, UT_StringHolder s)
735  { UT_StringWrap(s).saveBinary(os); }
736  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
738  UT_OStringStream ostr;
739  if (s) s->save(ostr);
740  result = ostr.str();
741  saveData(os, result);
742  }
743  static void saveData(std::ostream &os, PRM_DataItemHandle s)
745  UT_OStringStream ostr;
746  if (s)
747  {
748  ostr << s->getDataTypeToken();
749  ostr << ":";
750  s->saveBinary(ostr);
751  }
752  result = ostr.str();
753  saveData(os, result);
754  }
755 
756 
757  void save(std::ostream &os) const
758  {
759  int32 v = version();
760  UTwrite(os, &v);
761  saveData(os, myGroup);
762  saveData(os, myUBasis);
763  saveData(os, myUParmType);
764  saveData(os, myUKnots);
765  saveData(os, myURange);
766  saveData(os, myUBias);
767  saveData(os, myUConcat);
768  saveData(os, myUDoOrigin);
769  saveData(os, myUOrigin);
770  saveData(os, myUDoLength);
771  saveData(os, myULength);
772  saveData(os, myUDoScale);
773  saveData(os, myUScale);
774  saveData(os, myURaise);
775  saveData(os, myOrderU);
776  saveData(os, myVBasis);
777  saveData(os, myVParmType);
778  saveData(os, myVKnots);
779  saveData(os, myVRange);
780  saveData(os, myVBias);
781  saveData(os, myVConcat);
782  saveData(os, myVDoOrigin);
783  saveData(os, myVOrigin);
784  saveData(os, myVDoLength);
785  saveData(os, myVLength);
786  saveData(os, myVDoScale);
787  saveData(os, myVScale);
788  saveData(os, myVRaise);
789  saveData(os, myOrderV);
790 
791  }
792 
793  bool load(UT_IStream &is)
794  {
795  int32 v;
796  is.bread(&v, 1);
797  if (version() != v)
798  {
799  // Fail incompatible versions
800  return false;
801  }
802  loadData(is, myGroup);
803  loadData(is, myUBasis);
804  loadData(is, myUParmType);
805  loadData(is, myUKnots);
806  loadData(is, myURange);
807  loadData(is, myUBias);
808  loadData(is, myUConcat);
809  loadData(is, myUDoOrigin);
810  loadData(is, myUOrigin);
811  loadData(is, myUDoLength);
812  loadData(is, myULength);
813  loadData(is, myUDoScale);
814  loadData(is, myUScale);
815  loadData(is, myURaise);
816  loadData(is, myOrderU);
817  loadData(is, myVBasis);
818  loadData(is, myVParmType);
819  loadData(is, myVKnots);
820  loadData(is, myVRange);
821  loadData(is, myVBias);
822  loadData(is, myVConcat);
823  loadData(is, myVDoOrigin);
824  loadData(is, myVOrigin);
825  loadData(is, myVDoLength);
826  loadData(is, myVLength);
827  loadData(is, myVDoScale);
828  loadData(is, myVScale);
829  loadData(is, myVRaise);
830  loadData(is, myOrderV);
831 
832  return true;
833  }
834 
835  const UT_StringHolder & getGroup() const { return myGroup; }
836  void setGroup(const UT_StringHolder & val) { myGroup = val; }
838  {
839  SOP_Node *thissop = cookparms.getNode();
840  if (!thissop) return getGroup();
842  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
843  return result;
844  }
845  bool getUBasis() const { return myUBasis; }
846  void setUBasis(bool val) { myUBasis = val; }
847  bool opUBasis(const SOP_NodeVerb::CookParms &cookparms) const
848  {
849  SOP_Node *thissop = cookparms.getNode();
850  if (!thissop) return getUBasis();
851  bool result;
852  OP_Utils::evalOpParm(result, thissop, "ubasis", cookparms.getCookTime(), 0);
853  return result;
854  }
855  UParmType getUParmType() const { return UParmType(myUParmType); }
856  void setUParmType(UParmType val) { myUParmType = int64(val); }
858  {
859  SOP_Node *thissop = cookparms.getNode();
860  if (!thissop) return getUParmType();
861  int64 result;
862  OP_Utils::evalOpParm(result, thissop, "uparmtype", cookparms.getCookTime(), 0);
863  return UParmType(result);
864  }
865  const UT_StringHolder & getUKnots() const { return myUKnots; }
866  void setUKnots(const UT_StringHolder & val) { myUKnots = val; }
868  {
869  SOP_Node *thissop = cookparms.getNode();
870  if (!thissop) return getUKnots();
872  OP_Utils::evalOpParm(result, thissop, "uknots", cookparms.getCookTime(), 0);
873  return result;
874  }
875  UT_Vector2D getURange() const { return myURange; }
876  void setURange(UT_Vector2D val) { myURange = val; }
878  {
879  SOP_Node *thissop = cookparms.getNode();
880  if (!thissop) return getURange();
882  OP_Utils::evalOpParm(result, thissop, "urange", cookparms.getCookTime(), 0);
883  return result;
884  }
885  fpreal64 getUBias() const { return myUBias; }
886  void setUBias(fpreal64 val) { myUBias = val; }
887  fpreal64 opUBias(const SOP_NodeVerb::CookParms &cookparms) const
888  {
889  SOP_Node *thissop = cookparms.getNode();
890  if (!thissop) return getUBias();
892  OP_Utils::evalOpParm(result, thissop, "ubias", cookparms.getCookTime(), 0);
893  return result;
894  }
895  bool getUConcat() const { return myUConcat; }
896  void setUConcat(bool val) { myUConcat = val; }
897  bool opUConcat(const SOP_NodeVerb::CookParms &cookparms) const
898  {
899  SOP_Node *thissop = cookparms.getNode();
900  if (!thissop) return getUConcat();
901  bool result;
902  OP_Utils::evalOpParm(result, thissop, "uconcat", cookparms.getCookTime(), 0);
903  return result;
904  }
905  bool getUDoOrigin() const { return myUDoOrigin; }
906  void setUDoOrigin(bool val) { myUDoOrigin = val; }
907  bool opUDoOrigin(const SOP_NodeVerb::CookParms &cookparms) const
908  {
909  SOP_Node *thissop = cookparms.getNode();
910  if (!thissop) return getUDoOrigin();
911  bool result;
912  OP_Utils::evalOpParm(result, thissop, "udoorigin", cookparms.getCookTime(), 0);
913  return result;
914  }
915  fpreal64 getUOrigin() const { return myUOrigin; }
916  void setUOrigin(fpreal64 val) { myUOrigin = val; }
918  {
919  SOP_Node *thissop = cookparms.getNode();
920  if (!thissop) return getUOrigin();
922  OP_Utils::evalOpParm(result, thissop, "uorigin", cookparms.getCookTime(), 0);
923  return result;
924  }
925  bool getUDoLength() const { return myUDoLength; }
926  void setUDoLength(bool val) { myUDoLength = val; }
927  bool opUDoLength(const SOP_NodeVerb::CookParms &cookparms) const
928  {
929  SOP_Node *thissop = cookparms.getNode();
930  if (!thissop) return getUDoLength();
931  bool result;
932  OP_Utils::evalOpParm(result, thissop, "udolength", cookparms.getCookTime(), 0);
933  return result;
934  }
935  fpreal64 getULength() const { return myULength; }
936  void setULength(fpreal64 val) { myULength = val; }
938  {
939  SOP_Node *thissop = cookparms.getNode();
940  if (!thissop) return getULength();
942  OP_Utils::evalOpParm(result, thissop, "ulength", cookparms.getCookTime(), 0);
943  return result;
944  }
945  bool getUDoScale() const { return myUDoScale; }
946  void setUDoScale(bool val) { myUDoScale = val; }
947  bool opUDoScale(const SOP_NodeVerb::CookParms &cookparms) const
948  {
949  SOP_Node *thissop = cookparms.getNode();
950  if (!thissop) return getUDoScale();
951  bool result;
952  OP_Utils::evalOpParm(result, thissop, "udoscale", cookparms.getCookTime(), 0);
953  return result;
954  }
955  fpreal64 getUScale() const { return myUScale; }
956  void setUScale(fpreal64 val) { myUScale = val; }
957  fpreal64 opUScale(const SOP_NodeVerb::CookParms &cookparms) const
958  {
959  SOP_Node *thissop = cookparms.getNode();
960  if (!thissop) return getUScale();
962  OP_Utils::evalOpParm(result, thissop, "uscale", cookparms.getCookTime(), 0);
963  return result;
964  }
965  bool getURaise() const { return myURaise; }
966  void setURaise(bool val) { myURaise = val; }
967  bool opURaise(const SOP_NodeVerb::CookParms &cookparms) const
968  {
969  SOP_Node *thissop = cookparms.getNode();
970  if (!thissop) return getURaise();
971  bool result;
972  OP_Utils::evalOpParm(result, thissop, "uraise", cookparms.getCookTime(), 0);
973  return result;
974  }
975  int64 getOrderU() const { return myOrderU; }
976  void setOrderU(int64 val) { myOrderU = val; }
977  int64 opOrderU(const SOP_NodeVerb::CookParms &cookparms) const
978  {
979  SOP_Node *thissop = cookparms.getNode();
980  if (!thissop) return getOrderU();
981  int64 result;
982  OP_Utils::evalOpParm(result, thissop, "orderu", cookparms.getCookTime(), 0);
983  return result;
984  }
985  bool getVBasis() const { return myVBasis; }
986  void setVBasis(bool val) { myVBasis = val; }
987  bool opVBasis(const SOP_NodeVerb::CookParms &cookparms) const
988  {
989  SOP_Node *thissop = cookparms.getNode();
990  if (!thissop) return getVBasis();
991  bool result;
992  OP_Utils::evalOpParm(result, thissop, "vbasis", cookparms.getCookTime(), 0);
993  return result;
994  }
995  VParmType getVParmType() const { return VParmType(myVParmType); }
996  void setVParmType(VParmType val) { myVParmType = int64(val); }
998  {
999  SOP_Node *thissop = cookparms.getNode();
1000  if (!thissop) return getVParmType();
1001  int64 result;
1002  OP_Utils::evalOpParm(result, thissop, "vparmtype", cookparms.getCookTime(), 0);
1003  return VParmType(result);
1004  }
1005  const UT_StringHolder & getVKnots() const { return myVKnots; }
1006  void setVKnots(const UT_StringHolder & val) { myVKnots = val; }
1008  {
1009  SOP_Node *thissop = cookparms.getNode();
1010  if (!thissop) return getVKnots();
1012  OP_Utils::evalOpParm(result, thissop, "vknots", cookparms.getCookTime(), 0);
1013  return result;
1014  }
1015  UT_Vector2D getVRange() const { return myVRange; }
1016  void setVRange(UT_Vector2D val) { myVRange = val; }
1018  {
1019  SOP_Node *thissop = cookparms.getNode();
1020  if (!thissop) return getVRange();
1022  OP_Utils::evalOpParm(result, thissop, "vrange", cookparms.getCookTime(), 0);
1023  return result;
1024  }
1025  fpreal64 getVBias() const { return myVBias; }
1026  void setVBias(fpreal64 val) { myVBias = val; }
1027  fpreal64 opVBias(const SOP_NodeVerb::CookParms &cookparms) const
1028  {
1029  SOP_Node *thissop = cookparms.getNode();
1030  if (!thissop) return getVBias();
1031  fpreal64 result;
1032  OP_Utils::evalOpParm(result, thissop, "vbias", cookparms.getCookTime(), 0);
1033  return result;
1034  }
1035  bool getVConcat() const { return myVConcat; }
1036  void setVConcat(bool val) { myVConcat = val; }
1037  bool opVConcat(const SOP_NodeVerb::CookParms &cookparms) const
1038  {
1039  SOP_Node *thissop = cookparms.getNode();
1040  if (!thissop) return getVConcat();
1041  bool result;
1042  OP_Utils::evalOpParm(result, thissop, "vconcat", cookparms.getCookTime(), 0);
1043  return result;
1044  }
1045  bool getVDoOrigin() const { return myVDoOrigin; }
1046  void setVDoOrigin(bool val) { myVDoOrigin = val; }
1047  bool opVDoOrigin(const SOP_NodeVerb::CookParms &cookparms) const
1048  {
1049  SOP_Node *thissop = cookparms.getNode();
1050  if (!thissop) return getVDoOrigin();
1051  bool result;
1052  OP_Utils::evalOpParm(result, thissop, "vdoorigin", cookparms.getCookTime(), 0);
1053  return result;
1054  }
1055  fpreal64 getVOrigin() const { return myVOrigin; }
1056  void setVOrigin(fpreal64 val) { myVOrigin = val; }
1058  {
1059  SOP_Node *thissop = cookparms.getNode();
1060  if (!thissop) return getVOrigin();
1061  fpreal64 result;
1062  OP_Utils::evalOpParm(result, thissop, "vorigin", cookparms.getCookTime(), 0);
1063  return result;
1064  }
1065  bool getVDoLength() const { return myVDoLength; }
1066  void setVDoLength(bool val) { myVDoLength = val; }
1067  bool opVDoLength(const SOP_NodeVerb::CookParms &cookparms) const
1068  {
1069  SOP_Node *thissop = cookparms.getNode();
1070  if (!thissop) return getVDoLength();
1071  bool result;
1072  OP_Utils::evalOpParm(result, thissop, "vdolength", cookparms.getCookTime(), 0);
1073  return result;
1074  }
1075  fpreal64 getVLength() const { return myVLength; }
1076  void setVLength(fpreal64 val) { myVLength = val; }
1078  {
1079  SOP_Node *thissop = cookparms.getNode();
1080  if (!thissop) return getVLength();
1081  fpreal64 result;
1082  OP_Utils::evalOpParm(result, thissop, "vlength", cookparms.getCookTime(), 0);
1083  return result;
1084  }
1085  bool getVDoScale() const { return myVDoScale; }
1086  void setVDoScale(bool val) { myVDoScale = val; }
1087  bool opVDoScale(const SOP_NodeVerb::CookParms &cookparms) const
1088  {
1089  SOP_Node *thissop = cookparms.getNode();
1090  if (!thissop) return getVDoScale();
1091  bool result;
1092  OP_Utils::evalOpParm(result, thissop, "vdoscale", cookparms.getCookTime(), 0);
1093  return result;
1094  }
1095  fpreal64 getVScale() const { return myVScale; }
1096  void setVScale(fpreal64 val) { myVScale = val; }
1098  {
1099  SOP_Node *thissop = cookparms.getNode();
1100  if (!thissop) return getVScale();
1101  fpreal64 result;
1102  OP_Utils::evalOpParm(result, thissop, "vscale", cookparms.getCookTime(), 0);
1103  return result;
1104  }
1105  bool getVRaise() const { return myVRaise; }
1106  void setVRaise(bool val) { myVRaise = val; }
1107  bool opVRaise(const SOP_NodeVerb::CookParms &cookparms) const
1108  {
1109  SOP_Node *thissop = cookparms.getNode();
1110  if (!thissop) return getVRaise();
1111  bool result;
1112  OP_Utils::evalOpParm(result, thissop, "vraise", cookparms.getCookTime(), 0);
1113  return result;
1114  }
1115  int64 getOrderV() const { return myOrderV; }
1116  void setOrderV(int64 val) { myOrderV = val; }
1117  int64 opOrderV(const SOP_NodeVerb::CookParms &cookparms) const
1118  {
1119  SOP_Node *thissop = cookparms.getNode();
1120  if (!thissop) return getOrderV();
1121  int64 result;
1122  OP_Utils::evalOpParm(result, thissop, "orderv", cookparms.getCookTime(), 0);
1123  return result;
1124  }
1125 
1126 private:
1127  UT_StringHolder myGroup;
1128  bool myUBasis;
1129  int64 myUParmType;
1130  UT_StringHolder myUKnots;
1131  UT_Vector2D myURange;
1132  fpreal64 myUBias;
1133  bool myUConcat;
1134  bool myUDoOrigin;
1135  fpreal64 myUOrigin;
1136  bool myUDoLength;
1137  fpreal64 myULength;
1138  bool myUDoScale;
1139  fpreal64 myUScale;
1140  bool myURaise;
1141  int64 myOrderU;
1142  bool myVBasis;
1143  int64 myVParmType;
1144  UT_StringHolder myVKnots;
1145  UT_Vector2D myVRange;
1146  fpreal64 myVBias;
1147  bool myVConcat;
1148  bool myVDoOrigin;
1149  fpreal64 myVOrigin;
1150  bool myVDoLength;
1151  fpreal64 myVLength;
1152  bool myVDoScale;
1153  fpreal64 myVScale;
1154  bool myVRaise;
1155  int64 myOrderV;
1156 
1157 };
void setVRaise(bool val)
static void saveData(std::ostream &os, UT_StringHolder s)
ParmType getNestParmType(TempIndex fieldnum) const override
static void saveData(std::ostream &os, PRM_DataItemHandle s)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
int64 getOrderV() const
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
fpreal64 getUOrigin() const
bool opVConcat(const SOP_NodeVerb::CookParms &cookparms) const
bool opUDoScale(const SOP_NodeVerb::CookParms &cookparms) const
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
void setURange(UT_Vector2D val)
void loadFromOpSubclass(const LoadParms &loadparms) override
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
T clampMaxValue(fpreal maxvalue, const T &src) const
Definition: OP_NodeParms.h:315
static void saveData(std::ostream &os, fpreal64 v)
void setUConcat(bool val)
fpreal64 opVOrigin(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Matrix3D 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
fpreal64 getUScale() const
fpreal getTime() const
Definition: OP_Context.h:62
UT_Vector2T< fpreal64 > UT_Vector2D
static void saveData(std::ostream &os, UT_Matrix4D v)
bool getUDoLength() const
UT_StringHolder opGroup(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
bool getUConcat() const
const OP_Context & context() const
Definition: OP_NodeParms.h:97
void setVBasis(bool val)
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:667
int64 exint
Definition: SYS_Types.h:125
static void loadData(UT_IStream &is, UT_Vector4I &v)
void setUScale(fpreal64 val)
SYS_FORCE_INLINE const char * buffer() const
GLdouble s
Definition: glad.h:3009
fpreal64 getVScale() const
fpreal64 getVBias() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
const UT_StringHolder & getVKnots() const
An output stream object that owns its own string buffer storage.
bool opUDoOrigin(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opUOrigin(const SOP_NodeVerb::CookParms &cookparms) const
void setVLength(fpreal64 val)
**But if you need a result
Definition: thread.h:613
UT_Vector2D opVRange(const SOP_NodeVerb::CookParms &cookparms) const
void save(std::ostream &os) const
T clampMinValue(fpreal minvalue, const T &src) const
Definition: OP_NodeParms.h:308
bool getURaise() const
UParmType getUParmType() const
fpreal64 opUScale(const SOP_NodeVerb::CookParms &cookparms) const
bool getUBasis() const
void setUParmType(UParmType val)
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
exint nodeIdx() const
Definition: OP_NodeParms.h:95
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
fpreal64 opULength(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
fpreal64 opUBias(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Matrix2D &v)
void setUOrigin(fpreal64 val)
void setUDoLength(bool val)
UT_StringHolder opUKnots(const SOP_NodeVerb::CookParms &cookparms) const
static int version()
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
double fpreal64
Definition: SYS_Types.h:201
bool opUConcat(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
void setVDoLength(bool val)
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
void setVParmType(VParmType val)
static void loadData(UT_IStream &is, UT_Matrix4D &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
fpreal64 getVOrigin() const
bool getVConcat() const
static void loadData(UT_IStream &is, UT_StringHolder &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
const UT_StringHolder & getUKnots() const
void setUBasis(bool val)
VParmType getVParmType() const
static void saveData(std::ostream &os, UT_Matrix2D v)
static void loadData(UT_IStream &is, int64 &v)
void setVDoOrigin(bool val)
bool opVBasis(const SOP_NodeVerb::CookParms &cookparms) const
void setURaise(bool val)
exint length() const
const char * getNestParmName(TempIndex fieldnum) const override
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:36
UParmType opUParmType(const SOP_NodeVerb::CookParms &cookparms) const
bool getVBasis() const
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:495
int64 getOrderU() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
static void loadData(UT_IStream &is, bool &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
fpreal64 getULength() const
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
static void saveData(std::ostream &os, int64 v)
UT_StringHolder opVKnots(const SOP_NodeVerb::CookParms &cookparms) const
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
void setVKnots(const UT_StringHolder &val)
static void loadData(UT_IStream &is, UT_Vector4D &v)
static void loadData(UT_IStream &is, UT_Vector2I &v)
void setUDoOrigin(bool val)
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
long long int64
Definition: SYS_Types.h:116
bool operator!=(const SOP_BasisParms &src) const
static void saveData(std::ostream &os, UT_Vector4D v)
void setVRange(UT_Vector2D val)
fpreal64 getVLength() const
bool opVDoOrigin(const SOP_NodeVerb::CookParms &cookparms) const
bool opURaise(const SOP_NodeVerb::CookParms &cookparms) const
bool getUDoScale() const
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
bool opUDoLength(const SOP_NodeVerb::CookParms &cookparms) const
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
fpreal64 opVBias(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D getURange() const
static void loadData(UT_IStream &is, UT_Matrix3D &v)
UT_Vector2D getVRange() const
bool opVDoLength(const SOP_NodeVerb::CookParms &cookparms) const
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:296
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
void setUBias(fpreal64 val)
GT_API const UT_StringHolder version
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
void setULength(fpreal64 val)
bool getUDoOrigin() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
fpreal64 opVScale(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getUBias() const
void coerceValue(T &result, const S &src) const
Definition: OP_NodeParms.h:301
void copyFrom(const OP_NodeParms *src) override
bool getVRaise() const
int64 opOrderV(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 fpreal
Definition: SYS_Types.h:277
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
void setGroup(const UT_StringHolder &val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
Utility class for containing a color ramp.
Definition: UT_Ramp.h:88
bool getVDoOrigin() const
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
static void loadData(UT_IStream &is, UT_Vector2D &v)
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
static void saveData(std::ostream &os, bool v)
GLuint GLfloat * val
Definition: glcorearb.h:1608
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
#define SOP_API
Definition: SOP_API.h:10
exint getNestNumParms(TempIndex idx) const override
void setOrderU(int64 val)
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:361
UT_Vector2D opURange(const SOP_NodeVerb::CookParms &cookparms) const
bool operator==(const SOP_BasisParms &src) const
bool opVDoScale(const SOP_NodeVerb::CookParms &cookparms) const
bool isParmColorRamp(exint idx) const override
const UT_StringHolder & getGroup() const
const char * findChar(int c) const
Definition: UT_String.h:1385
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
Definition: core.h:1131
bool opUBasis(const SOP_NodeVerb::CookParms &cookparms) const
void setVBias(fpreal64 val)
bool getVDoScale() const
fpreal64 opVLength(const SOP_NodeVerb::CookParms &cookparms) const
GLboolean r
Definition: glcorearb.h:1222
void setVConcat(bool val)
void setVDoScale(bool val)
void setVOrigin(fpreal64 val)
static void saveData(std::ostream &os, UT_Vector2D v)
bool getVDoLength() const
static void loadData(UT_IStream &is, fpreal64 &v)
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
static void saveData(std::ostream &os, UT_Vector3D v)
type
Definition: core.h:1059
bool opVRaise(const SOP_NodeVerb::CookParms &cookparms) const
bool load(UT_IStream &is)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
void setUKnots(const UT_StringHolder &val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: PRM_Parm.h:89
static void loadData(UT_IStream &is, UT_Vector3I &v)
void setUDoScale(bool val)
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
SYS_FORCE_INLINE bool isstring() const
void setVScale(fpreal64 val)
static void loadData(UT_IStream &is, UT_Vector3D &v)
OP_NodeParms & operator=(const OP_NodeParms &)=default
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
int64 opOrderU(const SOP_NodeVerb::CookParms &cookparms) const
GLenum src
Definition: glcorearb.h:1793
VParmType opVParmType(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663
void setOrderV(int64 val)