00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __OP_NodeFlags_h__
00018 #define __OP_NodeFlags_h__
00019
00020 #include "OP_API.h"
00021 #include <iostream.h>
00022 #include <SYS/SYS_Types.h>
00023
00024 #include "OP_NetworkBoxItemFlags.h"
00025
00026 class UT_IStream;
00027 class UT_String;
00028 class OP_Node;
00029 class OP_Network;
00030 class OP_Director;
00031
00032 #define OP_BYPASS_FLAG 'b'
00033 #define OP_COMPRESS_FLAG 'c'
00034 #define OP_CURRENT_FLAG 'C'
00035 #define OP_DISPLAY_FLAG 'd'
00036 #define OP_EXPOSE_FLAG 'e'
00037 #define OP_FOOTPRINT_FLAG 'f'
00038 #define OP_HIGHLIGHT_FLAG 'h'
00039 #define OP_LOCK_FLAG 'l'
00040 #define OP_PICK_FLAG 'p'
00041 #define OP_RENDER_FLAG 'r'
00042 #define OP_SAVEDATA_FLAG 's'
00043 #define OP_TEMPLATE_FLAG 't'
00044 #define OP_UNLOAD_FLAG 'u'
00045 #define OP_VISIBLE_FLAG 'V'
00046 #define OP_XRAY_FLAG 'y'
00047
00048 #define OP_MODELED_FLAG 'm'
00049 #define OP_END_FLAG 'E'
00050 #define OP_EXTRA_FLAG 'x'
00051
00052 #define OP_FLAG_ON " on"
00053 #define OP_FLAG_OFF " off"
00054
00055 #define SET_FLAG_STRING(str_val, flag_val) \
00056 str_val = (flag_val) ? OP_FLAG_ON : OP_FLAG_OFF
00057
00058
00059
00060 class OP_API OP_NodeFlags : public OP_NetworkBoxItemFlags
00061 {
00062 public:
00063
00064 enum OP_LockTypes
00065 {
00066 OP_UNLOCKED = 0x0,
00067 OP_HARD_LOCKED = 0x1,
00068 OP_SOFT_LOCKED = 0x2
00069 };
00070
00071 static const char *getFlagName(uchar token);
00072 static uchar getFlagToken(const char *label);
00073 static const uchar *getTakeFlagTokens();
00074 static bool isTakeFlag(uchar token);
00075
00076
00077
00078
00079 static bool isSubjectToStdPermissions(uchar token);
00080 static bool isSubjectToAssetPermissions(uchar token);
00081
00082 void setUndoColor(int onOff) { undoColor = onOff; }
00083 void setUndoComment(int onOff) { undoComment = onOff; }
00084 void setUndoInput(int onOff) { undoInput = onOff; }
00085 void setUndoLayout(int onOff) { undoLayout = onOff; }
00086 void setUndoDelScript(int onOff) { undoDelScript = onOff; }
00087 void setUndoPreTransform(int onOff)
00088 { undoPreTransform = onOff; }
00089 void setUndoFlagChange(int onOff) { undoFlagChange = onOff; }
00090 void setCompress(int onOff) { compress = onOff; }
00091 void setModelled(int onOff) { modelled = onOff; }
00092 void setAlwaysCook(int onOff) { alwaysCook = onOff; }
00093 void setUnload(int onOff) { unload = onOff; }
00094 void setForceCook(int onOff) { forceCook = onOff; }
00095 void setHasCookedData(int onOff) { hasCookedData = onOff; }
00096 void setTimeDep(int onOff) { timeDep = onOff; }
00097 void setCooking(int onOff) { cooking = onOff; }
00098 void setDisplay(int onOff) { display = onOff; }
00099 void setRender(int onOff) { render = onOff; }
00100 void setHighlight(int onOff) { highlight = onOff; }
00101 void setTemplate(int onOff) { templated = onOff; }
00102 void setFootprint(int onOff) { footprinted = onOff; }
00103 void setXray(int onOff) { xray = onOff; }
00104 void setBypass(int onOff) { bypass = onOff; }
00105 void setPicked(int onOff) { picked = onOff; }
00106 void setEditPicked(int onOff){ editPicked = onOff; }
00107 void setHardLocked(int onOff)
00108 { locked = onOff ? OP_HARD_LOCKED : OP_UNLOCKED; }
00109 void setSoftLocked(int onOff)
00110 { locked = onOff ? OP_SOFT_LOCKED : OP_UNLOCKED; }
00111 void setLocked(int state) { locked = state; }
00112 void setModified(int onOff) { modified = onOff; }
00113 void setExpose(int onOff) { exposed = onOff; }
00114 void setSaveData(int onOff) { saveData = onOff; }
00115
00116
00117
00118 void setTimeInterest(int onOff) { timeInterest = onOff; }
00119 void setTimeInterestCook(int onOff)
00120 { timeInterestCook = onOff; }
00121 void setClearDependency(int onOff) {clearDependency = onOff;}
00122
00123 int getUndoColor() const { return undoColor; }
00124 int getUndoComment() const { return undoComment; }
00125 int getUndoInput() const { return undoInput; }
00126 int getUndoLayout() const { return undoLayout; }
00127 int getUndoDelScript() const { return undoDelScript; }
00128 int getUndoPreTransform() const { return undoPreTransform; }
00129 int getUndoFlagChange() const { return undoFlagChange; }
00130 int getCompress() const { return compress; }
00131 int getModelled() const { return modelled; }
00132 int getAlwaysCook() const { return alwaysCook; }
00133 int getUnload() const { return unload; }
00134 int getForceCook() const { return forceCook; }
00135 int getHasCookedData() const { return hasCookedData; }
00136 int getTimeDep() const { return timeDep; }
00137 int getCooking() const { return cooking; }
00138 int getDisplay() const { return display; }
00139 int getRender() const { return render; }
00140 int getHighlight() const { return highlight; }
00141 int getTemplate() const { return templated; }
00142 int getFootprint() const { return footprinted; }
00143 int getXray() const { return xray; }
00144 int getBypass() const { return bypass; }
00145 int getPicked() const { return picked; }
00146 int getEditPicked() const { return editPicked; }
00147 int getHardLocked() const
00148 { return locked == OP_HARD_LOCKED; }
00149 int getSoftLocked() const
00150 { return locked == OP_SOFT_LOCKED; }
00151 int getLocked() const { return locked; }
00152 int getModified() const { return modified; }
00153 int getExpose() const { return exposed; }
00154 int getSaveData() const { return saveData; }
00155 int getTimeInterest() const { return timeInterest; }
00156 int getTimeInterestCook() const { return timeInterestCook; }
00157 int getClearDependency() const { return clearDependency; }
00158
00159 void clearAllTakeFlags();
00160
00161 void setTakeFlag(uchar which, int v);
00162 int getTakeFlag(uchar which) const;
00163
00164 void setTakeValue(uchar which, int v);
00165 int getTakeValue(uchar which) const;
00166
00167 void setHasTakeData(int onoff) { myHasTakeData = onoff; }
00168 int getHasTakeData() const { return myHasTakeData; }
00169
00170 int getTakeDisplay() const { return myTakeDisplay; }
00171 int getTakeRender() const { return myTakeRender; }
00172 int getTakeTemplate() const { return myTakeTemplate; }
00173 int getTakeExpose() const { return myTakeExpose; }
00174 int getTakeBypass() const { return myTakeBypass; }
00175 int getTakePick() const { return myTakePick; }
00176 int getTakeCurrent() const { return myTakeCurrent; }
00177
00178 const char *getExtra() const
00179 { return myExtra; }
00180
00181 void setExtra(const char *opts, int val,
00182 const char **labels)
00183 {
00184 myExtra = opts;
00185 myExtraVal = val;
00186 myExtraLabel = labels;
00187 }
00188
00189 int getExtraVal(char a) const;
00190 void setExtraVal(char a, int onoff);
00191
00192
00193 void appendCommandString(ostream &os,
00194 const char *flags,
00195 bool save_to_hip) const;
00196 void getFlagOptions(UT_String &options) const;
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206 char modified;
00207 char timeDep;
00208 char cooking;
00209 char locked;
00210 char forceCook;
00211 char alwaysCook;
00212 char bypass;
00213 char render;
00214 char display;
00215 char templated;
00216 char hasCookedData;
00217
00218
00219 unsigned modelled:1,
00220 saveData:1,
00221 picked:1,
00222 editPicked:1,
00223 unload:1,
00224 compress:1,
00225
00226
00227
00228 undoParmChange:1,
00229 undoFlagChange:1,
00230 undoLayout:1,
00231 undoInput:1,
00232 undoComment:1,
00233 undoColor:1,
00234 exposed:1,
00235
00236
00237 interrupted:1,
00238
00239 clearingInterrupt:1;
00240
00241 private:
00242
00243 unsigned myHasTakeData:1,
00244 myTakeDisplay:1,
00245 myTakeRender:1,
00246 myTakeTemplate:1,
00247 myTakeExpose:1,
00248 myTakeBypass:1,
00249 myTakePick:1,
00250 myTakeCurrent:1;
00251
00252 unsigned footprinted:1,
00253 xray:1,
00254
00255
00256 undoDelScript:1,
00257 undoPreTransform:1,
00258
00259
00260 timeInterest:1,
00261 timeInterestCook:1,
00262 clearDependency:1;
00263
00264
00265 char highlight;
00266
00267 private:
00268 friend class OP_Node;
00269 friend class OP_UndoFlag;
00270
00271 OP_NodeFlags() { setDefaults(); }
00272 OP_NodeFlags(const OP_NodeFlags &source);
00273
00274 void shallowCopy(const OP_NodeFlags &source);
00275
00276
00277
00278 void save(ostream &os, int binary = 0, int forundo = 0);
00279 bool load(UT_IStream &os, const char *path=0);
00280
00281 bool loadAsciiFlag(const char *name, const char *val);
00282 bool loadBinaryFlag(int tag, int val);
00283
00284
00285 void setDefaults(void);
00286
00287 const char *myExtra;
00288 const char **myExtraLabel;
00289 unsigned int myExtraVal;
00290
00291 };
00292
00293 #endif