CFx SDK Documentation 2026 SP0
Loading...
Searching...
No Matches
GsBaseVectorizer.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 __OD_GS_BASE_VECTORIZER_H_
25#define __OD_GS_BASE_VECTORIZER_H_
26
27#include "TD_PackPush.h"
28
29#include "Gs/GsExport.h"
31#include "Gs/GsExtAccum.h"
32#include "Gs/GsModel.h"
33#include "GsMarkerArray.h"
34#include "Gs/GsHighlightData.h"
35
36class OdGsBaseModel;
37class OdGsLayerNode;
38class OdGsUpdateContext;
40class OdGsEntityNode;
43struct OdGsGeomPortion;
46class OdGsBaseContext;
48struct OdSiShape;
50
51class OdGsMtContext;
52class OdGsUpdateState;
53class OdGsNestedMetafile;
54class OdGiSharedRefDesc;
55class OdGiHistory;
57class OdGsApplyModelOverrides;
58
59class OdPerfTimerBase;
60
61
66
74{
75public:
90
95 {
96 return *m_pExtAccum.get();
97 }
98
102 OdGsBaseModel* gsModel() const { return m_pGsModel; }
103
109 bool isRecordingMetafile() { return m_pGeomPortion != 0; }
110
115
120
126
131 void onNestedDrawable(OdDbStub* layerId, const OdGsNestedMetafile *pNestedMf = NULL);
133
140 bool isLayerFrozen(OdGsLayerNode *pLayerNode) const;
141
149 bool hasFrozenLayerBefore(OdGsLayerNode *pLayerNode, const OdGsGeomPortion *pTillPortion = NULL) const;
150private:
151 //DOM-IGNORE-BEGIN
152 friend class OdGsBaseVectorizer;
153 void set(OdGsBaseVectorizer* v) { m_vectorizer = v; }
154 void onLayerModified(OdDbStub* layerId, bool bFrozen, bool bFromSetAttribs);
155 void onLayerModified(OdDbStub* layerId) { onLayerModified(layerId, false, false); }
156 void onSetAttributesLayer(OdDbStub *layerId) { onLayerModified(layerId, false, true); }
157 void onFrozenLayerModified(OdDbStub* layerId) { onLayerModified(layerId, true, false); }
158
159public:
161
162protected:
164protected:
170 //DOM-IGNORE-END
171};
172
177
185{
186public:
191
192protected:
193 //DOM-IGNORE-BEGIN
195 //DOM-IGNORE-END
196
197public:
198#ifdef SWIG
203 virtual void draw(const OdGiDrawable* pDrawable) {draw(pDrawable);};
204#endif
209
213 const OdGsWriter& gsWriter() const { return m_gsWriter; }
214
218 OdGsExtAccum& gsExtentsAccum() { return gsWriter().extentsAccum(); }
219
234
247 virtual void beginMetafile(OdRxObject* pMetafile);
248
261 virtual void endMetafile(OdRxObject* pMetafile);
262
274 virtual void playMetafile(const OdRxObject* pMetafile);
275
281 virtual bool saveMetafile(const OdRxObject* pMetafile, OdGsFiler *pFiler);
282
288
293 bool isMetafileEmpty() const { return m_nMetafileSize == 0; }
294
300 {
301 if( m_nMetafileSize != OdUInt64( -1 ) ) return m_nMetafileSize;
302 return 0;
303 }
304
308 virtual void loadViewport();
309
310 virtual bool forceMetafilesDependence() const;
311
319 virtual bool isViewRegenerated() const;
320
324 virtual void drawViewportFrame();
325
330 virtual void updateViewport();
331
332
333 // Materials support
334
341 virtual void processMaterialNode(OdDbStub *materialId, OdGsMaterialNode *pNode);
342
350 virtual bool saveMaterialCache(const OdGsMaterialNode *pNode, OdGsFiler *pFiler);
351
359 virtual bool loadMaterialCache(OdGsMaterialNode *pNode, OdGsFiler *pFiler);
360
367
373 virtual void addSpotLight(const OdGiSpotLightTraitsData&) {}
374
381
388 // default implementation call's addPointLight
389
395
398
409
419 void pushModelTransform(const OdGeVector3d& normal);
420
427
438
450
459
462
467
475 virtual void setEntityTraitsDataChanged(int bit, bool value = true);
476
481
488 virtual bool pushPaletteOverride(const OdGiPalette* pOverride);
489
493 virtual void popPaletteOverride();
494
501 virtual bool hasPaletteOverrides() const;
502
505
514
525 void playMetafileMode(const OdRxObject* pMetafile, EMetafilePlayMode eMode, OdGsEntityNode& node, OdGsBaseContext* ctx);
526
537 virtual bool playNestedMetafile(const OdGsGeomPortion* pPortion, OdGsBaseContext* pContext, OdGsEntityNode& node);
538
543
550
561 virtual void pushMetafileTransform(const OdGeMatrix3d&, OdUInt32 = 0);
562
569
577 virtual const OdGeMatrix3d &metafileTransform() const;
578
579 virtual bool useSharedBlockReferences() const { return true; }
580 virtual bool useMetafileAsGeometry() const { return false; }
584 virtual void reportUpdateError(OdDbStub* /*entityId*/, const OdError& error)
585 {
586#ifdef ODA_DIAGNOSTICS
587 throw error;
588#else
589 ODA_VERIFY(error); // prevent arg unused warning
590#endif
591 }
592
599 OdGsLayerNode* gsLayerNode(OdDbStub* layerId, OdGsBaseModel* pModel);
600
608 inline bool isFaded() const;
609
613 inline OdUInt32 fadingIntensity() const;
614
621 inline bool isHighlighted() const;
622
630 inline bool isSelecting() const;
631
638 inline bool isHidden() const;
639
645 inline void setHidden( bool bHidden );
646
653 void setSubentityTransform(bool bEnableTf, OdGsMarker refMarker = kNullSubentIndex, const OdGsStateBranch *pTfBranch = NULL);
654
659 virtual void applySubentityTransform(const OdGeMatrix3d *pXform);
660
667 bool isDragging() const;
668
670
680 virtual void setAnalyticLinetypingCircles(bool analytic);
681
689 virtual bool isAnalyticLinetypingCircles() const;
690
699 virtual void setAnalyticLinetypingComplexCurves(bool analytic);
700
709
711
723
725 OdUInt32 incFlags = OdGsProperties::kAll);
726
731
732 // OdGiBaseVectorizerImpl methods
733
738 virtual void setUp(OdGsViewImpl& view);
739
740 // OdGiBaseVectorizer methods
741
746
750 virtual void endViewVectorization();
751
755 virtual void onTraitsModified();
756
779 virtual double deviation(const OdGiDeviationType deviationType, const OdGePoint3d& pointOnCurve) const;
780
786 virtual bool regenAbort() const;
787
795 virtual bool doDraw(OdUInt32 drawableFlags, const OdGiDrawable* pDrawable);
796
803
812
820
828
836 void highlight(bool bHighlight, OdUInt32 nSelStyle = 0);
837
843 OdUInt32 threadIndex() const;
844
849 OdGsLayerNode *activeLayerNode(bool bSync = false) const;
850
855
860
867 virtual bool isSpatialIndexDisabled() const { return false; }
868
873 virtual void beginMetafileRecording(OdGsGeomPortion* pGeomPortion);
874
878 virtual void endMetafileRecording();
879
884 {
889 virtual void blockBegin(const void *pRefId) = 0;
894 virtual void blockEnd(const void *pRefId) = 0;
895 };
896protected:
897 //DOM-IGNORE-BEGIN
898 void doSelect(const OdGePoint2d* aPtDc, int numPoints,
900 virtual void doRayTrace(const OdGePoint3d &rayOrigin, const OdGeVector3d &rayDirection,
901 OdGsRayTraceReactor *pReactor, bool bSortedSelection,
902 OdGiPathNode const *const *pObjectList, OdUInt32 nObjectListSize);
916 virtual void display(bool bUpdate);
922 virtual void updateExtents(bool bBuildCache);
923
924 // OdGiBaseVectorizer methods
926 virtual OdDbStub* switchLayer(OdDbStub* layerId) const;
927
928 void selectionMarkerOnChange(OdGsMarker nSelectionMarker);
929
930 void checkRenderType(const OdGsModel *pModel);
932 virtual void switchOverlay(OdGsOverlayId overlayId);
933
945 double handleDeviationMultiplier(const OdGiDeviationType deviationType, double dDeviationValue) const;
946
952 void displayWithoutNesting(OdGsEntityNode *pNode, BlockScopesCallback *pBlockScopesCbk = NULL);
953
954 virtual void displayNode(OdGsNode& node, OdGsDisplayContext& ctx);
955 virtual void displaySubnode(OdGsEntityNode& node, OdGsDisplayContext& ctx, bool bHighlighted);
956
957 void doDrawLight(const OdGiDrawable* pDrawable);
959 const OdGsUpdateState* currentState() const { return m_curState; }
960
961 virtual bool updateExtentsOnly() const ODRX_OVERRIDE;
962 //DOM-IGNORE-END
963public:
964
970 virtual OdUInt32 setAttributes(const OdGiDrawable* pDrawable);
971
972 void updateExtentsInThreadInit(OdGsMtContext& mtContext);
973
974private:
975 //DOM-IGNORE-BEGIN
976 void setInitGsState(bool bOn);
977 bool isRecordingHistory();
978 void deleteHistory();
979 void setThreadIndex(OdUInt32 idx) { m_threadIndex = idx; }
980 //FELIX_CHANGE_BEGIN
981protected:
982 bool FxDrawSectionable(OdGiSectionGeometryManager* pSectionGeometryManager, const OdGiDrawable& drawable, bool& bRes);
983private:
984 //FELIX_CHANGE_END
985 bool drawSectionable(const OdGiDrawable& drawable, bool& bRes);
986 bool drawSectionGeometry(OdGiSectionGeometry& geom, bool bVpModelTfAwareBefore);
987 void setCurrentState(OdGsUpdateState& newState);
988 OdGsUpdateState* currentState() { return m_curState; }
989 void applyState(const OdGsUpdateState& s, const OdGsUpdateState& prev);
990 //DOM-IGNORE-END
991public:
993 bool hasAnyStateBranch(bool bMarkers = false) const;
994protected:
995 //DOM-IGNORE-BEGIN
996
1003 const OdSiShape* m_MfPlayQuery; // Currently playing query
1004 const OdGsEntityNode* m_MfPlayNode; // Currently playing node
1006 OdGsUpdateState* m_curState;
1014 // Fading support
1034 template <OdGiContext::FadingType fadingType> friend class OdGsLockFadingFlag;
1035
1036 //DOM-IGNORE-END
1038 //DOM-IGNORE-END
1039public:
1040
1046
1051 bool hasSelectionStyle() const { return m_selectionStyle != 0; }
1052
1057 int highlightingPass() const;
1058
1063 void setRenderAbort( bool bSet );
1064
1070 virtual bool renderAbort();
1071protected:
1072 //DOM-IGNORE-BEGIN
1073
1087
1088 const OdGsExtAccum *secondaryOutputExtents() const { return m_pOutputExtents.get(); }
1089 OdGsExtAccum *secondaryOutputExtents() { return m_pOutputExtents.get(); }
1090
1091private:
1092 mutable const OdGiLayerTraitsData* m_pCachedLayer;
1093 OdGsLayerNode* m_effectiveLayer;
1094 OdGsExtAccumPtr m_pOutputExtents;
1095 OdGiHistory* m_giHistory;
1096 OdUInt32 m_threadIndex;
1097 bool m_bTraitsDataChanged;
1098 bool m_bByBlockTraitsChanged;
1099 friend class OdGsUpdateContext;
1103
1104protected:
1105 virtual void doCollide( OdGiPathNode const*const* pInputList, OdUInt32 nInputListSize, OdGsCollisionDetectionReactor* pReactor, OdGiPathNode const*const* pCollisionWithList = NULL, OdUInt32 nCollisionWithListSize = 0, const OdGsCollisionDetectionContext* pCtx = NULL );
1106 virtual void doCollideAll( OdGsCollisionDetectionReactor* pReactor, const OdGsCollisionDetectionContext* pCtx = NULL );
1107 void processDrawableForCollide( const OdGiPathNode* pStartNode, const OdGiDrawable* pDrawable, OdGsBaseModel*& pCurModel, OdGsApplyModelOverridesPtr& pCurOverrides, OdSiRecursiveVisitor &siVisitor );
1108 void processAllDrawablesForCollide( const OdGeExtents3d* pExtents = NULL, OdGiPathNode const*const* pCollisionWithList = NULL, OdUInt32 nCollisionWithListSize = 0, bool bIgnoreViewExtents = false );
1109
1110 void modelChanged( const OdGsModel* pModel );
1111};
1112
1113template <typename ClientClass = OdGsBaseVectorizer>
1115{
1116 protected:
1117 ClientClass& m_vect;
1118 const bool m_bHighlighted;
1120 public:
1122 : m_vect(vect)
1124 , m_selStyle(vect.currentSelectionStyle())
1125 { }
1128 bool isHighlighted() const { return m_bHighlighted; }
1130};
1131
1132
1133template <OdGiContext::FadingType fadingType>
1135{
1136 protected:
1139 public:
1141 : m_lockedFlags(vectorizer.m_fadingFlags)
1142 , m_bSavedBit(GETBIT(vectorizer.m_fadingFlags, 1 << fadingType))
1143 {}
1144 void set(bool bNewVal) { SETBIT(m_lockedFlags, 1 << fadingType, bNewVal); }
1145 OdGsLockFadingFlag(OdGsBaseVectorizer &vectorizer, bool bNewVal)
1146 : m_lockedFlags(vectorizer.m_fadingFlags)
1147 , m_bSavedBit(GETBIT(vectorizer.m_fadingFlags, 1 << fadingType))
1148 { set(bNewVal); }
1150};
1151//DOM-IGNORE-END
1152
1154{ // Returns true in case if any type of fading is 'true' and fading value is positive
1156}
1157
1159{ // Returns percentage in [0-100] range
1160 OdUInt32 nIntensityMix = 100;
1162 {
1164 nIntensityMix = mix;
1165 }
1167 {
1168 OdUInt32 mix = 100 - ((m_fadingFlags & kFvXrefMask) >> kFvXrefOffset);
1169 nIntensityMix = odmin(nIntensityMix, mix);
1170 }
1172 {
1174 nIntensityMix = nIntensityMix * mix / 100;
1175 }
1176 nIntensityMix = odmax(10, nIntensityMix);
1177 return 100 - nIntensityMix;
1178}
1179
1181{
1182 return m_pCurStateBranch[branchType];
1183}
1184
1185inline bool OdGsBaseVectorizer::hasAnyStateBranch(bool bMarkers) const
1186{ bool bHasAnyBranch = false;
1187 for (OdUInt32 nBranch = 0; nBranch < OdGsStateBranch::kNumBranchTypes; nBranch++)
1188 { if (!m_pCurStateBranch[nBranch].isNull() && (!bMarkers || !m_pCurStateBranch[nBranch]->markersEmpty()))
1189 { bHasAnyBranch = true; break; } }
1190 return bHasAnyBranch;
1191}
1192
1194{
1195 return m_threadIndex;
1196}
1197
1199{
1200 if (bSync)
1202 return m_effectiveLayer;
1203}
1204
1209
1211{
1212 return m_curOverlay;
1213}
1214
1216{
1217 return m_pSelectProc != 0;
1218}
1219
1220inline void OdGsBaseVectorizer::highlight(bool bHighlight, OdUInt32 nSelStyle)
1221{
1222 SETBIT(m_flags, kHighlighted, bHighlight);
1223 m_selectionStyle = nSelStyle;
1224}
1225
1227{
1228 return GETBIT(m_flags, kHighlighted);
1229}
1230
1235
1237{
1239}
1240
1241inline void OdGsBaseVectorizer::setHidden( bool bHidden )
1242{
1243 SETBIT( m_implFlags, kHiddenImplFlag, bHidden );
1244}
1245
1247{ // Metafile transformation matrix
1249}
1250
1251#include "TD_PackPop.h"
1252
1253#endif // __OD_GS_BASE_VECTORIZER_H_
#define ODA_VERIFY(exp)
Definition DebugStuff.h:59
OdGiDeviationType
const OdGsMarker kNullSubentIndex
Definition Gs.h:1655
OdSharedPtr< OdGsApplyModelOverrides > OdGsApplyModelOverridesPtr
EMetafilePlayMode
Definition GsDefs.h:511
#define GS_TOOLKIT_EXPORT
Definition GsExport.h:37
OdSmartPtr< OdGsExtAccum > OdGsExtAccumPtr
Definition GsExtAccum.h:705
TPtr< OdGsStateBranch > OdGsStateBranchPtr
OdGsOverlayId
ODRX_CONSTEXPR const T & odmin(const T &a, const T &b)
Definition OdPlatform.h:64
ODRX_CONSTEXPR const T & odmax(const T &a, const T &b)
Definition OdPlatform.h:38
ptrdiff_t OdGsMarker
unsigned int OdUInt32
#define ODRX_OVERRIDE
ptrdiff_t OdIntPtr
#define SETBIT(flags, bit, value)
Definition OdaDefs.h:516
#define GETBIT(flags, bit)
Definition OdaDefs.h:517
static GE_STATIC_EXPORT const OdGeMatrix3d kIdentity
Definition GeMatrix3d.h:97
void updateLayerTraits(OdGiSubEntityTraitsData &subEntityTraits) const
OdGiSubEntityTraitsData m_effectiveEntityTraitsData
void draw(const OdGiDrawable *pDrawable)
OdGsMarker selectionMarker() const
virtual OdDbStub * visualStyle() const
OdGsViewImpl & view() const
OdUInt64 lastMetafileSize() const
virtual OdDbStub * switchLayer(OdDbStub *layerId) const
virtual void addDistantLight(const OdGiDistantLightTraitsData &)
virtual void setAnalyticLinetypingComplexCurves(bool analytic)
OdGsMaterialNode * m_pCachedMaterial
const OdGsWriter & gsWriter() const
bool hasSelectionStyle() const
OdGsLayerNode * activeLayerNode(bool bSync=false) const
virtual bool displayViewportProperties(OdGsPropertiesDirectRenderOutput *pdro=NULL, OdUInt32 incFlags=OdGsProperties::kAll)
virtual bool saveMaterialCache(const OdGsMaterialNode *pNode, OdGsFiler *pFiler)
virtual void beginMetafile(OdRxObject *pMetafile)
virtual void updateExtents(bool bBuildCache)
OdGsStateBranchPtr m_pCurStateBranch[OdGsStateBranch::kNumBranchTypes]
OdUInt32 currentSelectionStyle() const
virtual OdRxObjectPtr loadMetafile(OdGsFiler *pFiler)
virtual bool isSpatialIndexDisabled() const
void displayWithoutNesting(OdGsEntityNode *pNode, BlockScopesCallback *pBlockScopesCbk=NULL)
OdUInt32 threadIndex() const
virtual bool playNestedMetafile(const OdGsGeomPortion *pPortion, OdGsBaseContext *pContext, OdGsEntityNode &node)
virtual void renderTypeOnChange(OdGsModel::RenderType renderType)
virtual void loadViewport()
virtual void popMetafileTransform(OdUInt32=0)
virtual void setVisualStyle(const OdGiVisualStyle &visualStyle)
OdUInt32 fadingIntensity() const
virtual bool pushPaletteOverride(const OdGiPalette *pOverride)
OdGiConveyorOutput & secondaryOutput()
void setSubentityTransform(bool bEnableTf, OdGsMarker refMarker=kNullSubentIndex, const OdGsStateBranch *pTfBranch=NULL)
OdPerfTimerBase * m_viewTimingProcessor
virtual void updateViewport()
virtual OdGeMatrix3d getTransformForMetafileGeometry() const
bool disableInfiniteGeomExtents() const
OdGsModel::RenderType activeRenderType() const
virtual bool updateExtentsOnly() const ODRX_OVERRIDE
virtual OdUInt32 setAttributes(const OdGiDrawable *pDrawable)
virtual bool renderAbort()
double handleDeviationMultiplier(const OdGiDeviationType deviationType, double dDeviationValue) const
virtual const OdGiLayerTraitsData & effectiveLayerTraits() const
virtual void addWebLight(const OdGiWebLightTraitsData &)
virtual OdRxObjectPtr newGsMetafile()
virtual void endMetafile(OdRxObject *pMetafile)
bool FxDrawSectionable(OdGiSectionGeometryManager *pSectionGeometryManager, const OdGiDrawable &drawable, bool &bRes)
void pushClipBoundary(OdGiClipBoundary *pBoundary, OdGiAbstractClipBoundary *pClipInfo)
OdGsBaseModel * m_pRefCacheModel
virtual void doRayTrace(const OdGePoint3d &rayOrigin, const OdGeVector3d &rayDirection, OdGsRayTraceReactor *pReactor, bool bSortedSelection, OdGiPathNode const *const *pObjectList, OdUInt32 nObjectListSize)
virtual void endMetafileRecording()
OdGsLayerNode * gsLayerNode(OdDbStub *layerId, OdGsBaseModel *pModel)
OdGiConveyorGeometry * m_pDetachedOutput
virtual void endViewVectorization()
virtual bool regenAbort() const
virtual void doCollide(OdGiPathNode const *const *pInputList, OdUInt32 nInputListSize, OdGsCollisionDetectionReactor *pReactor, OdGiPathNode const *const *pCollisionWithList=NULL, OdUInt32 nCollisionWithListSize=0, const OdGsCollisionDetectionContext *pCtx=NULL)
OdGsUpdateState * m_curState
const OdGsUpdateState * currentState() const
virtual bool hasPaletteOverrides() const
virtual void setTransformForMetafileGeometry(const OdGeMatrix3d &)
OdGiSelectProcBase * m_pSelectProc
virtual void setEntityTraitsDataChanged(int bit, bool value=true)
OdArray< OdGeMatrix3d > m_metafileTransfStack
bool hasAnyStateBranch(bool bMarkers=false) const
bool isDragging() const
virtual void addSpotLight(const OdGiSpotLightTraitsData &)
void processAllDrawablesForCollide(const OdGeExtents3d *pExtents=NULL, OdGiPathNode const *const *pCollisionWithList=NULL, OdUInt32 nCollisionWithListSize=0, bool bIgnoreViewExtents=false)
virtual void onTraitsModified()
const OdGsEntityNode * m_MfPlayNode
virtual void displaySubnode(OdGsEntityNode &node, OdGsDisplayContext &ctx, bool bHighlighted)
virtual void display(bool bUpdate)
virtual void drawViewportFrame()
friend class OdGsBaseVectorizeView
friend class OdGsLockFadingFlag
virtual void beginViewVectorization()
EMetafilePlayMode metafilePlayMode() const
virtual void pushMetafileTransform(const OdGeMatrix3d &, OdUInt32=0)
virtual bool useMetafileAsGeometry() const
void doSelect(const OdGePoint2d *aPtDc, int numPoints, OdGsSelectionReactor *pReactor, OdGsView::SelectionMode mode)
virtual bool useSharedBlockReferences() const
friend class OdGsDisplayContext
virtual OdGeMatrix3d objectToDeviceMatrix() const
ODRX_USING_HEAP_OPERATORS(OdGiBaseVectorizer)
OdGsWriter & gsWriter()
void playMetafileMode(const OdRxObject *pMetafile, EMetafilePlayMode eMode, OdGsEntityNode &node, OdGsBaseContext *ctx)
void processDrawableForCollide(const OdGiPathNode *pStartNode, const OdGiDrawable *pDrawable, OdGsBaseModel *&pCurModel, OdGsApplyModelOverridesPtr &pCurOverrides, OdSiRecursiveVisitor &siVisitor)
void setRenderAbort(bool bSet)
const OdSiShape * m_MfPlayQuery
virtual OdGiConveyorOutput & output()
const OdGsStateBranch * currentStateBranch(OdGsStateBranch::BranchType branchType=OdGsStateBranch::kHighlightingBranch) const
virtual void beginMetafileRecording(OdGsGeomPortion *pGeomPortion)
void highlight(bool bHighlight, OdUInt32 nSelStyle=0)
EMetafilePlayMode m_eMfPlayMode
virtual void setUp(OdGsViewImpl &view)
friend class OdGsApplyModelOverrides
void updateExtentsInThreadInit(OdGsMtContext &mtContext)
virtual const OdGeMatrix3d & metafileTransform() const
virtual void applySubentityTransform(const OdGeMatrix3d *pXform)
void doDrawLight(const OdGiDrawable *pDrawable)
void pushModelTransform(const OdGeMatrix3d &xfm)
virtual void addPointLight(const OdGiPointLightTraitsData &)
friend class OdGsUpdateContext
virtual void switchOverlay(OdGsOverlayId overlayId)
virtual void setEntityTraitsDataChanged()
bool handleSelectionByExtents(const OdGeExtents3d &extWc)
virtual void setAnalyticLinetypingCircles(bool analytic)
virtual void playMetafile(const OdRxObject *pMetafile)
OdGsExtAccum & gsExtentsAccum()
void selectionMarkerOnChange(OdGsMarker nSelectionMarker)
virtual void setSelectionMarker(OdGsMarker selectionMarker)
virtual OdGiConveyorOutput & gsExtentsOutput()
OdGsModel::RenderType m_curRenderType
virtual void popPaletteOverride()
virtual void doCollideAll(OdGsCollisionDetectionReactor *pReactor, const OdGsCollisionDetectionContext *pCtx=NULL)
virtual OdGiConveyorOutput & outputForMetafileGeometry()
OdGsOverlayId activeOverlay() const
virtual bool isAnalyticLinetypingComplexCurves() const
void modelChanged(const OdGsModel *pModel)
virtual bool doDraw(OdUInt32 drawableFlags, const OdGiDrawable *pDrawable)
OdGsStateBranch * findSubnodeBranch(OdGsStateBranch::BranchType branchType=OdGsStateBranch::kHighlightingBranch)
virtual void reportUpdateError(OdDbStub *, const OdError &error)
void setSectionableGeomExtentsOnly(bool bOn)
virtual void displayNode(OdGsNode &node, OdGsDisplayContext &ctx)
OdGsOverlayId m_curOverlay
virtual double deviation(const OdGiDeviationType deviationType, const OdGePoint3d &pointOnCurve) const
bool sectionableGeomExtentsOnly() const
virtual bool isViewRegenerated() const
virtual bool forceMetafilesDependence() const
virtual bool isAnalyticLinetypingCircles() const
bool doViewExtents(OdGeBoundBlock3d &extents)
OdGiConveyorGeometry * m_pDetachedSecondaryOutput
bool isMetafileEmpty() const
const OdGsExtAccum * secondaryOutputExtents() const
virtual bool loadMaterialCache(OdGsMaterialNode *pNode, OdGsFiler *pFiler)
virtual void processMaterialNode(OdDbStub *materialId, OdGsMaterialNode *pNode)
void initDeviationMultiplier()
void checkRenderType(const OdGsModel *pModel)
OdGsExtAccum * secondaryOutputExtents()
void pushModelTransform(const OdGeVector3d &normal)
void pushClipBoundary(OdGiClipBoundary *pBoundary)
virtual bool saveMetafile(const OdRxObject *pMetafile, OdGsFiler *pFiler)
void setHidden(bool bHidden)
bool isSharedGraphicsState() const
OdGsHighlightingStateSaver(ClientClass &vect)
OdGsLockFadingFlag(OdGsBaseVectorizer &vectorizer, bool bNewVal)
void set(bool bNewVal)
OdGsLockFadingFlag(OdGsBaseVectorizer &vectorizer)
SelectionMode
Definition Gs.h:174
void separateMetafile()
OdGsExtAccum & extentsAccum()
OdGsExtAccumPtr m_pExtAccum
void endMetafileRecording()
void beginMetafileRecording(OdGsGeomPortion *pGeomPortion)
void onNestedDrawable(OdDbStub *layerId, const OdGsNestedMetafile *pNestedMf=NULL)
OdGsBaseModel * gsModel() const
OdGsGeomPortion * headGeomPortion() const
OdGsGeomPortion * m_pGeomPortionHead
bool isLayerFrozen(OdGsLayerNode *pLayerNode) const
friend class OdGsBaseVectorizer
OdGsBaseModel * m_pGsModel
bool hasFrozenLayerBefore(OdGsLayerNode *pLayerNode, const OdGsGeomPortion *pTillPortion=NULL) const
OdGsGeomPortion * currentGeomPortion() const
bool isRecordingMetafile()
OdGsBaseVectorizer * m_vectorizer
bool isCurrentGeomPortionDiscardable()
bool m_bFinalizedMetafile
OdGsGeomPortion * m_pGeomPortion
const GLfloat * v
Definition gles2_ext.h:315
GLsizei const GLfloat * value
Definition gles2_ext.h:302
virtual void blockEnd(const void *pRefId)=0
virtual void blockBegin(const void *pRefId)=0