CFx SDK Documentation 2026 SP0
Loading...
Searching...
No Matches
GiSubEntityTraitsData.h
Go to the documentation of this file.
1
2// Copyright (C) 2002-2024, 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 Open Design Alliance software pursuant to a license
16// agreement with Open Design Alliance.
17// Open Design Alliance Copyright (C) 2002-2024 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 __ODGISUBENTITYTRAITSDATA_H__
25#define __ODGISUBENTITYTRAITSDATA_H__
26
27#include "TD_PackPush.h"
28
29#include "Gi/GiMaterial.h"
30
32
94
100{
101 // Members
102 //
103 OdUInt16 m_flags;
104 OdUInt16 m_selFlags;
105 OdCmEntityColor m_cmColor;
106 OdDbStub* m_layerId;
107 OdDbStub* m_lineTypeId;
108 OdGiFillType m_fillType;
109 OdDb::LineWeight m_lineWeight;
110 double m_lineTypeScale;
111 double m_thickness;
112 OdDb::PlotStyleNameType m_plotStyleNameType;
113 OdDbStub* m_plotStyleNameId;
114 OdDbStub* m_materialId;
115 const OdGiMapper* m_mapper;
116 OdDbStub* m_visualStyleId;
117 OdCmTransparency m_cmTransparency;
118 OdUInt32 m_drawFlags;
119 OdUInt32 m_lockFlags;
121 OdCmEntityColor m_cmSecondaryColor;
122 const OdGiDgLinetypeModifiers* m_lsModifiers;
123 const OdGiFill* m_fill;
124 OdGiAuxiliaryDataPtr m_pAuxData;
125
126public:
127 //DOM-IGNORE-BEGIN
128 enum
129 {
132 // Flags which can be inherited by nested drawables.
133//FELIX_CHANGE_BEGIN
135#ifdef XENON
136 // Xenon uses custom OdGiSubEntityTraits::SelectionFlags for subentities:
137 | OdGiSubEntityTraits::kHighlightingGeometry | OdGiSubEntityTraits::kHiddenInHighlight | OdGiSubEntityTraits::kFxDrawWhenSelected | OdGiSubEntityTraits::kFxSkipDrawWhenSelected
138#endif
139 ,
140//FELIX_CHANGE_END
142 };
143 enum
144 {
148 };
149 // Geometry visibility flags returned by geomVisibilityFlags method.
150 // This is more easy-to-use representation than analysis of selectionGeom and selectionFlags return values.
151 enum
152 {
153 kGeomDisplayNormally = (1 << 0), // Display unhighlighted geometry
154 kGeomSelectNormally = (1 << 1), // Select unhighlighted geometry
155 kGeomDisplayHighlighted = (1 << 2), // Display highlighted geometry
156 kGeomSelectHighlighted = (1 << 3), // Select highlighted geometry
158 };
159 //DOM-IGNORE-END
160
189 : m_flags(0)
190 , m_selFlags(0)
191 , m_cmColor(OdCmEntityColor::kForeground)
192 , m_layerId(NULL)
193 , m_lineTypeId(NULL)
194 , m_fillType(kOdGiFillNever)
195 , m_lineWeight(OdDb::kLnWt000)
196 , m_lineTypeScale(1.0)
197 , m_thickness(0.0)
198 , m_plotStyleNameType(OdDb::kPlotStyleNameIsDictDefault)
199 , m_plotStyleNameId(NULL)
200 , m_materialId(NULL)
201 , m_mapper(NULL)
202 , m_visualStyleId(NULL)
203 , m_cmTransparency(OdUInt8(0xFF))
204 , m_drawFlags(0)
205 , m_lockFlags(0)
206 , m_shadowFlags(OdGiSubEntityTraits::kShadowsCastAndReceive)
207 , m_cmSecondaryColor(OdCmEntityColor::kForeground)
208 , m_lsModifiers(NULL)
209 , m_fill(NULL)
210 {
211 }
212
213 // Accessors / transformers
214 //
218 OdUInt16 flags() const;
219
223 OdUInt16 selFlags() const;
224
229
234 OdUInt16 geomVisibilityFlags(bool bHighlighted) const;
235
243 bool isLayerFrozen() const;
244
252 bool isLayerPlottable() const;
253
261 bool isLayerOff() const;
262
270 bool isLayerVisible() const;
271
279 bool visibility() const { return isLayerVisible(); }
280
286 const OdCmEntityColor& trueColor() const;
287
293 OdUInt16 color() const;
294
300 OdDbStub* layer() const;
301
307 OdDbStub* lineType() const;
308
312 OdGiFillType fillType() const;
313
320
326 double lineTypeScale() const;
327
331 double thickness() const;
332
337
341 OdDbStub* plotStyleNameId() const;
342
348 OdDbStub* material() const;
349
355 const OdGiMapper* mapper() const;
356
362 OdDbStub* visualStyle() const;
363
371 const OdCmTransparency& transparency() const;
372
376 OdUInt32 drawFlags() const;
377
381 OdUInt32 lockFlags() const;
382
388 bool selectionGeom() const;
389
396
404 bool sectionable() const;
405
410
414 const OdCmEntityColor& secondaryTrueColor() const;
415
420
424 const OdGiFill* fill() const;
425
430
431
432
437 void setFlags(OdUInt16 flags);
438
444
452
459 void setColor(OdUInt16 colorIndex);
460
467 void setLayer(OdDbStub* layerId);
468
475 void setLineType(OdDbStub* lineTypeId);
476
482
490
497 void setLineTypeScale(double lineTypeScale);
498
503 void setThickness(double thickness);
504
510 void setPlotStyleName(OdDb::PlotStyleNameType plotStyleNameType, OdDbStub* pPlotStyleNameId);
511
518 void setMaterial(OdDbStub* materialId);
519
526 void setMapper(const OdGiMapper* pMapper);
527
534 void setVisualStyle(OdDbStub* visualStyleId);
535
545
551
557
564 void setSelectionGeom(bool bSelectionFlag);
565
573
580 void setSectionable(bool bSectionableFlag);
581
587
593
599
604 void setFill(const OdGiFill* pFill);
605
610 void setAuxData(const OdGiAuxiliaryDataPtr& pAuxData);
611};
612
613
615{
616 return m_flags;
617}
619{
620 return m_selFlags;
621}
638{ // Returns only first two flags depending onto highlighting state
639 const OdUInt16 visFlags = geomVisibilityFlags();
640 return (!bHighlighted) ? visFlags : (visFlags >> 2);
641}
643{
644 return (m_flags & (kLayerOff|kLayerFrozen))==0;
645}
647{
648 return GETBIT(m_flags, kLayerFrozen);
649}
651{
652 return GETBIT(m_flags, kLayerOff);
653}
655{
656 return !GETBIT(m_flags, kLayerNonPlottable);
657}
659{
660 return m_cmColor.colorIndex();
661}
663{
664 return m_cmColor;
665}
666inline OdDbStub* OdGiSubEntityTraitsData::layer() const
667{
668 return m_layerId;
669}
670inline OdDbStub* OdGiSubEntityTraitsData::lineType() const
671{
672 return m_lineTypeId;
673}
675{
676 return m_fillType;
677}
679{
680 return m_lineWeight;
681}
683{
684 return m_lineTypeScale;
685}
687{
688 return m_thickness;
689}
691{
692 return m_plotStyleNameType;
693}
695{
696 return m_plotStyleNameId;
697}
698inline OdDbStub* OdGiSubEntityTraitsData::material() const
699{
700 return m_materialId;
701}
703{
704 return m_mapper;
705}
707{
708 return m_visualStyleId;
709}
711{
712 return m_cmTransparency;
713}
715{
716 return m_drawFlags;
717}
719{
720 return m_lockFlags;
721}
723{
724 return GETBIT(m_selFlags, kSelectionGeom);
725}
727{
728 return m_shadowFlags;
729}
731{
732 return GETBIT(m_selFlags, kSectionable);
733}
739{
740 return m_cmSecondaryColor;
741}
743{
744 return m_lsModifiers;
745}
747{
748 return m_fill;
749}
751{
752 return m_pAuxData;
753}
754
756{
757 m_flags = flags;
758}
760{
761 m_selFlags = selFlags;
762}
764{
765 m_cmColor = trueColor;
766}
768{
769 m_cmColor.setColorIndex(colorIndex);
770}
771inline void OdGiSubEntityTraitsData::setLayer(OdDbStub* layerId)
772{
773 // Apply layer overrides
774
775 if( !m_pAuxData.isNull() )
776 {
777 OdGiLayerOverridesPtr pLayerOverrides = m_pAuxData->getLevelOverrides();
778
779 if( !pLayerOverrides.isNull() )
780 {
781 OdDbStub* pOverride = pLayerOverrides->getLayerOverride(layerId);
782
783 if( pOverride )
784 layerId = pOverride;
785 }
786 }
787
788 //
789
790 m_layerId = layerId;
791}
792inline void OdGiSubEntityTraitsData::setLineType(OdDbStub* lineTypeId)
793{
794 m_lineTypeId = lineTypeId;
795}
805{
806 m_lineTypeScale = lineTypeScale;
807}
809{
810 m_thickness = thickness;
811}
813{
814 m_plotStyleNameType = plotStyleNameType;
815 m_plotStyleNameId = plotStyleNameId;
816}
817inline void OdGiSubEntityTraitsData::setMaterial(OdDbStub* materialId)
818{
819 m_materialId = materialId;
820}
822{
823 m_mapper = pMapper;
824}
825inline void OdGiSubEntityTraitsData::setVisualStyle(OdDbStub* visualStyleId)
826{
827 m_visualStyleId = visualStyleId;
828}
830{
831 m_cmTransparency = transparency;
832}
834{
835 m_drawFlags = drawFlags;
836}
838{
839 m_lockFlags = lockFlags;
840}
841inline void OdGiSubEntityTraitsData::setSelectionGeom(bool bSelectionFlag)
842{
843 SETBIT(m_selFlags, kSelectionGeom, bSelectionFlag);
844}
849inline void OdGiSubEntityTraitsData::setSectionable(bool bSectionableFlag)
850{
851 SETBIT(m_selFlags, kSectionable, bSectionableFlag);
852}
858{
859 m_cmSecondaryColor = trueColor;
860}
862{
863 m_lsModifiers = pLSMod;
864}
866{
867 m_fill = pFill;
868}
869
871{
872 m_pAuxData = pAuxData;
873}
874
875#include "TD_PackPop.h"
876
877#endif // __ODGISUBENTITYTRAITSDATA_H__
OdGiFillType
Definition Gi.h:45
@ kOdGiFillNever
Definition Gi.h:47
OdSmartPtr< OdGiAuxiliaryData > OdGiAuxiliaryDataPtr
Definition GiAuxData.h:95
OdSmartPtr< OdGiLayerOverrides > OdGiLayerOverridesPtr
Definition GiAuxData.h:61
unsigned int OdUInt32
unsigned short OdUInt16
unsigned char OdUInt8
#define SETBIT(flags, bit, value)
Definition OdaDefs.h:516
#define GETBIT(flags, bit)
Definition OdaDefs.h:517
bool isNull() const
virtual OdDbStub * getLayerOverride(OdDbStub *idNativeLayer) const =0
OdGiSubEntityTraits::ShadowFlags shadowFlags() const
const OdCmEntityColor & secondaryTrueColor() const
void setSelFlags(OdUInt16 selFlags)
OdGiFillType fillType() const
OdGiAuxiliaryDataPtr auxData() const
OdDb::PlotStyleNameType plotStyleNameType() const
const OdGiDgLinetypeModifiers * lineStyleModifiers() const
void setPlotStyleName(OdDb::PlotStyleNameType plotStyleNameType, OdDbStub *pPlotStyleNameId)
void setLayer(OdDbStub *layerId)
void setLineType(OdDbStub *lineTypeId)
void setVisualStyle(OdDbStub *visualStyleId)
void setSelectionGeom(bool bSelectionFlag)
void setColor(OdUInt16 colorIndex)
void setTransparency(const OdCmTransparency &transparency)
OdDbStub * plotStyleNameId() const
void setMapper(const OdGiMapper *pMapper)
void setFillType(OdGiFillType fillType)
void setMaterial(OdDbStub *materialId)
void setSelectionFlags(OdGiSubEntityTraits::SelectionFlags selectionFlags)
void setTrueColor(const OdCmEntityColor &trueColor)
void setThickness(double thickness)
void setDrawFlags(OdUInt32 drawFlags)
void setAuxData(const OdGiAuxiliaryDataPtr &pAuxData)
void setFlags(OdUInt16 flags)
OdDb::LineWeight lineWeight() const
void setSectionable(bool bSectionableFlag)
void setSecondaryTrueColor(const OdCmEntityColor &trueColor)
void setShadowFlags(OdGiSubEntityTraits::ShadowFlags shadowFlags)
void setFill(const OdGiFill *pFill)
const OdGiFill * fill() const
const OdCmEntityColor & trueColor() const
void setLineWeight(OdDb::LineWeight lineWeight)
void setLineTypeScale(double lineTypeScale)
void setLineStyleModifiers(const OdGiDgLinetypeModifiers *pLSMod)
void setLockFlags(OdUInt32 lockFlags)
OdGiSubEntityTraits::SelectionFlags selectionFlags() const
const OdCmTransparency & transparency() const
const OdGiMapper * mapper() const
@ kHighlightingGeometry
Definition Gi.h:181
PlotStyleNameType
Definition OdaDefs.h:417
LineWeight
Definition OdaDefs.h:386