HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_TangentField.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_TangentFieldEnums
24 {
25  enum class Carrier
26  {
27  POINTS = 0,
28  FACES
29  };
30  enum class FlipCurvatureAxes
31  {
32  MAXIMUM = 0,
33  MINIMUM
34  };
35  enum class BoundaryRot
36  {
37  CCW = 0,
38  INWARD,
39  CW,
40  OUTWARD
41  };
42  enum class OutputMode
43  {
44  ALL = 0,
45  SYMMETRY,
46  ONE
47  };
48 }
49 
50 
52 {
53 public:
54  static int version() { return 1; }
55 
57  {
58  myGroup = ""_UTsh;
59  myCarrier = 0;
60  myDirections = 4;
61  myRotation = 0;
62  myCurvatureWeight = 0.1;
63  myFlipCurvatureAxes = 0;
64  myBoundaryWeight = 0;
65  myBoundaryRot = 0;
66  myGuideAttrib = ""_UTsh;
67  myFieldAttrib = "field"_UTsh;
68  myNormalizeField = true;
69  myOutputMode = 0;
70  myUseSingularGroup = false;
71  mySingularGroup = "singular"_UTsh;
72  myUsePositiveSingularGroup = false;
73  myPositiveSingularGroup = "positive_singular"_UTsh;
74  myUseNegativeSingularGroup = false;
75  myNegativeSingularGroup = "negative_singular"_UTsh;
76  myUseDiscontinuitiesGroup = false;
77  myDiscontinuities = "discontinuities"_UTsh;
78  myShowField = true;
79  myShowNormalized = false;
80  myShowPrescaled = true;
81  myVectorscale = 1;
82  myShowSingularities = true;
83  myGuideAttribWeight = 0;
84 
85  }
86 
87  explicit SOP_TangentFieldParms(const SOP_TangentFieldParms &) = default;
89  SOP_TangentFieldParms(SOP_TangentFieldParms &&) noexcept = default;
90  SOP_TangentFieldParms &operator=(SOP_TangentFieldParms &&) noexcept = default;
91 
92  ~SOP_TangentFieldParms() override {}
93 
95  {
96  if (myGroup != src.myGroup) return false;
97  if (myCarrier != src.myCarrier) return false;
98  if (myDirections != src.myDirections) return false;
99  if (myRotation != src.myRotation) return false;
100  if (myCurvatureWeight != src.myCurvatureWeight) return false;
101  if (myFlipCurvatureAxes != src.myFlipCurvatureAxes) return false;
102  if (myBoundaryWeight != src.myBoundaryWeight) return false;
103  if (myBoundaryRot != src.myBoundaryRot) return false;
104  if (myGuideAttrib != src.myGuideAttrib) return false;
105  if (myFieldAttrib != src.myFieldAttrib) return false;
106  if (myNormalizeField != src.myNormalizeField) return false;
107  if (myOutputMode != src.myOutputMode) return false;
108  if (myUseSingularGroup != src.myUseSingularGroup) return false;
109  if (mySingularGroup != src.mySingularGroup) return false;
110  if (myUsePositiveSingularGroup != src.myUsePositiveSingularGroup) return false;
111  if (myPositiveSingularGroup != src.myPositiveSingularGroup) return false;
112  if (myUseNegativeSingularGroup != src.myUseNegativeSingularGroup) return false;
113  if (myNegativeSingularGroup != src.myNegativeSingularGroup) return false;
114  if (myUseDiscontinuitiesGroup != src.myUseDiscontinuitiesGroup) return false;
115  if (myDiscontinuities != src.myDiscontinuities) return false;
116  if (myShowField != src.myShowField) return false;
117  if (myShowNormalized != src.myShowNormalized) return false;
118  if (myShowPrescaled != src.myShowPrescaled) return false;
119  if (myVectorscale != src.myVectorscale) return false;
120  if (myShowSingularities != src.myShowSingularities) return false;
121  if (myGuideAttribWeight != src.myGuideAttribWeight) return false;
122 
123  return true;
124  }
126  {
127  return !operator==(src);
128  }
133 
134 
135 
136  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
137  {
138  myGroup = ""_UTsh;
139  if (true)
140  graph->evalOpParm(myGroup, nodeidx, "group", time, 0);
141  myCarrier = 0;
142  if (true)
143  graph->evalOpParm(myCarrier, nodeidx, "carrier", time, 0);
144  myDirections = 4;
145  if (true)
146  graph->evalOpParm(myDirections, nodeidx, "directions", time, 0);
147  myRotation = 0;
148  if (true)
149  graph->evalOpParm(myRotation, nodeidx, "rotation", time, 0);
150  myCurvatureWeight = 0.1;
151  if (true && ( (true&&!(((int64(getDirections())==1)))) ) )
152  graph->evalOpParm(myCurvatureWeight, nodeidx, "curvatureweight", time, 0);
153  myFlipCurvatureAxes = 0;
154  if (true && ( (true&&!(((getCurvatureWeight()==0)))) ) )
155  graph->evalOpParm(myFlipCurvatureAxes, nodeidx, "flipcurvatureaxes", time, 0);
156  myBoundaryWeight = 0;
157  if (true)
158  graph->evalOpParm(myBoundaryWeight, nodeidx, "boundaryweight", time, 0);
159  myBoundaryRot = 0;
160  if (true && ( (true&&!(((getBoundaryWeight()==0)))) ) )
161  graph->evalOpParm(myBoundaryRot, nodeidx, "boundaryRot", time, 0);
162  myGuideAttrib = ""_UTsh;
163  if (true)
164  graph->evalOpParm(myGuideAttrib, nodeidx, "guideattrib", time, 0);
165  myFieldAttrib = "field"_UTsh;
166  if (true)
167  graph->evalOpParm(myFieldAttrib, nodeidx, "fieldattrib", time, 0);
168  myNormalizeField = true;
169  if (true)
170  graph->evalOpParm(myNormalizeField, nodeidx, "normalizefield", time, 0);
171  myOutputMode = 0;
172  if (true && ( (true&&!(((int64(getDirections())==1)))) ) )
173  graph->evalOpParm(myOutputMode, nodeidx, "outputmode", time, 0);
174  myUseSingularGroup = false;
175  if (true)
176  graph->evalOpParm(myUseSingularGroup, nodeidx, "usesingulargroup", time, 0);
177  mySingularGroup = "singular"_UTsh;
178  if (true && ( (true&&!(((getUseSingularGroup()==0)))) ) )
179  graph->evalOpParm(mySingularGroup, nodeidx, "singulargroup", time, 0);
180  myUsePositiveSingularGroup = false;
181  if (true)
182  graph->evalOpParm(myUsePositiveSingularGroup, nodeidx, "usepositivesingulargroup", time, 0);
183  myPositiveSingularGroup = "positive_singular"_UTsh;
184  if (true && ( (true&&!(((getUsePositiveSingularGroup()==0)))) ) )
185  graph->evalOpParm(myPositiveSingularGroup, nodeidx, "positivesingulargroup", time, 0);
186  myUseNegativeSingularGroup = false;
187  if (true)
188  graph->evalOpParm(myUseNegativeSingularGroup, nodeidx, "usenegativesingulargroup", time, 0);
189  myNegativeSingularGroup = "negative_singular"_UTsh;
190  if (true && ( (true&&!(((getUseNegativeSingularGroup()==0)))) ) )
191  graph->evalOpParm(myNegativeSingularGroup, nodeidx, "negativesingulargroup", time, 0);
192  myUseDiscontinuitiesGroup = false;
193  if (true)
194  graph->evalOpParm(myUseDiscontinuitiesGroup, nodeidx, "usediscontinuitiesgroup", time, 0);
195  myDiscontinuities = "discontinuities"_UTsh;
196  if (true && ( (true&&!(((getUseDiscontinuitiesGroup()==0)))) ) )
197  graph->evalOpParm(myDiscontinuities, nodeidx, "discontinuities", time, 0);
198  myShowField = true;
199  if (true)
200  graph->evalOpParm(myShowField, nodeidx, "showfield", time, 0);
201  myShowNormalized = false;
202  if (true && ( (true&&!(((getShowField()==0)))) ) )
203  graph->evalOpParm(myShowNormalized, nodeidx, "shownormalized", time, 0);
204  myShowPrescaled = true;
205  if (true)
206  graph->evalOpParm(myShowPrescaled, nodeidx, "showprescaled", time, 0);
207  myVectorscale = 1;
208  if (true && ( (true&&!(((getShowField()==0)))) ) )
209  graph->evalOpParm(myVectorscale, nodeidx, "vectorscale", time, 0);
210  myShowSingularities = true;
211  if (true)
212  graph->evalOpParm(myShowSingularities, nodeidx, "showsingularities", time, 0);
213  myGuideAttribWeight = 0;
214  if (true && ( (true&&!(((getGuideAttrib()=="")))) ) )
215  graph->evalOpParm(myGuideAttribWeight, nodeidx, "guideattribweight", time, 0);
216 
217  }
218 
219 
220  void loadFromOpSubclass(const LoadParms &loadparms) override
221  {
222  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
223  }
224 
225 
226  void copyFrom(const OP_NodeParms *src) override
227  {
228  *this = *((const SOP_TangentFieldParms *)src);
229  }
230 
231  template <typename T>
232  void
233  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
234  {
235  if (idx.size() < 1)
236  return;
237  UT_ASSERT(idx.size() == instance.size()+1);
238  if (idx.size() != instance.size()+1)
239  return;
240  switch (idx[0])
241  {
242  case 0:
243  coerceValue(value, myGroup);
244  break;
245  case 1:
246  coerceValue(value, myCarrier);
247  break;
248  case 2:
249  coerceValue(value, myDirections);
250  break;
251  case 3:
252  coerceValue(value, myRotation);
253  break;
254  case 4:
255  coerceValue(value, myCurvatureWeight);
256  break;
257  case 5:
258  coerceValue(value, myFlipCurvatureAxes);
259  break;
260  case 6:
261  coerceValue(value, myBoundaryWeight);
262  break;
263  case 7:
264  coerceValue(value, myBoundaryRot);
265  break;
266  case 8:
267  coerceValue(value, myGuideAttrib);
268  break;
269  case 9:
270  coerceValue(value, myFieldAttrib);
271  break;
272  case 10:
273  coerceValue(value, myNormalizeField);
274  break;
275  case 11:
276  coerceValue(value, myOutputMode);
277  break;
278  case 12:
279  coerceValue(value, myUseSingularGroup);
280  break;
281  case 13:
282  coerceValue(value, mySingularGroup);
283  break;
284  case 14:
285  coerceValue(value, myUsePositiveSingularGroup);
286  break;
287  case 15:
288  coerceValue(value, myPositiveSingularGroup);
289  break;
290  case 16:
291  coerceValue(value, myUseNegativeSingularGroup);
292  break;
293  case 17:
294  coerceValue(value, myNegativeSingularGroup);
295  break;
296  case 18:
297  coerceValue(value, myUseDiscontinuitiesGroup);
298  break;
299  case 19:
300  coerceValue(value, myDiscontinuities);
301  break;
302  case 20:
303  coerceValue(value, myShowField);
304  break;
305  case 21:
306  coerceValue(value, myShowNormalized);
307  break;
308  case 22:
309  coerceValue(value, myShowPrescaled);
310  break;
311  case 23:
312  coerceValue(value, myVectorscale);
313  break;
314  case 24:
315  coerceValue(value, myShowSingularities);
316  break;
317  case 25:
318  coerceValue(value, myGuideAttribWeight);
319  break;
320 
321  }
322  }
323 
324  bool isParmColorRamp(exint idx) const override
325  {
326  switch (idx)
327  {
328 
329  }
330  return false;
331  }
332 
333  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
334  { doGetParmValue(idx, instance, value); }
335  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
336  { doGetParmValue(idx, instance, value); }
337  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
338  { doGetParmValue(idx, instance, value); }
339  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
340  { doGetParmValue(idx, instance, value); }
341  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
342  { doGetParmValue(idx, instance, value); }
343  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
344  { doGetParmValue(idx, instance, value); }
345  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
346  { doGetParmValue(idx, instance, value); }
347  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
348  { doGetParmValue(idx, instance, value); }
349  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
350  { doGetParmValue(idx, instance, value); }
351  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
352  { doGetParmValue(idx, instance, value); }
353  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
354  { doGetParmValue(idx, instance, value); }
355 
356  template <typename T>
357  void
358  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
359  {
360  if (idx.size() < 1)
361  return;
362  UT_ASSERT(idx.size() == instance.size()+1);
363  if (idx.size() != instance.size()+1)
364  return;
365  switch (idx[0])
366  {
367  case 0:
368  coerceValue(myGroup, ( ( value ) ));
369  break;
370  case 1:
371  coerceValue(myCarrier, clampMinValue(0, clampMaxValue(1, value ) ));
372  break;
373  case 2:
374  coerceValue(myDirections, ( clampMaxValue(8, value ) ));
375  break;
376  case 3:
377  coerceValue(myRotation, ( ( value ) ));
378  break;
379  case 4:
380  coerceValue(myCurvatureWeight, clampMinValue(0, ( value ) ));
381  break;
382  case 5:
383  coerceValue(myFlipCurvatureAxes, clampMinValue(0, clampMaxValue(1, value ) ));
384  break;
385  case 6:
386  coerceValue(myBoundaryWeight, clampMinValue(0, ( value ) ));
387  break;
388  case 7:
389  coerceValue(myBoundaryRot, clampMinValue(0, clampMaxValue(3, value ) ));
390  break;
391  case 8:
392  coerceValue(myGuideAttrib, ( ( value ) ));
393  break;
394  case 9:
395  coerceValue(myFieldAttrib, ( ( value ) ));
396  break;
397  case 10:
398  coerceValue(myNormalizeField, ( ( value ) ));
399  break;
400  case 11:
401  coerceValue(myOutputMode, clampMinValue(0, clampMaxValue(2, value ) ));
402  break;
403  case 12:
404  coerceValue(myUseSingularGroup, ( ( value ) ));
405  break;
406  case 13:
407  coerceValue(mySingularGroup, ( ( value ) ));
408  break;
409  case 14:
410  coerceValue(myUsePositiveSingularGroup, ( ( value ) ));
411  break;
412  case 15:
413  coerceValue(myPositiveSingularGroup, ( ( value ) ));
414  break;
415  case 16:
416  coerceValue(myUseNegativeSingularGroup, ( ( value ) ));
417  break;
418  case 17:
419  coerceValue(myNegativeSingularGroup, ( ( value ) ));
420  break;
421  case 18:
422  coerceValue(myUseDiscontinuitiesGroup, ( ( value ) ));
423  break;
424  case 19:
425  coerceValue(myDiscontinuities, ( ( value ) ));
426  break;
427  case 20:
428  coerceValue(myShowField, ( ( value ) ));
429  break;
430  case 21:
431  coerceValue(myShowNormalized, ( ( value ) ));
432  break;
433  case 22:
434  coerceValue(myShowPrescaled, ( ( value ) ));
435  break;
436  case 23:
437  coerceValue(myVectorscale, clampMinValue(0, ( value ) ));
438  break;
439  case 24:
440  coerceValue(myShowSingularities, ( ( value ) ));
441  break;
442  case 25:
443  coerceValue(myGuideAttribWeight, clampMinValue(0, ( value ) ));
444  break;
445 
446  }
447  }
448 
449  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
450  { doSetParmValue(idx, instance, value); }
451  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
452  { doSetParmValue(idx, instance, value); }
453  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
454  { doSetParmValue(idx, instance, value); }
455  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
456  { doSetParmValue(idx, instance, value); }
457  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
458  { doSetParmValue(idx, instance, value); }
459  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
460  { doSetParmValue(idx, instance, value); }
461  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
462  { doSetParmValue(idx, instance, value); }
463  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
464  { doSetParmValue(idx, instance, value); }
465  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
466  { doSetParmValue(idx, instance, value); }
467  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
468  { doSetParmValue(idx, instance, value); }
469  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
470  { doSetParmValue(idx, instance, value); }
471 
472  exint getNestNumParms(TempIndex idx) const override
473  {
474  if (idx.size() == 0)
475  return 26;
476  switch (idx[0])
477  {
478 
479  }
480  // Invalid
481  return 0;
482  }
483 
484  const char *getNestParmName(TempIndex fieldnum) const override
485  {
486  if (fieldnum.size() < 1)
487  return 0;
488  switch (fieldnum[0])
489  {
490  case 0:
491  return "group";
492  case 1:
493  return "carrier";
494  case 2:
495  return "directions";
496  case 3:
497  return "rotation";
498  case 4:
499  return "curvatureweight";
500  case 5:
501  return "flipcurvatureaxes";
502  case 6:
503  return "boundaryweight";
504  case 7:
505  return "boundaryRot";
506  case 8:
507  return "guideattrib";
508  case 9:
509  return "fieldattrib";
510  case 10:
511  return "normalizefield";
512  case 11:
513  return "outputmode";
514  case 12:
515  return "usesingulargroup";
516  case 13:
517  return "singulargroup";
518  case 14:
519  return "usepositivesingulargroup";
520  case 15:
521  return "positivesingulargroup";
522  case 16:
523  return "usenegativesingulargroup";
524  case 17:
525  return "negativesingulargroup";
526  case 18:
527  return "usediscontinuitiesgroup";
528  case 19:
529  return "discontinuities";
530  case 20:
531  return "showfield";
532  case 21:
533  return "shownormalized";
534  case 22:
535  return "showprescaled";
536  case 23:
537  return "vectorscale";
538  case 24:
539  return "showsingularities";
540  case 25:
541  return "guideattribweight";
542 
543  }
544  return 0;
545  }
546 
547  ParmType getNestParmType(TempIndex fieldnum) const override
548  {
549  if (fieldnum.size() < 1)
550  return PARM_UNSUPPORTED;
551  switch (fieldnum[0])
552  {
553  case 0:
554  return PARM_STRING;
555  case 1:
556  return PARM_INTEGER;
557  case 2:
558  return PARM_INTEGER;
559  case 3:
560  return PARM_FLOAT;
561  case 4:
562  return PARM_FLOAT;
563  case 5:
564  return PARM_INTEGER;
565  case 6:
566  return PARM_FLOAT;
567  case 7:
568  return PARM_INTEGER;
569  case 8:
570  return PARM_STRING;
571  case 9:
572  return PARM_STRING;
573  case 10:
574  return PARM_INTEGER;
575  case 11:
576  return PARM_INTEGER;
577  case 12:
578  return PARM_INTEGER;
579  case 13:
580  return PARM_STRING;
581  case 14:
582  return PARM_INTEGER;
583  case 15:
584  return PARM_STRING;
585  case 16:
586  return PARM_INTEGER;
587  case 17:
588  return PARM_STRING;
589  case 18:
590  return PARM_INTEGER;
591  case 19:
592  return PARM_STRING;
593  case 20:
594  return PARM_INTEGER;
595  case 21:
596  return PARM_INTEGER;
597  case 22:
598  return PARM_INTEGER;
599  case 23:
600  return PARM_FLOAT;
601  case 24:
602  return PARM_INTEGER;
603  case 25:
604  return PARM_FLOAT;
605 
606  }
607  return PARM_UNSUPPORTED;
608  }
609 
610  // Boiler plate to load individual types.
611  static void loadData(UT_IStream &is, int64 &v)
612  { is.bread(&v, 1); }
613  static void loadData(UT_IStream &is, bool &v)
614  { int64 iv; is.bread(&iv, 1); v = iv; }
615  static void loadData(UT_IStream &is, fpreal64 &v)
616  { is.bread<fpreal64>(&v, 1); }
617  static void loadData(UT_IStream &is, UT_Vector2D &v)
618  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
619  static void loadData(UT_IStream &is, UT_Vector3D &v)
620  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
621  is.bread<fpreal64>(&v.z(), 1); }
622  static void loadData(UT_IStream &is, UT_Vector4D &v)
623  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
624  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
625  static void loadData(UT_IStream &is, UT_Matrix2D &v)
626  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
627  static void loadData(UT_IStream &is, UT_Matrix3D &v)
628  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
629  static void loadData(UT_IStream &is, UT_Matrix4D &v)
630  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
631  static void loadData(UT_IStream &is, UT_Vector2I &v)
632  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
633  static void loadData(UT_IStream &is, UT_Vector3I &v)
634  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
635  is.bread<int64>(&v.z(), 1); }
636  static void loadData(UT_IStream &is, UT_Vector4I &v)
637  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
638  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
640  { is.bread(v); }
642  { UT_StringHolder rampdata;
643  loadData(is, rampdata);
644  if (rampdata.isstring())
645  {
646  v.reset(new UT_Ramp());
647  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
648  v->load(istr);
649  }
650  else v.reset();
651  }
654  loadData(is, data);
655  if (data.isstring())
656  {
657  // Find the data type.
658  const char *colon = UT_StringWrap(data).findChar(':');
659  if (colon)
660  {
661  int typelen = colon - data.buffer();
663  type.strncpy(data.buffer(), typelen);
664  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
665 
666  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
667  }
668  }
669  else v.reset();
670  }
671 
672  static void saveData(std::ostream &os, int64 v)
673  { UTwrite(os, &v); }
674  static void saveData(std::ostream &os, bool v)
675  { int64 iv = v; UTwrite(os, &iv); }
676  static void saveData(std::ostream &os, fpreal64 v)
677  { UTwrite<fpreal64>(os, &v); }
678  static void saveData(std::ostream &os, UT_Vector2D v)
679  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
680  static void saveData(std::ostream &os, UT_Vector3D v)
681  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
682  UTwrite<fpreal64>(os, &v.z()); }
683  static void saveData(std::ostream &os, UT_Vector4D v)
684  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
685  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
686  static void saveData(std::ostream &os, UT_Matrix2D v)
688  static void saveData(std::ostream &os, UT_Matrix3D v)
690  static void saveData(std::ostream &os, UT_Matrix4D v)
692  static void saveData(std::ostream &os, UT_StringHolder s)
693  { UT_StringWrap(s).saveBinary(os); }
694  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
696  UT_OStringStream ostr;
697  if (s) s->save(ostr);
698  result = ostr.str();
699  saveData(os, result);
700  }
701  static void saveData(std::ostream &os, PRM_DataItemHandle s)
703  UT_OStringStream ostr;
704  if (s)
705  {
706  ostr << s->getDataTypeToken();
707  ostr << ":";
708  s->saveBinary(ostr);
709  }
710  result = ostr.str();
711  saveData(os, result);
712  }
713 
714 
715  void save(std::ostream &os) const
716  {
717  int32 v = version();
718  UTwrite(os, &v);
719  saveData(os, myGroup);
720  saveData(os, myCarrier);
721  saveData(os, myDirections);
722  saveData(os, myRotation);
723  saveData(os, myCurvatureWeight);
724  saveData(os, myFlipCurvatureAxes);
725  saveData(os, myBoundaryWeight);
726  saveData(os, myBoundaryRot);
727  saveData(os, myGuideAttrib);
728  saveData(os, myFieldAttrib);
729  saveData(os, myNormalizeField);
730  saveData(os, myOutputMode);
731  saveData(os, myUseSingularGroup);
732  saveData(os, mySingularGroup);
733  saveData(os, myUsePositiveSingularGroup);
734  saveData(os, myPositiveSingularGroup);
735  saveData(os, myUseNegativeSingularGroup);
736  saveData(os, myNegativeSingularGroup);
737  saveData(os, myUseDiscontinuitiesGroup);
738  saveData(os, myDiscontinuities);
739  saveData(os, myShowField);
740  saveData(os, myShowNormalized);
741  saveData(os, myShowPrescaled);
742  saveData(os, myVectorscale);
743  saveData(os, myShowSingularities);
744  saveData(os, myGuideAttribWeight);
745 
746  }
747 
748  bool load(UT_IStream &is)
749  {
750  int32 v;
751  is.bread(&v, 1);
752  if (version() != v)
753  {
754  // Fail incompatible versions
755  return false;
756  }
757  loadData(is, myGroup);
758  loadData(is, myCarrier);
759  loadData(is, myDirections);
760  loadData(is, myRotation);
761  loadData(is, myCurvatureWeight);
762  loadData(is, myFlipCurvatureAxes);
763  loadData(is, myBoundaryWeight);
764  loadData(is, myBoundaryRot);
765  loadData(is, myGuideAttrib);
766  loadData(is, myFieldAttrib);
767  loadData(is, myNormalizeField);
768  loadData(is, myOutputMode);
769  loadData(is, myUseSingularGroup);
770  loadData(is, mySingularGroup);
771  loadData(is, myUsePositiveSingularGroup);
772  loadData(is, myPositiveSingularGroup);
773  loadData(is, myUseNegativeSingularGroup);
774  loadData(is, myNegativeSingularGroup);
775  loadData(is, myUseDiscontinuitiesGroup);
776  loadData(is, myDiscontinuities);
777  loadData(is, myShowField);
778  loadData(is, myShowNormalized);
779  loadData(is, myShowPrescaled);
780  loadData(is, myVectorscale);
781  loadData(is, myShowSingularities);
782  loadData(is, myGuideAttribWeight);
783 
784  return true;
785  }
786 
787  const UT_StringHolder & getGroup() const { return myGroup; }
788  void setGroup(const UT_StringHolder & val) { myGroup = val; }
790  {
791  SOP_Node *thissop = cookparms.getNode();
792  if (!thissop) return getGroup();
794  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
795  return result;
796  }
797  Carrier getCarrier() const { return Carrier(myCarrier); }
798  void setCarrier(Carrier val) { myCarrier = int64(val); }
799  Carrier opCarrier(const SOP_NodeVerb::CookParms &cookparms) const
800  {
801  SOP_Node *thissop = cookparms.getNode();
802  if (!thissop) return getCarrier();
803  int64 result;
804  OP_Utils::evalOpParm(result, thissop, "carrier", cookparms.getCookTime(), 0);
805  return Carrier(result);
806  }
807  int64 getDirections() const { return myDirections; }
808  void setDirections(int64 val) { myDirections = val; }
810  {
811  SOP_Node *thissop = cookparms.getNode();
812  if (!thissop) return getDirections();
813  int64 result;
814  OP_Utils::evalOpParm(result, thissop, "directions", cookparms.getCookTime(), 0);
815  return result;
816  }
817  fpreal64 getRotation() const { return myRotation; }
818  void setRotation(fpreal64 val) { myRotation = val; }
820  {
821  SOP_Node *thissop = cookparms.getNode();
822  if (!thissop) return getRotation();
824  OP_Utils::evalOpParm(result, thissop, "rotation", cookparms.getCookTime(), 0);
825  return result;
826  }
827  fpreal64 getCurvatureWeight() const { return myCurvatureWeight; }
828  void setCurvatureWeight(fpreal64 val) { myCurvatureWeight = val; }
830  {
831  SOP_Node *thissop = cookparms.getNode();
832  if (!thissop) return getCurvatureWeight();
834  OP_Utils::evalOpParm(result, thissop, "curvatureweight", cookparms.getCookTime(), 0);
835  return result;
836  }
837  FlipCurvatureAxes getFlipCurvatureAxes() const { return FlipCurvatureAxes(myFlipCurvatureAxes); }
838  void setFlipCurvatureAxes(FlipCurvatureAxes val) { myFlipCurvatureAxes = int64(val); }
840  {
841  SOP_Node *thissop = cookparms.getNode();
842  if (!thissop) return getFlipCurvatureAxes();
843  int64 result;
844  OP_Utils::evalOpParm(result, thissop, "flipcurvatureaxes", cookparms.getCookTime(), 0);
845  return FlipCurvatureAxes(result);
846  }
847  fpreal64 getBoundaryWeight() const { return myBoundaryWeight; }
848  void setBoundaryWeight(fpreal64 val) { myBoundaryWeight = val; }
850  {
851  SOP_Node *thissop = cookparms.getNode();
852  if (!thissop) return getBoundaryWeight();
854  OP_Utils::evalOpParm(result, thissop, "boundaryweight", cookparms.getCookTime(), 0);
855  return result;
856  }
857  BoundaryRot getBoundaryRot() const { return BoundaryRot(myBoundaryRot); }
858  void setBoundaryRot(BoundaryRot val) { myBoundaryRot = int64(val); }
860  {
861  SOP_Node *thissop = cookparms.getNode();
862  if (!thissop) return getBoundaryRot();
863  int64 result;
864  OP_Utils::evalOpParm(result, thissop, "boundaryRot", cookparms.getCookTime(), 0);
865  return BoundaryRot(result);
866  }
867  const UT_StringHolder & getGuideAttrib() const { return myGuideAttrib; }
868  void setGuideAttrib(const UT_StringHolder & val) { myGuideAttrib = val; }
870  {
871  SOP_Node *thissop = cookparms.getNode();
872  if (!thissop) return getGuideAttrib();
874  OP_Utils::evalOpParm(result, thissop, "guideattrib", cookparms.getCookTime(), 0);
875  return result;
876  }
877  const UT_StringHolder & getFieldAttrib() const { return myFieldAttrib; }
878  void setFieldAttrib(const UT_StringHolder & val) { myFieldAttrib = val; }
880  {
881  SOP_Node *thissop = cookparms.getNode();
882  if (!thissop) return getFieldAttrib();
884  OP_Utils::evalOpParm(result, thissop, "fieldattrib", cookparms.getCookTime(), 0);
885  return result;
886  }
887  bool getNormalizeField() const { return myNormalizeField; }
888  void setNormalizeField(bool val) { myNormalizeField = val; }
889  bool opNormalizeField(const SOP_NodeVerb::CookParms &cookparms) const
890  {
891  SOP_Node *thissop = cookparms.getNode();
892  if (!thissop) return getNormalizeField();
893  bool result;
894  OP_Utils::evalOpParm(result, thissop, "normalizefield", cookparms.getCookTime(), 0);
895  return result;
896  }
897  OutputMode getOutputMode() const { return OutputMode(myOutputMode); }
898  void setOutputMode(OutputMode val) { myOutputMode = int64(val); }
900  {
901  SOP_Node *thissop = cookparms.getNode();
902  if (!thissop) return getOutputMode();
903  int64 result;
904  OP_Utils::evalOpParm(result, thissop, "outputmode", cookparms.getCookTime(), 0);
905  return OutputMode(result);
906  }
907  bool getUseSingularGroup() const { return myUseSingularGroup; }
908  void setUseSingularGroup(bool val) { myUseSingularGroup = val; }
909  bool opUseSingularGroup(const SOP_NodeVerb::CookParms &cookparms) const
910  {
911  SOP_Node *thissop = cookparms.getNode();
912  if (!thissop) return getUseSingularGroup();
913  bool result;
914  OP_Utils::evalOpParm(result, thissop, "usesingulargroup", cookparms.getCookTime(), 0);
915  return result;
916  }
917  const UT_StringHolder & getSingularGroup() const { return mySingularGroup; }
918  void setSingularGroup(const UT_StringHolder & val) { mySingularGroup = val; }
920  {
921  SOP_Node *thissop = cookparms.getNode();
922  if (!thissop) return getSingularGroup();
924  OP_Utils::evalOpParm(result, thissop, "singulargroup", cookparms.getCookTime(), 0);
925  return result;
926  }
927  bool getUsePositiveSingularGroup() const { return myUsePositiveSingularGroup; }
928  void setUsePositiveSingularGroup(bool val) { myUsePositiveSingularGroup = val; }
930  {
931  SOP_Node *thissop = cookparms.getNode();
932  if (!thissop) return getUsePositiveSingularGroup();
933  bool result;
934  OP_Utils::evalOpParm(result, thissop, "usepositivesingulargroup", cookparms.getCookTime(), 0);
935  return result;
936  }
937  const UT_StringHolder & getPositiveSingularGroup() const { return myPositiveSingularGroup; }
938  void setPositiveSingularGroup(const UT_StringHolder & val) { myPositiveSingularGroup = val; }
940  {
941  SOP_Node *thissop = cookparms.getNode();
942  if (!thissop) return getPositiveSingularGroup();
944  OP_Utils::evalOpParm(result, thissop, "positivesingulargroup", cookparms.getCookTime(), 0);
945  return result;
946  }
947  bool getUseNegativeSingularGroup() const { return myUseNegativeSingularGroup; }
948  void setUseNegativeSingularGroup(bool val) { myUseNegativeSingularGroup = val; }
950  {
951  SOP_Node *thissop = cookparms.getNode();
952  if (!thissop) return getUseNegativeSingularGroup();
953  bool result;
954  OP_Utils::evalOpParm(result, thissop, "usenegativesingulargroup", cookparms.getCookTime(), 0);
955  return result;
956  }
957  const UT_StringHolder & getNegativeSingularGroup() const { return myNegativeSingularGroup; }
958  void setNegativeSingularGroup(const UT_StringHolder & val) { myNegativeSingularGroup = val; }
960  {
961  SOP_Node *thissop = cookparms.getNode();
962  if (!thissop) return getNegativeSingularGroup();
964  OP_Utils::evalOpParm(result, thissop, "negativesingulargroup", cookparms.getCookTime(), 0);
965  return result;
966  }
967  bool getUseDiscontinuitiesGroup() const { return myUseDiscontinuitiesGroup; }
968  void setUseDiscontinuitiesGroup(bool val) { myUseDiscontinuitiesGroup = val; }
970  {
971  SOP_Node *thissop = cookparms.getNode();
972  if (!thissop) return getUseDiscontinuitiesGroup();
973  bool result;
974  OP_Utils::evalOpParm(result, thissop, "usediscontinuitiesgroup", cookparms.getCookTime(), 0);
975  return result;
976  }
977  const UT_StringHolder & getDiscontinuities() const { return myDiscontinuities; }
978  void setDiscontinuities(const UT_StringHolder & val) { myDiscontinuities = val; }
980  {
981  SOP_Node *thissop = cookparms.getNode();
982  if (!thissop) return getDiscontinuities();
984  OP_Utils::evalOpParm(result, thissop, "discontinuities", cookparms.getCookTime(), 0);
985  return result;
986  }
987  bool getShowField() const { return myShowField; }
988  void setShowField(bool val) { myShowField = val; }
989  bool opShowField(const SOP_NodeVerb::CookParms &cookparms) const
990  {
991  SOP_Node *thissop = cookparms.getNode();
992  if (!thissop) return getShowField();
993  bool result;
994  OP_Utils::evalOpParm(result, thissop, "showfield", cookparms.getCookTime(), 0);
995  return result;
996  }
997  bool getShowNormalized() const { return myShowNormalized; }
998  void setShowNormalized(bool val) { myShowNormalized = val; }
999  bool opShowNormalized(const SOP_NodeVerb::CookParms &cookparms) const
1000  {
1001  SOP_Node *thissop = cookparms.getNode();
1002  if (!thissop) return getShowNormalized();
1003  bool result;
1004  OP_Utils::evalOpParm(result, thissop, "shownormalized", cookparms.getCookTime(), 0);
1005  return result;
1006  }
1007  bool getShowPrescaled() const { return myShowPrescaled; }
1008  void setShowPrescaled(bool val) { myShowPrescaled = val; }
1009  bool opShowPrescaled(const SOP_NodeVerb::CookParms &cookparms) const
1010  {
1011  SOP_Node *thissop = cookparms.getNode();
1012  if (!thissop) return getShowPrescaled();
1013  bool result;
1014  OP_Utils::evalOpParm(result, thissop, "showprescaled", cookparms.getCookTime(), 0);
1015  return result;
1016  }
1017  fpreal64 getVectorscale() const { return myVectorscale; }
1018  void setVectorscale(fpreal64 val) { myVectorscale = val; }
1020  {
1021  SOP_Node *thissop = cookparms.getNode();
1022  if (!thissop) return getVectorscale();
1023  fpreal64 result;
1024  OP_Utils::evalOpParm(result, thissop, "vectorscale", cookparms.getCookTime(), 0);
1025  return result;
1026  }
1027  bool getShowSingularities() const { return myShowSingularities; }
1028  void setShowSingularities(bool val) { myShowSingularities = val; }
1029  bool opShowSingularities(const SOP_NodeVerb::CookParms &cookparms) const
1030  {
1031  SOP_Node *thissop = cookparms.getNode();
1032  if (!thissop) return getShowSingularities();
1033  bool result;
1034  OP_Utils::evalOpParm(result, thissop, "showsingularities", cookparms.getCookTime(), 0);
1035  return result;
1036  }
1037  fpreal64 getGuideAttribWeight() const { return myGuideAttribWeight; }
1038  void setGuideAttribWeight(fpreal64 val) { myGuideAttribWeight = val; }
1040  {
1041  SOP_Node *thissop = cookparms.getNode();
1042  if (!thissop) return getGuideAttribWeight();
1043  fpreal64 result;
1044  OP_Utils::evalOpParm(result, thissop, "guideattribweight", cookparms.getCookTime(), 0);
1045  return result;
1046  }
1047 
1048 private:
1049  UT_StringHolder myGroup;
1050  int64 myCarrier;
1051  int64 myDirections;
1052  fpreal64 myRotation;
1053  fpreal64 myCurvatureWeight;
1054  int64 myFlipCurvatureAxes;
1055  fpreal64 myBoundaryWeight;
1056  int64 myBoundaryRot;
1057  UT_StringHolder myGuideAttrib;
1058  UT_StringHolder myFieldAttrib;
1059  bool myNormalizeField;
1060  int64 myOutputMode;
1061  bool myUseSingularGroup;
1062  UT_StringHolder mySingularGroup;
1063  bool myUsePositiveSingularGroup;
1064  UT_StringHolder myPositiveSingularGroup;
1065  bool myUseNegativeSingularGroup;
1066  UT_StringHolder myNegativeSingularGroup;
1067  bool myUseDiscontinuitiesGroup;
1068  UT_StringHolder myDiscontinuities;
1069  bool myShowField;
1070  bool myShowNormalized;
1071  bool myShowPrescaled;
1072  fpreal64 myVectorscale;
1073  bool myShowSingularities;
1074  fpreal64 myGuideAttribWeight;
1075 
1076 };
UT_StringHolder opGroup(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector2D &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
bool load(UT_IStream &is)
static void loadData(UT_IStream &is, UT_Matrix4D &v)
static void loadData(UT_IStream &is, fpreal64 &v)
void setCurvatureWeight(fpreal64 val)
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
bool opShowField(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getGuideAttribWeight() const
const UT_StringHolder & getFieldAttrib() const
UT_StringHolder opFieldAttrib(const SOP_NodeVerb::CookParms &cookparms) const
bool opNormalizeField(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getNegativeSingularGroup() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
T clampMaxValue(fpreal maxvalue, const T &src) const
Definition: OP_NodeParms.h:315
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
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
bool operator==(const SOP_TangentFieldParms &src) const
const GLdouble * v
Definition: glcorearb.h:837
bool getUsePositiveSingularGroup() const
bool opUseSingularGroup(const SOP_NodeVerb::CookParms &cookparms) const
fpreal getTime() const
Definition: OP_Context.h:62
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
static void loadData(UT_IStream &is, UT_Vector4I &v)
static void loadData(UT_IStream &is, int64 &v)
fpreal64 getCurvatureWeight() const
void setFieldAttrib(const UT_StringHolder &val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
fpreal64 opCurvatureWeight(const SOP_NodeVerb::CookParms &cookparms) const
const OP_Context & context() const
Definition: OP_NodeParms.h:97
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:667
int64 exint
Definition: SYS_Types.h:125
SYS_FORCE_INLINE const char * buffer() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
GLdouble s
Definition: glad.h:3009
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
An output stream object that owns its own string buffer storage.
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
static void saveData(std::ostream &os, UT_Matrix3D v)
bool opShowPrescaled(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getGroup() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
**But if you need a result
Definition: thread.h:613
void setOutputMode(OutputMode val)
bool opShowSingularities(const SOP_NodeVerb::CookParms &cookparms) const
T clampMinValue(fpreal minvalue, const T &src) const
Definition: OP_NodeParms.h:308
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
exint nodeIdx() const
Definition: OP_NodeParms.h:95
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
UT_StringHolder opDiscontinuities(const SOP_NodeVerb::CookParms &cookparms) const
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
static void saveData(std::ostream &os, UT_Matrix4D v)
FlipCurvatureAxes opFlipCurvatureAxes(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getBoundaryWeight() const
ParmType getNestParmType(TempIndex fieldnum) const override
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
void copyFrom(const OP_NodeParms *src) override
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
fpreal64 opBoundaryWeight(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opNegativeSingularGroup(const SOP_NodeVerb::CookParms &cookparms) const
BoundaryRot getBoundaryRot() const
static void loadData(UT_IStream &is, UT_Vector2I &v)
double fpreal64
Definition: SYS_Types.h:201
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
fpreal64 getVectorscale() const
void setBoundaryWeight(fpreal64 val)
void setUseDiscontinuitiesGroup(bool val)
static void saveData(std::ostream &os, UT_Vector4D v)
void setVectorscale(fpreal64 val)
static void saveData(std::ostream &os, bool v)
fpreal64 opGuideAttribWeight(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opPositiveSingularGroup(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getGuideAttrib() const
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
exint length() const
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:36
fpreal64 opVectorscale(const SOP_NodeVerb::CookParms &cookparms) const
void setGuideAttrib(const UT_StringHolder &val)
bool getUseDiscontinuitiesGroup() const
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:495
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
bool opUsePositiveSingularGroup(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, PRM_DataItemHandle s)
static void loadData(UT_IStream &is, UT_Vector3I &v)
static void saveData(std::ostream &os, UT_Vector2D v)
static void loadData(UT_IStream &is, UT_Matrix3D &v)
static void saveData(std::ostream &os, int64 v)
long long int64
Definition: SYS_Types.h:116
bool isParmColorRamp(exint idx) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
void setRotation(fpreal64 val)
bool opUseDiscontinuitiesGroup(const SOP_NodeVerb::CookParms &cookparms) const
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:296
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
void loadFromOpSubclass(const LoadParms &loadparms) override
const UT_StringHolder & getPositiveSingularGroup() const
GT_API const UT_StringHolder version
static void saveData(std::ostream &os, UT_Vector3D v)
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
OutputMode opOutputMode(const SOP_NodeVerb::CookParms &cookparms) const
bool getUseNegativeSingularGroup() const
bool opShowNormalized(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opGuideAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void setGuideAttribWeight(fpreal64 val)
void setPositiveSingularGroup(const UT_StringHolder &val)
void coerceValue(T &result, const S &src) const
Definition: OP_NodeParms.h:301
fpreal64 fpreal
Definition: SYS_Types.h:277
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
bool operator!=(const SOP_TangentFieldParms &src) const
fpreal64 opRotation(const SOP_NodeVerb::CookParms &cookparms) const
Utility class for containing a color ramp.
Definition: UT_Ramp.h:88
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
UT_StringHolder opSingularGroup(const SOP_NodeVerb::CookParms &cookparms) const
GLuint GLfloat * val
Definition: glcorearb.h:1608
void setUsePositiveSingularGroup(bool val)
#define SOP_API
Definition: SOP_API.h:10
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
bool opUseNegativeSingularGroup(const SOP_NodeVerb::CookParms &cookparms) const
void setSingularGroup(const UT_StringHolder &val)
static void loadData(UT_IStream &is, UT_Vector3D &v)
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:361
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
void setNegativeSingularGroup(const UT_StringHolder &val)
static void saveData(std::ostream &os, fpreal64 v)
const char * getNestParmName(TempIndex fieldnum) const override
FlipCurvatureAxes getFlipCurvatureAxes() const
Carrier opCarrier(const SOP_NodeVerb::CookParms &cookparms) const
const char * findChar(int c) const
Definition: UT_String.h:1385
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
Definition: core.h:1131
static void loadData(UT_IStream &is, bool &v)
void setDiscontinuities(const UT_StringHolder &val)
void setUseNegativeSingularGroup(bool val)
GLboolean r
Definition: glcorearb.h:1222
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
void save(std::ostream &os) const
exint getNestNumParms(TempIndex idx) const override
int64 opDirections(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_StringHolder &v)
BoundaryRot opBoundaryRot(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
OutputMode getOutputMode() const
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
void setFlipCurvatureAxes(FlipCurvatureAxes val)
static void loadData(UT_IStream &is, UT_Vector4D &v)
type
Definition: core.h:1059
const UT_StringHolder & getSingularGroup() const
static void saveData(std::ostream &os, UT_StringHolder s)
void setBoundaryRot(BoundaryRot val)
static void loadData(UT_IStream &is, UT_Matrix2D &v)
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: PRM_Parm.h:89
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
void setGroup(const UT_StringHolder &val)
SYS_FORCE_INLINE bool isstring() const
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
OP_NodeParms & operator=(const OP_NodeParms &)=default
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
static void saveData(std::ostream &os, UT_Matrix2D v)
const UT_StringHolder & getDiscontinuities() const
GLenum src
Definition: glcorearb.h:1793
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663