HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
PRM_SpareData.h
Go to the documentation of this file.
1 /*
2  * PROPRIETARY INFORMATION. This software is proprietary to
3  * Side Effects Software Inc., and is not to be reproduced,
4  * transmitted, or disclosed in any way without written permission.
5  *
6  * NAME: PRM_SpareData.h ( PRM Library, C++)
7  *
8  * COMMENTS: This class is used to add additional token/value pairs to a
9  * parameter.
10  */
11 
12 #ifndef __PRM_SpareData__
13 #define __PRM_SpareData__
14 
15 #include "PRM_API.h"
16 #include "PRM_Type.h"
17 
18 #include <CH/CH_ExprLanguage.h>
19 #include <UT/UT_ArrayStringMap.h>
20 #include <UT/UT_Color.h>
21 #include <UT/UT_Variadic.h>
22 
23 #include <SYS/SYS_Types.h>
24 
25 #include <utility>
26 
27 
28 // Namespace to use for built-in parameter tags.
29 // Note that we cannot add the namespace to old built-in tags
30 // for compatibility reasons.
31 #define PRM_SPARE_BUILTIN_NAMESPACE "sidefx::"
32 
33 //
34 // Declarations of built-in parm spare data tokens (tag names).
35 // The entries in this list must be included in `theBuiltInTokens` map
36 // (see PRM_SpareData.C).
37 //
38 // NOTE: You *must* include the SideFX namespace in the token
39 // when adding a new spare data token.
40 //
41 #define PRM_SPARE_KEY_VALUE_DICT_KEY_LABEL_TOKEN \
42  PRM_SPARE_BUILTIN_NAMESPACE "key_value_dict_key_label"
43 #define PRM_SPARE_KEY_VALUE_DICT_VALUE_LABEL_TOKEN \
44  PRM_SPARE_BUILTIN_NAMESPACE "key_value_dict_value_label"
45 #define PRM_SPARE_KEY_VALUE_DICT_USE_CHOOSER_TOKEN \
46  PRM_SPARE_BUILTIN_NAMESPACE "key_value_dict_use_chooser"
47 #define PRM_SPARE_KEY_VALUE_DICT_CHOOSER_LABEL_TOKEN \
48  PRM_SPARE_BUILTIN_NAMESPACE "key_value_dict_chooser_label"
49 #define PRM_SPARE_KEY_VALUE_DICT_CHOOSER_CALLBACK_TOKEN \
50  PRM_SPARE_BUILTIN_NAMESPACE "key_value_dict_chooser_callback"
51 #define PRM_SPARE_ATTRIB_ACCESS_TOKEN \
52  PRM_SPARE_BUILTIN_NAMESPACE "attrib_access"
53 #define PRM_SPARE_CONNECTOR_KIND \
54  PRM_SPARE_BUILTIN_NAMESPACE "connector_kind"
55 #define PRM_SPARE_CONNECTOR_TYPE \
56  PRM_SPARE_BUILTIN_NAMESPACE "connector_type"
57 #define PRM_SPARE_USDPATHTYPE_TOKEN \
58  PRM_SPARE_BUILTIN_NAMESPACE "usdpathtype"
59 #define PRM_SPARE_USDPATHINPUT_TOKEN \
60  PRM_SPARE_BUILTIN_NAMESPACE "usdpathinput"
61 #define PRM_SPARE_IS_SHADER_PARM_TOKEN \
62  PRM_SPARE_BUILTIN_NAMESPACE "shader_isparm"
63 #define PRM_SPARE_FORCE_SHADER_PARM_VAL_TOKEN \
64  PRM_SPARE_BUILTIN_NAMESPACE "shader_forceparmval"
65 #define PRM_SPARE_SHADER_PARM_TYPE_TOKEN \
66  PRM_SPARE_BUILTIN_NAMESPACE "shader_parmtype"
67 #define PRM_SPARE_SHADER_PARM_NAME_TOKEN \
68  PRM_SPARE_BUILTIN_NAMESPACE "shader_parmname"
69 #define PRM_SPARE_SAVE_VALUE_TOKEN \
70  PRM_SPARE_BUILTIN_NAMESPACE "save_value"
71 #define PRM_SPARE_MAYA_COMPONENT_SELECTION_TYPE_TOKEN \
72  PRM_SPARE_BUILTIN_NAMESPACE "maya_component_selection_type"
73 #define PRM_SPARE_LOOK_TOKEN \
74  PRM_SPARE_BUILTIN_NAMESPACE "look"
75 #define PRM_SPARE_LAYOUT_HEIGHT_TOKEN \
76  PRM_SPARE_BUILTIN_NAMESPACE "layout_height"
77 #define PRM_SPARE_HEADER_TOGGLE_TOKEN \
78  PRM_SPARE_BUILTIN_NAMESPACE "header_toggle"
79 #define PRM_SPARE_HEADER_PARM_TOKEN \
80  PRM_SPARE_BUILTIN_NAMESPACE "header_parm"
81 #define PRM_SPARE_HEADER_LABEL_TOKEN \
82  PRM_SPARE_BUILTIN_NAMESPACE "header_label"
83 #define PRM_SPARE_SLIDER_TOKEN \
84  PRM_SPARE_BUILTIN_NAMESPACE "slider"
85 #define PRM_SPARE_SWITCHER_BASE \
86  PRM_SPARE_BUILTIN_NAMESPACE "switcher"
87 #define PRM_SPARE_IMAGE_ALLOW_VIDEO_TOKEN \
88  PRM_SPARE_BUILTIN_NAMESPACE "allow_video"
89 #define PRM_SPARE_RAMP_GRAYSCALE_DEFAULT_TOKEN \
90  PRM_SPARE_BUILTIN_NAMESPACE "ramp_grayscale_default"
91 
92 // When you add a tag above, make sure to add it to $SHS/properties/other/standardparmtags.ds
93 
94 //
95 // Declarations of *old*, built-in parm spare data tokens (tag names).
96 // WARNING: Do not add new spare data tokens to this list!!!
97 // Add the tokens to the new list above and include the SideFX
98 // namespace in the tokens.
99 //
100 #define PRM_SPARE_AUTOSCOPE_TOKEN "autoscope"
101 #define PRM_SPARE_BUTTON_ICON_TOKEN "button_icon"
102 #define PRM_SPARE_CODE_GENERATION_TOKEN "code_generation"
103 #define PRM_SPARE_COLOR_DYN_TOKEN "colordyn"
104 #define PRM_SPARE_COLOR_TYPE_TOKEN "colortype"
105 #define PRM_SPARE_COLOR_WHEEL_TOKEN "colorwheel"
106 #define PRM_SPARE_COOK_DEPENDENT_TOKEN "cook_dependent"
107 #define PRM_SPARE_EDITOR_LANG_PROLOGUE_TOKEN "editorlang_prologue"
108 #define PRM_SPARE_EDITOR_LANG_TOKEN "editorlang"
109 #define PRM_SPARE_EDITOR_LINES_TOKEN "editorlines"
110 #define PRM_SPARE_EDITOR_TOKEN "editor"
111 #define PRM_SPARE_FILE_CHOOSER_MODE_TOKEN "filechooser_mode"
112 #define PRM_SPARE_FILE_CHOOSER_PATTERN_TOKEN "filechooser_pattern"
113 #define PRM_SPARE_GROUP_TYPE_TOKEN "group_type"
114 #define PRM_SPARE_GROUP_DEFAULT_TOKEN "group_default"
115 #define PRM_SPARE_MULTI_START_OFFSET_TOKEN "multistartoffset"
116 #define PRM_SPARE_NETREF_TOKEN "netref"
117 #define PRM_SPARE_OPFILTER_TOKEN "opfilter"
118 #define PRM_SPARE_OPPATH_KEYWORDS_TOKEN "oppathkeywords"
119 #define PRM_SPARE_OPRELATIVE_TOKEN "oprelative"
120 #define PRM_SPARE_PARM_VOP_TOKEN "parmvop"
121 #define PRM_SPARE_RAMP_BASIS_DEFAULT_TOKEN "rampbasisdefault"
122 #define PRM_SPARE_RAMP_BASIS_TOKEN "rampbasis"
123 #define PRM_SPARE_RAMP_BASIS_VAR_TOKEN "rampbasis_var"
124 #define PRM_SPARE_RAMP_COLOR_DEFAULT_TOKEN "rampcolordefault"
125 #define PRM_SPARE_RAMP_COLOR_TYPE_TOKEN "rampcolortype"
126 #define PRM_SPARE_RAMP_FLOAT_DEFAULT_TOKEN "rampfloatdefault"
127 #define PRM_SPARE_RAMP_KEYS_TOKEN "rampkeys"
128 #define PRM_SPARE_RAMP_KEYS_VAR_TOKEN "rampkeys_var"
129 #define PRM_SPARE_RAMP_SHOW_CONTROLS_DEFAULT_TOKEN "rampshowcontrolsdefault"
130 #define PRM_SPARE_RAMP_VALUES_TOKEN "rampvalues"
131 #define PRM_SPARE_RAMP_VALUES_VAR_TOKEN "rampvalues_var"
132 #define PRM_SPARE_SCRIPT_ACTION_HELP_TOKEN "script_action_help"
133 #define PRM_SPARE_SCRIPT_ACTION_ICON_TOKEN "script_action_icon"
134 #define PRM_SPARE_SCRIPT_ACTION_TOKEN "script_action"
135 #define PRM_SPARE_SCRIPT_CALLBACK_TOKEN "script_callback"
136 #define PRM_SPARE_SCRIPT_CALLBACK_LANGUAGE_TOKEN "script_callback_language"
137 #define PRM_SPARE_SCRIPT_RITYPE_TOKEN "script_ritype"
138 #define PRM_SPARE_SCRIPT_UNQUOTED_TOKEN "script_unquoted"
139 #define PRM_SPARE_SHADER_PARM_CONTEXTS_TOKEN "shaderparmcontexts"
140 #define PRM_SPARE_UNITS_TOKEN "units"
141 #define PRM_SPARE_XCF_MODE_TOKEN "xcfmode"
142 #define PRM_SPARE_VARYING_DEFAULT_TOKEN "varying_default"
143 
144 class UT_BitArray;
145 class UT_StringArray;
146 class UT_StringHolder;
147 class UT_StringRef;
148 class PRM_Parm;
149 class prm_SharedString;
150 
151 typedef int (*PRM_SpareCallback)(const char *token, const char *value);
152 typedef int (*PRM_SpareCallbackWithData)(const char *token,
153  const char *value, void *data);
154 
155 typedef std::pair<const char *, const char *> PRM_SpareToken;
157 
159 {
160 public:
161  /// The constructor for the PRM_SpareData should takes a variadic number of
162  /// token/value pairs. For example:
163  /// static PRM_SpareData(PRM_SpareArgs()
164  /// << PRM_SpareToken("token1", "value1")
165  /// << PRM_SpareToken("token2", "value2")
166  /// ...);
167  explicit PRM_SpareData(const PRM_SpareArgs &args);
168 
169  /// A single token value pair
170  explicit PRM_SpareData(const PRM_SpareToken &pair);
171  PRM_SpareData();
172  ~PRM_SpareData();
173 
175  PRM_SpareData &operator=(const PRM_SpareData &copy);
176 
177  uint entries() const;
178 
179  void clear();
180  void mergeFrom(const PRM_SpareData &ref);
181  void copyFrom(const PRM_SpareData &ref);
182 
183  bool containsAny(const PRM_SpareData &ref) const;
184  bool containsAll(const PRM_SpareData &ref) const;
185 
186  // The the value associated with a particular token.
187  const char *getValue(const UT_StringRef &token) const;
188 
189  // Because these are traverseConst functions, we can't remove any items
190  // from the table in the traversal functions.
191  void traverseConst(PRM_SpareCallback f) const;
192  void traverseConst(PRM_SpareCallbackWithData f, void *data) const;
193 
194 
195  // NOTE: When addTokenValue is called with a null pointer for the value,
196  // the token is deleted from the spare data.
197  void addTokenValue(const UT_StringHolder &token, const char *value);
198  void deleteTokenValue(const UT_StringRef &token);
199 
200  // For backward compatibility with the ScriptParmSpareData class, we have
201  // these functions.
202  static const char *getScriptCallbackToken()
204  void setCallbackData(const char *str)
205  { addTokenValue(getScriptCallbackToken(), str); }
206  const char *getCallbackData() const
207  { return getValue(getScriptCallbackToken()); }
208 
209  static const char *getScriptCallbackLanguageToken()
211  void setCallbackLanguage(CH_ScriptLanguage language);
212  CH_ScriptLanguage getCallbackLanguage() const;
213 
214  void setRenderManType(const char *str)
215  { addTokenValue(PRM_SPARE_SCRIPT_RITYPE_TOKEN, str); }
216  const char *getRenderManType() const
218 
219  void setOpFilter(const char *str)
220  { addTokenValue(PRM_SPARE_OPFILTER_TOKEN, str); }
221  const char *getOpFilter() const
223 
224  void setOpRelative(const char *str)
225  { addTokenValue(PRM_SPARE_OPRELATIVE_TOKEN, str); }
226  const char *getOpRelative() const
228 
229  static const char * getUnquotedStateToken()
232  { addTokenValue(getUnquotedStateToken(), "1"); }
233  bool getUnquotedState() const
234  { return getValue(getUnquotedStateToken()) != 0; }
235 
236  void setMultiStartOffset(int value);
237  int getMultiStartOffset() const;
238 
239  void setVisibleTabs(const UT_BitArray &values);
240  void getVisibleTabs(UT_BitArray &values) const;
241  bool getVisibleTab(int tabidx) const;
242 
243  // Ramp
244  static const char * getRampBasisDefaultToken()
246  void setRampBasisDefault(const char *value)
247  { addTokenValue(getRampBasisDefaultToken(),value); }
248  const char * getRampBasisDefault() const
249  { return getValue(getRampBasisDefaultToken()); }
250 
251  static const char * getRampShowControlsDefaultToken()
253  void setRampShowControlsDefault(bool value)
254  {
255  addTokenValue(getRampShowControlsDefaultToken(),
256  value ? "1" : "0");
257  }
259  {
260  const char *n, *v;
261  n = getRampShowControlsDefaultToken();
262  v = getValue(n);
263  if (!v)
264  return true;
265  else
266  return *v != '0';
267  }
268 
269  static const char * getRampGrayscaleDefaultToken()
271  void setRampGrayscaleDefault(bool value)
272  {
273  addTokenValue(getRampGrayscaleDefaultToken(),
274  value ? "1" : "0");
275  }
277  {
278  const char *n, *v;
279  n = getRampGrayscaleDefaultToken();
280  v = getValue(n);
281  if (!v)
282  return false;
283  else
284  return *v != '0';
285  }
286 
287  static const char * getRampColorTypeToken()
289  static const char * getRampColorTypeValueToken(UT_ColorType color_type);
290  void setRampColorType(UT_ColorType color_type);
291  UT_ColorType getRampColorType() const;
292 
293  static const char * getRampBasisVarToken()
295  static const char * getRampKeysVarToken()
297  static const char * getRampValuesVarToken()
299 
300  void setRampBasisVar(const char *value)
301  { addTokenValue(getRampBasisVarToken(), value); }
302  const char * getRampBasisVar() const
303  { return getValue(getRampBasisVarToken()); }
304  void setRampKeysVar(const char *value)
305  { addTokenValue(getRampKeysVarToken(), value); }
306  const char * getRampKeysVar() const
307  { return getValue(getRampKeysVarToken()); }
308  void setRampValuesVar(const char *value)
309  { addTokenValue(getRampValuesVarToken(), value); }
310  const char * getRampValuesVar() const
311  { return getValue(getRampValuesVarToken()); }
312 
313  static const char * getColorRampDefaultToken()
315  const char * getColorRampDefaultValue() const
316  { return getValue(getColorRampDefaultToken()); }
317  static const char * getFloatRampDefaultToken()
319  const char * getFloatRampDefaultValue() const
320  { return getValue(getFloatRampDefaultToken()); }
321  void setRampDefaultFromParm(const PRM_Parm &ramp_parm);
322  void getRampDefaultToParm(PRM_Parm &ramp_parm) const;
323 
324  // Color UI Mode, Wheel flag and Dynamic flag
325  static const char * getColorTypeToken()
326  { return PRM_SPARE_COLOR_TYPE_TOKEN; }
327  static const char * getColorTypeValueToken(PRM_ColorType color_type);
328  void setColorType(PRM_ColorType color_type);
329  PRM_ColorType getColorType() const;
330 
331  static const char * getColorWheelToken()
332  { return PRM_SPARE_COLOR_WHEEL_TOKEN; }
333  void setColorWheel(bool value);
334  bool getColorWheel() const;
335 
336  static const char * getColorDynamicToken()
337  { return PRM_SPARE_COLOR_DYN_TOKEN; }
338  void setColorDynamic(bool value);
339  bool getColorDynamic() const;
340 
341  static const char * getKeyValueDictKeyLabelToken()
343  void setKeyValueDictKeyLabel(const char *label);
344  const char *getKeyValueDictKeyLabel() const;
345  static const char * getKeyValueDictValueLabelToken()
347  void setKeyValueDictValueLabel(const char *label);
348  const char *getKeyValueDictValueLabel() const;
349  static const char * getKeyValueDictUseChooserToken()
351  void setKeyValueDictUseChooser(bool use_chooser);
352  bool getKeyValueDictUseChooser() const;
353  static const char * getKeyValueDictChooserLabelToken()
355  void setKeyValueDictChooserLabel(const char *label);
356  const char *getKeyValueDictChooserLabel() const;
359  void setKeyValueDictChooserCallback(const char *label);
360  const char *getKeyValueDictChooserCallback() const;
361 
362  void setXCFMode(const char *value)
363  { return addTokenValue(PRM_SPARE_XCF_MODE_TOKEN, value); }
364  const char *getXCFMode() const
366 
367  const char *getScriptAction() const;
368  const char *getScriptActionHelp() const;
369  const char *getScriptActionIcon() const;
370  const char *getButtonIcon() const;
371 
372  bool getUseEditor() const;
373  /// The string will be treated as this language for syntax highlighting
374  /// and and completion. NOTE: Language names are case insensitive, you
375  /// should accept both VEX, Vex, and vex.
376  const char *getEditorLanguage() const
378  const char *getEditorLanguagePrologue() const
380  void getEditorLinesRange(int &lines_min, int &lines_max) const;
381  static inline int getEditorLinesRangeDefaultMin() { return 8; }
382  static inline int getEditorLinesRangeDefaultMax() { return 40; }
383 
384  static const char *getXCFModeFloatValToken() { return "float"; }
385 
386  // Token for whether the template will be used for cooking
387  static const char * getCookDependentToken()
389  // Get state of cook_dependent flag.
390  // This is only used for SPARE parameters, which if this tag doesn't exist,
391  // the spare parm defaults to false for cook dependent.
392  bool getCookDependent() const;
393  // Set state of cook_dependent flag.
394  // This is only used for SPARE parameters, which if this tag doesn't exist,
395  // the spare parm defaults to false for cook dependent.
396  void setCookDependent(bool flag);
397 
398  // Token for whether the parm on the VOP should regenerate code
399  static const char *getCodeGenDependentToken()
401  // Get the state of the code_generation flag
402  // This is only used for SPARE parameters, which if this tag doesn't exist,
403  // the spare parm defaults to true for code generation
404  bool getCodeGenDependent() const;
405  // Set state of code_generation flag.
406  // This is only used for SPARE parameters, which if this tag doesn't exist,
407  // the spare parm defaults to true for code generation
408  void setCodeGenDependent(bool flag);
409 
410  int64 getMemoryUsage(bool inclusive) const;
411 
412  static const char *getOpFilterKeyFromName(const char *name);
413  static const char *getOpFilterKeyFromLabel(const char *name);
414  static const char *getOpFilterNameFromKey(const char *key);
415  static const char *getOpFilterLabelFromKey(const char *key);
416  // End of backward compatibility
417 
418  // Convenience spare data you might want to use
419  static PRM_SpareData objNetRef; // /obj
420  static PRM_SpareData chNetRef; // /ch
421  static PRM_SpareData ropNetRef; // /out
422 
423  static PRM_SpareData objPath; // !!OBJ!!
424  static PRM_SpareData objGeometryPath; // !!OBJ/GEOMETRY!!
425  static PRM_SpareData objLightPath; // !!OBJ/LIGHT!!
426  static PRM_SpareData objBonePath; // !!OBJ/BONE!!
427  static PRM_SpareData objMusclePath; // !!OBJ/MUSCLE!!
428  static PRM_SpareData objCameraPath; // !!OBJ/CAMERA!!
429  static PRM_SpareData dopPath; // !!DOP!!
430  static PRM_SpareData sopPath; // !!SOP!!
431  static PRM_SpareData popPath; // !!POP!!
432  static PRM_SpareData ropPath; // !!ROP!!
433  static PRM_SpareData copPath; // !!COP!!
434  static PRM_SpareData cop2Path; // !!COP2!!
435  static PRM_SpareData chopPath; // !!CHOP!!
436  static PRM_SpareData constraintsPath; // !!CHOP!!
437  static PRM_SpareData shopPath; // !!SHOP!!
438  static PRM_SpareData shopProperties; // !!SHOP/PROPERTIES!!
439  static PRM_SpareData shopMaterial; // !!SHOP/MATERIAL!!
440  static PRM_SpareData shopSurface; // !!SHOP/SURFACE!!
441  static PRM_SpareData shopDisplacement; // !!SHOP/DISPLACEMENT!!
442  static PRM_SpareData shopSurfaceShadow; // !!SHOP/SURFACE_SHADOW!!
443  static PRM_SpareData shopBackground; // !!SHOP/BACKGROUND!!
444  static PRM_SpareData shopGeometry; // !!SHOP/GEOMETRY!!
445  static PRM_SpareData shopAtmosphere; // !!SHOP/ATMOSPHERE!!
446  static PRM_SpareData shopPhoton; // !!SHOP/PHOTON!!
447  static PRM_SpareData shopPhotonVolume; // !!SHOP/PHOTONVOLUME!!
448  static PRM_SpareData shopContour; // !!SHOP/CONTOUR!!
449  static PRM_SpareData shopLight; // !!SHOP/LIGHT!!
450  static PRM_SpareData shopEmitter; // !!SHOP/EMITTER!!
451  static PRM_SpareData shopLightShadow; // !!SHOP/LIGHT_SHADOW!!
452  static PRM_SpareData shopLens; // !!SHOP/LENS!!
453  static PRM_SpareData shopOutput; // !!SHOP/OUTPUT!!
454  static PRM_SpareData shopContourStore; // !!SHOP/CONTOUR_STORE!!
455  static PRM_SpareData shopContourContrast; // !!SHOP/CONTOUR_CONTRAST!!
456  static PRM_SpareData shopImage3d; // !!SHOP/IMAGE3D!!
457  static PRM_SpareData shopCVEX; // !!SHOP/CVEX!!
458  static PRM_SpareData shopCoShader; // !!SHOP/COSHADER!!
459  static PRM_SpareData vopPath; // !!VOP!!
460  static PRM_SpareData lopPath; // !!LOP!!
461  static PRM_SpareData topPath; // !!TOP!!
462  static PRM_SpareData topSchedulerPath; // !!TOP/SCHEDULER!!
463  static PRM_SpareData topProcessorPath; // !!TOP/PROCESSOR!!
464  static PRM_SpareData topPartitionerPath; // !!TOP/PARTITIONER!!
465  static PRM_SpareData topMapperPath; // !!TOP/MAPPER!!
466  static PRM_SpareData filterMaterial; // !!CUSTOM/MATERIAL!!
467 
468  static PRM_SpareData autoScope; // autoscope
469 
470  static PRM_SpareData multiStartOffsetZero; // multistart offset of zero
471  static PRM_SpareData multiStartOffsetOne; // multistart offset of one
472 
476  static PRM_SpareData unitsMass; // kg1
477  static PRM_SpareData unitsPerMass; // kg-1
478  static PRM_SpareData unitsTime; // s1
481  static PRM_SpareData unitsVelocity; // m1s-1
485  static PRM_SpareData unitsForce; // kg1m1s-2
486  static PRM_SpareData unitsForceDensity; // kg1m-2s-2
487  static PRM_SpareData unitsImpulse; // kg1m1s-1
488  static PRM_SpareData unitsTorque; // kg1m2s-2
489  static PRM_SpareData unitsDrag; // kg1s-1
490  static PRM_SpareData unitsAngDrag; // kg1m2s-1
491  static PRM_SpareData unitsPressure; // kg1m-1s-2
496  static PRM_SpareData unitsAreaDensity; // kg1m-2
499  static PRM_SpareData unitsDensity; // kg1m-3
500  static PRM_SpareData unitsDensityPerTime; // kg1m-3s-1
502  static PRM_SpareData unitsNone; // ""
503 
504  static PRM_SpareData rampBasisDefault; // rampbasis "ramp_basis"
505  static PRM_SpareData rampKeysDefault; // rampkeys "ramp_keys"
506  static PRM_SpareData rampValuesDefault; // rampvalues "ramp_values"
507 
508  static PRM_SpareData attribAccessR; // "sidefx::attrib_access" "read"
509  static PRM_SpareData attribAccessW; // "sidefx::attrib_access" "write"
510  static PRM_SpareData attribAccessRW; // "sidefx::attrib_access" "readwrite"
511 
512  static PRM_SpareData connectorKindNone; // "sidefx::connector_kind" "none"
513  static PRM_SpareData connectorKindIn; // "sidefx::connector_kind" "in"
514  static PRM_SpareData connectorKindOut; // "sidefx::connector_kind" "out"
515  static PRM_SpareData connectorKindInOut;// "sidefx::connector_kind" "inout"
516 
517  static PRM_SpareData shaderIsShaderParm; // "sidefx::shader_isparm" "1"
518  static PRM_SpareData shaderIsNotShaderParm; // "sidefx::shader_isparm" "0"
519 
520  /// Used to set a space- or comma-separated list of globs to use as
521  /// file filter for parameters of type @c PRM_FILE (e.g. "*.txt *.log").
522  static const char *getFileChooserPatternToken()
524 
525  static const char *getFileChooserModeToken()
527  static const char *getFileChooserModeValRead()
528  { return "read"; }
529  static const char *getFileChooserModeValWrite()
530  { return "write"; }
531  static const char *getFileChooserModeValReadAndWrite()
532  { return "read_and_write"; }
533 
534  static PRM_SpareData fileChooserModeRead; // filechooser_mode "read"
535  static PRM_SpareData fileChooserModeWrite; // filechooser_mode "write"
536  static PRM_SpareData fileChooserModeReadAndWrite; // ... "read_and_write"
537 
538  static PRM_SpareData imageAllowsVideo; // "sidefx::allow_video" "1"
539  static PRM_SpareData imageDisallowsVideo; // "sidefx::allow_video" "0"
540 
541  static PRM_SpareData stringFloatXCF; // float XCF in string field
542 
543  static const char *getScriptActionToken()
545  static const char *getScriptActionHelpToken()
547  static const char *getScriptActionIconToken()
549  static const char *getButtonIconToken()
550  { return PRM_SPARE_BUTTON_ICON_TOKEN; }
551 
552  static const char *getEditorToken()
553  { return PRM_SPARE_EDITOR_TOKEN; }
554  static PRM_SpareData stringEditor; // Use a text editor for strings
555 
556  static const char *getEditorLanguageToken()
557  { return PRM_SPARE_EDITOR_LANG_TOKEN; }
563 
564  /// Number of lines to show by default. This value can be set as either
565  /// a single number or a range, e.g. '10-50'. The minimum number is what
566  /// the editor will originally show up as, but will attempt to expand up to
567  /// the maximum.
568  static const char *getEditorLinesRangeToken()
569  { return PRM_SPARE_EDITOR_LINES_TOKEN; }
570 
571  // token indicating the parameter comes from a Parameter VOP (ie it is a
572  // shader parameter)
573  static const char * getParmVopVarToken()
574  { return PRM_SPARE_PARM_VOP_TOKEN; }
575 
576  // space-separated list of shading contexts, which a material parameter
577  // belongs to, ie, shaders for each of these contexts actually have
578  // this parameter as an argument, since material may contain other shaders
579  // for other contexts to which a parameter does not apply
580  static const char * getShaderParmContextsToken()
582 
583  // token specifying special keywords that are legal in an oppath parameter
584  // (in addition to the node path itself)
585  static const char * getOpPathKeywordsToken()
587 
588  // token for unit specification
589  static const char * getUnitsToken()
590  { return PRM_SPARE_UNITS_TOKEN; }
591 
592  // token for group specialization (simple/collapsible/toggle groups).
593  static const char *getGroupTypeToken()
594  { return PRM_SPARE_GROUP_TYPE_TOKEN; }
600  static const char *getGroupDefaultToken()
602 
603  // Marks parameter has having varying default values
604  // Defaults to "0"
605  static const char *getVaryingDefaultToken()
608  bool getHasVaryingDefault() const;
609  void setHasVaryingDefault(bool f);
610 
611  // Gets information about whether this parm accepts one or more USD
612  // primitive paths, and/or USD collections.
613  static const char *getUsdPathTypeToken()
614  { return PRM_SPARE_USDPATHTYPE_TOKEN; }
617  const char *getUsdPathType() const;
618 
619  // Gets a value that describes which input's stage is the source for
620  // the primitive(s) in this parameter. This string is evaluated by the
621  // CH_Manager, so it can be a constant (0, 1, or 2) or an expression
622  // that looks at other parameter values.
623  static const char *getUsdPathInputToken()
624  { return PRM_SPARE_USDPATHINPUT_TOKEN; }
627  const char *getUsdPathInput() const;
628 
629  // Identifies the node parameter as shader parameter.
630  static const char *getIsShaderParmToken()
632 
633  // Forces the translation of shader parameter even if it's at default value.
634  static const char *getForceParmValueToken()
636 
637  // Marks a data parm for whether or not it should be saved to disk
638  static const char *getSaveValueToken()
639  { return PRM_SPARE_SAVE_VALUE_TOKEN; }
640  static PRM_SpareData saveValueAlways; // "sidefx::save_value" "1"
641  static PRM_SpareData saveValueNever; // "sidefx::save_value" "0"
642  const char *getSaveValue() const;
643  void setSaveValue(bool flag);
644 
645  // Houdini Engine for Maya: Informs Maya that this parameter should be able
646  // to be set by component selection.
653 
654  // Changes the look of the parm. Used to switch between separator and spacer
655  // Height is used to adjust the dimension of the parameter (value * 0.1 inches)
656  static const char *getLookToken()
657  { return PRM_SPARE_LOOK_TOKEN; }
658  static const char *getLayoutHeightToken()
660  const char *getLookValue() const;
661  void setLookValue(const char *value);
662  const char *getLayoutHeightValue() const;
663  void setLayoutHeightValue(const char *value);
664  static PRM_SpareData lookBlank; // "sidefx::look" "blank"
665  static PRM_SpareData lookClassic; // "sidefx::look" "classic"
666  static PRM_SpareData lookIcon; // "sidefx::look" "icon"
667  static PRM_SpareData lookHeading; // "sidefx::look" "heading"
668  static PRM_SpareData lookBlock; // "sidefx::look" "block"
669  static PRM_SpareData layoutHeightSmall; // "sidefx::layout_height" "small"
670  static PRM_SpareData layoutHeightMedium; // "sidefx::layout_height" "medium"
671  static PRM_SpareData layoutHeightLarge; // "sidefx::layout_height" "large"
672 
673  // Header toggle reference for the collapsible folder
674  static const char *getHeaderToggleToken()
676 
677  // Header parm reference for the collapsible folder
678  static const char *getHeaderParmToken()
679  { return PRM_SPARE_HEADER_PARM_TOKEN; }
680 
681  // Header label reference for the collapsible folder
682  static const char *getHeaderLabelToken()
683  { return PRM_SPARE_HEADER_LABEL_TOKEN; }
684 
685  // Slider options. Snap or non-snap
686  static const char *getSliderToken()
687  { return PRM_SPARE_SLIDER_TOKEN; }
688  static PRM_SpareData sliderSnapToInt; // "sidefx::slider" "snap_to_int"
689  static PRM_SpareData sliderNone; // "sidefx::slider" "none"
690 
691  // The original switcher name before auto-renaming
692  static const char *getSwitcherBaseToken()
693  { return PRM_SPARE_SWITCHER_BASE; }
694 
695  // Specifies if this image parm can accept videos
696  static const char *getImageAllowVideoToken()
698 
699  /// Return true if the given token is a built-in (internally used) spare
700  /// data token.
701  static bool isBuiltInToken(const UT_StringRef &token);
702 
703  /// Return a range of the built-in tags names.
704  static void builtInTokens(UT_StringArray &tokens);
705 
706 private:
708 };
709 
710 #endif
static PRM_SpareData mayaComponentSelectionTypeFace
static PRM_SpareData objLightPath
static PRM_SpareData objMusclePath
static PRM_SpareData shopOutput
static const char * getVaryingDefaultToken()
static PRM_SpareData shopEmitter
static PRM_SpareToken groupTypeCollapsibleToken
static PRM_SpareData stringEditorLangPython
static const char * getColorWheelToken()
static PRM_SpareData rampValuesDefault
#define PRM_SPARE_OPRELATIVE_TOKEN
static PRM_SpareData unitsTime
const char * getXCFMode() const
#define PRM_SPARE_SCRIPT_ACTION_HELP_TOKEN
static PRM_SpareData shopCVEX
typedef int(APIENTRYP RE_PFNGLXSWAPINTERVALSGIPROC)(int)
#define PRM_SPARE_COLOR_TYPE_TOKEN
#define PRM_SPARE_CODE_GENERATION_TOKEN
#define PRM_SPARE_MAYA_COMPONENT_SELECTION_TYPE_TOKEN
Definition: PRM_SpareData.h:71
static PRM_SpareData unitsLinearDensity
static PRM_SpareData topSchedulerPath
static const char * getEditorLanguageToken()
static const char * getRampColorTypeToken()
static const char * getXCFModeFloatValToken()
static PRM_SpareData vopPath
static PRM_SpareData ropPath
GLuint GLsizei const GLchar * label
Definition: glcorearb.h:2545
static PRM_SpareData connectorKindIn
const char * getEditorLanguage() const
const char * getEditorLanguagePrologue() const
const char * getOpFilter() const
static PRM_SpareData sliderSnapToInt
static const char * getLookToken()
#define PRM_SPARE_USDPATHINPUT_TOKEN
Definition: PRM_SpareData.h:59
void setCallbackData(const char *str)
static PRM_SpareData shopPath
static PRM_SpareData dopPath
static PRM_SpareData unitsImpulse
static PRM_SpareData shopDisplacement
static PRM_SpareData connectorKindNone
static PRM_SpareData fileChooserModeReadAndWrite
GLboolean * data
Definition: glcorearb.h:131
OIIO_UTIL_API bool copy(string_view from, string_view to, std::string &err)
const GLdouble * v
Definition: glcorearb.h:837
static const char * getCookDependentToken()
#define PRM_SPARE_XCF_MODE_TOKEN
void setXCFMode(const char *value)
#define PRM_SPARE_RAMP_BASIS_DEFAULT_TOKEN
static const char * getRampKeysVarToken()
#define PRM_SPARE_RAMP_BASIS_VAR_TOKEN
static PRM_SpareData shaderIsShaderParm
#define PRM_SPARE_SCRIPT_CALLBACK_LANGUAGE_TOKEN
GLsizei const GLfloat * value
Definition: glcorearb.h:824
static const char * getScriptCallbackLanguageToken()
static const char * getParmVopVarToken()
#define PRM_SPARE_SCRIPT_ACTION_ICON_TOKEN
static PRM_SpareData stringFloatXCF
#define PRM_SPARE_SLIDER_TOKEN
Definition: PRM_SpareData.h:83
static PRM_SpareData unitsPerMass
static PRM_SpareData stringEditorLangExpr
static const char * getButtonIconToken()
#define PRM_SPARE_LOOK_TOKEN
Definition: PRM_SpareData.h:73
static PRM_SpareData shopSurface
static const char * getScriptCallbackToken()
static PRM_SpareData objGeometryPath
bool getUnquotedState() const
static const char * getRampBasisDefaultToken()
static PRM_SpareData unitsPressure
static PRM_SpareData topProcessorPath
#define PRM_SPARE_SCRIPT_RITYPE_TOKEN
#define PRM_SPARE_RAMP_FLOAT_DEFAULT_TOKEN
const char * getRampBasisDefault() const
static const char * getHeaderParmToken()
static const char * getKeyValueDictChooserLabelToken()
static PRM_SpareToken usdPathTypePrim
static PRM_SpareData layoutHeightMedium
static const char * getGroupTypeToken()
#define PRM_SPARE_KEY_VALUE_DICT_CHOOSER_CALLBACK_TOKEN
Definition: PRM_SpareData.h:49
static PRM_SpareData stringEditor
static PRM_SpareData shopPhoton
static PRM_SpareData groupTypeCollapsibleExpanded
static PRM_SpareData unitsPerSquareTime
void setUnquotedState()
std::pair< const char *, const char * > PRM_SpareToken
UT_VariadicT< PRM_SpareToken > PRM_SpareArgs
#define PRM_SPARE_SAVE_VALUE_TOKEN
Definition: PRM_SpareData.h:69
static const char * getFileChooserPatternToken()
static PRM_SpareData unitsPerLength
#define PRM_SPARE_IS_SHADER_PARM_TOKEN
Definition: PRM_SpareData.h:61
static PRM_SpareData attribAccessW
#define PRM_SPARE_RAMP_VALUES_VAR_TOKEN
static const char * getImageAllowVideoToken()
static PRM_SpareData shopContourContrast
static PRM_SpareData attribAccessRW
static PRM_SpareData topPath
#define PRM_SPARE_UNITS_TOKEN
static const char * getHeaderToggleToken()
__hostdev__ float getValue(uint32_t i) const
Definition: NanoVDB.h:5578
#define PRM_SPARE_OPPATH_KEYWORDS_TOKEN
static const char * getIsShaderParmToken()
#define PRM_SPARE_HEADER_TOGGLE_TOKEN
Definition: PRM_SpareData.h:77
static PRM_SpareData multiStartOffsetOne
static PRM_SpareData unitsAngVelocity
void setRampGrayscaleDefault(bool value)
static PRM_SpareData cop2Path
static const char * getSliderToken()
#define PRM_SPARE_KEY_VALUE_DICT_USE_CHOOSER_TOKEN
Definition: PRM_SpareData.h:45
static const char * getKeyValueDictUseChooserToken()
static PRM_SpareData groupTypeCollapsible
#define PRM_SPARE_GROUP_DEFAULT_TOKEN
#define PRM_SPARE_SCRIPT_CALLBACK_TOKEN
static PRM_SpareData shopAtmosphere
#define PRM_SPARE_KEY_VALUE_DICT_VALUE_LABEL_TOKEN
Definition: PRM_SpareData.h:43
static PRM_SpareData unitsAreaDensity
static PRM_SpareData unitsLinearDensityPerSquareTime
GLdouble n
Definition: glcorearb.h:2008
GLfloat f
Definition: glcorearb.h:1926
static const char * getUnitsToken()
#define PRM_SPARE_FILE_CHOOSER_MODE_TOKEN
static PRM_SpareData chNetRef
const char * getCallbackData() const
static int getEditorLinesRangeDefaultMin()
static PRM_SpareData unitsMass
static PRM_SpareData rampBasisDefault
static PRM_SpareData unitsDrag
static PRM_SpareData objNetRef
static const char * getKeyValueDictKeyLabelToken()
GLint ref
Definition: glcorearb.h:124
#define PRM_SPARE_EDITOR_LINES_TOKEN
static PRM_SpareData sopPath
static PRM_SpareData topMapperPath
static const char * getScriptActionIconToken()
static PRM_SpareData connectorKindInOut
static PRM_SpareData filterMaterial
static PRM_SpareToken usdPathInputFirst
static PRM_SpareData varyingDefault
static PRM_SpareData unitsLength
const char * getFloatRampDefaultValue() const
static const char * getOpPathKeywordsToken()
static PRM_SpareData unitsAngDrag
#define PRM_SPARE_COLOR_WHEEL_TOKEN
#define PRM_SPARE_VARYING_DEFAULT_TOKEN
static PRM_SpareData saveValueAlways
static PRM_SpareData topPartitionerPath
static PRM_SpareToken groupTypeSimpleToken
static PRM_SpareData shopContour
const char * getOpRelative() const
static const char * getKeyValueDictChooserCallbackToken()
static PRM_SpareData unitsTorque
static const char * getEditorLinesRangeToken()
#define PRM_SPARE_RAMP_COLOR_DEFAULT_TOKEN
long long int64
Definition: SYS_Types.h:116
static const char * getCodeGenDependentToken()
static PRM_SpareData unitsLinearDensityPerTime
static PRM_SpareData rampKeysDefault
bool getRampShowControlsDefault() const
static PRM_SpareData shopBackground
static PRM_SpareData imageAllowsVideo
static const char * getKeyValueDictValueLabelToken()
static PRM_SpareData shopContourStore
static const char * getColorDynamicToken()
static PRM_SpareData unitsForce
GLuint const GLchar * name
Definition: glcorearb.h:786
static const char * getColorRampDefaultToken()
static PRM_SpareData saveValueNever
#define PRM_SPARE_LAYOUT_HEIGHT_TOKEN
Definition: PRM_SpareData.h:75
static PRM_SpareData sliderNone
static PRM_SpareData multiStartOffsetZero
static PRM_SpareData shopProperties
static const char * getUsdPathTypeToken()
const char * getRampBasisVar() const
static PRM_SpareData constraintsPath
static const char * getRampValuesVarToken()
static const char * getGroupDefaultToken()
#define PRM_SPARE_COOK_DEPENDENT_TOKEN
static PRM_SpareData layoutHeightSmall
static PRM_SpareData shaderIsNotShaderParm
static PRM_SpareData unitsNone
static const char * getRampShowControlsDefaultToken()
void setOpFilter(const char *str)
#define PRM_SPARE_HEADER_LABEL_TOKEN
Definition: PRM_SpareData.h:81
#define PRM_SPARE_KEY_VALUE_DICT_CHOOSER_LABEL_TOKEN
Definition: PRM_SpareData.h:47
static const char * getShaderParmContextsToken()
#define PRM_SPARE_RAMP_COLOR_TYPE_TOKEN
static const char * getMayaComponentSelectionTypeToken()
static PRM_SpareData ropNetRef
#define PRM_SPARE_KEY_VALUE_DICT_KEY_LABEL_TOKEN
Definition: PRM_SpareData.h:41
static PRM_SpareData unitsAcceleration
static PRM_SpareData shopGeometry
static const char * getFileChooserModeToken()
PRM_ColorType
Definition: PRM_Type.h:434
static PRM_SpareData unitsAreaDensityPerSquareTime
#define PRM_SPARE_SWITCHER_BASE
Definition: PRM_SpareData.h:85
static PRM_SpareData shopMaterial
static PRM_SpareData chopPath
UT_ColorType
Definition: UT_Color.h:24
static const char * getHeaderLabelToken()
const char * getColorRampDefaultValue() const
void setRampBasisDefault(const char *value)
#define PRM_SPARE_PARM_VOP_TOKEN
#define PRM_SPARE_SCRIPT_ACTION_TOKEN
GLenum GLsizei GLsizei GLint * values
Definition: glcorearb.h:1602
#define PRM_SPARE_SCRIPT_UNQUOTED_TOKEN
void setRampKeysVar(const char *value)
static PRM_SpareData objCameraPath
static PRM_SpareData groupTypeSimple
void setRenderManType(const char *str)
#define PRM_SPARE_OPFILTER_TOKEN
static PRM_SpareData shopLightShadow
static PRM_SpareData fileChooserModeWrite
#define PRM_SPARE_RAMP_SHOW_CONTROLS_DEFAULT_TOKEN
const char * getRampValuesVar() const
LeafData & operator=(const LeafData &)=delete
const char * getRampKeysVar() const
static PRM_SpareData stringEditorLangHScript
static const char * getFloatRampDefaultToken()
static PRM_SpareData unitsDensityPerSquareTime
#define PRM_SPARE_EDITOR_LANG_TOKEN
#define PRM_SPARE_FORCE_SHADER_PARM_VAL_TOKEN
Definition: PRM_SpareData.h:63
static PRM_SpareData unitsAngAcceleration
static PRM_SpareData shopImage3d
static PRM_SpareData stringEditorLangVex
static PRM_SpareData connectorKindOut
static int getEditorLinesRangeDefaultMax()
const char * getRenderManType() const
#define PRM_SPARE_BUTTON_ICON_TOKEN
#define PRM_SPARE_HEADER_PARM_TOKEN
Definition: PRM_SpareData.h:79
static PRM_SpareData lookHeading
static const char * getColorTypeToken()
static PRM_SpareData imageDisallowsVideo
static PRM_SpareData mayaComponentSelectionTypeVertex
#define PRM_SPARE_RAMP_KEYS_VAR_TOKEN
static const char * getFileChooserModeValRead()
**If you just want to fire and args
Definition: thread.h:609
static PRM_SpareData objBonePath
bool getRampGrayscaleDefault() const
void setRampShowControlsDefault(bool value)
static PRM_SpareData stringEditorLangOpenCL
static PRM_SpareData shopPhotonVolume
static PRM_SpareData unitsDensity
static PRM_SpareToken usdPathInputSecond
static const char * getUsdPathInputToken()
#define PRM_SPARE_EDITOR_LANG_PROLOGUE_TOKEN
Definition: core.h:1131
static PRM_SpareData mayaComponentSelectionTypeUV
#define PRM_SPARE_RAMP_GRAYSCALE_DEFAULT_TOKEN
Definition: PRM_SpareData.h:89
static PRM_SpareData lookBlock
static PRM_SpareData mayaComponentSelectionTypeEdge
static const char * getScriptActionHelpToken()
static PRM_SpareData autoScope
static PRM_SpareData shopLens
static const char * getUnquotedStateToken()
static const char * getSwitcherBaseToken()
static const char * getSaveValueToken()
static PRM_SpareData shopLight
static PRM_SpareData unitsPerArea
static const char * getEditorToken()
static PRM_SpareData unitsSpringConstant
void setOpRelative(const char *str)
static PRM_SpareData lopPath
static PRM_SpareData unitsDensityPerTime
static const char * getRampGrayscaleDefaultToken()
static PRM_SpareData unitsForceDensity
#define PRM_SPARE_SHADER_PARM_CONTEXTS_TOKEN
static const char * getScriptActionToken()
#define PRM_SPARE_IMAGE_ALLOW_VIDEO_TOKEN
Definition: PRM_SpareData.h:87
static const char * getRampBasisVarToken()
static PRM_SpareData shopSurfaceShadow
static const char * getFileChooserModeValWrite()
void setRampBasisVar(const char *value)
static const char * getForceParmValueToken()
#define PRM_API
Definition: PRM_API.h:10
static PRM_SpareData unitsAreaDensityPerTime
#define PRM_SPARE_COLOR_DYN_TOKEN
unsigned int uint
Definition: SYS_Types.h:45
static PRM_SpareData shopCoShader
static PRM_SpareData copPath
int(* PRM_SpareCallbackWithData)(const char *token, const char *value, void *data)
void setRampValuesVar(const char *value)
static PRM_SpareData lookIcon
#define PRM_SPARE_USDPATHTYPE_TOKEN
Definition: PRM_SpareData.h:57
static PRM_SpareData layoutHeightLarge
static PRM_SpareData popPath
static PRM_SpareData lookBlank
Definition: format.h:895
static PRM_SpareData unitsPerTime
static PRM_SpareData lookClassic
static PRM_SpareData objPath
CH_ScriptLanguage
#define PRM_SPARE_GROUP_TYPE_TOKEN
static const char * getLayoutHeightToken()
static PRM_SpareData unitsVelocity
static PRM_SpareData attribAccessR
int(* PRM_SpareCallback)(const char *token, const char *value)
static PRM_SpareToken usdPathTypePrimList
#define PRM_SPARE_FILE_CHOOSER_PATTERN_TOKEN
static PRM_SpareData fileChooserModeRead
static const char * getFileChooserModeValReadAndWrite()
#define PRM_SPARE_EDITOR_TOKEN