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 
35  getToken(Grouptype enum_value)
36  {
37  using namespace UT::Literal;
38  switch (enum_value) {
39  case Grouptype::GUESS: return "guess"_sh;
40  case Grouptype::VERTICES: return "vertices"_sh;
41  case Grouptype::EDGES: return "edges"_sh;
42  case Grouptype::POINTS: return "points"_sh;
43  case Grouptype::PRIMS: return "prims"_sh;
44  default: UT_ASSERT(false); return ""_sh;
45  }
46  }
47 
48  enum class VoxelBlend
49  {
50  NONE = 0,
53  };
54 
56  getToken(VoxelBlend enum_value)
57  {
58  using namespace UT::Literal;
59  switch (enum_value) {
60  case VoxelBlend::NONE: return "none"_sh;
61  case VoxelBlend::BYGRIDINDEX: return "bygridindex"_sh;
62  case VoxelBlend::BYVOXELPOS: return "byvoxelpos"_sh;
63  default: UT_ASSERT(false); return ""_sh;
64  }
65  }
66 
67  enum class MaskMode
68  {
69  NONE = 0,
72  };
73 
75  getToken(MaskMode enum_value)
76  {
77  using namespace UT::Literal;
78  switch (enum_value) {
79  case MaskMode::NONE: return "none"_sh;
80  case MaskMode::SETFROMATTRIB: return "setfromattrib"_sh;
81  case MaskMode::SCALEFROMATTRIB: return "scalefromattrib"_sh;
82  default: UT_ASSERT(false); return ""_sh;
83  }
84  }
85 
86  enum class MaskAttribMode
87  {
88  EACH = 0,
89  FIRST
90  };
91 
93  getToken(MaskAttribMode enum_value)
94  {
95  using namespace UT::Literal;
96  switch (enum_value) {
97  case MaskAttribMode::EACH: return "each"_sh;
98  case MaskAttribMode::FIRST: return "first"_sh;
99  default: UT_ASSERT(false); return ""_sh;
100  }
101  }
102 
103  enum class BlendMask
104  {
105  NONE = 0,
106  DEFAULT,
107  CUSTOM,
109  };
110 
112  getToken(BlendMask enum_value)
113  {
114  using namespace UT::Literal;
115  switch (enum_value) {
116  case BlendMask::NONE: return "none"_sh;
117  case BlendMask::DEFAULT: return "default"_sh;
118  case BlendMask::CUSTOM: return "custom"_sh;
119  case BlendMask::CUSTOMFIRST: return "customfirst"_sh;
120  default: UT_ASSERT(false); return ""_sh;
121  }
122  }
123 
124  enum class BlendMaskMode
125  {
126  SETFROMATTRIB = 0,
128  };
129 
131  getToken(BlendMaskMode enum_value)
132  {
133  using namespace UT::Literal;
134  switch (enum_value) {
135  case BlendMaskMode::SETFROMATTRIB: return "setfromattrib"_sh;
136  case BlendMaskMode::SCALEFROMATTRIB: return "scalefromattrib"_sh;
137  default: UT_ASSERT(false); return ""_sh;
138  }
139  }
140 
141 }
142 
143 
145 {
146 public:
147  static int version() { return 1; }
148  struct Nblends
149  {
154 
155 
157  {
158  blend = 0;
159  blendmask = 1;
160  blendmaskattrib = "mask"_UTsh;
161  blendmaskmode = 1;
162 
163  }
164 
165  bool operator==(const Nblends &src) const
166  {
167  if (blend != src.blend) return false;
168  if (blendmask != src.blendmask) return false;
169  if (blendmaskattrib != src.blendmaskattrib) return false;
170  if (blendmaskmode != src.blendmaskmode) return false;
171 
172  return true;
173  }
174  bool operator!=(const Nblends &src) const
175  {
176  return !operator==(src);
177  }
178 
179  };
180 
182  {
184 
185  buf.strcat("[ ");
186  for (int i = 0; i < list.entries(); i++)
187  {
188  if (i)
189  buf.strcat(", ");
190  buf.strcat("( ");
191  buf.append("");
192  buf.appendSprintf("%f", (list(i).blend));
193  buf.append(", ");
194  buf.appendSprintf("%d", (int) list(i).blendmask);
195  buf.append(", ");
196  { UT_String tmp; tmp = UT_StringWrap(list(i).blendmaskattrib).makeQuotedString('"'); buf.strcat(tmp); }
197  buf.append(", ");
198  buf.appendSprintf("%d", (int) list(i).blendmaskmode);
199 
200  buf.strcat(" )");
201  }
202  buf.strcat(" ]");
203 
205  return result;
206  }
207 
209  {
210  myGroup = ""_UTsh;
211  myGrouptype = 0;
212  mySelectionIdx = 0;
213  myDiff = true;
214  myCacheDeltas = false;
215  myDoPack = false;
216  myDoPackFirst = true;
217  myWeightPerPack = true;
218  myAttribs = "*"_UTsh;
219  myPtIDAttr = ""_UTsh;
220  myPrimIDAttr = ""_UTsh;
221  myVoxelBlend = 0;
222  myDoSlerp = true;
223  myMaskMode = 0;
224  myMaskAttrib = "mask"_UTsh;
225  myMaskAttribMode = 0;
226  myNblends.setSize(2);
227 
228  }
229 
230  explicit SOP_BlendShapes_2_0Parms(const SOP_BlendShapes_2_0Parms &) = default;
232  SOP_BlendShapes_2_0Parms(SOP_BlendShapes_2_0Parms &&) noexcept = default;
233  SOP_BlendShapes_2_0Parms &operator=(SOP_BlendShapes_2_0Parms &&) noexcept = default;
234 
236 
238  {
239  if (myGroup != src.myGroup) return false;
240  if (myGrouptype != src.myGrouptype) return false;
241  if (mySelectionIdx != src.mySelectionIdx) return false;
242  if (myDiff != src.myDiff) return false;
243  if (myCacheDeltas != src.myCacheDeltas) return false;
244  if (myDoPack != src.myDoPack) return false;
245  if (myDoPackFirst != src.myDoPackFirst) return false;
246  if (myWeightPerPack != src.myWeightPerPack) return false;
247  if (myAttribs != src.myAttribs) return false;
248  if (myPtIDAttr != src.myPtIDAttr) return false;
249  if (myPrimIDAttr != src.myPrimIDAttr) return false;
250  if (myVoxelBlend != src.myVoxelBlend) return false;
251  if (myDoSlerp != src.myDoSlerp) return false;
252  if (myMaskMode != src.myMaskMode) return false;
253  if (myMaskAttrib != src.myMaskAttrib) return false;
254  if (myMaskAttribMode != src.myMaskAttribMode) return false;
255  if (myNblends != src.myNblends) return false;
256 
257  return true;
258  }
260  {
261  return !operator==(src);
262  }
269 
270 
271 
272  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
273  {
274  myGroup = ""_UTsh;
275  if (true)
276  graph->evalOpParm(myGroup, nodeidx, "group", time, 0);
277  myGrouptype = 0;
278  if (true)
279  graph->evalOpParm(myGrouptype, nodeidx, "grouptype", time, 0);
280  mySelectionIdx = 0;
281  if (true)
282  graph->evalOpParm(mySelectionIdx, nodeidx, "selectionidx", time, 0);
283  myDiff = true;
284  if (true)
285  graph->evalOpParm(myDiff, nodeidx, "diff", time, 0);
286  myCacheDeltas = false;
287  if (true && ( (true&&!(((getDiff()==0)))) ) )
288  graph->evalOpParm(myCacheDeltas, nodeidx, "cachedeltas", time, 0);
289  myDoPack = false;
290  if (true)
291  graph->evalOpParm(myDoPack, nodeidx, "pack", time, 0);
292  myDoPackFirst = true;
293  if (true && ( (true&&!(((getDoPack()==0)))) ) )
294  graph->evalOpParm(myDoPackFirst, nodeidx, "packfirst", time, 0);
295  myWeightPerPack = true;
296  if (true && ( (true&&!(((getDoPack()==0)))) ) )
297  graph->evalOpParm(myWeightPerPack, nodeidx, "weightperpack", time, 0);
298  myAttribs = "*"_UTsh;
299  if (true)
300  graph->evalOpParm(myAttribs, nodeidx, "attribs", time, 0);
301  myPtIDAttr = ""_UTsh;
302  if (true)
303  graph->evalOpParm(myPtIDAttr, nodeidx, "ptidattr", time, 0);
304  myPrimIDAttr = ""_UTsh;
305  if (true)
306  graph->evalOpParm(myPrimIDAttr, nodeidx, "primidattr", time, 0);
307  myVoxelBlend = 0;
308  if (true)
309  graph->evalOpParm(myVoxelBlend, nodeidx, "voxelblend", time, 0);
310  myDoSlerp = true;
311  if (true)
312  graph->evalOpParm(myDoSlerp, nodeidx, "doslerp", time, 0);
313  myMaskMode = 0;
314  if (true)
315  graph->evalOpParm(myMaskMode, nodeidx, "maskmode", time, 0);
316  myMaskAttrib = "mask"_UTsh;
317  if (true && ( (true&&!(((int64(getMaskMode())==0)))) ) )
318  graph->evalOpParm(myMaskAttrib, nodeidx, "maskattrib", time, 0);
319  myMaskAttribMode = 0;
320  if (true && ( (true&&!(((int64(getMaskMode())==0)))) ) )
321  graph->evalOpParm(myMaskAttribMode, nodeidx, "maskattribmode", time, 0);
322  if (true && ( (!(((int64(getMaskMode())<0)))) ) )
323  {
324  int64 length = 0;
325  graph->evalOpParm(length, nodeidx, "nblends", time, 0);
326  if (length < 0) length = 0;
327  myNblends.setSize(length);
328  for (exint i = 0; i < length; i++)
329  {
330  int parmidx[1];
331  int offsets[1];
332  parmidx[0] = i+0;
333  offsets[0] = 0;
334  auto && _curentry = myNblends(i);
335  (void) _curentry;
336  _curentry.blend = 0;
337  if (true && ( (!(((int64(getMaskMode())<0)))) ) && ( (true&&!(((int64(getMaskMode())<0)))) ) )
338  graph->evalOpParmInst(_curentry.blend, nodeidx, "blend#", parmidx, offsets, time, 0, 2-1);
339  _curentry.blendmask = 1;
340  if (true && ( (!(((int64(getMaskMode())<0)))) ) && ( (true&&!(((int64(getMaskMode())<0))||((int64(getMaskMode())==0)))) ) )
341  graph->evalOpParmInst(_curentry.blendmask, nodeidx, "blendmask#", parmidx, offsets, time, 0, 2-1);
342  _curentry.blendmaskattrib = "mask"_UTsh;
343  if (true && ( (!(((int64(getMaskMode())<0)))) ) && ( (true&&!(((int64(getMaskMode())<0))||((int64(getMaskMode())==0))||((_curentry.blendmask==0))||((_curentry.blendmask==1)))) ) )
344  graph->evalOpParmInst(_curentry.blendmaskattrib, nodeidx, "blendmaskattrib#", parmidx, offsets, time, 0, 2-1);
345  _curentry.blendmaskmode = 1;
346  if (true && ( (!(((int64(getMaskMode())<0)))) ) && ( (true&&!(((int64(getMaskMode())<0))||((int64(getMaskMode())==0))||((_curentry.blendmask==0))||((_curentry.blendmask==1)))) ) )
347  graph->evalOpParmInst(_curentry.blendmaskmode, nodeidx, "blendmaskmode#", parmidx, offsets, time, 0, 2-1);
348 
349  }
350  }
351  else
352  myNblends.clear();
353 
354  }
355 
356 
357  void loadFromOpSubclass(const LoadParms &loadparms) override
358  {
359  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
360  }
361 
362 
363  void copyFrom(const OP_NodeParms *src) override
364  {
365  *this = *((const SOP_BlendShapes_2_0Parms *)src);
366  }
367 
368  template <typename T>
369  void
370  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
371  {
372  if (idx.size() < 1)
373  return;
374  UT_ASSERT(idx.size() == instance.size()+1);
375  if (idx.size() != instance.size()+1)
376  return;
377  switch (idx[0])
378  {
379  case 0:
380  coerceValue(value, myGroup);
381  break;
382  case 1:
383  coerceValue(value, myGrouptype);
384  break;
385  case 2:
386  coerceValue(value, mySelectionIdx);
387  break;
388  case 3:
389  coerceValue(value, myDiff);
390  break;
391  case 4:
392  coerceValue(value, myCacheDeltas);
393  break;
394  case 5:
395  coerceValue(value, myDoPack);
396  break;
397  case 6:
398  coerceValue(value, myDoPackFirst);
399  break;
400  case 7:
401  coerceValue(value, myWeightPerPack);
402  break;
403  case 8:
404  coerceValue(value, myAttribs);
405  break;
406  case 9:
407  coerceValue(value, myPtIDAttr);
408  break;
409  case 10:
410  coerceValue(value, myPrimIDAttr);
411  break;
412  case 11:
413  coerceValue(value, myVoxelBlend);
414  break;
415  case 12:
416  coerceValue(value, myDoSlerp);
417  break;
418  case 13:
419  coerceValue(value, myMaskMode);
420  break;
421  case 14:
422  coerceValue(value, myMaskAttrib);
423  break;
424  case 15:
425  coerceValue(value, myMaskAttribMode);
426  break;
427  case 16:
428  if (idx.size() == 1)
429  coerceValue(value, myNblends.entries());
430  else if (instance[0] < myNblends.entries())
431  {
432  auto && _data = myNblends(instance[0]);
433  switch (idx[1])
434  {
435  case 0:
436  coerceValue(value, _data.blend);
437  break;
438  case 1:
439  coerceValue(value, _data.blendmask);
440  break;
441  case 2:
442  coerceValue(value, _data.blendmaskattrib);
443  break;
444  case 3:
445  coerceValue(value, _data.blendmaskmode);
446  break;
447 
448  }
449  }
450  break;
451 
452  }
453  }
454 
455  bool isParmColorRamp(exint idx) const override
456  {
457  switch (idx)
458  {
459 
460  }
461  return false;
462  }
463 
464  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
465  { doGetParmValue(idx, instance, value); }
466  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
467  { doGetParmValue(idx, instance, value); }
468  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
469  { doGetParmValue(idx, instance, value); }
470  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
471  { doGetParmValue(idx, instance, value); }
472  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
473  { doGetParmValue(idx, instance, value); }
474  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
475  { doGetParmValue(idx, instance, value); }
476  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
477  { doGetParmValue(idx, instance, value); }
478  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
479  { doGetParmValue(idx, instance, value); }
480  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
481  { doGetParmValue(idx, instance, value); }
482  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
483  { doGetParmValue(idx, instance, value); }
484  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
485  { doGetParmValue(idx, instance, value); }
486 
487  template <typename T>
488  void
489  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
490  {
491  if (idx.size() < 1)
492  return;
493  UT_ASSERT(idx.size() == instance.size()+1);
494  if (idx.size() != instance.size()+1)
495  return;
496  switch (idx[0])
497  {
498  case 0:
499  coerceValue(myGroup, ( ( value ) ));
500  break;
501  case 1:
502  coerceValue(myGrouptype, clampMinValue(0, clampMaxValue(4, value ) ));
503  break;
504  case 2:
505  coerceValue(mySelectionIdx, ( ( value ) ));
506  break;
507  case 3:
508  coerceValue(myDiff, ( ( value ) ));
509  break;
510  case 4:
511  coerceValue(myCacheDeltas, ( ( value ) ));
512  break;
513  case 5:
514  coerceValue(myDoPack, ( ( value ) ));
515  break;
516  case 6:
517  coerceValue(myDoPackFirst, ( ( value ) ));
518  break;
519  case 7:
520  coerceValue(myWeightPerPack, ( ( value ) ));
521  break;
522  case 8:
523  coerceValue(myAttribs, ( ( value ) ));
524  break;
525  case 9:
526  coerceValue(myPtIDAttr, ( ( value ) ));
527  break;
528  case 10:
529  coerceValue(myPrimIDAttr, ( ( value ) ));
530  break;
531  case 11:
532  coerceValue(myVoxelBlend, clampMinValue(0, clampMaxValue(2, value ) ));
533  break;
534  case 12:
535  coerceValue(myDoSlerp, ( ( value ) ));
536  break;
537  case 13:
538  coerceValue(myMaskMode, clampMinValue(0, clampMaxValue(2, value ) ));
539  break;
540  case 14:
541  coerceValue(myMaskAttrib, ( ( value ) ));
542  break;
543  case 15:
544  coerceValue(myMaskAttribMode, clampMinValue(0, clampMaxValue(1, value ) ));
545  break;
546  case 16:
547  if (idx.size() == 1)
548  {
549  exint newsize;
550  coerceValue(newsize, value);
551  if (newsize < 0) newsize = 0;
552  myNblends.setSize(newsize);
553  }
554  else
555  {
556  if (instance[0] < 0)
557  return;
558  myNblends.setSizeIfNeeded(instance[0]+1);
559  auto && _data = myNblends(instance[0]);
560  switch (idx[1])
561  {
562  case 0:
563  coerceValue(_data.blend, value);
564  break;
565  case 1:
566  coerceValue(_data.blendmask, value);
567  break;
568  case 2:
569  coerceValue(_data.blendmaskattrib, value);
570  break;
571  case 3:
572  coerceValue(_data.blendmaskmode, value);
573  break;
574 
575  }
576  }
577  break;
578 
579  }
580  }
581 
582  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
583  { doSetParmValue(idx, instance, value); }
584  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
585  { doSetParmValue(idx, instance, value); }
586  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
587  { doSetParmValue(idx, instance, value); }
588  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
589  { doSetParmValue(idx, instance, value); }
590  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
591  { doSetParmValue(idx, instance, value); }
592  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
593  { doSetParmValue(idx, instance, value); }
594  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
595  { doSetParmValue(idx, instance, value); }
596  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
597  { doSetParmValue(idx, instance, value); }
598  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
599  { doSetParmValue(idx, instance, value); }
600  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
601  { doSetParmValue(idx, instance, value); }
602  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
603  { doSetParmValue(idx, instance, value); }
604 
605  exint getNestNumParms(TempIndex idx) const override
606  {
607  if (idx.size() == 0)
608  return 17;
609  switch (idx[0])
610  {
611  case 16:
612  return 4;
613 
614  }
615  // Invalid
616  return 0;
617  }
618 
619  const char *getNestParmName(TempIndex fieldnum) const override
620  {
621  if (fieldnum.size() < 1)
622  return 0;
623  switch (fieldnum[0])
624  {
625  case 0:
626  return "group";
627  case 1:
628  return "grouptype";
629  case 2:
630  return "selectionidx";
631  case 3:
632  return "diff";
633  case 4:
634  return "cachedeltas";
635  case 5:
636  return "pack";
637  case 6:
638  return "packfirst";
639  case 7:
640  return "weightperpack";
641  case 8:
642  return "attribs";
643  case 9:
644  return "ptidattr";
645  case 10:
646  return "primidattr";
647  case 11:
648  return "voxelblend";
649  case 12:
650  return "doslerp";
651  case 13:
652  return "maskmode";
653  case 14:
654  return "maskattrib";
655  case 15:
656  return "maskattribmode";
657  case 16:
658  if (fieldnum.size() == 1)
659  return "nblends";
660  switch (fieldnum[1])
661  {
662  case 0:
663  return "blend#";
664  case 1:
665  return "blendmask#";
666  case 2:
667  return "blendmaskattrib#";
668  case 3:
669  return "blendmaskmode#";
670 
671  }
672  return 0;
673 
674  }
675  return 0;
676  }
677 
678  ParmType getNestParmType(TempIndex fieldnum) const override
679  {
680  if (fieldnum.size() < 1)
681  return PARM_UNSUPPORTED;
682  switch (fieldnum[0])
683  {
684  case 0:
685  return PARM_STRING;
686  case 1:
687  return PARM_INTEGER;
688  case 2:
689  return PARM_INTEGER;
690  case 3:
691  return PARM_INTEGER;
692  case 4:
693  return PARM_INTEGER;
694  case 5:
695  return PARM_INTEGER;
696  case 6:
697  return PARM_INTEGER;
698  case 7:
699  return PARM_INTEGER;
700  case 8:
701  return PARM_STRING;
702  case 9:
703  return PARM_STRING;
704  case 10:
705  return PARM_STRING;
706  case 11:
707  return PARM_INTEGER;
708  case 12:
709  return PARM_INTEGER;
710  case 13:
711  return PARM_INTEGER;
712  case 14:
713  return PARM_STRING;
714  case 15:
715  return PARM_INTEGER;
716  case 16:
717  if (fieldnum.size() == 1)
718  return PARM_MULTIPARM;
719  switch (fieldnum[1])
720  {
721  case 0:
722  return PARM_FLOAT;
723  case 1:
724  return PARM_INTEGER;
725  case 2:
726  return PARM_STRING;
727  case 3:
728  return PARM_INTEGER;
729 
730  }
731  return PARM_UNSUPPORTED;
732 
733  }
734  return PARM_UNSUPPORTED;
735  }
736 
737  // Boiler plate to load individual types.
738  static void loadData(UT_IStream &is, int64 &v)
739  { is.bread(&v, 1); }
740  static void loadData(UT_IStream &is, bool &v)
741  { int64 iv; is.bread(&iv, 1); v = iv; }
742  static void loadData(UT_IStream &is, fpreal64 &v)
743  { is.bread<fpreal64>(&v, 1); }
744  static void loadData(UT_IStream &is, UT_Vector2D &v)
745  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
746  static void loadData(UT_IStream &is, UT_Vector3D &v)
747  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
748  is.bread<fpreal64>(&v.z(), 1); }
749  static void loadData(UT_IStream &is, UT_Vector4D &v)
750  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
751  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
752  static void loadData(UT_IStream &is, UT_Matrix2D &v)
753  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
754  static void loadData(UT_IStream &is, UT_Matrix3D &v)
755  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
756  static void loadData(UT_IStream &is, UT_Matrix4D &v)
757  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
758  static void loadData(UT_IStream &is, UT_Vector2I &v)
759  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
760  static void loadData(UT_IStream &is, UT_Vector3I &v)
761  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
762  is.bread<int64>(&v.z(), 1); }
763  static void loadData(UT_IStream &is, UT_Vector4I &v)
764  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
765  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
767  { is.bread(v); }
769  { UT_StringHolder rampdata;
770  loadData(is, rampdata);
771  if (rampdata.isstring())
772  {
773  v.reset(new UT_Ramp());
774  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
775  v->load(istr);
776  }
777  else v.reset();
778  }
781  loadData(is, data);
782  if (data.isstring())
783  {
784  // Find the data type.
785  const char *colon = UT_StringWrap(data).findChar(':');
786  if (colon)
787  {
788  int typelen = colon - data.buffer();
790  type.strncpy(data.buffer(), typelen);
791  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
792 
793  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
794  }
795  }
796  else v.reset();
797  }
798 
799  static void saveData(std::ostream &os, int64 v)
800  { UTwrite(os, &v); }
801  static void saveData(std::ostream &os, bool v)
802  { int64 iv = v; UTwrite(os, &iv); }
803  static void saveData(std::ostream &os, fpreal64 v)
804  { UTwrite<fpreal64>(os, &v); }
805  static void saveData(std::ostream &os, UT_Vector2D v)
806  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
807  static void saveData(std::ostream &os, UT_Vector3D v)
808  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
809  UTwrite<fpreal64>(os, &v.z()); }
810  static void saveData(std::ostream &os, UT_Vector4D v)
811  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
812  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
813  static void saveData(std::ostream &os, UT_Matrix2D v)
815  static void saveData(std::ostream &os, UT_Matrix3D v)
817  static void saveData(std::ostream &os, UT_Matrix4D v)
819  static void saveData(std::ostream &os, UT_StringHolder s)
820  { UT_StringWrap(s).saveBinary(os); }
821  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
823  UT_OStringStream ostr;
824  if (s) s->save(ostr);
825  result = ostr.str();
826  saveData(os, result);
827  }
828  static void saveData(std::ostream &os, PRM_DataItemHandle s)
830  UT_OStringStream ostr;
831  if (s)
832  {
833  ostr << s->getDataTypeToken();
834  ostr << ":";
835  s->saveBinary(ostr);
836  }
837  result = ostr.str();
838  saveData(os, result);
839  }
840 
841 
842  void save(std::ostream &os) const
843  {
844  int32 v = version();
845  UTwrite(os, &v);
846  saveData(os, myGroup);
847  saveData(os, myGrouptype);
848  saveData(os, mySelectionIdx);
849  saveData(os, myDiff);
850  saveData(os, myCacheDeltas);
851  saveData(os, myDoPack);
852  saveData(os, myDoPackFirst);
853  saveData(os, myWeightPerPack);
854  saveData(os, myAttribs);
855  saveData(os, myPtIDAttr);
856  saveData(os, myPrimIDAttr);
857  saveData(os, myVoxelBlend);
858  saveData(os, myDoSlerp);
859  saveData(os, myMaskMode);
860  saveData(os, myMaskAttrib);
861  saveData(os, myMaskAttribMode);
862  {
863  int64 length = myNblends.entries();
864  UTwrite(os, &length);
865  for (exint i = 0; i < length; i++)
866  {
867  auto && _curentry = myNblends(i);
868  (void) _curentry;
869  saveData(os, _curentry.blend);
870  saveData(os, _curentry.blendmask);
871  saveData(os, _curentry.blendmaskattrib);
872  saveData(os, _curentry.blendmaskmode);
873 
874  }
875  }
876 
877  }
878 
879  bool load(UT_IStream &is)
880  {
881  int32 v;
882  is.bread(&v, 1);
883  if (version() != v)
884  {
885  // Fail incompatible versions
886  return false;
887  }
888  loadData(is, myGroup);
889  loadData(is, myGrouptype);
890  loadData(is, mySelectionIdx);
891  loadData(is, myDiff);
892  loadData(is, myCacheDeltas);
893  loadData(is, myDoPack);
894  loadData(is, myDoPackFirst);
895  loadData(is, myWeightPerPack);
896  loadData(is, myAttribs);
897  loadData(is, myPtIDAttr);
898  loadData(is, myPrimIDAttr);
899  loadData(is, myVoxelBlend);
900  loadData(is, myDoSlerp);
901  loadData(is, myMaskMode);
902  loadData(is, myMaskAttrib);
903  loadData(is, myMaskAttribMode);
904  {
905  int64 length;
906  is.read(&length, 1);
907  myNblends.setSize(length);
908  for (exint i = 0; i < length; i++)
909  {
910  auto && _curentry = myNblends(i);
911  (void) _curentry;
912  loadData(is, _curentry.blend);
913  loadData(is, _curentry.blendmask);
914  loadData(is, _curentry.blendmaskattrib);
915  loadData(is, _curentry.blendmaskmode);
916 
917  }
918  }
919 
920  return true;
921  }
922 
923  const UT_StringHolder & getGroup() const { return myGroup; }
924  void setGroup(const UT_StringHolder & val) { myGroup = val; }
926  {
927  SOP_Node *thissop = cookparms.getNode();
928  if (!thissop) return getGroup();
930  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
931  return result;
932  }
933  Grouptype getGrouptype() const { return Grouptype(myGrouptype); }
934  void setGrouptype(Grouptype val) { myGrouptype = int64(val); }
936  {
937  SOP_Node *thissop = cookparms.getNode();
938  if (!thissop) return getGrouptype();
939  int64 result;
940  OP_Utils::evalOpParm(result, thissop, "grouptype", cookparms.getCookTime(), 0);
941  return Grouptype(result);
942  }
943  int64 getSelectionIdx() const { return mySelectionIdx; }
944  void setSelectionIdx(int64 val) { mySelectionIdx = val; }
946  {
947  SOP_Node *thissop = cookparms.getNode();
948  if (!thissop) return getSelectionIdx();
949  int64 result;
950  OP_Utils::evalOpParm(result, thissop, "selectionidx", cookparms.getCookTime(), 0);
951  return result;
952  }
953  bool getDiff() const { return myDiff; }
954  void setDiff(bool val) { myDiff = val; }
955  bool opDiff(const SOP_NodeVerb::CookParms &cookparms) const
956  {
957  SOP_Node *thissop = cookparms.getNode();
958  if (!thissop) return getDiff();
959  bool result;
960  OP_Utils::evalOpParm(result, thissop, "diff", cookparms.getCookTime(), 0);
961  return result;
962  }
963  bool getCacheDeltas() const { return myCacheDeltas; }
964  void setCacheDeltas(bool val) { myCacheDeltas = val; }
965  bool opCacheDeltas(const SOP_NodeVerb::CookParms &cookparms) const
966  {
967  SOP_Node *thissop = cookparms.getNode();
968  if (!thissop) return getCacheDeltas();
969  bool result;
970  OP_Utils::evalOpParm(result, thissop, "cachedeltas", cookparms.getCookTime(), 0);
971  return result;
972  }
973  bool getDoPack() const { return myDoPack; }
974  void setDoPack(bool val) { myDoPack = val; }
975  bool opDoPack(const SOP_NodeVerb::CookParms &cookparms) const
976  {
977  SOP_Node *thissop = cookparms.getNode();
978  if (!thissop) return getDoPack();
979  bool result;
980  OP_Utils::evalOpParm(result, thissop, "pack", cookparms.getCookTime(), 0);
981  return result;
982  }
983  bool getDoPackFirst() const { return myDoPackFirst; }
984  void setDoPackFirst(bool val) { myDoPackFirst = val; }
985  bool opDoPackFirst(const SOP_NodeVerb::CookParms &cookparms) const
986  {
987  SOP_Node *thissop = cookparms.getNode();
988  if (!thissop) return getDoPackFirst();
989  bool result;
990  OP_Utils::evalOpParm(result, thissop, "packfirst", cookparms.getCookTime(), 0);
991  return result;
992  }
993  bool getWeightPerPack() const { return myWeightPerPack; }
994  void setWeightPerPack(bool val) { myWeightPerPack = val; }
995  bool opWeightPerPack(const SOP_NodeVerb::CookParms &cookparms) const
996  {
997  SOP_Node *thissop = cookparms.getNode();
998  if (!thissop) return getWeightPerPack();
999  bool result;
1000  OP_Utils::evalOpParm(result, thissop, "weightperpack", cookparms.getCookTime(), 0);
1001  return result;
1002  }
1003  const UT_StringHolder & getAttribs() const { return myAttribs; }
1004  void setAttribs(const UT_StringHolder & val) { myAttribs = val; }
1006  {
1007  SOP_Node *thissop = cookparms.getNode();
1008  if (!thissop) return getAttribs();
1010  OP_Utils::evalOpParm(result, thissop, "attribs", cookparms.getCookTime(), 0);
1011  return result;
1012  }
1013  const UT_StringHolder & getPtIDAttr() const { return myPtIDAttr; }
1014  void setPtIDAttr(const UT_StringHolder & val) { myPtIDAttr = val; }
1016  {
1017  SOP_Node *thissop = cookparms.getNode();
1018  if (!thissop) return getPtIDAttr();
1020  OP_Utils::evalOpParm(result, thissop, "ptidattr", cookparms.getCookTime(), 0);
1021  return result;
1022  }
1023  const UT_StringHolder & getPrimIDAttr() const { return myPrimIDAttr; }
1024  void setPrimIDAttr(const UT_StringHolder & val) { myPrimIDAttr = val; }
1026  {
1027  SOP_Node *thissop = cookparms.getNode();
1028  if (!thissop) return getPrimIDAttr();
1030  OP_Utils::evalOpParm(result, thissop, "primidattr", cookparms.getCookTime(), 0);
1031  return result;
1032  }
1033  VoxelBlend getVoxelBlend() const { return VoxelBlend(myVoxelBlend); }
1034  void setVoxelBlend(VoxelBlend val) { myVoxelBlend = int64(val); }
1036  {
1037  SOP_Node *thissop = cookparms.getNode();
1038  if (!thissop) return getVoxelBlend();
1039  int64 result;
1040  OP_Utils::evalOpParm(result, thissop, "voxelblend", cookparms.getCookTime(), 0);
1041  return VoxelBlend(result);
1042  }
1043  bool getDoSlerp() const { return myDoSlerp; }
1044  void setDoSlerp(bool val) { myDoSlerp = val; }
1045  bool opDoSlerp(const SOP_NodeVerb::CookParms &cookparms) const
1046  {
1047  SOP_Node *thissop = cookparms.getNode();
1048  if (!thissop) return getDoSlerp();
1049  bool result;
1050  OP_Utils::evalOpParm(result, thissop, "doslerp", cookparms.getCookTime(), 0);
1051  return result;
1052  }
1053  MaskMode getMaskMode() const { return MaskMode(myMaskMode); }
1054  void setMaskMode(MaskMode val) { myMaskMode = int64(val); }
1056  {
1057  SOP_Node *thissop = cookparms.getNode();
1058  if (!thissop) return getMaskMode();
1059  int64 result;
1060  OP_Utils::evalOpParm(result, thissop, "maskmode", cookparms.getCookTime(), 0);
1061  return MaskMode(result);
1062  }
1063  const UT_StringHolder & getMaskAttrib() const { return myMaskAttrib; }
1064  void setMaskAttrib(const UT_StringHolder & val) { myMaskAttrib = val; }
1066  {
1067  SOP_Node *thissop = cookparms.getNode();
1068  if (!thissop) return getMaskAttrib();
1070  OP_Utils::evalOpParm(result, thissop, "maskattrib", cookparms.getCookTime(), 0);
1071  return result;
1072  }
1073  MaskAttribMode getMaskAttribMode() const { return MaskAttribMode(myMaskAttribMode); }
1074  void setMaskAttribMode(MaskAttribMode val) { myMaskAttribMode = int64(val); }
1076  {
1077  SOP_Node *thissop = cookparms.getNode();
1078  if (!thissop) return getMaskAttribMode();
1079  int64 result;
1080  OP_Utils::evalOpParm(result, thissop, "maskattribmode", cookparms.getCookTime(), 0);
1081  return MaskAttribMode(result);
1082  }
1083  const UT_Array<Nblends> &getNblends() const { return myNblends; }
1084 void setNblends(const UT_Array<Nblends> &val) { myNblends = val; }
1085  exint opNblends(const SOP_NodeVerb::CookParms &cookparms) const
1086  {
1087  SOP_Node *thissop = cookparms.getNode();
1088  if (!thissop) return getNblends().entries();
1089  exint result;
1090  OP_Utils::evalOpParm(result, thissop, "nblends", cookparms.getCookTime(), 0);
1091  return result;
1092  }
1093  fpreal64 opNblends_blend(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1094  { return opinstNblends_blend(cookparms, &_idx); }
1095  fpreal64 opinstNblends_blend(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1096  {
1097  SOP_Node *thissop = cookparms.getNode();
1098  if (!thissop) return (myNblends(_idx[0]).blend);
1099  int _parmidx[2-1];
1100  _parmidx[1-1] = _idx[1-1] + 0;
1101 
1102  fpreal64 result;
1103  OP_Utils::evalOpParmInst(result, thissop, "blend#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1104  return (result);
1105  }
1106  int64 opNblends_blendmask(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1107  { return opinstNblends_blendmask(cookparms, &_idx); }
1108  int64 opinstNblends_blendmask(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1109  {
1110  SOP_Node *thissop = cookparms.getNode();
1111  if (!thissop) return (myNblends(_idx[0]).blendmask);
1112  int _parmidx[2-1];
1113  _parmidx[1-1] = _idx[1-1] + 0;
1114 
1115  int64 result;
1116  OP_Utils::evalOpParmInst(result, thissop, "blendmask#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1117  return (result);
1118  }
1120  { return opinstNblends_blendmaskattrib(cookparms, &_idx); }
1122  {
1123  SOP_Node *thissop = cookparms.getNode();
1124  if (!thissop) return (myNblends(_idx[0]).blendmaskattrib);
1125  int _parmidx[2-1];
1126  _parmidx[1-1] = _idx[1-1] + 0;
1127 
1129  OP_Utils::evalOpParmInst(result, thissop, "blendmaskattrib#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1130  return (result);
1131  }
1132  int64 opNblends_blendmaskmode(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1133  { return opinstNblends_blendmaskmode(cookparms, &_idx); }
1134  int64 opinstNblends_blendmaskmode(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1135  {
1136  SOP_Node *thissop = cookparms.getNode();
1137  if (!thissop) return (myNblends(_idx[0]).blendmaskmode);
1138  int _parmidx[2-1];
1139  _parmidx[1-1] = _idx[1-1] + 0;
1140 
1141  int64 result;
1142  OP_Utils::evalOpParmInst(result, thissop, "blendmaskmode#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1143  return (result);
1144  }
1145 
1146 
1147 private:
1148  UT_StringHolder myGroup;
1149  int64 myGrouptype;
1150  int64 mySelectionIdx;
1151  bool myDiff;
1152  bool myCacheDeltas;
1153  bool myDoPack;
1154  bool myDoPackFirst;
1155  bool myWeightPerPack;
1156  UT_StringHolder myAttribs;
1157  UT_StringHolder myPtIDAttr;
1158  UT_StringHolder myPrimIDAttr;
1159  int64 myVoxelBlend;
1160  bool myDoSlerp;
1161  int64 myMaskMode;
1162  UT_StringHolder myMaskAttrib;
1163  int64 myMaskAttribMode;
1164  UT_Array<Nblends> myNblends;
1165 
1166 };
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
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)
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 UT_StringHolder getToken(Grouptype enum_value)
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
#define SYS_FORCE_INLINE
Definition: SYS_Inline.h:45
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
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
LeafData & operator=(const LeafData &)=delete
bool operator!=(const Nblends &src) const
void copyFrom(const OP_NodeParms *src) override
Utility class for containing a color ramp.
Definition: UT_Ramp.h:92
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:1395
#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:97
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
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)