CFx SDK Documentation  2023 SP0
GiVisualStyleData.h
Go to the documentation of this file.
1 // Copyright (C) 2002-2017, Open Design Alliance (the "Alliance").
3 // All rights reserved.
4 //
5 // This software and its documentation and related materials are owned by
6 // the Alliance. The software may only be incorporated into application
7 // programs owned by members of the Alliance, subject to a signed
8 // Membership Agreement and Supplemental Software License Agreement with the
9 // Alliance. The structure and organization of this software are the valuable
10 // trade secrets of the Alliance and its suppliers. The software is also
11 // protected by copyright law and international treaty provisions. Application
12 // programs incorporating this software must include the following statement
13 // with their copyright notices:
14 //
15 // This application incorporates Teigha(R) software pursuant to a license
16 // agreement with Open Design Alliance.
17 // Teigha(R) Copyright (C) 2002-2017 by Open Design Alliance.
18 // All rights reserved.
19 //
20 // By use of this software, its documentation or related materials, you
21 // acknowledge and accept the above terms.
23 
24 #ifndef __ODGIVISUALSTYLEDATA_H__
25 #define __ODGIVISUALSTYLEDATA_H__
26 
27 #include "Gi/GiVisualStyle.h"
28 #include "StaticRxObject.h"
29 
30 #include "TD_PackPush.h"
31 
32 // OdGiVisualStyleDataContainer
33 
41 class OdGiVisualStyleDataContainer : public OdStaticRxObject<OdGiVisualStyle>
42 {
43  public:
50  {
52 
54 
60  void setBase(OdGiVariant *pVar) { m_pVar = pVar; }
61 
65  OdGiVariant *base() { return m_pVar; }
66 
70  OdCmEntityColor &entColor() { return const_cast<OdCmEntityColor&>(m_pVar->asColor()); }
71 
75  const OdCmEntityColor &entColor() const { return m_pVar->asColor(); }
76 
96 
118 
123  bool isByColor() const { return entColor().isByColor(); }
124 
129  bool isByLayer() const { return entColor().isByLayer(); }
130 
135  bool isByBlock() const { return entColor().isByBlock(); }
136 
144  bool isByACI() const { return entColor().isByACI(); }
145 
150  bool isForeground() const { return entColor().isForeground(); }
151 
156  bool isByDgnIndex() const { return entColor().isByDgnIndex(); }
157 
162  OdUInt32 color() const { return entColor().color(); }
163 
170 
179 
186 
193 
200 
204  OdUInt8 red() const { return entColor().red(); }
205 
209  OdUInt8 green() const { return entColor().green(); }
210 
214  OdUInt8 blue() const { return entColor().blue(); }
215 
237  OdUInt16 colorIndex() const { return entColor().colorIndex(); }
238 
266 #if 0
267  OdCmEntityColor m_entColor;
268 
269  OdCmColorBaseAdapt() : m_entColor() { }
271  OdCmColorBaseAdapt(const OdCmEntityColor &cColor) : m_entColor(cColor) { }
272  OdCmColorBaseAdapt(const OdCmColorBase &cColor) { m_entColor.setColor(cColor.color()); }
273  OdCmColorBaseAdapt(OdCmEntityColor::ColorMethod cm) : m_entColor(cm) { }
274 
293  OdCmEntityColor::ColorMethod colorMethod() const { return m_entColor.colorMethod(); }
294 
316 
321  bool isByColor() const { return m_entColor.isByColor(); }
322 
327  bool isByLayer() const { return m_entColor.isByLayer(); }
328 
333  bool isByBlock() const { return m_entColor.isByBlock(); }
334 
342  bool isByACI() const { return m_entColor.isByACI(); }
343 
348  bool isForeground() const { return m_entColor.isForeground(); }
349 
354  bool isByDgnIndex() const { return m_entColor.isByDgnIndex(); }
355 
360  OdUInt32 color() const { return m_entColor.color(); }
361 
367  void setColor(OdUInt32 color) { m_entColor.setColor(color); }
368 
376  void setRGB(OdUInt8 red, OdUInt8 green, OdUInt8 blue) { m_entColor.setRGB(red, green, blue); }
377 
383  void setRed(OdUInt8 red) { m_entColor.setRed(red); }
384 
390  void setGreen(OdUInt8 green) { m_entColor.setGreen(green); }
391 
397  void setBlue(OdUInt8 blue) { m_entColor.setBlue(blue); }
398 
402  OdUInt8 red() const { return m_entColor.red(); }
403 
407  OdUInt8 green() const { return m_entColor.green(); }
408 
412  OdUInt8 blue() const { return m_entColor.blue(); }
413 
435  OdUInt16 colorIndex() const { return m_entColor.colorIndex(); }
436 
464 #endif
465  // Unnecessary methods
466  bool setNames(const OdString& /*colorName*/, const OdString& /*bookName*/ = OdString::kEmpty) { return false; }
467  OdString colorName() const { return OdString::kEmpty; }
468  OdString bookName() const { return OdString::kEmpty; }
470  };
471 
472  // Style subclasses
473 
479  class OdGiFaceStyleDataContainer : public OdStaticRxObject<OdGiFaceStyle>
480  {
481  protected:
484  public:
486  : m_pBase(NULL)
487  {
488  }
490  {
491  }
492 
499  {
500  m_pBase = pBase;
502  }
503 
508  {
509  return m_pBase;
510  }
511 
518  {
520  }
521 
525  virtual LightingModel lightingModel() const
526  {
528  }
529 
536  {
538  }
539 
544  {
546  }
547 
553  virtual void setFaceColorMode(FaceColorMode mode)
554  {
556  }
557 
561  virtual FaceColorMode faceColorMode() const
562  {
564  }
565 
571  virtual void setFaceModifiers(unsigned long nModifiers)
572  {
574  }
575 
582  virtual void setFaceModifierFlag(FaceModifier flag, bool bEnable)
583  {
585  }
586 
590  virtual unsigned long faceModifiers() const
591  {
593  }
594 
600  virtual bool isFaceModifierFlagSet(FaceModifier flag) const
601  {
603  }
604 
611  virtual void setOpacityLevel(double nLevel, bool bEnableModifier)
612  {
614  if (bEnableModifier)
615  setFaceModifierFlag(kOpacity, bEnableModifier);
616  }
617 
621  virtual double opacityLevel() const
622  {
624  }
625 
632  virtual void setSpecularAmount(double nAmount, bool bEnableModifier)
633  {
635  if (bEnableModifier)
636  setFaceModifierFlag(kSpecular, bEnableModifier);
637  }
638 
642  virtual double specularAmount() const
643  {
645  }
646 
653  virtual void setMonoColor(const OdCmColorBase& color, bool bEnableMode)
654  {
656  if (bEnableMode)
658  }
659 
663  virtual const OdCmColorBase& monoColor() const
664  {
665  return m_cmMonoColor;
666  }
667 
672  {
673  return m_cmMonoColor;
674  }
675  };
676 
682  class OdGiEdgeStyleDataContainer : public OdStaticRxObject<OdGiEdgeStyle>
683  {
684  protected:
691  public:
693  : m_pBase(NULL)
695  {
696  }
698  {
699  }
700 
707  {
708  m_pBase = pBase;
713  }
714 
719  {
720  return m_pBase;
721  }
722 
728  virtual void setEdgeModel(EdgeModel model)
729  {
731  }
732 
737  virtual EdgeModel edgeModel() const
738  {
740  }
741 
747  virtual void setEdgeStyles(unsigned long nStyles)
748  {
750  }
751 
758  virtual void setEdgeStyleFlag(EdgeStyle flag, bool bEnable)
759  {
761  }
762 
766  virtual unsigned long edgeStyles() const
767  {
768  return (unsigned long)m_pBase->trait(OdGiVisualStyleProperties::kEdgeStyles)->asInt();
769  }
770 
776  virtual bool isEdgeStyleFlagSet(EdgeStyle flag) const
777  {
779  }
780 
786  virtual void setIntersectionColor(const OdCmColorBase& color)
787  {
789  }
790 
794  virtual const OdCmColorBase& intersectionColor() const
795  {
796  return m_cmIntColor;
797  }
798 
803  {
804  return m_cmIntColor;
805  }
806 
812  virtual void setObscuredColor(const OdCmColorBase& color)
813  {
815  }
816 
820  virtual const OdCmColorBase& obscuredColor() const
821  {
822  return m_cmObColor;
823  }
824 
829  {
830  return m_cmObColor;
831  }
832 
839  {
841  }
842 
846  virtual LineType obscuredLinetype() const
847  {
849  }
850 
857  {
859  }
860 
865  {
867  }
868 
874  virtual void setCreaseAngle(double nAngle)
875  {
877  }
878 
883  virtual double creaseAngle() const
884  {
886  }
887 
893  virtual void setEdgeModifiers(unsigned long nModifiers)
894  {
896  }
897 
904  virtual void setEdgeModifierFlag(EdgeModifier flag, bool bEnable)
905  {
907  }
908 
912  virtual unsigned long edgeModifiers() const
913  {
915  }
916 
922  virtual bool isEdgeModifierFlagSet(EdgeModifier flag) const
923  {
925  }
926 
933  virtual void setEdgeColor(const OdCmColorBase& color, bool bEnableModifier)
934  {
936  }
937 
941  virtual const OdCmColorBase& edgeColor() const
942  {
943  return m_cmEdgeColor;
944  }
945 
950  {
951  return m_cmEdgeColor;
952  }
953 
960  virtual void setOpacityLevel(double nLevel, bool bEnableModifier)
961  {
963  if (bEnableModifier)
964  setEdgeModifierFlag(kOpacity, bEnableModifier);
965  }
966 
970  virtual double opacityLevel() const
971  {
973  }
974 
981  virtual void setEdgeWidth(int nWidth, bool bEnableModifier)
982  {
984  if (bEnableModifier)
985  setEdgeModifierFlag(kWidth, bEnableModifier);
986  }
987 
991  virtual int edgeWidth() const
992  {
994  }
995 
1002  virtual void setOverhangAmount(int nAmount, bool bEnableModifier)
1003  {
1005  if (bEnableModifier)
1006  setEdgeModifierFlag(kOverhang, bEnableModifier);
1007  }
1008 
1012  virtual int overhangAmount() const
1013  {
1015  }
1016 
1023  virtual void setJitterAmount(JitterAmount amount, bool bEnableModifier)
1024  {
1026  if (bEnableModifier)
1027  setEdgeModifierFlag(kJitter, bEnableModifier);
1028  }
1029 
1033  virtual JitterAmount jitterAmount() const
1034  {
1036  }
1037 
1044  virtual void setWiggleAmount(WiggleAmount amount, bool bEnableModifier)
1045  {
1047  if (bEnableModifier)
1048  setEdgeModifierFlag(kWiggle, bEnableModifier);
1049  }
1050 
1054  virtual WiggleAmount wiggleAmount() const
1055  {
1057  }
1058 
1064  virtual void setSilhouetteColor(const OdCmColorBase& color)
1065  {
1067  }
1068 
1072  virtual const OdCmColorBase& silhouetteColor() const
1073  {
1074  return m_cmSilColor;
1075  }
1076 
1081  {
1082  return m_cmSilColor;
1083  }
1084 
1090  virtual void setSilhouetteWidth(short nWidth)
1091  {
1093  }
1094 
1098  virtual short silhouetteWidth() const
1099  {
1101  }
1102 
1109  virtual void setHaloGap(int nHaloGap, bool bEnableModifier)
1110  {
1112  if (bEnableModifier)
1113  setEdgeModifierFlag(kHaloGap, bEnableModifier);
1114  }
1115 
1119  virtual int haloGap() const
1120  {
1122  }
1123 
1129  virtual void setIsolines(unsigned short nIsolines)
1130  {
1132  }
1133 
1137  virtual unsigned short isolines() const
1138  {
1139  return (unsigned short)m_pBase->trait(OdGiVisualStyleProperties::kEdgeIsolines)->asInt();
1140  }
1141 
1147  virtual void setHidePrecision(bool bHidePrecision)
1148  {
1150  }
1151 
1155  virtual bool hidePrecision() const
1156  {
1158  }
1159 
1165  virtual void setEdgeStyleApply(EdgeStyleApply apply)
1166  {
1167  m_esApply = apply;
1168  }
1169 
1174  {
1175  return m_esApply;
1176  }
1177  };
1178 
1184  class OdGiDisplayStyleDataContainer : public OdStaticRxObject<OdGiDisplayStyle>
1185  {
1186  protected:
1188  public:
1190  : m_pBase(NULL)
1191  {
1192  }
1194  {
1195  }
1196 
1203  {
1204  m_pBase = pBase;
1205  }
1206 
1211  {
1212  return m_pBase;
1213  }
1214 
1220  virtual void setDisplaySettings(unsigned long nSettings)
1221  {
1223  }
1224 
1231  virtual void setDisplaySettingsFlag(DisplaySettings flag, bool bEnable)
1232  {
1234  }
1235 
1239  virtual unsigned long displaySettings() const
1240  {
1241  return (unsigned long)m_pBase->trait(OdGiVisualStyleProperties::kDisplayStyles)->asInt();
1242  }
1243 
1250  {
1252  }
1253 
1259  virtual void setBrightness(double value)
1260  {
1262  }
1263 
1267  virtual double brightness() const
1268  {
1270  }
1271 
1278  {
1280  }
1281 
1285  virtual ShadowType shadowType() const
1286  {
1288  }
1289  };
1290  protected:
1297  public:
1299  : m_faceStyle()
1300  , m_edgeStyle()
1301  , m_displayStyle()
1302  , m_type(kCustom)
1303  {
1304  // Setup redirections
1305  m_faceStyle.setBase(this);
1306  m_edgeStyle.setBase(this);
1307  m_displayStyle.setBase(this);
1308  // Face properties
1316  // Edge properties
1335  // Display properties
1339  // New in AC2011, 2013
1345  // New in 2013
1371  }
1373  {
1374  }
1375 
1380  {
1381  return m_faceStyle;
1382  }
1383 
1388  {
1389  return m_edgeStyle;
1390  }
1391 
1396  {
1397  return m_displayStyle;
1398  }
1399 
1403  virtual const OdGiFaceStyle& faceStyle() const
1404  {
1405  return m_faceStyle;
1406  }
1407 
1411  virtual const OdGiEdgeStyle& edgeStyle() const
1412  {
1413  return m_edgeStyle;
1414  }
1415 
1419  virtual const OdGiDisplayStyle& displayStyle() const
1420  {
1421  return m_displayStyle;
1422  }
1423 
1429  virtual void setFaceStyle(const OdGiFaceStyle& style)
1430  {
1431  m_faceStyle.set(style);
1432  }
1433 
1439  virtual void setEdgeStyle(const OdGiEdgeStyle& style)
1440  {
1441  m_edgeStyle.set(style);
1442  }
1443 
1449  virtual void setDisplayStyle(const OdGiDisplayStyle& style)
1450  {
1451  m_displayStyle.set(style);
1452  }
1453 
1454  // New interface
1455 
1464  virtual bool setType(Type type)
1465  {
1466  try
1467  {
1469  }
1470  catch (const OdError &)
1471  {
1472  return false;
1473  }
1474  m_type = type;
1475  return true;
1476  }
1477 
1481  virtual Type type() const
1482  {
1483  return m_type;
1484  }
1485 
1495  virtual bool setTrait(Property prop, Operation op)
1496  {
1498  {
1499  m_ops[prop] = op;
1500  return true;
1501  }
1502  return false;
1503  }
1504 
1515  virtual bool setTrait(Property prop, const OdGiVariant *pVal,
1517  {
1519  pVal && (pVal->type() == propertyType(prop)))
1520  {
1521  static_cast<OdGiVariant&>(m_props[prop]) = *pVal;
1522  m_ops[prop] = op;
1523  return true;
1524  }
1525  return false;
1526  }
1527 
1537  virtual OdGiVariantPtr trait(Property prop, Operation *pOp = NULL) const
1538  {
1540  {
1541  if (pOp)
1542  *pOp = m_ops[prop];
1543  return OdGiVariantPtr(m_props + prop);
1544  }
1545  return OdGiVariant::createObject();
1546  }
1547 
1556  virtual Operation operation(Property prop) const
1557  {
1559  {
1560  return m_ops[prop];
1561  }
1563  }
1564 };
1565 
1566 #include "TD_PackPop.h"
1567 
1568 #endif //__ODGIVISUALSTYLEDATA_H__
ltype
Definition: DimVarDefs.h:2949
OdSmartPtr< OdGiVariant > OdGiVariantPtr
Definition: GiVariant.h:374
#define NULL
Definition: GsProperties.h:177
#define OD_T(x)
unsigned int OdUInt32
unsigned short OdUInt16
int OdInt32
unsigned char OdUInt8
OdString OdString
Definition: OdString.h:1224
virtual OdUInt32 color() const =0
void setColor(OdUInt32 color)
OdUInt8 blue() const
Definition: CmColorBase.h:461
bool isByColor() const
Definition: CmColorBase.h:475
bool isForeground() const
Definition: CmColorBase.h:531
void setColorIndex(OdInt16 colorIndex)
Definition: CmColorBase.h:321
void setBlue(OdUInt8 blue)
Definition: CmColorBase.h:427
void setColorMethod(ColorMethod colorMethod)
Definition: CmColorBase.h:221
OdUInt8 green() const
Definition: CmColorBase.h:450
bool isByACI() const
Definition: CmColorBase.h:518
OdUInt32 color() const
Definition: CmColorBase.h:284
OdInt16 colorIndex() const
Definition: CmColorBase.h:356
void setRed(OdUInt8 red)
Definition: CmColorBase.h:395
bool isByBlock() const
Definition: CmColorBase.h:502
OdUInt8 red() const
Definition: CmColorBase.h:439
bool isByDgnIndex() const
Definition: CmColorBase.h:543
ColorMethod colorMethod() const
Definition: CmColorBase.h:251
bool isByLayer() const
Definition: CmColorBase.h:488
void setRGB(OdUInt8 red, OdUInt8 green, OdUInt8 blue)
Definition: CmColorBase.h:374
void setGreen(OdUInt8 green)
Definition: CmColorBase.h:411
void set(const OdGiDisplayStyle &style)
void set(const OdGiEdgeStyle &style)
void set(const OdGiFaceStyle &style)
VariantType type() const
void set(bool value)
static OdSmartPtr< OdGiVariant > createObject(const OdGiVariant &value)
const OdCmEntityColor & asColor() const
bool asBoolean() const
double asDouble() const
OdInt32 asInt() const
virtual bool isDisplaySettingsFlagSet(DisplaySettings flag) const
virtual void setDisplaySettingsFlag(DisplaySettings flag, bool bEnable)
virtual void setOverhangAmount(int nAmount, bool bEnableModifier)
virtual void setEdgeModifierFlag(EdgeModifier flag, bool bEnable)
virtual void setOpacityLevel(double nLevel, bool bEnableModifier)
virtual bool isEdgeModifierFlagSet(EdgeModifier flag) const
virtual const OdCmColorBase & silhouetteColor() const
virtual void setWiggleAmount(WiggleAmount amount, bool bEnableModifier)
virtual void setEdgeWidth(int nWidth, bool bEnableModifier)
virtual void setEdgeModifiers(unsigned long nModifiers)
virtual void setIntersectionColor(const OdCmColorBase &color)
virtual void setEdgeStyleFlag(EdgeStyle flag, bool bEnable)
virtual void setHaloGap(int nHaloGap, bool bEnableModifier)
virtual void setEdgeColor(const OdCmColorBase &color, bool bEnableModifier)
virtual const OdCmColorBase & intersectionColor() const
virtual void setJitterAmount(JitterAmount amount, bool bEnableModifier)
virtual void setIsolines(unsigned short nIsolines)
virtual void setSilhouetteColor(const OdCmColorBase &color)
virtual void setObscuredColor(const OdCmColorBase &color)
virtual const OdCmColorBase & obscuredColor() const
virtual void setOpacityLevel(double nLevel, bool bEnableModifier)
virtual bool isFaceModifierFlagSet(FaceModifier flag) const
virtual void setLightingModel(LightingModel lightingModel)
virtual void setMonoColor(const OdCmColorBase &color, bool bEnableMode)
virtual void setLightingQuality(LightingQuality lightingQuality)
virtual void setFaceModifierFlag(FaceModifier flag, bool bEnable)
virtual void setSpecularAmount(double nAmount, bool bEnableModifier)
virtual void setFaceModifiers(unsigned long nModifiers)
OdGiDisplayStyleDataContainer m_displayStyle
virtual void setEdgeStyle(const OdGiEdgeStyle &style)
OdStaticRxObject< OdGiVariant > m_props[OdGiVisualStyleProperties::kPropertyCount]
virtual const OdGiFaceStyle & faceStyle() const
Operation m_ops[OdGiVisualStyleProperties::kPropertyCount]
OdGiEdgeStyleDataContainer m_edgeStyle
virtual void setFaceStyle(const OdGiFaceStyle &style)
virtual bool setTrait(Property prop, const OdGiVariant *pVal, Operation op=OdGiVisualStyleOperations::kSet)
virtual OdGiFaceStyle & faceStyle()
virtual Operation operation(Property prop) const
virtual OdGiDisplayStyle & displayStyle()
virtual void setDisplayStyle(const OdGiDisplayStyle &style)
virtual OdGiVariantPtr trait(Property prop, Operation *pOp=NULL) const
OdGiFaceStyleDataContainer m_faceStyle
virtual const OdGiEdgeStyle & edgeStyle() const
virtual bool setType(Type type)
virtual OdGiEdgeStyle & edgeStyle()
virtual const OdGiDisplayStyle & displayStyle() const
virtual bool setTrait(Property prop, Operation op)
void configureForType(Type type)
static OdGiVariant::VariantType propertyType(Property prop)
virtual bool setTrait(Property prop, Operation op)=0
virtual bool traitFlag(Property flagProp, OdUInt32 flagVal) const
virtual bool setTraitFlag(Property flagProp, OdUInt32 flagVal, bool bEnable=true)
virtual OdGiVariantPtr trait(Property prop, Operation *pOp=NULL) const =0
const T * get() const
Definition: SmartPtr.h:326
FIRSTDLL_EXPORT_STATIC static const OdString kEmpty
Definition: OdString.h:98
GLuint GLsizei GLsizei GLint GLenum * type
Definition: gles2_ext.h:274
GLfloat GLfloat blue
Definition: gles2_ext.h:147
GLfloat green
Definition: gles2_ext.h:147
GLsizei const GLfloat * value
Definition: gles2_ext.h:302
OdCmEntityColor::ColorMethod colorMethod() const
void setColorMethod(OdCmEntityColor::ColorMethod colorMethod)
void setRGB(OdUInt8 red, OdUInt8 green, OdUInt8 blue)
bool setNames(const OdString &, const OdString &=OdString::kEmpty)