HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_UVFlattenFromPoints.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_UVFlattenFromPointsEnums
24 {
25  enum class LayoutMethod
26  {
27  FAST = 0,
28  ACCURATE,
29  ONLYSEAMS
30  };
31 
33  getToken(LayoutMethod enum_value)
34  {
35  using namespace UT::Literal;
36  switch (enum_value) {
37  case LayoutMethod::FAST: return "fast"_sh;
38  case LayoutMethod::ACCURATE: return "accurate"_sh;
39  case LayoutMethod::ONLYSEAMS: return "onlyseams"_sh;
40  default: UT_ASSERT(false); return ""_sh;
41  }
42  }
43 
44  enum class CenterPointsSource
45  {
46  FIRSTINPUT = 0,
48  };
49 
52  {
53  using namespace UT::Literal;
54  switch (enum_value) {
55  case CenterPointsSource::FIRSTINPUT: return "firstinput"_sh;
56  case CenterPointsSource::SECONDINPUT: return "secondinput"_sh;
57  default: UT_ASSERT(false); return ""_sh;
58  }
59  }
60 
62  {
63  FURTHESTPOINT = 0,
65  };
66 
69  {
70  using namespace UT::Literal;
71  switch (enum_value) {
72  case PointSelectionMethod::FURTHESTPOINT: return "furthestpoint"_sh;
73  case PointSelectionMethod::DISTORTIONBASED: return "distortionbased"_sh;
74  default: UT_ASSERT(false); return ""_sh;
75  }
76  }
77 
78  enum class PackingMethod
79  {
80  RECTANGLE = 0,
81  UDIM,
82  NONE
83  };
84 
86  getToken(PackingMethod enum_value)
87  {
88  using namespace UT::Literal;
89  switch (enum_value) {
90  case PackingMethod::RECTANGLE: return "rectangle"_sh;
91  case PackingMethod::UDIM: return "udim"_sh;
92  case PackingMethod::NONE: return "none"_sh;
93  default: UT_ASSERT(false); return ""_sh;
94  }
95  }
96 
97 }
98 
99 
101 {
102 public:
103  static int version() { return 1; }
104 
106  {
107  myGroup = ""_UTsh;
108  myUVAttrib = "uv"_UTsh;
109  myLayoutMethod = 0;
110  myCenterPointsSource = 0;
111  mySrcPoints = ""_UTsh;
112  myPointSelectionMethod = 0;
113  myAddAutomaticSources = false;
114  myNAutomaticSources = 0;
115  myAutomaticDistortionThreshold = 3;
116  myUseUp = false;
117  myUDirAttrib = "up"_UTsh;
118  myUseScale = false;
119  myLogScaleAttrib = "scale"_UTsh;
120  myUsePScale = false;
121  myLogScaleUniformAttrib = "pscale"_UTsh;
122  myPackingMethod = 0;
123  myBBoxCenter = UT_Vector2D(0.5,0.5);
124  myBBoxSize = UT_Vector2D(1,1);
125  myUseUDIMTarget = false;
126  myUDIMTargetAttrib = "udim"_UTsh;
127  myNoneUVCenter = UT_Vector2D(0.5,0.5);
128  myUseDistortionPruning = true;
129  myDistortionThreshold = 3;
130  myUseOutputMissingGroup = false;
131  myMissingPrimsGroup = "distorted"_UTsh;
132  myPreserveExistingUVs = false;
133  myUseOutputUnprocessedPrims = false;
134  myUnprocessedPrimsGroup = "unprocessed"_UTsh;
135  myUseOutputSeams = false;
136  myOutputSeams = "outputseams"_UTsh;
137  myUseOutputVoronoiCells = false;
138  myOutputVoronoiCells = "id"_UTsh;
139  myUseCopyPointAttribs = false;
140  myCopyPointAttribs = "* ^v ^Alpha ^N"_UTsh;
141  myUseOutputIndividualUVs = false;
142  myOutputIndividualUVs = "uv"_UTsh;
143 
144  }
145 
149  SOP_UVFlattenFromPointsParms &operator=(SOP_UVFlattenFromPointsParms &&) noexcept = default;
150 
152 
154  {
155  if (myGroup != src.myGroup) return false;
156  if (myUVAttrib != src.myUVAttrib) return false;
157  if (myLayoutMethod != src.myLayoutMethod) return false;
158  if (myCenterPointsSource != src.myCenterPointsSource) return false;
159  if (mySrcPoints != src.mySrcPoints) return false;
160  if (myPointSelectionMethod != src.myPointSelectionMethod) return false;
161  if (myAddAutomaticSources != src.myAddAutomaticSources) return false;
162  if (myNAutomaticSources != src.myNAutomaticSources) return false;
163  if (myAutomaticDistortionThreshold != src.myAutomaticDistortionThreshold) return false;
164  if (myUseUp != src.myUseUp) return false;
165  if (myUDirAttrib != src.myUDirAttrib) return false;
166  if (myUseScale != src.myUseScale) return false;
167  if (myLogScaleAttrib != src.myLogScaleAttrib) return false;
168  if (myUsePScale != src.myUsePScale) return false;
169  if (myLogScaleUniformAttrib != src.myLogScaleUniformAttrib) return false;
170  if (myPackingMethod != src.myPackingMethod) return false;
171  if (myBBoxCenter != src.myBBoxCenter) return false;
172  if (myBBoxSize != src.myBBoxSize) return false;
173  if (myUseUDIMTarget != src.myUseUDIMTarget) return false;
174  if (myUDIMTargetAttrib != src.myUDIMTargetAttrib) return false;
175  if (myNoneUVCenter != src.myNoneUVCenter) return false;
176  if (myUseDistortionPruning != src.myUseDistortionPruning) return false;
177  if (myDistortionThreshold != src.myDistortionThreshold) return false;
178  if (myUseOutputMissingGroup != src.myUseOutputMissingGroup) return false;
179  if (myMissingPrimsGroup != src.myMissingPrimsGroup) return false;
180  if (myPreserveExistingUVs != src.myPreserveExistingUVs) return false;
181  if (myUseOutputUnprocessedPrims != src.myUseOutputUnprocessedPrims) return false;
182  if (myUnprocessedPrimsGroup != src.myUnprocessedPrimsGroup) return false;
183  if (myUseOutputSeams != src.myUseOutputSeams) return false;
184  if (myOutputSeams != src.myOutputSeams) return false;
185  if (myUseOutputVoronoiCells != src.myUseOutputVoronoiCells) return false;
186  if (myOutputVoronoiCells != src.myOutputVoronoiCells) return false;
187  if (myUseCopyPointAttribs != src.myUseCopyPointAttribs) return false;
188  if (myCopyPointAttribs != src.myCopyPointAttribs) return false;
189  if (myUseOutputIndividualUVs != src.myUseOutputIndividualUVs) return false;
190  if (myOutputIndividualUVs != src.myOutputIndividualUVs) return false;
191 
192 
193  if (baseGetSignature() != src.baseGetSignature()) return false;
194 
195  return true;
196  }
198  {
199  return !operator==(src);
200  }
205 
206 
207 
208  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
209  {
210  myGroup = ""_UTsh;
211  if (true)
212  graph->evalOpParm(myGroup, nodeidx, "group", time, graph->isDirect()?nullptr:depnode);
213  myUVAttrib = "uv"_UTsh;
214  if (true)
215  graph->evalOpParm(myUVAttrib, nodeidx, "uvattrib", time, graph->isDirect()?nullptr:depnode);
216  myLayoutMethod = 0;
217  if (true)
218  graph->evalOpParm(myLayoutMethod, nodeidx, "method", time, graph->isDirect()?nullptr:depnode);
219  myCenterPointsSource = 0;
220  if (true)
221  graph->evalOpParm(myCenterPointsSource, nodeidx, "centerpointsource", time, graph->isDirect()?nullptr:depnode);
222  mySrcPoints = ""_UTsh;
223  if (true)
224  graph->evalOpParm(mySrcPoints, nodeidx, "srcpoints", time, graph->isDirect()?nullptr:depnode);
225  myPointSelectionMethod = 0;
226  if (true)
227  graph->evalOpParm(myPointSelectionMethod, nodeidx, "automaticmethod", time, graph->isDirect()?nullptr:depnode);
228  myAddAutomaticSources = false;
229  if (true)
230  graph->evalOpParm(myAddAutomaticSources, nodeidx, "addautomaticsources", time, graph->isDirect()?nullptr:depnode);
231  myNAutomaticSources = 0;
232  if (true && ( (true&&!(((getAddAutomaticSources()==0)))) ) )
233  graph->evalOpParm(myNAutomaticSources, nodeidx, "nautomaticsources", time, graph->isDirect()?nullptr:depnode);
234  myAutomaticDistortionThreshold = 3;
235  if (true && ( (true&&!(((getAddAutomaticSources()==0))||((int64(getPointSelectionMethod())!=1)))) ) )
236  graph->evalOpParm(myAutomaticDistortionThreshold, nodeidx, "automaticdistortionthreshold", time, graph->isDirect()?nullptr:depnode);
237  myUseUp = false;
238  if (true)
239  graph->evalOpParm(myUseUp, nodeidx, "useup", time, graph->isDirect()?nullptr:depnode);
240  myUDirAttrib = "up"_UTsh;
241  if (true && ( (true&&!(((getUseUp()==0)))) ) )
242  graph->evalOpParm(myUDirAttrib, nodeidx, "up", time, graph->isDirect()?nullptr:depnode);
243  myUseScale = false;
244  if (true)
245  graph->evalOpParm(myUseScale, nodeidx, "usescale", time, graph->isDirect()?nullptr:depnode);
246  myLogScaleAttrib = "scale"_UTsh;
247  if (true && ( (true&&!(((getUseScale()==0)))) ) )
248  graph->evalOpParm(myLogScaleAttrib, nodeidx, "scale", time, graph->isDirect()?nullptr:depnode);
249  myUsePScale = false;
250  if (true)
251  graph->evalOpParm(myUsePScale, nodeidx, "usepscale", time, graph->isDirect()?nullptr:depnode);
252  myLogScaleUniformAttrib = "pscale"_UTsh;
253  if (true && ( (true&&!(((getUsePScale()==0)))) ) )
254  graph->evalOpParm(myLogScaleUniformAttrib, nodeidx, "pscale", time, graph->isDirect()?nullptr:depnode);
255  myPackingMethod = 0;
256  if (true)
257  graph->evalOpParm(myPackingMethod, nodeidx, "packingmethod", time, graph->isDirect()?nullptr:depnode);
258  myBBoxCenter = UT_Vector2D(0.5,0.5);
259  if (true && ( (true&&!(((int64(getPackingMethod())!=0)))) ) )
260  graph->evalOpParm(myBBoxCenter, nodeidx, "bboxcenter", time, graph->isDirect()?nullptr:depnode);
261  myBBoxSize = UT_Vector2D(1,1);
262  if (true && ( (true&&!(((int64(getPackingMethod())!=0)))) ) )
263  graph->evalOpParm(myBBoxSize, nodeidx, "bboxsize", time, graph->isDirect()?nullptr:depnode);
264  myUseUDIMTarget = false;
265  if (true && ( (true&&!(((int64(getPackingMethod())!=1)))) ) )
266  graph->evalOpParm(myUseUDIMTarget, nodeidx, "useudimtarget", time, graph->isDirect()?nullptr:depnode);
267  myUDIMTargetAttrib = "udim"_UTsh;
268  if (true && ( (true&&!(((getUseUDIMTarget()==0))||((int64(getPackingMethod())!=1)))) ) )
269  graph->evalOpParm(myUDIMTargetAttrib, nodeidx, "udimtarget", time, graph->isDirect()?nullptr:depnode);
270  myNoneUVCenter = UT_Vector2D(0.5,0.5);
271  if (true && ( (true&&!(((int64(getPackingMethod())!=2)))) ) )
272  graph->evalOpParm(myNoneUVCenter, nodeidx, "uvcenter", time, graph->isDirect()?nullptr:depnode);
273  myUseDistortionPruning = true;
274  if (true)
275  graph->evalOpParm(myUseDistortionPruning, nodeidx, "usedistortionpruning", time, graph->isDirect()?nullptr:depnode);
276  myDistortionThreshold = 3;
277  if (true && ( (true&&!(((getUseDistortionPruning()==0)))) ) )
278  graph->evalOpParm(myDistortionThreshold, nodeidx, "distortionthreshold", time, graph->isDirect()?nullptr:depnode);
279  myUseOutputMissingGroup = false;
280  if (true)
281  graph->evalOpParm(myUseOutputMissingGroup, nodeidx, "useoutputdistortedprims", time, graph->isDirect()?nullptr:depnode);
282  myMissingPrimsGroup = "distorted"_UTsh;
283  if (true && ( (true&&!(((getUseOutputMissingGroup()==0)))) ) )
284  graph->evalOpParm(myMissingPrimsGroup, nodeidx, "distortedprims", time, graph->isDirect()?nullptr:depnode);
285  myPreserveExistingUVs = false;
286  if (true)
287  graph->evalOpParm(myPreserveExistingUVs, nodeidx, "preserveexistinguvs", time, graph->isDirect()?nullptr:depnode);
288  myUseOutputUnprocessedPrims = false;
289  if (true)
290  graph->evalOpParm(myUseOutputUnprocessedPrims, nodeidx, "useoutputunprocessedprims", time, graph->isDirect()?nullptr:depnode);
291  myUnprocessedPrimsGroup = "unprocessed"_UTsh;
292  if (true && ( (true&&!(((getUseOutputUnprocessedPrims()==0)))) ) )
293  graph->evalOpParm(myUnprocessedPrimsGroup, nodeidx, "unprocessedprims", time, graph->isDirect()?nullptr:depnode);
294  myUseOutputSeams = false;
295  if (true && ( (true&&!(((int64(getLayoutMethod())==2)))) ) )
296  graph->evalOpParm(myUseOutputSeams, nodeidx, "useoutputseams", time, graph->isDirect()?nullptr:depnode);
297  myOutputSeams = "outputseams"_UTsh;
298  if (true && ( (true&&!(((getUseOutputSeams()==0)&&(int64(getLayoutMethod())!=2)))) ) )
299  graph->evalOpParm(myOutputSeams, nodeidx, "outputseams", time, graph->isDirect()?nullptr:depnode);
300  myUseOutputVoronoiCells = false;
301  if (true)
302  graph->evalOpParm(myUseOutputVoronoiCells, nodeidx, "useoutputislandnumber", time, graph->isDirect()?nullptr:depnode);
303  myOutputVoronoiCells = "id"_UTsh;
304  if (true && ( (true&&!(((getUseOutputVoronoiCells()==0)))) ) )
305  graph->evalOpParm(myOutputVoronoiCells, nodeidx, "outputislandnumber", time, graph->isDirect()?nullptr:depnode);
306  myUseCopyPointAttribs = false;
307  if (true && ( (true&&!(((int64(getCenterPointsSource())==0))||((graph->nInputs(nodeidx)<2)))) ) )
308  graph->evalOpParm(myUseCopyPointAttribs, nodeidx, "usecopypointattribs", time, graph->isDirect()?nullptr:depnode);
309  myCopyPointAttribs = "* ^v ^Alpha ^N"_UTsh;
310  if (true && ( (true&&!(((getUseCopyPointAttribs()==0))||((int64(getCenterPointsSource())==0)))) ) )
311  graph->evalOpParm(myCopyPointAttribs, nodeidx, "copypointattribs", time, graph->isDirect()?nullptr:depnode);
312  myUseOutputIndividualUVs = false;
313  if (true)
314  graph->evalOpParm(myUseOutputIndividualUVs, nodeidx, "createuvsetperpoint", time, graph->isDirect()?nullptr:depnode);
315  myOutputIndividualUVs = "uv"_UTsh;
316  if (true && ( (true&&!(((getUseOutputIndividualUVs()==0)))) ) )
317  graph->evalOpParm(myOutputIndividualUVs, nodeidx, "uvsetprefix", time, graph->isDirect()?nullptr:depnode);
318 
319  }
320 
321 
322  void loadFromOpSubclass(const LoadParms &loadparms) override
323  {
324  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
325  }
326 
327 
328  void copyFrom(const OP_NodeParms *src) override
329  {
330  *this = *((const SOP_UVFlattenFromPointsParms *)src);
331  }
332 
333  template <typename T>
334  void
335  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
336  {
337  if (idx.size() < 1)
338  return;
339  UT_ASSERT(idx.size() == instance.size()+1);
340  if (idx.size() != instance.size()+1)
341  return;
342  switch (idx[0])
343  {
344  case 0:
345  coerceValue(value, myGroup);
346  break;
347  case 1:
348  coerceValue(value, myUVAttrib);
349  break;
350  case 2:
351  coerceValue(value, myLayoutMethod);
352  break;
353  case 3:
354  coerceValue(value, myCenterPointsSource);
355  break;
356  case 4:
357  coerceValue(value, mySrcPoints);
358  break;
359  case 5:
360  coerceValue(value, myPointSelectionMethod);
361  break;
362  case 6:
363  coerceValue(value, myAddAutomaticSources);
364  break;
365  case 7:
366  coerceValue(value, myNAutomaticSources);
367  break;
368  case 8:
369  coerceValue(value, myAutomaticDistortionThreshold);
370  break;
371  case 9:
372  coerceValue(value, myUseUp);
373  break;
374  case 10:
375  coerceValue(value, myUDirAttrib);
376  break;
377  case 11:
378  coerceValue(value, myUseScale);
379  break;
380  case 12:
381  coerceValue(value, myLogScaleAttrib);
382  break;
383  case 13:
384  coerceValue(value, myUsePScale);
385  break;
386  case 14:
387  coerceValue(value, myLogScaleUniformAttrib);
388  break;
389  case 15:
390  coerceValue(value, myPackingMethod);
391  break;
392  case 16:
393  coerceValue(value, myBBoxCenter);
394  break;
395  case 17:
396  coerceValue(value, myBBoxSize);
397  break;
398  case 18:
399  coerceValue(value, myUseUDIMTarget);
400  break;
401  case 19:
402  coerceValue(value, myUDIMTargetAttrib);
403  break;
404  case 20:
405  coerceValue(value, myNoneUVCenter);
406  break;
407  case 21:
408  coerceValue(value, myUseDistortionPruning);
409  break;
410  case 22:
411  coerceValue(value, myDistortionThreshold);
412  break;
413  case 23:
414  coerceValue(value, myUseOutputMissingGroup);
415  break;
416  case 24:
417  coerceValue(value, myMissingPrimsGroup);
418  break;
419  case 25:
420  coerceValue(value, myPreserveExistingUVs);
421  break;
422  case 26:
423  coerceValue(value, myUseOutputUnprocessedPrims);
424  break;
425  case 27:
426  coerceValue(value, myUnprocessedPrimsGroup);
427  break;
428  case 28:
429  coerceValue(value, myUseOutputSeams);
430  break;
431  case 29:
432  coerceValue(value, myOutputSeams);
433  break;
434  case 30:
435  coerceValue(value, myUseOutputVoronoiCells);
436  break;
437  case 31:
438  coerceValue(value, myOutputVoronoiCells);
439  break;
440  case 32:
441  coerceValue(value, myUseCopyPointAttribs);
442  break;
443  case 33:
444  coerceValue(value, myCopyPointAttribs);
445  break;
446  case 34:
447  coerceValue(value, myUseOutputIndividualUVs);
448  break;
449  case 35:
450  coerceValue(value, myOutputIndividualUVs);
451  break;
452 
453  }
454  }
455 
456  bool isParmColorRamp(exint idx) const override
457  {
458  switch (idx)
459  {
460 
461  }
462  return false;
463  }
464 
465  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
466  { doGetParmValue(idx, instance, value); }
467  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
468  { doGetParmValue(idx, instance, value); }
469  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
470  { doGetParmValue(idx, instance, value); }
471  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
472  { doGetParmValue(idx, instance, value); }
473  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
474  { doGetParmValue(idx, instance, value); }
475  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
476  { doGetParmValue(idx, instance, value); }
477  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
478  { doGetParmValue(idx, instance, value); }
479  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
480  { doGetParmValue(idx, instance, value); }
481  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
482  { doGetParmValue(idx, instance, value); }
483  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
484  { doGetParmValue(idx, instance, value); }
485  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
486  { doGetParmValue(idx, instance, value); }
487 
488  template <typename T>
489  void
490  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
491  {
492  if (idx.size() < 1)
493  return;
494  UT_ASSERT(idx.size() == instance.size()+1);
495  if (idx.size() != instance.size()+1)
496  return;
497  switch (idx[0])
498  {
499  case 0:
500  coerceValue(myGroup, ( ( value ) ));
501  break;
502  case 1:
503  coerceValue(myUVAttrib, ( ( value ) ));
504  break;
505  case 2:
506  coerceValue(myLayoutMethod, clampMinValue(0, clampMaxValue(2, value ) ));
507  break;
508  case 3:
509  coerceValue(myCenterPointsSource, clampMinValue(0, clampMaxValue(1, value ) ));
510  break;
511  case 4:
512  coerceValue(mySrcPoints, ( ( value ) ));
513  break;
514  case 5:
515  coerceValue(myPointSelectionMethod, clampMinValue(0, clampMaxValue(1, value ) ));
516  break;
517  case 6:
518  coerceValue(myAddAutomaticSources, ( ( value ) ));
519  break;
520  case 7:
521  coerceValue(myNAutomaticSources, clampMinValue(0, ( value ) ));
522  break;
523  case 8:
524  coerceValue(myAutomaticDistortionThreshold, clampMinValue(1, ( value ) ));
525  break;
526  case 9:
527  coerceValue(myUseUp, ( ( value ) ));
528  break;
529  case 10:
530  coerceValue(myUDirAttrib, ( ( value ) ));
531  break;
532  case 11:
533  coerceValue(myUseScale, ( ( value ) ));
534  break;
535  case 12:
536  coerceValue(myLogScaleAttrib, ( ( value ) ));
537  break;
538  case 13:
539  coerceValue(myUsePScale, ( ( value ) ));
540  break;
541  case 14:
542  coerceValue(myLogScaleUniformAttrib, ( ( value ) ));
543  break;
544  case 15:
545  coerceValue(myPackingMethod, clampMinValue(0, clampMaxValue(2, value ) ));
546  break;
547  case 16:
548  coerceValue(myBBoxCenter, ( ( value ) ));
549  break;
550  case 17:
551  coerceValue(myBBoxSize, clampMinValue(0, ( value ) ));
552  break;
553  case 18:
554  coerceValue(myUseUDIMTarget, ( ( value ) ));
555  break;
556  case 19:
557  coerceValue(myUDIMTargetAttrib, ( ( value ) ));
558  break;
559  case 20:
560  coerceValue(myNoneUVCenter, ( ( value ) ));
561  break;
562  case 21:
563  coerceValue(myUseDistortionPruning, ( ( value ) ));
564  break;
565  case 22:
566  coerceValue(myDistortionThreshold, clampMinValue(1, ( value ) ));
567  break;
568  case 23:
569  coerceValue(myUseOutputMissingGroup, ( ( value ) ));
570  break;
571  case 24:
572  coerceValue(myMissingPrimsGroup, ( ( value ) ));
573  break;
574  case 25:
575  coerceValue(myPreserveExistingUVs, ( ( value ) ));
576  break;
577  case 26:
578  coerceValue(myUseOutputUnprocessedPrims, ( ( value ) ));
579  break;
580  case 27:
581  coerceValue(myUnprocessedPrimsGroup, ( ( value ) ));
582  break;
583  case 28:
584  coerceValue(myUseOutputSeams, ( ( value ) ));
585  break;
586  case 29:
587  coerceValue(myOutputSeams, ( ( value ) ));
588  break;
589  case 30:
590  coerceValue(myUseOutputVoronoiCells, ( ( value ) ));
591  break;
592  case 31:
593  coerceValue(myOutputVoronoiCells, ( ( value ) ));
594  break;
595  case 32:
596  coerceValue(myUseCopyPointAttribs, ( ( value ) ));
597  break;
598  case 33:
599  coerceValue(myCopyPointAttribs, ( ( value ) ));
600  break;
601  case 34:
602  coerceValue(myUseOutputIndividualUVs, ( ( value ) ));
603  break;
604  case 35:
605  coerceValue(myOutputIndividualUVs, ( ( value ) ));
606  break;
607 
608  }
609  }
610 
611  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
612  { doSetParmValue(idx, instance, value); }
613  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
614  { doSetParmValue(idx, instance, value); }
615  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
616  { doSetParmValue(idx, instance, value); }
617  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
618  { doSetParmValue(idx, instance, value); }
619  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
620  { doSetParmValue(idx, instance, value); }
621  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
622  { doSetParmValue(idx, instance, value); }
623  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
624  { doSetParmValue(idx, instance, value); }
625  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
626  { doSetParmValue(idx, instance, value); }
627  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
628  { doSetParmValue(idx, instance, value); }
629  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
630  { doSetParmValue(idx, instance, value); }
631  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
632  { doSetParmValue(idx, instance, value); }
633 
634  exint getNestNumParms(TempIndex idx) const override
635  {
636  if (idx.size() == 0)
637  return 36;
638  switch (idx[0])
639  {
640 
641  }
642  // Invalid
643  return 0;
644  }
645 
646  const char *getNestParmName(TempIndex fieldnum) const override
647  {
648  if (fieldnum.size() < 1)
649  return 0;
650  switch (fieldnum[0])
651  {
652  case 0:
653  return "group";
654  case 1:
655  return "uvattrib";
656  case 2:
657  return "method";
658  case 3:
659  return "centerpointsource";
660  case 4:
661  return "srcpoints";
662  case 5:
663  return "automaticmethod";
664  case 6:
665  return "addautomaticsources";
666  case 7:
667  return "nautomaticsources";
668  case 8:
669  return "automaticdistortionthreshold";
670  case 9:
671  return "useup";
672  case 10:
673  return "up";
674  case 11:
675  return "usescale";
676  case 12:
677  return "scale";
678  case 13:
679  return "usepscale";
680  case 14:
681  return "pscale";
682  case 15:
683  return "packingmethod";
684  case 16:
685  return "bboxcenter";
686  case 17:
687  return "bboxsize";
688  case 18:
689  return "useudimtarget";
690  case 19:
691  return "udimtarget";
692  case 20:
693  return "uvcenter";
694  case 21:
695  return "usedistortionpruning";
696  case 22:
697  return "distortionthreshold";
698  case 23:
699  return "useoutputdistortedprims";
700  case 24:
701  return "distortedprims";
702  case 25:
703  return "preserveexistinguvs";
704  case 26:
705  return "useoutputunprocessedprims";
706  case 27:
707  return "unprocessedprims";
708  case 28:
709  return "useoutputseams";
710  case 29:
711  return "outputseams";
712  case 30:
713  return "useoutputislandnumber";
714  case 31:
715  return "outputislandnumber";
716  case 32:
717  return "usecopypointattribs";
718  case 33:
719  return "copypointattribs";
720  case 34:
721  return "createuvsetperpoint";
722  case 35:
723  return "uvsetprefix";
724 
725  }
726  return 0;
727  }
728 
729  ParmType getNestParmType(TempIndex fieldnum) const override
730  {
731  if (fieldnum.size() < 1)
732  return PARM_UNSUPPORTED;
733  switch (fieldnum[0])
734  {
735  case 0:
736  return PARM_STRING;
737  case 1:
738  return PARM_STRING;
739  case 2:
740  return PARM_INTEGER;
741  case 3:
742  return PARM_INTEGER;
743  case 4:
744  return PARM_STRING;
745  case 5:
746  return PARM_INTEGER;
747  case 6:
748  return PARM_INTEGER;
749  case 7:
750  return PARM_INTEGER;
751  case 8:
752  return PARM_FLOAT;
753  case 9:
754  return PARM_INTEGER;
755  case 10:
756  return PARM_STRING;
757  case 11:
758  return PARM_INTEGER;
759  case 12:
760  return PARM_STRING;
761  case 13:
762  return PARM_INTEGER;
763  case 14:
764  return PARM_STRING;
765  case 15:
766  return PARM_INTEGER;
767  case 16:
768  return PARM_VECTOR2;
769  case 17:
770  return PARM_VECTOR2;
771  case 18:
772  return PARM_INTEGER;
773  case 19:
774  return PARM_STRING;
775  case 20:
776  return PARM_VECTOR2;
777  case 21:
778  return PARM_INTEGER;
779  case 22:
780  return PARM_FLOAT;
781  case 23:
782  return PARM_INTEGER;
783  case 24:
784  return PARM_STRING;
785  case 25:
786  return PARM_INTEGER;
787  case 26:
788  return PARM_INTEGER;
789  case 27:
790  return PARM_STRING;
791  case 28:
792  return PARM_INTEGER;
793  case 29:
794  return PARM_STRING;
795  case 30:
796  return PARM_INTEGER;
797  case 31:
798  return PARM_STRING;
799  case 32:
800  return PARM_INTEGER;
801  case 33:
802  return PARM_STRING;
803  case 34:
804  return PARM_INTEGER;
805  case 35:
806  return PARM_STRING;
807 
808  }
809  return PARM_UNSUPPORTED;
810  }
811 
812  // Boiler plate to load individual types.
813  static void loadData(UT_IStream &is, int64 &v)
814  { is.bread(&v, 1); }
815  static void loadData(UT_IStream &is, bool &v)
816  { int64 iv; is.bread(&iv, 1); v = iv; }
817  static void loadData(UT_IStream &is, fpreal64 &v)
818  { is.bread<fpreal64>(&v, 1); }
819  static void loadData(UT_IStream &is, UT_Vector2D &v)
820  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
821  static void loadData(UT_IStream &is, UT_Vector3D &v)
822  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
823  is.bread<fpreal64>(&v.z(), 1); }
824  static void loadData(UT_IStream &is, UT_Vector4D &v)
825  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
826  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
827  static void loadData(UT_IStream &is, UT_Matrix2D &v)
828  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
829  static void loadData(UT_IStream &is, UT_Matrix3D &v)
830  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
831  static void loadData(UT_IStream &is, UT_Matrix4D &v)
832  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
833  static void loadData(UT_IStream &is, UT_Vector2I &v)
834  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
835  static void loadData(UT_IStream &is, UT_Vector3I &v)
836  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
837  is.bread<int64>(&v.z(), 1); }
838  static void loadData(UT_IStream &is, UT_Vector4I &v)
839  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
840  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
842  { is.bread(v); }
844  { UT_StringHolder rampdata;
845  loadData(is, rampdata);
846  if (rampdata.isstring())
847  {
848  v.reset(new UT_Ramp());
849  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
850  v->load(istr);
851  }
852  else v.reset();
853  }
856  loadData(is, data);
857  if (data.isstring())
858  {
859  // Find the data type.
860  const char *colon = UT_StringWrap(data).findChar(':');
861  if (colon)
862  {
863  int typelen = colon - data.buffer();
865  type.strncpy(data.buffer(), typelen);
866  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
867 
868  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
869  }
870  }
871  else v.reset();
872  }
873 
874  static void saveData(std::ostream &os, int64 v)
875  { UTwrite(os, &v); }
876  static void saveData(std::ostream &os, bool v)
877  { int64 iv = v; UTwrite(os, &iv); }
878  static void saveData(std::ostream &os, fpreal64 v)
879  { UTwrite<fpreal64>(os, &v); }
880  static void saveData(std::ostream &os, UT_Vector2D v)
881  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
882  static void saveData(std::ostream &os, UT_Vector3D v)
883  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
884  UTwrite<fpreal64>(os, &v.z()); }
885  static void saveData(std::ostream &os, UT_Vector4D v)
886  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
887  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
888  static void saveData(std::ostream &os, UT_Matrix2D v)
890  static void saveData(std::ostream &os, UT_Matrix3D v)
892  static void saveData(std::ostream &os, UT_Matrix4D v)
894  static void saveData(std::ostream &os, UT_StringHolder s)
895  { UT_StringWrap(s).saveBinary(os); }
896  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
898  UT_OStringStream ostr;
899  if (s) s->save(ostr);
900  result = ostr.str();
901  saveData(os, result);
902  }
903  static void saveData(std::ostream &os, PRM_DataItemHandle s)
905  UT_OStringStream ostr;
906  if (s)
907  {
908  ostr << s->getDataTypeToken();
909  ostr << ":";
910  s->saveBinary(ostr);
911  }
912  result = ostr.str();
913  saveData(os, result);
914  }
915 
916 
917  void save(std::ostream &os) const
918  {
919  int32 v = version();
920  UTwrite(os, &v);
921  saveData(os, myGroup);
922  saveData(os, myUVAttrib);
923  saveData(os, myLayoutMethod);
924  saveData(os, myCenterPointsSource);
925  saveData(os, mySrcPoints);
926  saveData(os, myPointSelectionMethod);
927  saveData(os, myAddAutomaticSources);
928  saveData(os, myNAutomaticSources);
929  saveData(os, myAutomaticDistortionThreshold);
930  saveData(os, myUseUp);
931  saveData(os, myUDirAttrib);
932  saveData(os, myUseScale);
933  saveData(os, myLogScaleAttrib);
934  saveData(os, myUsePScale);
935  saveData(os, myLogScaleUniformAttrib);
936  saveData(os, myPackingMethod);
937  saveData(os, myBBoxCenter);
938  saveData(os, myBBoxSize);
939  saveData(os, myUseUDIMTarget);
940  saveData(os, myUDIMTargetAttrib);
941  saveData(os, myNoneUVCenter);
942  saveData(os, myUseDistortionPruning);
943  saveData(os, myDistortionThreshold);
944  saveData(os, myUseOutputMissingGroup);
945  saveData(os, myMissingPrimsGroup);
946  saveData(os, myPreserveExistingUVs);
947  saveData(os, myUseOutputUnprocessedPrims);
948  saveData(os, myUnprocessedPrimsGroup);
949  saveData(os, myUseOutputSeams);
950  saveData(os, myOutputSeams);
951  saveData(os, myUseOutputVoronoiCells);
952  saveData(os, myOutputVoronoiCells);
953  saveData(os, myUseCopyPointAttribs);
954  saveData(os, myCopyPointAttribs);
955  saveData(os, myUseOutputIndividualUVs);
956  saveData(os, myOutputIndividualUVs);
957 
958  }
959 
960  bool load(UT_IStream &is)
961  {
962  int32 v;
963  is.bread(&v, 1);
964  if (version() != v)
965  {
966  // Fail incompatible versions
967  return false;
968  }
969  loadData(is, myGroup);
970  loadData(is, myUVAttrib);
971  loadData(is, myLayoutMethod);
972  loadData(is, myCenterPointsSource);
973  loadData(is, mySrcPoints);
974  loadData(is, myPointSelectionMethod);
975  loadData(is, myAddAutomaticSources);
976  loadData(is, myNAutomaticSources);
977  loadData(is, myAutomaticDistortionThreshold);
978  loadData(is, myUseUp);
979  loadData(is, myUDirAttrib);
980  loadData(is, myUseScale);
981  loadData(is, myLogScaleAttrib);
982  loadData(is, myUsePScale);
983  loadData(is, myLogScaleUniformAttrib);
984  loadData(is, myPackingMethod);
985  loadData(is, myBBoxCenter);
986  loadData(is, myBBoxSize);
987  loadData(is, myUseUDIMTarget);
988  loadData(is, myUDIMTargetAttrib);
989  loadData(is, myNoneUVCenter);
990  loadData(is, myUseDistortionPruning);
991  loadData(is, myDistortionThreshold);
992  loadData(is, myUseOutputMissingGroup);
993  loadData(is, myMissingPrimsGroup);
994  loadData(is, myPreserveExistingUVs);
995  loadData(is, myUseOutputUnprocessedPrims);
996  loadData(is, myUnprocessedPrimsGroup);
997  loadData(is, myUseOutputSeams);
998  loadData(is, myOutputSeams);
999  loadData(is, myUseOutputVoronoiCells);
1000  loadData(is, myOutputVoronoiCells);
1001  loadData(is, myUseCopyPointAttribs);
1002  loadData(is, myCopyPointAttribs);
1003  loadData(is, myUseOutputIndividualUVs);
1004  loadData(is, myOutputIndividualUVs);
1005 
1006  return true;
1007  }
1008 
1009  const UT_StringHolder & getGroup() const { return myGroup; }
1010  void setGroup(const UT_StringHolder & val) { myGroup = val; }
1012  {
1013  SOP_Node *thissop = cookparms.getNode();
1014  if (!thissop) return getGroup();
1016  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
1017  return result;
1018  }
1019  const UT_StringHolder & getUVAttrib() const { return myUVAttrib; }
1020  void setUVAttrib(const UT_StringHolder & val) { myUVAttrib = val; }
1022  {
1023  SOP_Node *thissop = cookparms.getNode();
1024  if (!thissop) return getUVAttrib();
1026  OP_Utils::evalOpParm(result, thissop, "uvattrib", cookparms.getCookTime(), 0);
1027  return result;
1028  }
1029  LayoutMethod getLayoutMethod() const { return LayoutMethod(myLayoutMethod); }
1030  void setLayoutMethod(LayoutMethod val) { myLayoutMethod = int64(val); }
1032  {
1033  SOP_Node *thissop = cookparms.getNode();
1034  if (!thissop) return getLayoutMethod();
1035  int64 result;
1036  OP_Utils::evalOpParm(result, thissop, "method", cookparms.getCookTime(), 0);
1037  return LayoutMethod(result);
1038  }
1039  CenterPointsSource getCenterPointsSource() const { return CenterPointsSource(myCenterPointsSource); }
1040  void setCenterPointsSource(CenterPointsSource val) { myCenterPointsSource = int64(val); }
1042  {
1043  SOP_Node *thissop = cookparms.getNode();
1044  if (!thissop) return getCenterPointsSource();
1045  int64 result;
1046  OP_Utils::evalOpParm(result, thissop, "centerpointsource", cookparms.getCookTime(), 0);
1047  return CenterPointsSource(result);
1048  }
1049  const UT_StringHolder & getSrcPoints() const { return mySrcPoints; }
1050  void setSrcPoints(const UT_StringHolder & val) { mySrcPoints = val; }
1052  {
1053  SOP_Node *thissop = cookparms.getNode();
1054  if (!thissop) return getSrcPoints();
1056  OP_Utils::evalOpParm(result, thissop, "srcpoints", cookparms.getCookTime(), 0);
1057  return result;
1058  }
1059  PointSelectionMethod getPointSelectionMethod() const { return PointSelectionMethod(myPointSelectionMethod); }
1060  void setPointSelectionMethod(PointSelectionMethod val) { myPointSelectionMethod = int64(val); }
1062  {
1063  SOP_Node *thissop = cookparms.getNode();
1064  if (!thissop) return getPointSelectionMethod();
1065  int64 result;
1066  OP_Utils::evalOpParm(result, thissop, "automaticmethod", cookparms.getCookTime(), 0);
1067  return PointSelectionMethod(result);
1068  }
1069  bool getAddAutomaticSources() const { return myAddAutomaticSources; }
1070  void setAddAutomaticSources(bool val) { myAddAutomaticSources = val; }
1071  bool opAddAutomaticSources(const SOP_NodeVerb::CookParms &cookparms) const
1072  {
1073  SOP_Node *thissop = cookparms.getNode();
1074  if (!thissop) return getAddAutomaticSources();
1075  bool result;
1076  OP_Utils::evalOpParm(result, thissop, "addautomaticsources", cookparms.getCookTime(), 0);
1077  return result;
1078  }
1079  int64 getNAutomaticSources() const { return myNAutomaticSources; }
1080  void setNAutomaticSources(int64 val) { myNAutomaticSources = val; }
1082  {
1083  SOP_Node *thissop = cookparms.getNode();
1084  if (!thissop) return getNAutomaticSources();
1085  int64 result;
1086  OP_Utils::evalOpParm(result, thissop, "nautomaticsources", cookparms.getCookTime(), 0);
1087  return result;
1088  }
1089  fpreal64 getAutomaticDistortionThreshold() const { return myAutomaticDistortionThreshold; }
1090  void setAutomaticDistortionThreshold(fpreal64 val) { myAutomaticDistortionThreshold = val; }
1092  {
1093  SOP_Node *thissop = cookparms.getNode();
1094  if (!thissop) return getAutomaticDistortionThreshold();
1095  fpreal64 result;
1096  OP_Utils::evalOpParm(result, thissop, "automaticdistortionthreshold", cookparms.getCookTime(), 0);
1097  return result;
1098  }
1099  bool getUseUp() const { return myUseUp; }
1100  void setUseUp(bool val) { myUseUp = val; }
1101  bool opUseUp(const SOP_NodeVerb::CookParms &cookparms) const
1102  {
1103  SOP_Node *thissop = cookparms.getNode();
1104  if (!thissop) return getUseUp();
1105  bool result;
1106  OP_Utils::evalOpParm(result, thissop, "useup", cookparms.getCookTime(), 0);
1107  return result;
1108  }
1109  const UT_StringHolder & getUDirAttrib() const { return myUDirAttrib; }
1110  void setUDirAttrib(const UT_StringHolder & val) { myUDirAttrib = val; }
1112  {
1113  SOP_Node *thissop = cookparms.getNode();
1114  if (!thissop) return getUDirAttrib();
1116  OP_Utils::evalOpParm(result, thissop, "up", cookparms.getCookTime(), 0);
1117  return result;
1118  }
1119  bool getUseScale() const { return myUseScale; }
1120  void setUseScale(bool val) { myUseScale = val; }
1121  bool opUseScale(const SOP_NodeVerb::CookParms &cookparms) const
1122  {
1123  SOP_Node *thissop = cookparms.getNode();
1124  if (!thissop) return getUseScale();
1125  bool result;
1126  OP_Utils::evalOpParm(result, thissop, "usescale", cookparms.getCookTime(), 0);
1127  return result;
1128  }
1129  const UT_StringHolder & getLogScaleAttrib() const { return myLogScaleAttrib; }
1130  void setLogScaleAttrib(const UT_StringHolder & val) { myLogScaleAttrib = val; }
1132  {
1133  SOP_Node *thissop = cookparms.getNode();
1134  if (!thissop) return getLogScaleAttrib();
1136  OP_Utils::evalOpParm(result, thissop, "scale", cookparms.getCookTime(), 0);
1137  return result;
1138  }
1139  bool getUsePScale() const { return myUsePScale; }
1140  void setUsePScale(bool val) { myUsePScale = val; }
1141  bool opUsePScale(const SOP_NodeVerb::CookParms &cookparms) const
1142  {
1143  SOP_Node *thissop = cookparms.getNode();
1144  if (!thissop) return getUsePScale();
1145  bool result;
1146  OP_Utils::evalOpParm(result, thissop, "usepscale", cookparms.getCookTime(), 0);
1147  return result;
1148  }
1149  const UT_StringHolder & getLogScaleUniformAttrib() const { return myLogScaleUniformAttrib; }
1150  void setLogScaleUniformAttrib(const UT_StringHolder & val) { myLogScaleUniformAttrib = val; }
1152  {
1153  SOP_Node *thissop = cookparms.getNode();
1154  if (!thissop) return getLogScaleUniformAttrib();
1156  OP_Utils::evalOpParm(result, thissop, "pscale", cookparms.getCookTime(), 0);
1157  return result;
1158  }
1159  PackingMethod getPackingMethod() const { return PackingMethod(myPackingMethod); }
1160  void setPackingMethod(PackingMethod val) { myPackingMethod = int64(val); }
1162  {
1163  SOP_Node *thissop = cookparms.getNode();
1164  if (!thissop) return getPackingMethod();
1165  int64 result;
1166  OP_Utils::evalOpParm(result, thissop, "packingmethod", cookparms.getCookTime(), 0);
1167  return PackingMethod(result);
1168  }
1169  UT_Vector2D getBBoxCenter() const { return myBBoxCenter; }
1170  void setBBoxCenter(UT_Vector2D val) { myBBoxCenter = val; }
1172  {
1173  SOP_Node *thissop = cookparms.getNode();
1174  if (!thissop) return getBBoxCenter();
1176  OP_Utils::evalOpParm(result, thissop, "bboxcenter", cookparms.getCookTime(), 0);
1177  return result;
1178  }
1179  UT_Vector2D getBBoxSize() const { return myBBoxSize; }
1180  void setBBoxSize(UT_Vector2D val) { myBBoxSize = val; }
1182  {
1183  SOP_Node *thissop = cookparms.getNode();
1184  if (!thissop) return getBBoxSize();
1186  OP_Utils::evalOpParm(result, thissop, "bboxsize", cookparms.getCookTime(), 0);
1187  return result;
1188  }
1189  bool getUseUDIMTarget() const { return myUseUDIMTarget; }
1190  void setUseUDIMTarget(bool val) { myUseUDIMTarget = val; }
1191  bool opUseUDIMTarget(const SOP_NodeVerb::CookParms &cookparms) const
1192  {
1193  SOP_Node *thissop = cookparms.getNode();
1194  if (!thissop) return getUseUDIMTarget();
1195  bool result;
1196  OP_Utils::evalOpParm(result, thissop, "useudimtarget", cookparms.getCookTime(), 0);
1197  return result;
1198  }
1199  const UT_StringHolder & getUDIMTargetAttrib() const { return myUDIMTargetAttrib; }
1200  void setUDIMTargetAttrib(const UT_StringHolder & val) { myUDIMTargetAttrib = val; }
1202  {
1203  SOP_Node *thissop = cookparms.getNode();
1204  if (!thissop) return getUDIMTargetAttrib();
1206  OP_Utils::evalOpParm(result, thissop, "udimtarget", cookparms.getCookTime(), 0);
1207  return result;
1208  }
1209  UT_Vector2D getNoneUVCenter() const { return myNoneUVCenter; }
1210  void setNoneUVCenter(UT_Vector2D val) { myNoneUVCenter = val; }
1212  {
1213  SOP_Node *thissop = cookparms.getNode();
1214  if (!thissop) return getNoneUVCenter();
1216  OP_Utils::evalOpParm(result, thissop, "uvcenter", cookparms.getCookTime(), 0);
1217  return result;
1218  }
1219  bool getUseDistortionPruning() const { return myUseDistortionPruning; }
1220  void setUseDistortionPruning(bool val) { myUseDistortionPruning = val; }
1222  {
1223  SOP_Node *thissop = cookparms.getNode();
1224  if (!thissop) return getUseDistortionPruning();
1225  bool result;
1226  OP_Utils::evalOpParm(result, thissop, "usedistortionpruning", cookparms.getCookTime(), 0);
1227  return result;
1228  }
1229  fpreal64 getDistortionThreshold() const { return myDistortionThreshold; }
1230  void setDistortionThreshold(fpreal64 val) { myDistortionThreshold = val; }
1232  {
1233  SOP_Node *thissop = cookparms.getNode();
1234  if (!thissop) return getDistortionThreshold();
1235  fpreal64 result;
1236  OP_Utils::evalOpParm(result, thissop, "distortionthreshold", cookparms.getCookTime(), 0);
1237  return result;
1238  }
1239  bool getUseOutputMissingGroup() const { return myUseOutputMissingGroup; }
1240  void setUseOutputMissingGroup(bool val) { myUseOutputMissingGroup = val; }
1242  {
1243  SOP_Node *thissop = cookparms.getNode();
1244  if (!thissop) return getUseOutputMissingGroup();
1245  bool result;
1246  OP_Utils::evalOpParm(result, thissop, "useoutputdistortedprims", cookparms.getCookTime(), 0);
1247  return result;
1248  }
1249  const UT_StringHolder & getMissingPrimsGroup() const { return myMissingPrimsGroup; }
1250  void setMissingPrimsGroup(const UT_StringHolder & val) { myMissingPrimsGroup = val; }
1252  {
1253  SOP_Node *thissop = cookparms.getNode();
1254  if (!thissop) return getMissingPrimsGroup();
1256  OP_Utils::evalOpParm(result, thissop, "distortedprims", cookparms.getCookTime(), 0);
1257  return result;
1258  }
1259  bool getPreserveExistingUVs() const { return myPreserveExistingUVs; }
1260  void setPreserveExistingUVs(bool val) { myPreserveExistingUVs = val; }
1261  bool opPreserveExistingUVs(const SOP_NodeVerb::CookParms &cookparms) const
1262  {
1263  SOP_Node *thissop = cookparms.getNode();
1264  if (!thissop) return getPreserveExistingUVs();
1265  bool result;
1266  OP_Utils::evalOpParm(result, thissop, "preserveexistinguvs", cookparms.getCookTime(), 0);
1267  return result;
1268  }
1269  bool getUseOutputUnprocessedPrims() const { return myUseOutputUnprocessedPrims; }
1270  void setUseOutputUnprocessedPrims(bool val) { myUseOutputUnprocessedPrims = val; }
1272  {
1273  SOP_Node *thissop = cookparms.getNode();
1274  if (!thissop) return getUseOutputUnprocessedPrims();
1275  bool result;
1276  OP_Utils::evalOpParm(result, thissop, "useoutputunprocessedprims", cookparms.getCookTime(), 0);
1277  return result;
1278  }
1279  const UT_StringHolder & getUnprocessedPrimsGroup() const { return myUnprocessedPrimsGroup; }
1280  void setUnprocessedPrimsGroup(const UT_StringHolder & val) { myUnprocessedPrimsGroup = val; }
1282  {
1283  SOP_Node *thissop = cookparms.getNode();
1284  if (!thissop) return getUnprocessedPrimsGroup();
1286  OP_Utils::evalOpParm(result, thissop, "unprocessedprims", cookparms.getCookTime(), 0);
1287  return result;
1288  }
1289  bool getUseOutputSeams() const { return myUseOutputSeams; }
1290  void setUseOutputSeams(bool val) { myUseOutputSeams = val; }
1291  bool opUseOutputSeams(const SOP_NodeVerb::CookParms &cookparms) const
1292  {
1293  SOP_Node *thissop = cookparms.getNode();
1294  if (!thissop) return getUseOutputSeams();
1295  bool result;
1296  OP_Utils::evalOpParm(result, thissop, "useoutputseams", cookparms.getCookTime(), 0);
1297  return result;
1298  }
1299  const UT_StringHolder & getOutputSeams() const { return myOutputSeams; }
1300  void setOutputSeams(const UT_StringHolder & val) { myOutputSeams = val; }
1302  {
1303  SOP_Node *thissop = cookparms.getNode();
1304  if (!thissop) return getOutputSeams();
1306  OP_Utils::evalOpParm(result, thissop, "outputseams", cookparms.getCookTime(), 0);
1307  return result;
1308  }
1309  bool getUseOutputVoronoiCells() const { return myUseOutputVoronoiCells; }
1310  void setUseOutputVoronoiCells(bool val) { myUseOutputVoronoiCells = val; }
1312  {
1313  SOP_Node *thissop = cookparms.getNode();
1314  if (!thissop) return getUseOutputVoronoiCells();
1315  bool result;
1316  OP_Utils::evalOpParm(result, thissop, "useoutputislandnumber", cookparms.getCookTime(), 0);
1317  return result;
1318  }
1319  const UT_StringHolder & getOutputVoronoiCells() const { return myOutputVoronoiCells; }
1320  void setOutputVoronoiCells(const UT_StringHolder & val) { myOutputVoronoiCells = val; }
1322  {
1323  SOP_Node *thissop = cookparms.getNode();
1324  if (!thissop) return getOutputVoronoiCells();
1326  OP_Utils::evalOpParm(result, thissop, "outputislandnumber", cookparms.getCookTime(), 0);
1327  return result;
1328  }
1329  bool getUseCopyPointAttribs() const { return myUseCopyPointAttribs; }
1330  void setUseCopyPointAttribs(bool val) { myUseCopyPointAttribs = val; }
1331  bool opUseCopyPointAttribs(const SOP_NodeVerb::CookParms &cookparms) const
1332  {
1333  SOP_Node *thissop = cookparms.getNode();
1334  if (!thissop) return getUseCopyPointAttribs();
1335  bool result;
1336  OP_Utils::evalOpParm(result, thissop, "usecopypointattribs", cookparms.getCookTime(), 0);
1337  return result;
1338  }
1339  const UT_StringHolder & getCopyPointAttribs() const { return myCopyPointAttribs; }
1340  void setCopyPointAttribs(const UT_StringHolder & val) { myCopyPointAttribs = val; }
1342  {
1343  SOP_Node *thissop = cookparms.getNode();
1344  if (!thissop) return getCopyPointAttribs();
1346  OP_Utils::evalOpParm(result, thissop, "copypointattribs", cookparms.getCookTime(), 0);
1347  return result;
1348  }
1349  bool getUseOutputIndividualUVs() const { return myUseOutputIndividualUVs; }
1350  void setUseOutputIndividualUVs(bool val) { myUseOutputIndividualUVs = val; }
1352  {
1353  SOP_Node *thissop = cookparms.getNode();
1354  if (!thissop) return getUseOutputIndividualUVs();
1355  bool result;
1356  OP_Utils::evalOpParm(result, thissop, "createuvsetperpoint", cookparms.getCookTime(), 0);
1357  return result;
1358  }
1359  const UT_StringHolder & getOutputIndividualUVs() const { return myOutputIndividualUVs; }
1360  void setOutputIndividualUVs(const UT_StringHolder & val) { myOutputIndividualUVs = val; }
1362  {
1363  SOP_Node *thissop = cookparms.getNode();
1364  if (!thissop) return getOutputIndividualUVs();
1366  OP_Utils::evalOpParm(result, thissop, "uvsetprefix", cookparms.getCookTime(), 0);
1367  return result;
1368  }
1369 
1370 private:
1371  UT_StringHolder myGroup;
1372  UT_StringHolder myUVAttrib;
1373  int64 myLayoutMethod;
1374  int64 myCenterPointsSource;
1375  UT_StringHolder mySrcPoints;
1376  int64 myPointSelectionMethod;
1377  bool myAddAutomaticSources;
1378  int64 myNAutomaticSources;
1379  fpreal64 myAutomaticDistortionThreshold;
1380  bool myUseUp;
1381  UT_StringHolder myUDirAttrib;
1382  bool myUseScale;
1383  UT_StringHolder myLogScaleAttrib;
1384  bool myUsePScale;
1385  UT_StringHolder myLogScaleUniformAttrib;
1386  int64 myPackingMethod;
1387  UT_Vector2D myBBoxCenter;
1388  UT_Vector2D myBBoxSize;
1389  bool myUseUDIMTarget;
1390  UT_StringHolder myUDIMTargetAttrib;
1391  UT_Vector2D myNoneUVCenter;
1392  bool myUseDistortionPruning;
1393  fpreal64 myDistortionThreshold;
1394  bool myUseOutputMissingGroup;
1395  UT_StringHolder myMissingPrimsGroup;
1396  bool myPreserveExistingUVs;
1397  bool myUseOutputUnprocessedPrims;
1398  UT_StringHolder myUnprocessedPrimsGroup;
1399  bool myUseOutputSeams;
1400  UT_StringHolder myOutputSeams;
1401  bool myUseOutputVoronoiCells;
1402  UT_StringHolder myOutputVoronoiCells;
1403  bool myUseCopyPointAttribs;
1404  UT_StringHolder myCopyPointAttribs;
1405  bool myUseOutputIndividualUVs;
1406  UT_StringHolder myOutputIndividualUVs;
1407 
1408 };
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
type
Definition: core.h:556
static void saveData(std::ostream &os, UT_Matrix3D v)
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
void setLogScaleUniformAttrib(const UT_StringHolder &val)
static void loadData(UT_IStream &is, UT_Vector3D &v)
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
const UT_StringHolder & getGroup() const
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
const UT_StringHolder & getMissingPrimsGroup() const
const UT_StringHolder & getOutputSeams() const
void setUnprocessedPrimsGroup(const UT_StringHolder &val)
void setOutputSeams(const UT_StringHolder &val)
exint bread(int32 *buffer, exint asize=1)
GLboolean * data
Definition: glcorearb.h:131
GT_API const UT_StringHolder time
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector4.h:493
const GLdouble * v
Definition: glcorearb.h:837
static void saveData(std::ostream &os, UT_Matrix2D v)
fpreal getTime() const
Definition: OP_Context.h:63
UT_Vector2T< fpreal64 > UT_Vector2D
UT_StringHolder opLogScaleUniformAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
GLsizei const GLfloat * value
Definition: glcorearb.h:824
const OP_Context & context() const
Definition: OP_NodeParms.h:97
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:667
int64 exint
Definition: SYS_Types.h:125
void setOutputIndividualUVs(const UT_StringHolder &val)
SYS_FORCE_INLINE const char * buffer() const
UT_StringHolder opUVAttrib(const SOP_NodeVerb::CookParms &cookparms) const
GLdouble s
Definition: glad.h:3009
static void saveData(std::ostream &os, UT_StringHolder s)
const UT_StringHolder & getLogScaleUniformAttrib() const
An output stream object that owns its own string buffer storage.
void setPointSelectionMethod(PointSelectionMethod val)
CenterPointsSource getCenterPointsSource() const
const UT_StringHolder & getUDirAttrib() const
**But if you need a result
Definition: thread.h:622
void setUDirAttrib(const UT_StringHolder &val)
static void saveData(std::ostream &os, fpreal64 v)
UT_StringHolder opOutputSeams(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector2I &v)
UT_Vector2D opBBoxSize(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector4D &v)
UT_StringHolder opOutputIndividualUVs(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getSrcPoints() const
exint nodeIdx() const
Definition: OP_NodeParms.h:95
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
bool opAddAutomaticSources(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
static void loadData(UT_IStream &is, UT_Matrix3D &v)
static void loadData(UT_IStream &is, UT_Matrix4D &v)
bool opUseUDIMTarget(const SOP_NodeVerb::CookParms &cookparms) const
bool opUseOutputSeams(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
UT_StringHolder opOutputVoronoiCells(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getLogScaleAttrib() const
double fpreal64
Definition: SYS_Types.h:201
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: APEX_Include.h:55
void copyFrom(const OP_NodeParms *src) override
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
static void loadData(UT_IStream &is, UT_Vector3I &v)
bool opUseOutputUnprocessedPrims(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
static void loadData(UT_IStream &is, int64 &v)
PointSelectionMethod opPointSelectionMethod(const SOP_NodeVerb::CookParms &cookparms) const
void setLogScaleAttrib(const UT_StringHolder &val)
bool opUsePScale(const SOP_NodeVerb::CookParms &cookparms) const
exint length() const
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:36
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:495
const char * getNestParmName(TempIndex fieldnum) const override
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
void setMissingPrimsGroup(const UT_StringHolder &val)
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
const UT_StringHolder & getUVAttrib() const
static void loadData(UT_IStream &is, UT_Vector4I &v)
static void loadData(UT_IStream &is, bool &v)
UT_StringHolder opCopyPointAttribs(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D opNoneUVCenter(const SOP_NodeVerb::CookParms &cookparms) const
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
#define SYS_FORCE_INLINE
Definition: SYS_Inline.h:45
bool operator==(const SOP_UVFlattenFromPointsParms &src) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
void setUVAttrib(const UT_StringHolder &val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
static void loadData(UT_IStream &is, UT_Vector2D &v)
bool operator!=(const SOP_UVFlattenFromPointsParms &src) const
void setCopyPointAttribs(const UT_StringHolder &val)
fpreal64 opAutomaticDistortionThreshold(const SOP_NodeVerb::CookParms &cookparms) const
long long int64
Definition: SYS_Types.h:116
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
exint getNestNumParms(TempIndex idx) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
void setUDIMTargetAttrib(const UT_StringHolder &val)
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
SYS_FORCE_INLINE UT_StringHolder getToken(LayoutMethod enum_value)
CenterPointsSource opCenterPointsSource(const SOP_NodeVerb::CookParms &cookparms) const
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:303
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
bool opUseOutputIndividualUVs(const SOP_NodeVerb::CookParms &cookparms) const
GT_API const UT_StringHolder version
UT_StringHolder opSrcPoints(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
virtual int nInputs(NodeIdx idx) const =0
static void loadData(UT_IStream &is, fpreal64 &v)
bool isParmColorRamp(exint idx) const override
UT_StringHolder opUDIMTargetAttrib(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getOutputVoronoiCells() const
static void loadData(UT_IStream &is, UT_Matrix2D &v)
UT_StringHolder opGroup(const SOP_NodeVerb::CookParms &cookparms) const
void loadFromOpSubclass(const LoadParms &loadparms) override
fpreal64 fpreal
Definition: SYS_Types.h:278
void setCenterPointsSource(CenterPointsSource val)
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
UT_StringHolder opUnprocessedPrimsGroup(const SOP_NodeVerb::CookParms &cookparms) const
PackingMethod opPackingMethod(const SOP_NodeVerb::CookParms &cookparms) const
LeafData & operator=(const LeafData &)=delete
Utility class for containing a color ramp.
Definition: UT_Ramp.h:96
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
void setOutputVoronoiCells(const UT_StringHolder &val)
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
static void saveData(std::ostream &os, UT_Vector4D v)
GLuint GLfloat * val
Definition: glcorearb.h:1608
virtual UT_StringHolder baseGetSignature() const
Definition: OP_NodeParms.h:294
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
bool opUseUp(const SOP_NodeVerb::CookParms &cookparms) const
#define SOP_API
Definition: SOP_API.h:10
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
static void saveData(std::ostream &os, PRM_DataItemHandle s)
LayoutMethod opLayoutMethod(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getCopyPointAttribs() const
UT_StringHolder opLogScaleAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:372
const UT_StringHolder & getUDIMTargetAttrib() const
bool opUseOutputVoronoiCells(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, bool v)
PointSelectionMethod getPointSelectionMethod() const
const char * findChar(int c) const
Definition: UT_String.h:1401
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
bool opUseScale(const SOP_NodeVerb::CookParms &cookparms) const
GLboolean r
Definition: glcorearb.h:1222
static void saveData(std::ostream &os, UT_Vector3D v)
bool opPreserveExistingUVs(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
static void saveData(std::ostream &os, int64 v)
UT_StringHolder opMissingPrimsGroup(const SOP_NodeVerb::CookParms &cookparms) const
void setGroup(const UT_StringHolder &val)
virtual bool isDirect() const =0
Direct proxies mirror actual nodes:
UT_Vector2D opBBoxCenter(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getOutputIndividualUVs() const
void setSrcPoints(const UT_StringHolder &val)
bool opUseCopyPointAttribs(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_StringHolder &v)
fpreal64 opDistortionThreshold(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
bool opUseDistortionPruning(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE bool isstring() const
static void saveData(std::ostream &os, UT_Matrix4D v)
UT_StringHolder opUDirAttrib(const SOP_NodeVerb::CookParms &cookparms) const
bool opUseOutputMissingGroup(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
ParmType getNestParmType(TempIndex fieldnum) const override
void save(std::ostream &os) const
static void saveData(std::ostream &os, UT_Vector2D v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
GLenum src
Definition: glcorearb.h:1793
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663
int64 opNAutomaticSources(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getUnprocessedPrimsGroup() const