HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_BlendShapes-2.0.proto.h
Go to the documentation of this file.
1 /* Automagically Generated by generate_proto.py
2  * Do not Edit
3  */
4 #pragma once
5 
6 #include <SOP/SOP_API.h>
7 #include <SOP/SOP_NodeVerb.h>
8 #include <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_BlendShapes_2_0Enums
24 {
25  enum class Grouptype
26  {
27  GUESS = 0,
28  VERTICES,
29  EDGES,
30  POINTS,
31  PRIMS
32  };
33  enum class VoxelBlend
34  {
35  NONE = 0,
38  };
39  enum class MaskMode
40  {
41  NONE = 0,
44  };
45  enum class MaskAttribMode
46  {
47  EACH = 0,
48  FIRST
49  };
50  enum class BlendMask
51  {
52  NONE = 0,
53  DEFAULT,
54  CUSTOM,
56  };
57  enum class BlendMaskMode
58  {
59  SETFROMATTRIB = 0,
61  };
62 }
63 
64 
66 {
67 public:
68  static int version() { return 1; }
69  struct Nblends
70  {
75 
76 
78  {
79  blend = 0;
80  blendmask = 1;
81  blendmaskattrib = "mask"_UTsh;
82  blendmaskmode = 1;
83 
84  }
85 
86  bool operator==(const Nblends &src) const
87  {
88  if (blend != src.blend) return false;
89  if (blendmask != src.blendmask) return false;
90  if (blendmaskattrib != src.blendmaskattrib) return false;
91  if (blendmaskmode != src.blendmaskmode) return false;
92 
93  return true;
94  }
95  bool operator!=(const Nblends &src) const
96  {
97  return !operator==(src);
98  }
99 
100  };
101 
103  {
105 
106  buf.strcat("[ ");
107  for (int i = 0; i < list.entries(); i++)
108  {
109  if (i)
110  buf.strcat(", ");
111  buf.strcat("( ");
112  buf.append("");
113  buf.appendSprintf("%f", (list(i).blend));
114  buf.append(", ");
115  buf.appendSprintf("%d", (int) list(i).blendmask);
116  buf.append(", ");
117  { UT_String tmp; tmp = UT_StringWrap(list(i).blendmaskattrib).makeQuotedString('"'); buf.strcat(tmp); }
118  buf.append(", ");
119  buf.appendSprintf("%d", (int) list(i).blendmaskmode);
120 
121  buf.strcat(" )");
122  }
123  buf.strcat(" ]");
124 
126  return result;
127  }
128 
130  {
131  myGroup = ""_UTsh;
132  myGrouptype = 0;
133  mySelectionIdx = 0;
134  myDiff = true;
135  myCacheDeltas = false;
136  myDoPack = false;
137  myDoPackFirst = true;
138  myWeightPerPack = true;
139  myAttribs = "*"_UTsh;
140  myPtIDAttr = ""_UTsh;
141  myPrimIDAttr = ""_UTsh;
142  myVoxelBlend = 0;
143  myDoSlerp = true;
144  myMaskMode = 0;
145  myMaskAttrib = "mask"_UTsh;
146  myMaskAttribMode = 0;
147  myNblends.setSize(2);
148 
149  }
150 
151  explicit SOP_BlendShapes_2_0Parms(const SOP_BlendShapes_2_0Parms &) = default;
153  SOP_BlendShapes_2_0Parms(SOP_BlendShapes_2_0Parms &&) noexcept = default;
154  SOP_BlendShapes_2_0Parms &operator=(SOP_BlendShapes_2_0Parms &&) noexcept = default;
155 
157 
159  {
160  if (myGroup != src.myGroup) return false;
161  if (myGrouptype != src.myGrouptype) return false;
162  if (mySelectionIdx != src.mySelectionIdx) return false;
163  if (myDiff != src.myDiff) return false;
164  if (myCacheDeltas != src.myCacheDeltas) return false;
165  if (myDoPack != src.myDoPack) return false;
166  if (myDoPackFirst != src.myDoPackFirst) return false;
167  if (myWeightPerPack != src.myWeightPerPack) return false;
168  if (myAttribs != src.myAttribs) return false;
169  if (myPtIDAttr != src.myPtIDAttr) return false;
170  if (myPrimIDAttr != src.myPrimIDAttr) return false;
171  if (myVoxelBlend != src.myVoxelBlend) return false;
172  if (myDoSlerp != src.myDoSlerp) return false;
173  if (myMaskMode != src.myMaskMode) return false;
174  if (myMaskAttrib != src.myMaskAttrib) return false;
175  if (myMaskAttribMode != src.myMaskAttribMode) return false;
176  if (myNblends != src.myNblends) return false;
177 
178  return true;
179  }
181  {
182  return !operator==(src);
183  }
190 
191 
192 
193  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
194  {
195  myGroup = ""_UTsh;
196  if (true)
197  graph->evalOpParm(myGroup, nodeidx, "group", time, 0);
198  myGrouptype = 0;
199  if (true)
200  graph->evalOpParm(myGrouptype, nodeidx, "grouptype", time, 0);
201  mySelectionIdx = 0;
202  if (true)
203  graph->evalOpParm(mySelectionIdx, nodeidx, "selectionidx", time, 0);
204  myDiff = true;
205  if (true)
206  graph->evalOpParm(myDiff, nodeidx, "diff", time, 0);
207  myCacheDeltas = false;
208  if (true && ( (true&&!(((getDiff()==0)))) ) )
209  graph->evalOpParm(myCacheDeltas, nodeidx, "cachedeltas", time, 0);
210  myDoPack = false;
211  if (true)
212  graph->evalOpParm(myDoPack, nodeidx, "pack", time, 0);
213  myDoPackFirst = true;
214  if (true && ( (true&&!(((getDoPack()==0)))) ) )
215  graph->evalOpParm(myDoPackFirst, nodeidx, "packfirst", time, 0);
216  myWeightPerPack = true;
217  if (true && ( (true&&!(((getDoPack()==0)))) ) )
218  graph->evalOpParm(myWeightPerPack, nodeidx, "weightperpack", time, 0);
219  myAttribs = "*"_UTsh;
220  if (true)
221  graph->evalOpParm(myAttribs, nodeidx, "attribs", time, 0);
222  myPtIDAttr = ""_UTsh;
223  if (true)
224  graph->evalOpParm(myPtIDAttr, nodeidx, "ptidattr", time, 0);
225  myPrimIDAttr = ""_UTsh;
226  if (true)
227  graph->evalOpParm(myPrimIDAttr, nodeidx, "primidattr", time, 0);
228  myVoxelBlend = 0;
229  if (true)
230  graph->evalOpParm(myVoxelBlend, nodeidx, "voxelblend", time, 0);
231  myDoSlerp = true;
232  if (true)
233  graph->evalOpParm(myDoSlerp, nodeidx, "doslerp", time, 0);
234  myMaskMode = 0;
235  if (true)
236  graph->evalOpParm(myMaskMode, nodeidx, "maskmode", time, 0);
237  myMaskAttrib = "mask"_UTsh;
238  if (true && ( (true&&!(((int64(getMaskMode())==0)))) ) )
239  graph->evalOpParm(myMaskAttrib, nodeidx, "maskattrib", time, 0);
240  myMaskAttribMode = 0;
241  if (true && ( (true&&!(((int64(getMaskMode())==0)))) ) )
242  graph->evalOpParm(myMaskAttribMode, nodeidx, "maskattribmode", time, 0);
243  if (true && ( (!(((int64(getMaskMode())<0)))) ) )
244  {
245  int64 length = 0;
246  graph->evalOpParm(length, nodeidx, "nblends", time, 0);
247  if (length < 0) length = 0;
248  myNblends.setSize(length);
249  for (exint i = 0; i < length; i++)
250  {
251  int parmidx[1];
252  int offsets[1];
253  parmidx[0] = i+0;
254  offsets[0] = 0;
255  auto && _curentry = myNblends(i);
256  (void) _curentry;
257  _curentry.blend = 0;
258  if (true && ( (!(((int64(getMaskMode())<0)))) ) && ( (true&&!(((int64(getMaskMode())<0)))) ) )
259  graph->evalOpParmInst(_curentry.blend, nodeidx, "blend#", parmidx, offsets, time, 0, 2-1);
260  _curentry.blendmask = 1;
261  if (true && ( (!(((int64(getMaskMode())<0)))) ) && ( (true&&!(((int64(getMaskMode())<0))||((int64(getMaskMode())==0)))) ) )
262  graph->evalOpParmInst(_curentry.blendmask, nodeidx, "blendmask#", parmidx, offsets, time, 0, 2-1);
263  _curentry.blendmaskattrib = "mask"_UTsh;
264  if (true && ( (!(((int64(getMaskMode())<0)))) ) && ( (true&&!(((int64(getMaskMode())<0))||((int64(getMaskMode())==0))||((_curentry.blendmask==0))||((_curentry.blendmask==1)))) ) )
265  graph->evalOpParmInst(_curentry.blendmaskattrib, nodeidx, "blendmaskattrib#", parmidx, offsets, time, 0, 2-1);
266  _curentry.blendmaskmode = 1;
267  if (true && ( (!(((int64(getMaskMode())<0)))) ) && ( (true&&!(((int64(getMaskMode())<0))||((int64(getMaskMode())==0))||((_curentry.blendmask==0))||((_curentry.blendmask==1)))) ) )
268  graph->evalOpParmInst(_curentry.blendmaskmode, nodeidx, "blendmaskmode#", parmidx, offsets, time, 0, 2-1);
269 
270  }
271  }
272  else
273  myNblends.clear();
274 
275  }
276 
277 
278  void loadFromOpSubclass(const LoadParms &loadparms) override
279  {
280  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
281  }
282 
283 
284  void copyFrom(const OP_NodeParms *src) override
285  {
286  *this = *((const SOP_BlendShapes_2_0Parms *)src);
287  }
288 
289  template <typename T>
290  void
291  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
292  {
293  if (idx.size() < 1)
294  return;
295  UT_ASSERT(idx.size() == instance.size()+1);
296  if (idx.size() != instance.size()+1)
297  return;
298  switch (idx[0])
299  {
300  case 0:
301  coerceValue(value, myGroup);
302  break;
303  case 1:
304  coerceValue(value, myGrouptype);
305  break;
306  case 2:
307  coerceValue(value, mySelectionIdx);
308  break;
309  case 3:
310  coerceValue(value, myDiff);
311  break;
312  case 4:
313  coerceValue(value, myCacheDeltas);
314  break;
315  case 5:
316  coerceValue(value, myDoPack);
317  break;
318  case 6:
319  coerceValue(value, myDoPackFirst);
320  break;
321  case 7:
322  coerceValue(value, myWeightPerPack);
323  break;
324  case 8:
325  coerceValue(value, myAttribs);
326  break;
327  case 9:
328  coerceValue(value, myPtIDAttr);
329  break;
330  case 10:
331  coerceValue(value, myPrimIDAttr);
332  break;
333  case 11:
334  coerceValue(value, myVoxelBlend);
335  break;
336  case 12:
337  coerceValue(value, myDoSlerp);
338  break;
339  case 13:
340  coerceValue(value, myMaskMode);
341  break;
342  case 14:
343  coerceValue(value, myMaskAttrib);
344  break;
345  case 15:
346  coerceValue(value, myMaskAttribMode);
347  break;
348  case 16:
349  if (idx.size() == 1)
350  coerceValue(value, myNblends.entries());
351  else if (instance[0] < myNblends.entries())
352  {
353  auto && _data = myNblends(instance[0]);
354  switch (idx[1])
355  {
356  case 0:
357  coerceValue(value, _data.blend);
358  break;
359  case 1:
360  coerceValue(value, _data.blendmask);
361  break;
362  case 2:
363  coerceValue(value, _data.blendmaskattrib);
364  break;
365  case 3:
366  coerceValue(value, _data.blendmaskmode);
367  break;
368 
369  }
370  }
371  break;
372 
373  }
374  }
375 
376  bool isParmColorRamp(exint idx) const override
377  {
378  switch (idx)
379  {
380 
381  }
382  return false;
383  }
384 
385  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
386  { doGetParmValue(idx, instance, value); }
387  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
388  { doGetParmValue(idx, instance, value); }
389  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
390  { doGetParmValue(idx, instance, value); }
391  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
392  { doGetParmValue(idx, instance, value); }
393  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
394  { doGetParmValue(idx, instance, value); }
395  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
396  { doGetParmValue(idx, instance, value); }
397  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
398  { doGetParmValue(idx, instance, value); }
399  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
400  { doGetParmValue(idx, instance, value); }
401  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
402  { doGetParmValue(idx, instance, value); }
403  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
404  { doGetParmValue(idx, instance, value); }
405  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
406  { doGetParmValue(idx, instance, value); }
407 
408  template <typename T>
409  void
410  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
411  {
412  if (idx.size() < 1)
413  return;
414  UT_ASSERT(idx.size() == instance.size()+1);
415  if (idx.size() != instance.size()+1)
416  return;
417  switch (idx[0])
418  {
419  case 0:
420  coerceValue(myGroup, ( ( value ) ));
421  break;
422  case 1:
423  coerceValue(myGrouptype, clampMinValue(0, clampMaxValue(4, value ) ));
424  break;
425  case 2:
426  coerceValue(mySelectionIdx, ( ( value ) ));
427  break;
428  case 3:
429  coerceValue(myDiff, ( ( value ) ));
430  break;
431  case 4:
432  coerceValue(myCacheDeltas, ( ( value ) ));
433  break;
434  case 5:
435  coerceValue(myDoPack, ( ( value ) ));
436  break;
437  case 6:
438  coerceValue(myDoPackFirst, ( ( value ) ));
439  break;
440  case 7:
441  coerceValue(myWeightPerPack, ( ( value ) ));
442  break;
443  case 8:
444  coerceValue(myAttribs, ( ( value ) ));
445  break;
446  case 9:
447  coerceValue(myPtIDAttr, ( ( value ) ));
448  break;
449  case 10:
450  coerceValue(myPrimIDAttr, ( ( value ) ));
451  break;
452  case 11:
453  coerceValue(myVoxelBlend, clampMinValue(0, clampMaxValue(2, value ) ));
454  break;
455  case 12:
456  coerceValue(myDoSlerp, ( ( value ) ));
457  break;
458  case 13:
459  coerceValue(myMaskMode, clampMinValue(0, clampMaxValue(2, value ) ));
460  break;
461  case 14:
462  coerceValue(myMaskAttrib, ( ( value ) ));
463  break;
464  case 15:
465  coerceValue(myMaskAttribMode, clampMinValue(0, clampMaxValue(1, value ) ));
466  break;
467  case 16:
468  if (idx.size() == 1)
469  {
470  exint newsize;
471  coerceValue(newsize, value);
472  if (newsize < 0) newsize = 0;
473  myNblends.setSize(newsize);
474  }
475  else
476  {
477  if (instance[0] < 0)
478  return;
479  myNblends.setSizeIfNeeded(instance[0]+1);
480  auto && _data = myNblends(instance[0]);
481  switch (idx[1])
482  {
483  case 0:
484  coerceValue(_data.blend, value);
485  break;
486  case 1:
487  coerceValue(_data.blendmask, value);
488  break;
489  case 2:
490  coerceValue(_data.blendmaskattrib, value);
491  break;
492  case 3:
493  coerceValue(_data.blendmaskmode, value);
494  break;
495 
496  }
497  }
498  break;
499 
500  }
501  }
502 
503  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
504  { doSetParmValue(idx, instance, value); }
505  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
506  { doSetParmValue(idx, instance, value); }
507  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
508  { doSetParmValue(idx, instance, value); }
509  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
510  { doSetParmValue(idx, instance, value); }
511  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
512  { doSetParmValue(idx, instance, value); }
513  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
514  { doSetParmValue(idx, instance, value); }
515  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
516  { doSetParmValue(idx, instance, value); }
517  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
518  { doSetParmValue(idx, instance, value); }
519  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
520  { doSetParmValue(idx, instance, value); }
521  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
522  { doSetParmValue(idx, instance, value); }
523  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
524  { doSetParmValue(idx, instance, value); }
525 
526  exint getNestNumParms(TempIndex idx) const override
527  {
528  if (idx.size() == 0)
529  return 17;
530  switch (idx[0])
531  {
532  case 16:
533  return 4;
534 
535  }
536  // Invalid
537  return 0;
538  }
539 
540  const char *getNestParmName(TempIndex fieldnum) const override
541  {
542  if (fieldnum.size() < 1)
543  return 0;
544  switch (fieldnum[0])
545  {
546  case 0:
547  return "group";
548  case 1:
549  return "grouptype";
550  case 2:
551  return "selectionidx";
552  case 3:
553  return "diff";
554  case 4:
555  return "cachedeltas";
556  case 5:
557  return "pack";
558  case 6:
559  return "packfirst";
560  case 7:
561  return "weightperpack";
562  case 8:
563  return "attribs";
564  case 9:
565  return "ptidattr";
566  case 10:
567  return "primidattr";
568  case 11:
569  return "voxelblend";
570  case 12:
571  return "doslerp";
572  case 13:
573  return "maskmode";
574  case 14:
575  return "maskattrib";
576  case 15:
577  return "maskattribmode";
578  case 16:
579  if (fieldnum.size() == 1)
580  return "nblends";
581  switch (fieldnum[1])
582  {
583  case 0:
584  return "blend#";
585  case 1:
586  return "blendmask#";
587  case 2:
588  return "blendmaskattrib#";
589  case 3:
590  return "blendmaskmode#";
591 
592  }
593  return 0;
594 
595  }
596  return 0;
597  }
598 
599  ParmType getNestParmType(TempIndex fieldnum) const override
600  {
601  if (fieldnum.size() < 1)
602  return PARM_UNSUPPORTED;
603  switch (fieldnum[0])
604  {
605  case 0:
606  return PARM_STRING;
607  case 1:
608  return PARM_INTEGER;
609  case 2:
610  return PARM_INTEGER;
611  case 3:
612  return PARM_INTEGER;
613  case 4:
614  return PARM_INTEGER;
615  case 5:
616  return PARM_INTEGER;
617  case 6:
618  return PARM_INTEGER;
619  case 7:
620  return PARM_INTEGER;
621  case 8:
622  return PARM_STRING;
623  case 9:
624  return PARM_STRING;
625  case 10:
626  return PARM_STRING;
627  case 11:
628  return PARM_INTEGER;
629  case 12:
630  return PARM_INTEGER;
631  case 13:
632  return PARM_INTEGER;
633  case 14:
634  return PARM_STRING;
635  case 15:
636  return PARM_INTEGER;
637  case 16:
638  if (fieldnum.size() == 1)
639  return PARM_MULTIPARM;
640  switch (fieldnum[1])
641  {
642  case 0:
643  return PARM_FLOAT;
644  case 1:
645  return PARM_INTEGER;
646  case 2:
647  return PARM_STRING;
648  case 3:
649  return PARM_INTEGER;
650 
651  }
652  return PARM_UNSUPPORTED;
653 
654  }
655  return PARM_UNSUPPORTED;
656  }
657 
658  // Boiler plate to load individual types.
659  static void loadData(UT_IStream &is, int64 &v)
660  { is.bread(&v, 1); }
661  static void loadData(UT_IStream &is, bool &v)
662  { int64 iv; is.bread(&iv, 1); v = iv; }
663  static void loadData(UT_IStream &is, fpreal64 &v)
664  { is.bread<fpreal64>(&v, 1); }
665  static void loadData(UT_IStream &is, UT_Vector2D &v)
666  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
667  static void loadData(UT_IStream &is, UT_Vector3D &v)
668  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
669  is.bread<fpreal64>(&v.z(), 1); }
670  static void loadData(UT_IStream &is, UT_Vector4D &v)
671  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
672  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
673  static void loadData(UT_IStream &is, UT_Matrix2D &v)
674  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
675  static void loadData(UT_IStream &is, UT_Matrix3D &v)
676  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
677  static void loadData(UT_IStream &is, UT_Matrix4D &v)
678  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
679  static void loadData(UT_IStream &is, UT_Vector2I &v)
680  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
681  static void loadData(UT_IStream &is, UT_Vector3I &v)
682  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
683  is.bread<int64>(&v.z(), 1); }
684  static void loadData(UT_IStream &is, UT_Vector4I &v)
685  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
686  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
688  { is.bread(v); }
690  { UT_StringHolder rampdata;
691  loadData(is, rampdata);
692  if (rampdata.isstring())
693  {
694  v.reset(new UT_Ramp());
695  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
696  v->load(istr);
697  }
698  else v.reset();
699  }
702  loadData(is, data);
703  if (data.isstring())
704  {
705  // Find the data type.
706  const char *colon = UT_StringWrap(data).findChar(':');
707  if (colon)
708  {
709  int typelen = colon - data.buffer();
711  type.strncpy(data.buffer(), typelen);
712  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
713 
714  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
715  }
716  }
717  else v.reset();
718  }
719 
720  static void saveData(std::ostream &os, int64 v)
721  { UTwrite(os, &v); }
722  static void saveData(std::ostream &os, bool v)
723  { int64 iv = v; UTwrite(os, &iv); }
724  static void saveData(std::ostream &os, fpreal64 v)
725  { UTwrite<fpreal64>(os, &v); }
726  static void saveData(std::ostream &os, UT_Vector2D v)
727  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
728  static void saveData(std::ostream &os, UT_Vector3D v)
729  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
730  UTwrite<fpreal64>(os, &v.z()); }
731  static void saveData(std::ostream &os, UT_Vector4D v)
732  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
733  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
734  static void saveData(std::ostream &os, UT_Matrix2D v)
736  static void saveData(std::ostream &os, UT_Matrix3D v)
738  static void saveData(std::ostream &os, UT_Matrix4D v)
740  static void saveData(std::ostream &os, UT_StringHolder s)
741  { UT_StringWrap(s).saveBinary(os); }
742  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
744  UT_OStringStream ostr;
745  if (s) s->save(ostr);
746  result = ostr.str();
747  saveData(os, result);
748  }
749  static void saveData(std::ostream &os, PRM_DataItemHandle s)
751  UT_OStringStream ostr;
752  if (s)
753  {
754  ostr << s->getDataTypeToken();
755  ostr << ":";
756  s->saveBinary(ostr);
757  }
758  result = ostr.str();
759  saveData(os, result);
760  }
761 
762 
763  void save(std::ostream &os) const
764  {
765  int32 v = version();
766  UTwrite(os, &v);
767  saveData(os, myGroup);
768  saveData(os, myGrouptype);
769  saveData(os, mySelectionIdx);
770  saveData(os, myDiff);
771  saveData(os, myCacheDeltas);
772  saveData(os, myDoPack);
773  saveData(os, myDoPackFirst);
774  saveData(os, myWeightPerPack);
775  saveData(os, myAttribs);
776  saveData(os, myPtIDAttr);
777  saveData(os, myPrimIDAttr);
778  saveData(os, myVoxelBlend);
779  saveData(os, myDoSlerp);
780  saveData(os, myMaskMode);
781  saveData(os, myMaskAttrib);
782  saveData(os, myMaskAttribMode);
783  {
784  int64 length = myNblends.entries();
785  UTwrite(os, &length);
786  for (exint i = 0; i < length; i++)
787  {
788  auto && _curentry = myNblends(i);
789  (void) _curentry;
790  saveData(os, _curentry.blend);
791  saveData(os, _curentry.blendmask);
792  saveData(os, _curentry.blendmaskattrib);
793  saveData(os, _curentry.blendmaskmode);
794 
795  }
796  }
797 
798  }
799 
800  bool load(UT_IStream &is)
801  {
802  int32 v;
803  is.bread(&v, 1);
804  if (version() != v)
805  {
806  // Fail incompatible versions
807  return false;
808  }
809  loadData(is, myGroup);
810  loadData(is, myGrouptype);
811  loadData(is, mySelectionIdx);
812  loadData(is, myDiff);
813  loadData(is, myCacheDeltas);
814  loadData(is, myDoPack);
815  loadData(is, myDoPackFirst);
816  loadData(is, myWeightPerPack);
817  loadData(is, myAttribs);
818  loadData(is, myPtIDAttr);
819  loadData(is, myPrimIDAttr);
820  loadData(is, myVoxelBlend);
821  loadData(is, myDoSlerp);
822  loadData(is, myMaskMode);
823  loadData(is, myMaskAttrib);
824  loadData(is, myMaskAttribMode);
825  {
826  int64 length;
827  is.read(&length, 1);
828  myNblends.setSize(length);
829  for (exint i = 0; i < length; i++)
830  {
831  auto && _curentry = myNblends(i);
832  (void) _curentry;
833  loadData(is, _curentry.blend);
834  loadData(is, _curentry.blendmask);
835  loadData(is, _curentry.blendmaskattrib);
836  loadData(is, _curentry.blendmaskmode);
837 
838  }
839  }
840 
841  return true;
842  }
843 
844  const UT_StringHolder & getGroup() const { return myGroup; }
845  void setGroup(const UT_StringHolder & val) { myGroup = val; }
847  {
848  SOP_Node *thissop = cookparms.getNode();
849  if (!thissop) return getGroup();
851  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
852  return result;
853  }
854  Grouptype getGrouptype() const { return Grouptype(myGrouptype); }
855  void setGrouptype(Grouptype val) { myGrouptype = int64(val); }
857  {
858  SOP_Node *thissop = cookparms.getNode();
859  if (!thissop) return getGrouptype();
860  int64 result;
861  OP_Utils::evalOpParm(result, thissop, "grouptype", cookparms.getCookTime(), 0);
862  return Grouptype(result);
863  }
864  int64 getSelectionIdx() const { return mySelectionIdx; }
865  void setSelectionIdx(int64 val) { mySelectionIdx = val; }
867  {
868  SOP_Node *thissop = cookparms.getNode();
869  if (!thissop) return getSelectionIdx();
870  int64 result;
871  OP_Utils::evalOpParm(result, thissop, "selectionidx", cookparms.getCookTime(), 0);
872  return result;
873  }
874  bool getDiff() const { return myDiff; }
875  void setDiff(bool val) { myDiff = val; }
876  bool opDiff(const SOP_NodeVerb::CookParms &cookparms) const
877  {
878  SOP_Node *thissop = cookparms.getNode();
879  if (!thissop) return getDiff();
880  bool result;
881  OP_Utils::evalOpParm(result, thissop, "diff", cookparms.getCookTime(), 0);
882  return result;
883  }
884  bool getCacheDeltas() const { return myCacheDeltas; }
885  void setCacheDeltas(bool val) { myCacheDeltas = val; }
886  bool opCacheDeltas(const SOP_NodeVerb::CookParms &cookparms) const
887  {
888  SOP_Node *thissop = cookparms.getNode();
889  if (!thissop) return getCacheDeltas();
890  bool result;
891  OP_Utils::evalOpParm(result, thissop, "cachedeltas", cookparms.getCookTime(), 0);
892  return result;
893  }
894  bool getDoPack() const { return myDoPack; }
895  void setDoPack(bool val) { myDoPack = val; }
896  bool opDoPack(const SOP_NodeVerb::CookParms &cookparms) const
897  {
898  SOP_Node *thissop = cookparms.getNode();
899  if (!thissop) return getDoPack();
900  bool result;
901  OP_Utils::evalOpParm(result, thissop, "pack", cookparms.getCookTime(), 0);
902  return result;
903  }
904  bool getDoPackFirst() const { return myDoPackFirst; }
905  void setDoPackFirst(bool val) { myDoPackFirst = val; }
906  bool opDoPackFirst(const SOP_NodeVerb::CookParms &cookparms) const
907  {
908  SOP_Node *thissop = cookparms.getNode();
909  if (!thissop) return getDoPackFirst();
910  bool result;
911  OP_Utils::evalOpParm(result, thissop, "packfirst", cookparms.getCookTime(), 0);
912  return result;
913  }
914  bool getWeightPerPack() const { return myWeightPerPack; }
915  void setWeightPerPack(bool val) { myWeightPerPack = val; }
916  bool opWeightPerPack(const SOP_NodeVerb::CookParms &cookparms) const
917  {
918  SOP_Node *thissop = cookparms.getNode();
919  if (!thissop) return getWeightPerPack();
920  bool result;
921  OP_Utils::evalOpParm(result, thissop, "weightperpack", cookparms.getCookTime(), 0);
922  return result;
923  }
924  const UT_StringHolder & getAttribs() const { return myAttribs; }
925  void setAttribs(const UT_StringHolder & val) { myAttribs = val; }
927  {
928  SOP_Node *thissop = cookparms.getNode();
929  if (!thissop) return getAttribs();
931  OP_Utils::evalOpParm(result, thissop, "attribs", cookparms.getCookTime(), 0);
932  return result;
933  }
934  const UT_StringHolder & getPtIDAttr() const { return myPtIDAttr; }
935  void setPtIDAttr(const UT_StringHolder & val) { myPtIDAttr = val; }
937  {
938  SOP_Node *thissop = cookparms.getNode();
939  if (!thissop) return getPtIDAttr();
941  OP_Utils::evalOpParm(result, thissop, "ptidattr", cookparms.getCookTime(), 0);
942  return result;
943  }
944  const UT_StringHolder & getPrimIDAttr() const { return myPrimIDAttr; }
945  void setPrimIDAttr(const UT_StringHolder & val) { myPrimIDAttr = val; }
947  {
948  SOP_Node *thissop = cookparms.getNode();
949  if (!thissop) return getPrimIDAttr();
951  OP_Utils::evalOpParm(result, thissop, "primidattr", cookparms.getCookTime(), 0);
952  return result;
953  }
954  VoxelBlend getVoxelBlend() const { return VoxelBlend(myVoxelBlend); }
955  void setVoxelBlend(VoxelBlend val) { myVoxelBlend = int64(val); }
957  {
958  SOP_Node *thissop = cookparms.getNode();
959  if (!thissop) return getVoxelBlend();
960  int64 result;
961  OP_Utils::evalOpParm(result, thissop, "voxelblend", cookparms.getCookTime(), 0);
962  return VoxelBlend(result);
963  }
964  bool getDoSlerp() const { return myDoSlerp; }
965  void setDoSlerp(bool val) { myDoSlerp = val; }
966  bool opDoSlerp(const SOP_NodeVerb::CookParms &cookparms) const
967  {
968  SOP_Node *thissop = cookparms.getNode();
969  if (!thissop) return getDoSlerp();
970  bool result;
971  OP_Utils::evalOpParm(result, thissop, "doslerp", cookparms.getCookTime(), 0);
972  return result;
973  }
974  MaskMode getMaskMode() const { return MaskMode(myMaskMode); }
975  void setMaskMode(MaskMode val) { myMaskMode = int64(val); }
977  {
978  SOP_Node *thissop = cookparms.getNode();
979  if (!thissop) return getMaskMode();
980  int64 result;
981  OP_Utils::evalOpParm(result, thissop, "maskmode", cookparms.getCookTime(), 0);
982  return MaskMode(result);
983  }
984  const UT_StringHolder & getMaskAttrib() const { return myMaskAttrib; }
985  void setMaskAttrib(const UT_StringHolder & val) { myMaskAttrib = val; }
987  {
988  SOP_Node *thissop = cookparms.getNode();
989  if (!thissop) return getMaskAttrib();
991  OP_Utils::evalOpParm(result, thissop, "maskattrib", cookparms.getCookTime(), 0);
992  return result;
993  }
994  MaskAttribMode getMaskAttribMode() const { return MaskAttribMode(myMaskAttribMode); }
995  void setMaskAttribMode(MaskAttribMode val) { myMaskAttribMode = int64(val); }
997  {
998  SOP_Node *thissop = cookparms.getNode();
999  if (!thissop) return getMaskAttribMode();
1000  int64 result;
1001  OP_Utils::evalOpParm(result, thissop, "maskattribmode", cookparms.getCookTime(), 0);
1002  return MaskAttribMode(result);
1003  }
1004  const UT_Array<Nblends> &getNblends() const { return myNblends; }
1005 void setNblends(const UT_Array<Nblends> &val) { myNblends = val; }
1006  exint opNblends(const SOP_NodeVerb::CookParms &cookparms) const
1007  {
1008  SOP_Node *thissop = cookparms.getNode();
1009  if (!thissop) return getNblends().entries();
1010  exint result;
1011  OP_Utils::evalOpParm(result, thissop, "nblends", cookparms.getCookTime(), 0);
1012  return result;
1013  }
1014  fpreal64 opNblends_blend(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1015  { return opinstNblends_blend(cookparms, &_idx); }
1016  fpreal64 opinstNblends_blend(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1017  {
1018  SOP_Node *thissop = cookparms.getNode();
1019  if (!thissop) return (myNblends(_idx[0]).blend);
1020  int _parmidx[2-1];
1021  _parmidx[1-1] = _idx[1-1] + 0;
1022 
1023  fpreal64 result;
1024  OP_Utils::evalOpParmInst(result, thissop, "blend#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1025  return (result);
1026  }
1027  int64 opNblends_blendmask(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1028  { return opinstNblends_blendmask(cookparms, &_idx); }
1029  int64 opinstNblends_blendmask(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1030  {
1031  SOP_Node *thissop = cookparms.getNode();
1032  if (!thissop) return (myNblends(_idx[0]).blendmask);
1033  int _parmidx[2-1];
1034  _parmidx[1-1] = _idx[1-1] + 0;
1035 
1036  int64 result;
1037  OP_Utils::evalOpParmInst(result, thissop, "blendmask#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1038  return (result);
1039  }
1041  { return opinstNblends_blendmaskattrib(cookparms, &_idx); }
1043  {
1044  SOP_Node *thissop = cookparms.getNode();
1045  if (!thissop) return (myNblends(_idx[0]).blendmaskattrib);
1046  int _parmidx[2-1];
1047  _parmidx[1-1] = _idx[1-1] + 0;
1048 
1050  OP_Utils::evalOpParmInst(result, thissop, "blendmaskattrib#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1051  return (result);
1052  }
1053  int64 opNblends_blendmaskmode(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1054  { return opinstNblends_blendmaskmode(cookparms, &_idx); }
1055  int64 opinstNblends_blendmaskmode(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1056  {
1057  SOP_Node *thissop = cookparms.getNode();
1058  if (!thissop) return (myNblends(_idx[0]).blendmaskmode);
1059  int _parmidx[2-1];
1060  _parmidx[1-1] = _idx[1-1] + 0;
1061 
1062  int64 result;
1063  OP_Utils::evalOpParmInst(result, thissop, "blendmaskmode#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1064  return (result);
1065  }
1066 
1067 
1068 private:
1069  UT_StringHolder myGroup;
1070  int64 myGrouptype;
1071  int64 mySelectionIdx;
1072  bool myDiff;
1073  bool myCacheDeltas;
1074  bool myDoPack;
1075  bool myDoPackFirst;
1076  bool myWeightPerPack;
1077  UT_StringHolder myAttribs;
1078  UT_StringHolder myPtIDAttr;
1079  UT_StringHolder myPrimIDAttr;
1080  int64 myVoxelBlend;
1081  bool myDoSlerp;
1082  int64 myMaskMode;
1083  UT_StringHolder myMaskAttrib;
1084  int64 myMaskAttribMode;
1085  UT_Array<Nblends> myNblends;
1086 
1087 };
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
static void loadData(UT_IStream &is, UT_Vector4I &v)
UT_StringHolder opPrimIDAttr(const SOP_NodeVerb::CookParms &cookparms) const
bool operator==(const Nblends &src) const
static void loadData(UT_IStream &is, UT_Vector3I &v)
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glcorearb.h:2540
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
bool operator!=(const SOP_BlendShapes_2_0Parms &src) const
bool opWeightPerPack(const SOP_NodeVerb::CookParms &cookparms) const
bool opDoPackFirst(const SOP_NodeVerb::CookParms &cookparms) const
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
static void saveData(std::ostream &os, UT_Matrix3D v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
void setAttribs(const UT_StringHolder &val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
T clampMaxValue(fpreal maxvalue, const T &src) const
Definition: OP_NodeParms.h:315
const UT_StringHolder & getPrimIDAttr() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
void
Definition: png.h:1083
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
ParmType getNestParmType(TempIndex fieldnum) const override
const GLdouble * v
Definition: glcorearb.h:837
VoxelBlend opVoxelBlend(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, PRM_DataItemHandle s)
fpreal getTime() const
Definition: OP_Context.h:62
UT_StringHolder opMaskAttrib(const SOP_NodeVerb::CookParms &cookparms) const
UT_String makeQuotedString(char delimiter='\'', bool escape_nonprinting=false) const
const OP_Context & context() const
Definition: OP_NodeParms.h:97
exint getNestNumParms(TempIndex idx) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:667
int64 exint
Definition: SYS_Types.h:125
MaskAttribMode getMaskAttribMode() const
SYS_FORCE_INLINE const char * buffer() const
GLdouble s
Definition: glad.h:3009
static void saveData(std::ostream &os, UT_Matrix2D v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
GLuint GLsizei GLsizei * length
Definition: glcorearb.h:795
int64 opinstNblends_blendmaskmode(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
static void saveData(std::ostream &os, UT_Vector3D v)
bool opDoSlerp(const SOP_NodeVerb::CookParms &cookparms) const
An output stream object that owns its own string buffer storage.
static void loadData(UT_IStream &is, UT_Vector4D &v)
**But if you need a result
Definition: thread.h:613
static void loadData(UT_IStream &is, UT_Matrix4D &v)
T clampMinValue(fpreal minvalue, const T &src) const
Definition: OP_NodeParms.h:308
static void loadData(UT_IStream &is, UT_Matrix2D &v)
exint nodeIdx() const
Definition: OP_NodeParms.h:95
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
static void loadData(UT_IStream &is, UT_Matrix3D &v)
static void loadData(UT_IStream &is, bool &v)
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
const UT_StringHolder & getGroup() const
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
bool opDiff(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
GLuint GLsizei const GLuint const GLintptr * offsets
Definition: glcorearb.h:2621
double fpreal64
Definition: SYS_Types.h:201
fpreal64 opinstNblends_blend(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
vint4 blend(const vint4 &a, const vint4 &b, const vbool4 &mask)
Definition: simd.h:4784
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
void setMaskAttrib(const UT_StringHolder &val)
const char * getNestParmName(TempIndex fieldnum) const override
MaskMode opMaskMode(const SOP_NodeVerb::CookParms &cookparms) const
void setNblends(const UT_Array< Nblends > &val)
exint length() const
const UT_StringHolder & getAttribs() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) 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
static void loadData(UT_IStream &is, fpreal64 &v)
static void saveData(std::ostream &os, UT_StringHolder s)
MaskAttribMode opMaskAttribMode(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:495
fpreal64 opNblends_blend(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
bool isParmColorRamp(exint idx) const override
UT_StringHolder opAttribs(const SOP_NodeVerb::CookParms &cookparms) const
exint read(bool *array, exint sz=1)
Definition: UT_IStream.h:276
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
UT_StringHolder createString(const UT_Array< Nblends > &list) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
const UT_StringHolder & getMaskAttrib() const
virtual void evalOpParmInst(int64 &v, NodeIdx node, const char *parmname, const int *inst, const int *offsets, fpreal time, DEP_MicroNode *depnode, int nestlevel=1) const =0
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
long long int64
Definition: SYS_Types.h:116
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
static void saveData(std::ostream &os, bool v)
static void saveData(std::ostream &os, fpreal64 v)
static void saveData(std::ostream &os, UT_Matrix4D v)
void save(std::ostream &os) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
UT_StringHolder opinstNblends_blendmaskattrib(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
SYS_FORCE_INLINE void strcat(const char *src)
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:296
static void loadData(UT_IStream &is, UT_Vector2I &v)
void setMaskAttribMode(MaskAttribMode val)
static void saveData(std::ostream &os, UT_Vector4D v)
GT_API const UT_StringHolder version
exint entries() const
Alias of size(). size() is preferred.
Definition: UT_Array.h:648
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
static void loadData(UT_IStream &is, UT_Vector2D &v)
void setPrimIDAttr(const UT_StringHolder &val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
int int appendSprintf(const char *fmt,...) SYS_PRINTF_CHECK_ATTRIBUTE(2
int64 opinstNblends_blendmask(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
bool operator==(const SOP_BlendShapes_2_0Parms &src) const
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
void coerceValue(T &result, const S &src) const
Definition: OP_NodeParms.h:301
Grouptype opGrouptype(const SOP_NodeVerb::CookParms &cookparms) const
int64 opSelectionIdx(const SOP_NodeVerb::CookParms &cookparms) const
bool opDoPack(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 fpreal
Definition: SYS_Types.h:277
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
void loadFromOpSubclass(const LoadParms &loadparms) override
bool operator!=(const Nblends &src) const
void copyFrom(const OP_NodeParms *src) override
Utility class for containing a color ramp.
Definition: UT_Ramp.h:88
UT_StringHolder opGroup(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
SYS_FORCE_INLINE void append(char character)
static void loadData(UT_IStream &is, UT_Vector3D &v)
static void saveData(std::ostream &os, int64 v)
GLuint GLfloat * val
Definition: glcorearb.h:1608
#define SOP_API
Definition: SOP_API.h:10
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
static void loadData(UT_IStream &is, int64 &v)
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:361
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
const char * findChar(int c) const
Definition: UT_String.h:1385
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
Definition: core.h:1131
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
bool opCacheDeltas(const SOP_NodeVerb::CookParms &cookparms) const
const UT_Array< Nblends > & getNblends() const
GLboolean r
Definition: glcorearb.h:1222
UT_StringHolder opNblends_blendmaskattrib(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
int64 opNblends_blendmask(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
UT_StringHolder opPtIDAttr(const SOP_NodeVerb::CookParms &cookparms) const
type
Definition: core.h:1059
exint opNblends(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_StringHolder &v)
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: PRM_Parm.h:89
static void saveData(std::ostream &os, UT_Vector2D v)
void setGroup(const UT_StringHolder &val)
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
SYS_FORCE_INLINE bool isstring() const
const UT_StringHolder & getPtIDAttr() const
OP_NodeParms & operator=(const OP_NodeParms &)=default
int64 opNblends_blendmaskmode(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
GLenum src
Definition: glcorearb.h:1793
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663
void setPtIDAttr(const UT_StringHolder &val)