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 <OP/OP_GraphProxy.h>
9 
10 #include <OP/OP_Utils.h>
11 #include <PRM/PRM_Parm.h>
12 #include <UT/UT_IStream.h>
13 #include <UT/UT_NTStreamUtil.h>
14 #include <UT/UT_Ramp.h>
15 #include <UT/UT_SharedPtr.h>
16 #include <UT/UT_StringHolder.h>
17 #include <UT/UT_StringStream.h>
18 #include <UT/UT_VectorTypes.h>
19 #include <UT/UT_EnvControl.h>
20 #include <SYS/SYS_Types.h>
21 
22 class DEP_MicroNode;
23 namespace SOP_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 
258  if (baseGetSignature() != src.baseGetSignature()) return false;
259 
260  return true;
261  }
263  {
264  return !operator==(src);
265  }
272 
273 
274 
275  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
276  {
277  myGroup = ""_UTsh;
278  if (true)
279  graph->evalOpParm(myGroup, nodeidx, "group", time, graph->isDirect()?nullptr:depnode);
280  myGrouptype = 0;
281  if (true)
282  graph->evalOpParm(myGrouptype, nodeidx, "grouptype", time, graph->isDirect()?nullptr:depnode);
283  mySelectionIdx = 0;
284  if (true)
285  graph->evalOpParm(mySelectionIdx, nodeidx, "selectionidx", time, graph->isDirect()?nullptr:depnode);
286  myDiff = true;
287  if (true)
288  graph->evalOpParm(myDiff, nodeidx, "diff", time, graph->isDirect()?nullptr:depnode);
289  myCacheDeltas = false;
290  if (true && ( (true&&!(((getDiff()==0)))) ) )
291  graph->evalOpParm(myCacheDeltas, nodeidx, "cachedeltas", time, graph->isDirect()?nullptr:depnode);
292  myDoPack = false;
293  if (true)
294  graph->evalOpParm(myDoPack, nodeidx, "pack", time, graph->isDirect()?nullptr:depnode);
295  myDoPackFirst = true;
296  if (true && ( (true&&!(((getDoPack()==0)))) ) )
297  graph->evalOpParm(myDoPackFirst, nodeidx, "packfirst", time, graph->isDirect()?nullptr:depnode);
298  myWeightPerPack = true;
299  if (true && ( (true&&!(((getDoPack()==0)))) ) )
300  graph->evalOpParm(myWeightPerPack, nodeidx, "weightperpack", time, graph->isDirect()?nullptr:depnode);
301  myAttribs = "*"_UTsh;
302  if (true)
303  graph->evalOpParm(myAttribs, nodeidx, "attribs", time, graph->isDirect()?nullptr:depnode);
304  myPtIDAttr = ""_UTsh;
305  if (true)
306  graph->evalOpParm(myPtIDAttr, nodeidx, "ptidattr", time, graph->isDirect()?nullptr:depnode);
307  myPrimIDAttr = ""_UTsh;
308  if (true)
309  graph->evalOpParm(myPrimIDAttr, nodeidx, "primidattr", time, graph->isDirect()?nullptr:depnode);
310  myVoxelBlend = 0;
311  if (true)
312  graph->evalOpParm(myVoxelBlend, nodeidx, "voxelblend", time, graph->isDirect()?nullptr:depnode);
313  myDoSlerp = true;
314  if (true)
315  graph->evalOpParm(myDoSlerp, nodeidx, "doslerp", time, graph->isDirect()?nullptr:depnode);
316  myMaskMode = 0;
317  if (true)
318  graph->evalOpParm(myMaskMode, nodeidx, "maskmode", time, graph->isDirect()?nullptr:depnode);
319  myMaskAttrib = "mask"_UTsh;
320  if (true && ( (true&&!(((int64(getMaskMode())==0)))) ) )
321  graph->evalOpParm(myMaskAttrib, nodeidx, "maskattrib", time, graph->isDirect()?nullptr:depnode);
322  myMaskAttribMode = 0;
323  if (true && ( (true&&!(((int64(getMaskMode())==0)))) ) )
324  graph->evalOpParm(myMaskAttribMode, nodeidx, "maskattribmode", time, graph->isDirect()?nullptr:depnode);
325  if (true && ( (!(((int64(getMaskMode())<0)))) ) )
326  {
327  int64 length = 0;
328  graph->evalOpParm(length, nodeidx, "nblends", time, graph->isDirect()?nullptr:depnode);
329  if (length < 0) length = 0;
330  myNblends.setSize(length);
331  for (exint i = 0; i < length; i++)
332  {
333  int parmidx[1];
334  int offsets[1];
335  parmidx[0] = i+0;
336  offsets[0] = 0;
337  auto && _curentry = myNblends(i);
338  (void) _curentry;
339  _curentry.blend = 0;
340  if (true && ( (!(((int64(getMaskMode())<0)))) ) && ( (true&&!(((int64(getMaskMode())<0)))) ) )
341  graph->evalOpParmInst(_curentry.blend, nodeidx, "blend#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
342  _curentry.blendmask = 1;
343  if (true && ( (!(((int64(getMaskMode())<0)))) ) && ( (true&&!(((int64(getMaskMode())<0))||((int64(getMaskMode())==0)))) ) )
344  graph->evalOpParmInst(_curentry.blendmask, nodeidx, "blendmask#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
345  _curentry.blendmaskattrib = "mask"_UTsh;
346  if (true && ( (!(((int64(getMaskMode())<0)))) ) && ( (true&&!(((int64(getMaskMode())<0))||((int64(getMaskMode())==0))||((_curentry.blendmask==0))||((_curentry.blendmask==1)))) ) )
347  graph->evalOpParmInst(_curentry.blendmaskattrib, nodeidx, "blendmaskattrib#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
348  _curentry.blendmaskmode = 1;
349  if (true && ( (!(((int64(getMaskMode())<0)))) ) && ( (true&&!(((int64(getMaskMode())<0))||((int64(getMaskMode())==0))||((_curentry.blendmask==0))||((_curentry.blendmask==1)))) ) )
350  graph->evalOpParmInst(_curentry.blendmaskmode, nodeidx, "blendmaskmode#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
351 
352  }
353  }
354  else
355  myNblends.clear();
356 
357  }
358 
359 
360  void loadFromOpSubclass(const LoadParms &loadparms) override
361  {
362  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
363  }
364 
365 
366  void copyFrom(const OP_NodeParms *src) override
367  {
368  *this = *((const SOP_BlendShapes_2_0Parms *)src);
369  }
370 
371  template <typename T>
372  void
373  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
374  {
375  if (idx.size() < 1)
376  return;
377  UT_ASSERT(idx.size() == instance.size()+1);
378  if (idx.size() != instance.size()+1)
379  return;
380  switch (idx[0])
381  {
382  case 0:
383  coerceValue(value, myGroup);
384  break;
385  case 1:
386  coerceValue(value, myGrouptype);
387  break;
388  case 2:
389  coerceValue(value, mySelectionIdx);
390  break;
391  case 3:
392  coerceValue(value, myDiff);
393  break;
394  case 4:
395  coerceValue(value, myCacheDeltas);
396  break;
397  case 5:
398  coerceValue(value, myDoPack);
399  break;
400  case 6:
401  coerceValue(value, myDoPackFirst);
402  break;
403  case 7:
404  coerceValue(value, myWeightPerPack);
405  break;
406  case 8:
407  coerceValue(value, myAttribs);
408  break;
409  case 9:
410  coerceValue(value, myPtIDAttr);
411  break;
412  case 10:
413  coerceValue(value, myPrimIDAttr);
414  break;
415  case 11:
416  coerceValue(value, myVoxelBlend);
417  break;
418  case 12:
419  coerceValue(value, myDoSlerp);
420  break;
421  case 13:
422  coerceValue(value, myMaskMode);
423  break;
424  case 14:
425  coerceValue(value, myMaskAttrib);
426  break;
427  case 15:
428  coerceValue(value, myMaskAttribMode);
429  break;
430  case 16:
431  if (idx.size() == 1)
432  coerceValue(value, myNblends.entries());
433  else if (instance[0] < myNblends.entries())
434  {
435  auto && _data = myNblends(instance[0]);
436  switch (idx[1])
437  {
438  case 0:
439  coerceValue(value, _data.blend);
440  break;
441  case 1:
442  coerceValue(value, _data.blendmask);
443  break;
444  case 2:
445  coerceValue(value, _data.blendmaskattrib);
446  break;
447  case 3:
448  coerceValue(value, _data.blendmaskmode);
449  break;
450 
451  }
452  }
453  break;
454 
455  }
456  }
457 
458  bool isParmColorRamp(exint idx) const override
459  {
460  switch (idx)
461  {
462 
463  }
464  return false;
465  }
466 
467  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
468  { doGetParmValue(idx, instance, value); }
469  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
470  { doGetParmValue(idx, instance, value); }
471  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
472  { doGetParmValue(idx, instance, value); }
473  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
474  { doGetParmValue(idx, instance, value); }
475  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
476  { doGetParmValue(idx, instance, value); }
477  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
478  { doGetParmValue(idx, instance, value); }
479  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
480  { doGetParmValue(idx, instance, value); }
481  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
482  { doGetParmValue(idx, instance, value); }
483  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
484  { doGetParmValue(idx, instance, value); }
485  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
486  { doGetParmValue(idx, instance, value); }
487  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
488  { doGetParmValue(idx, instance, value); }
489 
490  template <typename T>
491  void
492  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
493  {
494  if (idx.size() < 1)
495  return;
496  UT_ASSERT(idx.size() == instance.size()+1);
497  if (idx.size() != instance.size()+1)
498  return;
499  switch (idx[0])
500  {
501  case 0:
502  coerceValue(myGroup, ( ( value ) ));
503  break;
504  case 1:
505  coerceValue(myGrouptype, clampMinValue(0, clampMaxValue(4, value ) ));
506  break;
507  case 2:
508  coerceValue(mySelectionIdx, ( ( value ) ));
509  break;
510  case 3:
511  coerceValue(myDiff, ( ( value ) ));
512  break;
513  case 4:
514  coerceValue(myCacheDeltas, ( ( value ) ));
515  break;
516  case 5:
517  coerceValue(myDoPack, ( ( value ) ));
518  break;
519  case 6:
520  coerceValue(myDoPackFirst, ( ( value ) ));
521  break;
522  case 7:
523  coerceValue(myWeightPerPack, ( ( value ) ));
524  break;
525  case 8:
526  coerceValue(myAttribs, ( ( value ) ));
527  break;
528  case 9:
529  coerceValue(myPtIDAttr, ( ( value ) ));
530  break;
531  case 10:
532  coerceValue(myPrimIDAttr, ( ( value ) ));
533  break;
534  case 11:
535  coerceValue(myVoxelBlend, clampMinValue(0, clampMaxValue(2, value ) ));
536  break;
537  case 12:
538  coerceValue(myDoSlerp, ( ( value ) ));
539  break;
540  case 13:
541  coerceValue(myMaskMode, clampMinValue(0, clampMaxValue(2, value ) ));
542  break;
543  case 14:
544  coerceValue(myMaskAttrib, ( ( value ) ));
545  break;
546  case 15:
547  coerceValue(myMaskAttribMode, clampMinValue(0, clampMaxValue(1, value ) ));
548  break;
549  case 16:
550  if (idx.size() == 1)
551  {
552  exint newsize;
553  coerceValue(newsize, value);
554  if (newsize < 0) newsize = 0;
555  myNblends.setSize(newsize);
556  }
557  else
558  {
559  if (instance[0] < 0)
560  return;
561  myNblends.setSizeIfNeeded(instance[0]+1);
562  auto && _data = myNblends(instance[0]);
563  switch (idx[1])
564  {
565  case 0:
566  coerceValue(_data.blend, value);
567  break;
568  case 1:
569  coerceValue(_data.blendmask, value);
570  break;
571  case 2:
572  coerceValue(_data.blendmaskattrib, value);
573  break;
574  case 3:
575  coerceValue(_data.blendmaskmode, value);
576  break;
577 
578  }
579  }
580  break;
581 
582  }
583  }
584 
585  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
586  { doSetParmValue(idx, instance, value); }
587  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
588  { doSetParmValue(idx, instance, value); }
589  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
590  { doSetParmValue(idx, instance, value); }
591  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
592  { doSetParmValue(idx, instance, value); }
593  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
594  { doSetParmValue(idx, instance, value); }
595  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
596  { doSetParmValue(idx, instance, value); }
597  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
598  { doSetParmValue(idx, instance, value); }
599  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
600  { doSetParmValue(idx, instance, value); }
601  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
602  { doSetParmValue(idx, instance, value); }
603  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
604  { doSetParmValue(idx, instance, value); }
605  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
606  { doSetParmValue(idx, instance, value); }
607 
608  exint getNestNumParms(TempIndex idx) const override
609  {
610  if (idx.size() == 0)
611  return 17;
612  switch (idx[0])
613  {
614  case 16:
615  return 4;
616 
617  }
618  // Invalid
619  return 0;
620  }
621 
622  const char *getNestParmName(TempIndex fieldnum) const override
623  {
624  if (fieldnum.size() < 1)
625  return 0;
626  switch (fieldnum[0])
627  {
628  case 0:
629  return "group";
630  case 1:
631  return "grouptype";
632  case 2:
633  return "selectionidx";
634  case 3:
635  return "diff";
636  case 4:
637  return "cachedeltas";
638  case 5:
639  return "pack";
640  case 6:
641  return "packfirst";
642  case 7:
643  return "weightperpack";
644  case 8:
645  return "attribs";
646  case 9:
647  return "ptidattr";
648  case 10:
649  return "primidattr";
650  case 11:
651  return "voxelblend";
652  case 12:
653  return "doslerp";
654  case 13:
655  return "maskmode";
656  case 14:
657  return "maskattrib";
658  case 15:
659  return "maskattribmode";
660  case 16:
661  if (fieldnum.size() == 1)
662  return "nblends";
663  switch (fieldnum[1])
664  {
665  case 0:
666  return "blend#";
667  case 1:
668  return "blendmask#";
669  case 2:
670  return "blendmaskattrib#";
671  case 3:
672  return "blendmaskmode#";
673 
674  }
675  return 0;
676 
677  }
678  return 0;
679  }
680 
681  ParmType getNestParmType(TempIndex fieldnum) const override
682  {
683  if (fieldnum.size() < 1)
684  return PARM_UNSUPPORTED;
685  switch (fieldnum[0])
686  {
687  case 0:
688  return PARM_STRING;
689  case 1:
690  return PARM_INTEGER;
691  case 2:
692  return PARM_INTEGER;
693  case 3:
694  return PARM_INTEGER;
695  case 4:
696  return PARM_INTEGER;
697  case 5:
698  return PARM_INTEGER;
699  case 6:
700  return PARM_INTEGER;
701  case 7:
702  return PARM_INTEGER;
703  case 8:
704  return PARM_STRING;
705  case 9:
706  return PARM_STRING;
707  case 10:
708  return PARM_STRING;
709  case 11:
710  return PARM_INTEGER;
711  case 12:
712  return PARM_INTEGER;
713  case 13:
714  return PARM_INTEGER;
715  case 14:
716  return PARM_STRING;
717  case 15:
718  return PARM_INTEGER;
719  case 16:
720  if (fieldnum.size() == 1)
721  return PARM_MULTIPARM;
722  switch (fieldnum[1])
723  {
724  case 0:
725  return PARM_FLOAT;
726  case 1:
727  return PARM_INTEGER;
728  case 2:
729  return PARM_STRING;
730  case 3:
731  return PARM_INTEGER;
732 
733  }
734  return PARM_UNSUPPORTED;
735 
736  }
737  return PARM_UNSUPPORTED;
738  }
739 
740  // Boiler plate to load individual types.
741  static void loadData(UT_IStream &is, int64 &v)
742  { is.bread(&v, 1); }
743  static void loadData(UT_IStream &is, bool &v)
744  { int64 iv; is.bread(&iv, 1); v = iv; }
745  static void loadData(UT_IStream &is, fpreal64 &v)
746  { is.bread<fpreal64>(&v, 1); }
747  static void loadData(UT_IStream &is, UT_Vector2D &v)
748  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
749  static void loadData(UT_IStream &is, UT_Vector3D &v)
750  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
751  is.bread<fpreal64>(&v.z(), 1); }
752  static void loadData(UT_IStream &is, UT_Vector4D &v)
753  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
754  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
755  static void loadData(UT_IStream &is, UT_Matrix2D &v)
756  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
757  static void loadData(UT_IStream &is, UT_Matrix3D &v)
758  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
759  static void loadData(UT_IStream &is, UT_Matrix4D &v)
760  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
761  static void loadData(UT_IStream &is, UT_Vector2I &v)
762  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
763  static void loadData(UT_IStream &is, UT_Vector3I &v)
764  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
765  is.bread<int64>(&v.z(), 1); }
766  static void loadData(UT_IStream &is, UT_Vector4I &v)
767  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
768  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
770  { is.bread(v); }
772  { UT_StringHolder rampdata;
773  loadData(is, rampdata);
774  if (rampdata.isstring())
775  {
776  v.reset(new UT_Ramp());
777  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
778  v->load(istr);
779  }
780  else v.reset();
781  }
784  loadData(is, data);
785  if (data.isstring())
786  {
787  // Find the data type.
788  const char *colon = UT_StringWrap(data).findChar(':');
789  if (colon)
790  {
791  int typelen = colon - data.buffer();
793  type.strncpy(data.buffer(), typelen);
794  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
795 
796  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
797  }
798  }
799  else v.reset();
800  }
801 
802  static void saveData(std::ostream &os, int64 v)
803  { UTwrite(os, &v); }
804  static void saveData(std::ostream &os, bool v)
805  { int64 iv = v; UTwrite(os, &iv); }
806  static void saveData(std::ostream &os, fpreal64 v)
807  { UTwrite<fpreal64>(os, &v); }
808  static void saveData(std::ostream &os, UT_Vector2D v)
809  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
810  static void saveData(std::ostream &os, UT_Vector3D v)
811  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
812  UTwrite<fpreal64>(os, &v.z()); }
813  static void saveData(std::ostream &os, UT_Vector4D v)
814  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
815  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
816  static void saveData(std::ostream &os, UT_Matrix2D v)
818  static void saveData(std::ostream &os, UT_Matrix3D v)
820  static void saveData(std::ostream &os, UT_Matrix4D v)
822  static void saveData(std::ostream &os, UT_StringHolder s)
823  { UT_StringWrap(s).saveBinary(os); }
824  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
826  UT_OStringStream ostr;
827  if (s) s->save(ostr);
828  result = ostr.str();
829  saveData(os, result);
830  }
831  static void saveData(std::ostream &os, PRM_DataItemHandle s)
833  UT_OStringStream ostr;
834  if (s)
835  {
836  ostr << s->getDataTypeToken();
837  ostr << ":";
838  s->saveBinary(ostr);
839  }
840  result = ostr.str();
841  saveData(os, result);
842  }
843 
844 
845  void save(std::ostream &os) const
846  {
847  int32 v = version();
848  UTwrite(os, &v);
849  saveData(os, myGroup);
850  saveData(os, myGrouptype);
851  saveData(os, mySelectionIdx);
852  saveData(os, myDiff);
853  saveData(os, myCacheDeltas);
854  saveData(os, myDoPack);
855  saveData(os, myDoPackFirst);
856  saveData(os, myWeightPerPack);
857  saveData(os, myAttribs);
858  saveData(os, myPtIDAttr);
859  saveData(os, myPrimIDAttr);
860  saveData(os, myVoxelBlend);
861  saveData(os, myDoSlerp);
862  saveData(os, myMaskMode);
863  saveData(os, myMaskAttrib);
864  saveData(os, myMaskAttribMode);
865  {
866  int64 length = myNblends.entries();
867  UTwrite(os, &length);
868  for (exint i = 0; i < length; i++)
869  {
870  auto && _curentry = myNblends(i);
871  (void) _curentry;
872  saveData(os, _curentry.blend);
873  saveData(os, _curentry.blendmask);
874  saveData(os, _curentry.blendmaskattrib);
875  saveData(os, _curentry.blendmaskmode);
876 
877  }
878  }
879 
880  }
881 
882  bool load(UT_IStream &is)
883  {
884  int32 v;
885  is.bread(&v, 1);
886  if (version() != v)
887  {
888  // Fail incompatible versions
889  return false;
890  }
891  loadData(is, myGroup);
892  loadData(is, myGrouptype);
893  loadData(is, mySelectionIdx);
894  loadData(is, myDiff);
895  loadData(is, myCacheDeltas);
896  loadData(is, myDoPack);
897  loadData(is, myDoPackFirst);
898  loadData(is, myWeightPerPack);
899  loadData(is, myAttribs);
900  loadData(is, myPtIDAttr);
901  loadData(is, myPrimIDAttr);
902  loadData(is, myVoxelBlend);
903  loadData(is, myDoSlerp);
904  loadData(is, myMaskMode);
905  loadData(is, myMaskAttrib);
906  loadData(is, myMaskAttribMode);
907  {
908  int64 length;
909  is.read(&length, 1);
910  myNblends.setSize(length);
911  for (exint i = 0; i < length; i++)
912  {
913  auto && _curentry = myNblends(i);
914  (void) _curentry;
915  loadData(is, _curentry.blend);
916  loadData(is, _curentry.blendmask);
917  loadData(is, _curentry.blendmaskattrib);
918  loadData(is, _curentry.blendmaskmode);
919 
920  }
921  }
922 
923  return true;
924  }
925 
926  const UT_StringHolder & getGroup() const { return myGroup; }
927  void setGroup(const UT_StringHolder & val) { myGroup = val; }
929  {
930  SOP_Node *thissop = cookparms.getNode();
931  if (!thissop) return getGroup();
933  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
934  return result;
935  }
936  Grouptype getGrouptype() const { return Grouptype(myGrouptype); }
937  void setGrouptype(Grouptype val) { myGrouptype = int64(val); }
939  {
940  SOP_Node *thissop = cookparms.getNode();
941  if (!thissop) return getGrouptype();
942  int64 result;
943  OP_Utils::evalOpParm(result, thissop, "grouptype", cookparms.getCookTime(), 0);
944  return Grouptype(result);
945  }
946  int64 getSelectionIdx() const { return mySelectionIdx; }
947  void setSelectionIdx(int64 val) { mySelectionIdx = val; }
949  {
950  SOP_Node *thissop = cookparms.getNode();
951  if (!thissop) return getSelectionIdx();
952  int64 result;
953  OP_Utils::evalOpParm(result, thissop, "selectionidx", cookparms.getCookTime(), 0);
954  return result;
955  }
956  bool getDiff() const { return myDiff; }
957  void setDiff(bool val) { myDiff = val; }
958  bool opDiff(const SOP_NodeVerb::CookParms &cookparms) const
959  {
960  SOP_Node *thissop = cookparms.getNode();
961  if (!thissop) return getDiff();
962  bool result;
963  OP_Utils::evalOpParm(result, thissop, "diff", cookparms.getCookTime(), 0);
964  return result;
965  }
966  bool getCacheDeltas() const { return myCacheDeltas; }
967  void setCacheDeltas(bool val) { myCacheDeltas = val; }
968  bool opCacheDeltas(const SOP_NodeVerb::CookParms &cookparms) const
969  {
970  SOP_Node *thissop = cookparms.getNode();
971  if (!thissop) return getCacheDeltas();
972  bool result;
973  OP_Utils::evalOpParm(result, thissop, "cachedeltas", cookparms.getCookTime(), 0);
974  return result;
975  }
976  bool getDoPack() const { return myDoPack; }
977  void setDoPack(bool val) { myDoPack = val; }
978  bool opDoPack(const SOP_NodeVerb::CookParms &cookparms) const
979  {
980  SOP_Node *thissop = cookparms.getNode();
981  if (!thissop) return getDoPack();
982  bool result;
983  OP_Utils::evalOpParm(result, thissop, "pack", cookparms.getCookTime(), 0);
984  return result;
985  }
986  bool getDoPackFirst() const { return myDoPackFirst; }
987  void setDoPackFirst(bool val) { myDoPackFirst = val; }
988  bool opDoPackFirst(const SOP_NodeVerb::CookParms &cookparms) const
989  {
990  SOP_Node *thissop = cookparms.getNode();
991  if (!thissop) return getDoPackFirst();
992  bool result;
993  OP_Utils::evalOpParm(result, thissop, "packfirst", cookparms.getCookTime(), 0);
994  return result;
995  }
996  bool getWeightPerPack() const { return myWeightPerPack; }
997  void setWeightPerPack(bool val) { myWeightPerPack = val; }
998  bool opWeightPerPack(const SOP_NodeVerb::CookParms &cookparms) const
999  {
1000  SOP_Node *thissop = cookparms.getNode();
1001  if (!thissop) return getWeightPerPack();
1002  bool result;
1003  OP_Utils::evalOpParm(result, thissop, "weightperpack", cookparms.getCookTime(), 0);
1004  return result;
1005  }
1006  const UT_StringHolder & getAttribs() const { return myAttribs; }
1007  void setAttribs(const UT_StringHolder & val) { myAttribs = val; }
1009  {
1010  SOP_Node *thissop = cookparms.getNode();
1011  if (!thissop) return getAttribs();
1013  OP_Utils::evalOpParm(result, thissop, "attribs", cookparms.getCookTime(), 0);
1014  return result;
1015  }
1016  const UT_StringHolder & getPtIDAttr() const { return myPtIDAttr; }
1017  void setPtIDAttr(const UT_StringHolder & val) { myPtIDAttr = val; }
1019  {
1020  SOP_Node *thissop = cookparms.getNode();
1021  if (!thissop) return getPtIDAttr();
1023  OP_Utils::evalOpParm(result, thissop, "ptidattr", cookparms.getCookTime(), 0);
1024  return result;
1025  }
1026  const UT_StringHolder & getPrimIDAttr() const { return myPrimIDAttr; }
1027  void setPrimIDAttr(const UT_StringHolder & val) { myPrimIDAttr = val; }
1029  {
1030  SOP_Node *thissop = cookparms.getNode();
1031  if (!thissop) return getPrimIDAttr();
1033  OP_Utils::evalOpParm(result, thissop, "primidattr", cookparms.getCookTime(), 0);
1034  return result;
1035  }
1036  VoxelBlend getVoxelBlend() const { return VoxelBlend(myVoxelBlend); }
1037  void setVoxelBlend(VoxelBlend val) { myVoxelBlend = int64(val); }
1039  {
1040  SOP_Node *thissop = cookparms.getNode();
1041  if (!thissop) return getVoxelBlend();
1042  int64 result;
1043  OP_Utils::evalOpParm(result, thissop, "voxelblend", cookparms.getCookTime(), 0);
1044  return VoxelBlend(result);
1045  }
1046  bool getDoSlerp() const { return myDoSlerp; }
1047  void setDoSlerp(bool val) { myDoSlerp = val; }
1048  bool opDoSlerp(const SOP_NodeVerb::CookParms &cookparms) const
1049  {
1050  SOP_Node *thissop = cookparms.getNode();
1051  if (!thissop) return getDoSlerp();
1052  bool result;
1053  OP_Utils::evalOpParm(result, thissop, "doslerp", cookparms.getCookTime(), 0);
1054  return result;
1055  }
1056  MaskMode getMaskMode() const { return MaskMode(myMaskMode); }
1057  void setMaskMode(MaskMode val) { myMaskMode = int64(val); }
1059  {
1060  SOP_Node *thissop = cookparms.getNode();
1061  if (!thissop) return getMaskMode();
1062  int64 result;
1063  OP_Utils::evalOpParm(result, thissop, "maskmode", cookparms.getCookTime(), 0);
1064  return MaskMode(result);
1065  }
1066  const UT_StringHolder & getMaskAttrib() const { return myMaskAttrib; }
1067  void setMaskAttrib(const UT_StringHolder & val) { myMaskAttrib = val; }
1069  {
1070  SOP_Node *thissop = cookparms.getNode();
1071  if (!thissop) return getMaskAttrib();
1073  OP_Utils::evalOpParm(result, thissop, "maskattrib", cookparms.getCookTime(), 0);
1074  return result;
1075  }
1076  MaskAttribMode getMaskAttribMode() const { return MaskAttribMode(myMaskAttribMode); }
1077  void setMaskAttribMode(MaskAttribMode val) { myMaskAttribMode = int64(val); }
1079  {
1080  SOP_Node *thissop = cookparms.getNode();
1081  if (!thissop) return getMaskAttribMode();
1082  int64 result;
1083  OP_Utils::evalOpParm(result, thissop, "maskattribmode", cookparms.getCookTime(), 0);
1084  return MaskAttribMode(result);
1085  }
1086  const UT_Array<Nblends> &getNblends() const { return myNblends; }
1087 void setNblends(const UT_Array<Nblends> &val) { myNblends = val; }
1088  exint opNblends(const SOP_NodeVerb::CookParms &cookparms) const
1089  {
1090  SOP_Node *thissop = cookparms.getNode();
1091  if (!thissop) return getNblends().entries();
1092  exint result;
1093  OP_Utils::evalOpParm(result, thissop, "nblends", cookparms.getCookTime(), 0);
1094  return result;
1095  }
1096  fpreal64 opNblends_blend(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1097  { return opinstNblends_blend(cookparms, &_idx); }
1098  fpreal64 opinstNblends_blend(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1099  {
1100  SOP_Node *thissop = cookparms.getNode();
1101  if (!thissop) return (myNblends(_idx[0]).blend);
1102  int _parmidx[2-1];
1103  _parmidx[1-1] = _idx[1-1] + 0;
1104 
1105  fpreal64 result;
1106  OP_Utils::evalOpParmInst(result, thissop, "blend#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1107  return (result);
1108  }
1109  int64 opNblends_blendmask(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1110  { return opinstNblends_blendmask(cookparms, &_idx); }
1111  int64 opinstNblends_blendmask(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1112  {
1113  SOP_Node *thissop = cookparms.getNode();
1114  if (!thissop) return (myNblends(_idx[0]).blendmask);
1115  int _parmidx[2-1];
1116  _parmidx[1-1] = _idx[1-1] + 0;
1117 
1118  int64 result;
1119  OP_Utils::evalOpParmInst(result, thissop, "blendmask#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1120  return (result);
1121  }
1123  { return opinstNblends_blendmaskattrib(cookparms, &_idx); }
1125  {
1126  SOP_Node *thissop = cookparms.getNode();
1127  if (!thissop) return (myNblends(_idx[0]).blendmaskattrib);
1128  int _parmidx[2-1];
1129  _parmidx[1-1] = _idx[1-1] + 0;
1130 
1132  OP_Utils::evalOpParmInst(result, thissop, "blendmaskattrib#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1133  return (result);
1134  }
1135  int64 opNblends_blendmaskmode(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1136  { return opinstNblends_blendmaskmode(cookparms, &_idx); }
1137  int64 opinstNblends_blendmaskmode(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1138  {
1139  SOP_Node *thissop = cookparms.getNode();
1140  if (!thissop) return (myNblends(_idx[0]).blendmaskmode);
1141  int _parmidx[2-1];
1142  _parmidx[1-1] = _idx[1-1] + 0;
1143 
1144  int64 result;
1145  OP_Utils::evalOpParmInst(result, thissop, "blendmaskmode#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1146  return (result);
1147  }
1148 
1149 
1150 private:
1151  UT_StringHolder myGroup;
1152  int64 myGrouptype;
1153  int64 mySelectionIdx;
1154  bool myDiff;
1155  bool myCacheDeltas;
1156  bool myDoPack;
1157  bool myDoPackFirst;
1158  bool myWeightPerPack;
1159  UT_StringHolder myAttribs;
1160  UT_StringHolder myPtIDAttr;
1161  UT_StringHolder myPrimIDAttr;
1162  int64 myVoxelBlend;
1163  bool myDoSlerp;
1164  int64 myMaskMode;
1165  UT_StringHolder myMaskAttrib;
1166  int64 myMaskAttribMode;
1167  UT_Array<Nblends> myNblends;
1168 
1169 };
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
type
Definition: core.h:556
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:63
GLsizei const GLfloat * value
Definition: glcorearb.h:824
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:622
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
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: APEX_Include.h:55
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:4949
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:303
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:655
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:278
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:96
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
virtual UT_StringHolder baseGetSignature() const
Definition: OP_NodeParms.h:294
#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:372
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
const char * findChar(int c) const
Definition: UT_String.h:1401
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
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
virtual bool isDirect() const =0
Direct proxies mirror actual nodes:
exint opNblends(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_StringHolder &v)
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)