00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __GR_CommonDispOption_h__
00021 #define __GR_CommonDispOption_h__
00022
00023 #include "GR_API.h"
00024 #include <UT/UT_Color.h>
00025 #include <UT/UT_String.h>
00026 #include "GR_HandleParts.h"
00027 #include "GR_Defines.h"
00028
00029
00030 class UT_SymbolTable;
00031
00032 #define FLAG_ACCESSORS(FLAGS, METHOD, FLAG) \
00033 bool METHOD() const { return FLAGS.FLAG; } \
00034 void METHOD(bool onoff) { FLAGS.FLAG = onoff; }
00035
00036 class GR_API GR_CommonDispOption
00037 {
00038 public:
00039 GR_CommonDispOption();
00040 GR_CommonDispOption(const GR_CommonDispOption &opt);
00041 ~GR_CommonDispOption();
00042
00043
00044 bool save(ostream &, int indent=0) const;
00045 bool load(UT_IStream &);
00046
00047 GR_CommonDispOption &operator=(const GR_CommonDispOption &opt);
00048
00049
00050
00051
00052 void setColorScheme(const char *scheme_name);
00053 const UT_String &getColorScheme(void) const { return myColorScheme; }
00054
00055
00056 void setColors(const GR_CommonDispOption &opt);
00057
00058
00059
00060
00061
00062 void getColorByName(const char *name, UT_Color &color,
00063 float r=1.0f, float g=1.0f, float b=1.0f);
00064
00065
00066
00067
00068
00069
00070
00071 bool gdpOptionsEqual(const GR_CommonDispOption &opt,
00072 const bool displayListDestructionCheck = false,
00073 const bool ignoreDrawTransparentFlag = false) const;
00074
00075
00076 const UT_Color &backgndColor() const { return myBackgndColor; }
00077 UT_Color &backgndColor() { return myBackgndColor; }
00078 const UT_Color &wireColor() const { return myWireColor; }
00079 UT_Color &wireColor() { return myWireColor; }
00080 const UT_Color &ghostFillColor() const { return myGhostFillColor; }
00081 UT_Color &ghostFillColor() { return myGhostFillColor; }
00082 const UT_Color &selPrimColor() const { return mySelPrimColor; }
00083 UT_Color &selPrimColor() { return mySelPrimColor; }
00084 const UT_Color &auxSelPrimColor1() const { return myAuxSelPrimColor1; }
00085 UT_Color &auxSelPrimColor1() { return myAuxSelPrimColor1; }
00086 const UT_Color &auxSelPrimColor2() const { return myAuxSelPrimColor2; }
00087 UT_Color &auxSelPrimColor2() { return myAuxSelPrimColor2; }
00088 const UT_Color &primClosureColor() const { return myPrimClosureColor; }
00089 UT_Color &primClosureColor() { return myPrimClosureColor; }
00090 const UT_Color ®AuxColor() const { return myRegAuxColor; }
00091 UT_Color ®AuxColor() { return myRegAuxColor; }
00092 const UT_Color &selAuxColor() const { return mySelAuxColor; }
00093 UT_Color &selAuxColor() { return mySelAuxColor; }
00094 const UT_Color &templateColor() const { return myTemplateColor; }
00095 UT_Color &templateColor() { return myTemplateColor; }
00096 const UT_Color &targetWireColor() const { return myTargetWireColor; }
00097 UT_Color &targetWireColor() { return myTargetWireColor; }
00098 const UT_Color &axesColor() const { return myAxesColor; }
00099 UT_Color &axesColor() { return myAxesColor; }
00100 const UT_Color &xAxesColor() const { return myXAxesColor; }
00101 UT_Color &xAxesColor() { return myXAxesColor; }
00102 const UT_Color &yAxesColor() const { return myYAxesColor; }
00103 UT_Color &yAxesColor() { return myYAxesColor; }
00104 const UT_Color &zAxesColor() const { return myZAxesColor; }
00105 UT_Color &zAxesColor() { return myZAxesColor; }
00106 const UT_Color &selAxesColor() const { return mySelAxesColor; }
00107 UT_Color &selAxesColor() { return mySelAxesColor; }
00108 const UT_Color &primInfoColor() const { return myPrimInfoColor; }
00109 UT_Color &primInfoColor() { return myPrimInfoColor; }
00110 const UT_Color &selPrimInfoColor() const { return mySelPrimInfoColor; }
00111 UT_Color &selPrimInfoColor() { return mySelPrimInfoColor; }
00112 const UT_Color &pointColor() const { return myPointColor; }
00113 UT_Color &pointColor() { return myPointColor; }
00114 const UT_Color &selPointColor() const { return mySelPointColor; }
00115 UT_Color &selPointColor() { return mySelPointColor; }
00116 const UT_Color &auxSelPointColor1() const{ return myAuxSelPointColor1;}
00117 UT_Color &auxSelPointColor1() { return myAuxSelPointColor1;}
00118 const UT_Color &auxSelPointColor2() const{ return myAuxSelPointColor2;}
00119 UT_Color &auxSelPointColor2() { return myAuxSelPointColor2;}
00120 const UT_Color &pointClosureColor() const{ return myPointClosureColor;}
00121 UT_Color &pointClosureColor() { return myPointClosureColor;}
00122 const UT_Color &guide1Color() const{ return myGuide1Color;}
00123 UT_Color &guide1Color() { return myGuide1Color;}
00124 const UT_Color &guide2Color() const{ return myGuide2Color;}
00125 UT_Color &guide2Color() { return myGuide2Color;}
00126 const UT_Color &guideSelColor() const{ return myObjSelectColor;}
00127 const UT_Color &cplaneColor() const{ return myCplaneColor;}
00128 UT_Color &cplaneColor() { return myCplaneColor;}
00129 const UT_Color &selCplaneColor() const{ return mySelCplaneColor;}
00130 UT_Color &selCplaneColor() { return mySelCplaneColor;}
00131 const UT_Color &gridColor() const{ return myGridColor;}
00132 UT_Color &gridColor() { return myGridColor;}
00133 const UT_Color &heightVectorColor() const{ return myHeightVectorColor;}
00134 UT_Color &heightVectorColor() { return myHeightVectorColor;}
00135 const UT_Color &handleColor() const{ return myHandleColor;}
00136 UT_Color &handleColor() { return myHandleColor;}
00137 const UT_Color &selHandleColor() const{ return mySelHandleColor;}
00138 UT_Color &selHandleColor() { return mySelHandleColor;}
00139 const UT_Color &peanutColor() const { return myPeanutColor; }
00140 UT_Color &peanutColor() { return myPeanutColor; }
00141 const UT_Color &labelColor() const { return myLabelColor; }
00142 UT_Color &labelColor() { return myLabelColor; }
00143 const UT_Color &selLabelColor() const { return mySelLabelColor; }
00144 UT_Color &selLabelColor() { return mySelLabelColor; }
00145 const UT_Color &overlayLabelColor()const { return myOverlayLabelColor;}
00146 UT_Color &overlayLabelColor() { return myOverlayLabelColor;}
00147 const UT_Color &auxOverlayLabelColor()const
00148 { return myAuxOverlayLabelColor;}
00149 UT_Color &auxOverlayLabelColor()
00150 { return myAuxOverlayLabelColor;}
00151 const UT_Color &handlePivotColor() const{ return myHandlePivotColor;}
00152 UT_Color &handlePivotColor() { return myHandlePivotColor;}
00153 const UT_Color &handleAxisColor() const{ return myHandleAxisColor;}
00154 UT_Color &handleAxisColor() { return myHandleAxisColor;}
00155 const UT_Color &cplaneHandleXlateColor()const
00156 { return myCPlaneHandleXlateColor;}
00157 UT_Color &cplaneHandleXlateColor()
00158 { return myCPlaneHandleXlateColor;}
00159 const UT_Color &cplaneHandleRotateColor()const
00160 { return myCPlaneHandleRotateColor;}
00161 UT_Color &cplaneHandleRotateColor()
00162 { return myCPlaneHandleRotateColor;}
00163 const UT_Color &cplaneHandleBorderColor()const
00164 { return myCPlaneHandleBorderColor;}
00165 UT_Color &cplaneHandleBorderColor()
00166 { return myCPlaneHandleBorderColor;}
00167 const UT_Color &orthoGridColor() const{ return myOrthoGridColor;}
00168 UT_Color &orthoGridColor() { return myOrthoGridColor;}
00169 const UT_Color &orthoGridOriginColor()const
00170 { return myOrthoGridOriginColor;}
00171 UT_Color &orthoGridOriginColor()
00172 { return myOrthoGridOriginColor;}
00173 const UT_Color &uvGridColor() const{ return myUVGridColor;}
00174 UT_Color &uvGridColor() { return myUVGridColor;}
00175 const UT_Color &uvGridOriginColor()const { return myUVGridOriginColor;}
00176 UT_Color &uvGridOriginColor() { return myUVGridOriginColor;}
00177 const UT_Color &uvGridBoundaryColor()const
00178 { return myUVGridBoundaryColor;}
00179 UT_Color &uvGridBoundaryColor()
00180 { return myUVGridBoundaryColor;}
00181 const UT_Color &objSelectColor() const { return myObjSelectColor;}
00182 UT_Color &objSelectColor() { return myObjSelectColor;}
00183 const UT_Color &objCurrentColor() const { return myObjCurrentColor;}
00184 UT_Color &objCurrentColor() { return myObjCurrentColor;}
00185
00186 const UT_Color &objSelectHintColor() const
00187 { return myObjSelectHintColor; }
00188 UT_Color &objSelectHintColor() { return myObjSelectHintColor; }
00189
00190 const UT_Color &crtAuxColor() const { return *myCrtAuxColor; }
00191 UT_Color &crtAuxColor() { return *myCrtAuxColor; }
00192 const UT_Color &defaultWireColor() const { return myDefaultWireColor; }
00193 UT_Color &defaultWireColor() { return myDefaultWireColor; }
00194
00195 const UT_Color &uvBackFaceFillColor() const
00196 { return myUVBackFaceFillColor; }
00197 const UT_Color &uvSelBackFaceFillColor() const
00198 { return myUVSelBackFaceFillColor; }
00199
00200 const UT_Color &ikCriticalZoneColor() const
00201 { return myIKCriticalZoneColor; }
00202 const UT_Color &viewMaskOverlayColor() const
00203 { return myViewMaskOverlayColor; }
00204
00205 const GR_HandleParts &handleParts() const { return myHandleParts; }
00206 GR_HandleParts &handleParts() { return myHandleParts; }
00207
00208
00209
00210 FLAG_ACCESSORS(mySaveFlags, drawTexture, drawTexture)
00211 FLAG_ACCESSORS(mySaveFlags, drawTransparent, drawTransparent)
00212 FLAG_ACCESSORS(mySaveFlags, drawTexturedSpots, drawTexturedSpots)
00213 FLAG_ACCESSORS(mySaveFlags, drawShadows, drawShadows)
00214 FLAG_ACCESSORS(mySaveFlags, drawTransparentMaps, drawTransparentMaps)
00215 FLAG_ACCESSORS(mySaveFlags, removeBackface, removeBackface)
00216 FLAG_ACCESSORS(mySaveFlags, simpleDraw, simpleDraw)
00217 FLAG_ACCESSORS(mySaveFlags, fillSelection, fillSelection)
00218 FLAG_ACCESSORS(mySaveFlags, antiAliased, antiAliased)
00219 FLAG_ACCESSORS(mySaveFlags, zBufferForWireframe, zBufferForWireframe)
00220 FLAG_ACCESSORS(mySaveFlags, solidOnly, solidOnly)
00221 FLAG_ACCESSORS(mySaveFlags, drawSpherePoly, drawSpherePoly)
00222 FLAG_ACCESSORS(mySaveFlags, drawPartSprite, drawPartSprite)
00223 FLAG_ACCESSORS(mySaveFlags, sortPartSprite, sortPartSprite)
00224 FLAG_ACCESSORS(mySaveFlags, drawPartTails, drawPartTails)
00225
00226 FLAG_ACCESSORS(mySaveFlags, shadeOpenCurves, shadeOpenCurves)
00227 FLAG_ACCESSORS(mySaveFlags, displayAsSubdiv, displayAsSubdiv)
00228
00229 FLAG_ACCESSORS(mySaveFlags, drawPartOrigin, drawPartOrigin)
00230 FLAG_ACCESSORS(mySaveFlags, drawOnlyHulls, drawOnlyHulls)
00231 FLAG_ACCESSORS(mySaveFlags, drawHandles, drawHandles)
00232
00233 FLAG_ACCESSORS(mySaveFlags, drawThickSelectedNormals,
00234 drawThickSelectedNormals)
00235 FLAG_ACCESSORS(mySaveFlags, drawThickSelectedUVGrips,
00236 drawThickSelectedUVGrips)
00237 FLAG_ACCESSORS(mySaveFlags, overrideColorAttrib, overrideColorAttrib);
00238
00239 FLAG_ACCESSORS(myNoSaveFlags, snapToSelected, snapToSelected)
00240 FLAG_ACCESSORS(myNoSaveFlags, showTempSelections, showTempSelections)
00241 FLAG_ACCESSORS(myNoSaveFlags, alphaPass, alphaPass)
00242 FLAG_ACCESSORS(myNoSaveFlags, uvPickFrontFaces, uvPickFrontFaces)
00243 FLAG_ACCESSORS(myNoSaveFlags, uvPickBackFaces, uvPickBackFaces)
00244 FLAG_ACCESSORS(myNoSaveFlags, drawAuxColors, drawAuxColors)
00245 FLAG_ACCESSORS(myNoSaveFlags, forceWireColor, forceWireColor)
00246 FLAG_ACCESSORS(myNoSaveFlags, shadingOpenCurves, shadingOpenCurves)
00247
00248
00249 GR_HighQualityPass getHighQualityPass() const
00250 { return myNoSaveFlags.highQualityPass; }
00251 void setHighQualityPass(GR_HighQualityPass pass)
00252 { myNoSaveFlags.highQualityPass = pass; }
00253
00254
00255 UT_String visibleObjects() const { return myVisibleObjects; }
00256 unsigned primMask() const { return myPrimMask; }
00257 unsigned pickMask() const { return myPickMask; }
00258 unsigned cullOf() const { return myCullOf; }
00259 unsigned cullDraw() const { return myCullDraw; }
00260 float normalScale() const { return myNormalScale; }
00261 float uvGripScale() const { return myUVGripScale; }
00262 float LOD() const { return myLOD; }
00263 float hlOffsetVariable() const { return myHLOffsetVariable; }
00264 float hlOffsetConstant() const { return myHLOffsetConstant; }
00265 float wireWidth() const { return myWireWidth; }
00266 float pointSize() const { return myPointSize; }
00267 float shadowOffsetVariable() const { return myShadowOffsetVariable; }
00268 float shadowOffsetConstant() const { return myShadowOffsetConstant; }
00269 int selectionListInst() const { return mySelectionListInst; }
00270
00271 const char *colorAttrib() const { return myColorAttrib; }
00272 int colorType() const { return myColorType; }
00273
00274
00275 void visibleObjects(const char *mask)
00276 { myVisibleObjects.harden(mask); }
00277 void primMask(unsigned mask) { myPrimMask = mask; }
00278 void pickMask(unsigned mask) { myPickMask = mask; }
00279 void cullOf(int o) { if (o >= 1) myCullOf = o; }
00280 void cullDraw(int d) { if (d >= 1) myCullDraw = d; }
00281 void normalScale(float s) { myNormalScale = (s == 0.0f)
00282 ? 0.001f : s; }
00283 void uvGripScale(float s) { myUVGripScale = (s>0.0F)
00284 ? s : 0.001F; }
00285
00286 void useRegularAuxColor() { myCrtAuxColor = &myRegAuxColor; }
00287 void useSelectedAuxColor() { myCrtAuxColor = &mySelAuxColor; }
00288 void LOD(float l) { myLOD = (l>0.0f)
00289 ? l : 0.001f; }
00290 void hlOffsetVariable(float f) { myHLOffsetVariable = (f>=0.0f)
00291 ? f :0.0f;}
00292 void hlOffsetConstant(float f) { myHLOffsetConstant = (f>=0.0f)
00293 ? f :0.0f;}
00294 void wireWidth(float width) { myWireWidth = width;}
00295 void pointSize(float size) { myPointSize = size; }
00296 void shadowOffsetVariable(float f)
00297 { myShadowOffsetVariable = (f>=0.0f) ? f : 0.0f;}
00298 void shadowOffsetConstant(float f)
00299 { myShadowOffsetConstant = (f>=0.0f) ? f : 0.0f;}
00300 void selectionListInst(int inst) { mySelectionListInst = inst; }
00301
00302 void setColorAttrib(const char *a) { myColorAttrib.harden(a); }
00303 void setColorType(int t) { myColorType = t; }
00304
00305 private:
00306
00307 void loadDefaultColors();
00308
00309 void getColorsByName(void);
00310
00311
00312
00313 UT_Color myBackgndColor;
00314 UT_Color myWireColor;
00315 UT_Color myGhostFillColor;
00316 UT_Color mySelPrimColor;
00317 UT_Color myAuxSelPrimColor1;
00318 UT_Color myAuxSelPrimColor2;
00319 UT_Color myPrimClosureColor;
00320 UT_Color myRegAuxColor;
00321 UT_Color mySelAuxColor;
00322 UT_Color myTemplateColor;
00323 UT_Color myTargetWireColor;
00324 UT_Color myAxesColor;
00325 UT_Color myXAxesColor;
00326 UT_Color myYAxesColor;
00327 UT_Color myZAxesColor;
00328 UT_Color mySelAxesColor;
00329 UT_Color myPrimInfoColor;
00330 UT_Color mySelPrimInfoColor;
00331 UT_Color myPointColor;
00332 UT_Color mySelPointColor;
00333 UT_Color myAuxSelPointColor1;
00334 UT_Color myAuxSelPointColor2;
00335 UT_Color myPointClosureColor;
00336 UT_Color myGuide1Color;
00337 UT_Color myGuide2Color;
00338 UT_Color myCplaneColor;
00339 UT_Color mySelCplaneColor;
00340 UT_Color myGridColor;
00341 UT_Color myHeightVectorColor;
00342 UT_Color myHandleColor;
00343 UT_Color mySelHandleColor;
00344 UT_Color myPeanutColor;
00345 UT_Color myLabelColor;
00346 UT_Color mySelLabelColor;
00347 UT_Color myOverlayLabelColor;
00348 UT_Color myAuxOverlayLabelColor;
00349 UT_Color myHandlePivotColor;
00350 UT_Color myHandleAxisColor;
00351 UT_Color myCPlaneHandleXlateColor;
00352 UT_Color myCPlaneHandleRotateColor;
00353 UT_Color myCPlaneHandleBorderColor;
00354 UT_Color myOrthoGridColor;
00355 UT_Color myOrthoGridOriginColor;
00356 UT_Color myUVGridColor;
00357 UT_Color myUVGridOriginColor;
00358 UT_Color myUVGridBoundaryColor;
00359 UT_Color myObjSelectColor;
00360 UT_Color myObjCurrentColor;
00361 UT_Color myObjSelectHintColor;
00362
00363 UT_Color myUVBackFaceFillColor;
00364 UT_Color myUVSelBackFaceFillColor;
00365
00366 UT_Color myDefaultWireColor;
00367
00368 UT_Color myIKCriticalZoneColor;
00369
00370 UT_Color myViewMaskOverlayColor;
00371
00372 UT_String myVisibleObjects;
00373 unsigned myPrimMask;
00374 unsigned myPickMask;
00375 unsigned myCullOf, myCullDraw;
00376
00377 float myNormalScale;
00378 float myUVGripScale;
00379 float myLOD;
00380 float myHLOffsetVariable;
00381 float myHLOffsetConstant;
00382 float myWireWidth;
00383 float myPointSize;
00384 float myShadowOffsetVariable;
00385 float myShadowOffsetConstant;
00386 int mySelectionListInst;
00387
00388 UT_Color *myCrtAuxColor;
00389
00390 char myGotDefaults;
00391 UT_String myColorScheme;
00392
00393 UT_String myColorAttrib;
00394 int myColorType;
00395
00396 static UT_SymbolTable *ourSchemeDefaults;
00397
00398 GR_HandleParts myHandleParts;
00399
00400 struct grSaveFlags
00401 {
00402 unsigned drawTexture :1,
00403 drawTransparent :1,
00404 drawTexturedSpots :1,
00405 drawShadows :1,
00406 drawTransparentMaps:1,
00407 removeBackface :1,
00408 simpleDraw :1,
00409 fillSelection :1,
00410 antiAliased :1,
00411 zBufferForWireframe:1,
00412 solidOnly :1,
00413
00414
00415 drawSpherePoly :1,
00416 drawPartSprite :1,
00417 sortPartSprite :1,
00418
00419 drawPartOrigin :1,
00420
00421 drawOnlyHulls :1,
00422 drawHandles :1,
00423
00424 drawThickSelectedNormals:1,
00425 drawThickSelectedUVGrips:1,
00426 drawPartTails :1,
00427 shadeOpenCurves :1,
00428 displayAsSubdiv :1,
00429 overrideColorAttrib:1;
00430 };
00431 grSaveFlags mySaveFlags;
00432
00433 struct grNoSaveFlags
00434 {
00435 GR_HighQualityPass highQualityPass;
00436 unsigned snapToSelected :1,
00437 alphaPass :1,
00438 showTempSelections :1,
00439
00440 uvPickFrontFaces :1,
00441
00442 uvPickBackFaces :1,
00443
00444 drawAuxColors :1,
00445
00446 forceWireColor :1,
00447 shadingOpenCurves :1;
00448
00449 };
00450 grNoSaveFlags myNoSaveFlags;
00451 };
00452
00453 #undef FLAG_ACCESSORS
00454
00455 #endif