CFx SDK Documentation 2024 SP0
Loading...
Searching...
No Matches
GsBaseVectorizer.h
Go to the documentation of this file.
1
2// Copyright (C) 2002-2022, 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-2022 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
36#define STL_USING_SET
37#include <set>
38
39class OdGsBaseModel;
40class OdGsLayerNode;
41class OdGsUpdateContext;
42class OdGiSelectProc;
43class OdGiCollideProc;
44class OdGsEntityNode;
47struct OdGsGeomPortion;
50class OdGsBaseContext;
51class OdGsDisplayContext;
52struct OdSiShape;
53
54class OdGsMtContext;
55class OdGsUpdateState;
56class OdGsNestedMetafile;
57class OdGiSharedRefDesc;
58class OdGiHistory;
60class OdGsApplyModelOverrides;
61
62class OdPerfTimerBase;
63
64
65typedef std::set<OdGsMarker> OdGsMarkerSet;
67
75{
76public:
91
96 {
97 return *m_pExtAccum.get();
98 }
99
103 OdGsBaseModel* gsModel() const { return m_pGsModel; }
104
110 bool isRecordingMetafile() { return m_pGeomPortion != 0; }
111
115 OdGsGeomPortion *currentGeomPortion() const { return m_pGeomPortion; }
116
120 OdGsGeomPortion *headGeomPortion() const { return m_pGeomPortionHead; }
121
126 void beginMetafileRecording(OdGsGeomPortion* pGeomPortion) { m_pGeomPortionHead = m_pGeomPortion = pGeomPortion; }
127
132 void onNestedDrawable(OdDbStub* layerId, const OdGsNestedMetafile *pNestedMf = NULL);
134
141 bool isLayerFrozen(OdGsLayerNode *pLayerNode) const;
142
150 bool hasFrozenLayerBefore(OdGsLayerNode *pLayerNode, const OdGsGeomPortion *pTillPortion = NULL) const;
151private:
152 //DOM-IGNORE-BEGIN
153 friend class OdGsBaseVectorizer;
154 void set(OdGsBaseVectorizer* v) { m_vectorizer = v; }
155 void onLayerModified(OdDbStub* layerId, bool bFrozen, bool bFromSetAttribs);
156 void onLayerModified(OdDbStub* layerId) { onLayerModified(layerId, false, false); }
157 void onSetAttributesLayer(OdDbStub *layerId) { onLayerModified(layerId, false, true); }
158 void onFrozenLayerModified(OdDbStub* layerId) { onLayerModified(layerId, true, false); }
159
160public:
162
163protected:
165protected:
171 //DOM-IGNORE-END
172};
173
178
186{
187public:
192
193protected:
194 //DOM-IGNORE-BEGIN
196 //DOM-IGNORE-END
197
198public:
199#ifdef SWIG
204 virtual void draw(const OdGiDrawable* pDrawable) {draw(pDrawable);};
205#endif
209 OdGsWriter& gsWriter() { return m_gsWriter; }
210
214 const OdGsWriter& gsWriter() const { return m_gsWriter; }
215
219 OdGsExtAccum& gsExtentsAccum() { return gsWriter().extentsAccum(); }
220
235
248 virtual void beginMetafile(OdRxObject* pMetafile);
249
262 virtual void endMetafile(OdRxObject* pMetafile);
263
275 virtual void playMetafile(const OdRxObject* pMetafile);
276
282 virtual bool saveMetafile(const OdRxObject* pMetafile, OdGsFiler *pFiler);
283
289
294 bool isMetafileEmpty() const { return m_nMetafileSize == 0; }
295
301 {
302 if( m_nMetafileSize != OdUInt64( -1 ) ) return m_nMetafileSize;
303 return 0;
304 }
305
309 virtual void loadViewport();
310
311 virtual bool forceMetafilesDependence() const;
312
320 virtual bool isViewRegenerated() const;
321
325 virtual void drawViewportFrame();
326
331 virtual void updateViewport();
332
333
334 // Materials support
335
342 virtual void processMaterialNode(OdDbStub *materialId, OdGsMaterialNode *pNode);
343
351 virtual bool saveMaterialCache(const OdGsMaterialNode *pNode, OdGsFiler *pFiler);
352
360 virtual bool loadMaterialCache(OdGsMaterialNode *pNode, OdGsFiler *pFiler);
361
368
374 virtual void addSpotLight(const OdGiSpotLightTraitsData&) {}
375
382
389 // default implementation call's addPointLight
390
396
410
420 void pushModelTransform(const OdGeVector3d& normal);
421
428
439
451
460
468
476 virtual void setEntityTraitsDataChanged(int bit, bool value = true);
477
482
489 virtual bool pushPaletteOverride(const OdGiPalette* pOverride);
490
494 virtual void popPaletteOverride();
495
502 virtual bool hasPaletteOverrides() const;
503
512 bool disableInfiniteGeomExtents() const { return GETBIT(m_flags, kDisableInfiniteGeomExtents); }
513 bool sectionableGeomExtentsOnly() const { return GETBIT(m_flags, kSectionableGeomExtentsOnly); }
514 void setSectionableGeomExtentsOnly(bool bOn) { SETBIT(m_flags, kSectionableGeomExtentsOnly, bOn); }
515
526 void playMetafileMode(const OdRxObject* pMetafile, EMetafilePlayMode eMode, OdGsEntityNode& node, OdGsBaseContext* ctx);
527
538 virtual bool playNestedMetafile(const OdGsGeomPortion* pPortion, OdGsBaseContext* pContext, OdGsEntityNode& node);
539
543 EMetafilePlayMode metafilePlayMode() const { return m_eMfPlayMode; }
544
546 {
547 kSharedRefTransform = (1 << 0),
548 kSharedRefUpdate = (1 << 1),
549 kSharedRefSelect = (1 << 2)
550 };
551
562 virtual void pushMetafileTransform(const OdGeMatrix3d&, OdUInt32 = 0);
563
570
578 virtual const OdGeMatrix3d &metafileTransform() const;
579
580 virtual bool useSharedBlockReferences() const { return true; }
581 virtual bool useMetafileAsGeometry() const { return false; }
585 virtual void reportUpdateError(OdDbStub* /*entityId*/, const OdError& error)
586 {
587#ifdef ODA_DIAGNOSTICS
588 throw error;
589#else
590 ODA_ASSERT(error); // prevent arg unused warning
591#endif
592 }
593
600 OdGsLayerNode* gsLayerNode(OdDbStub* layerId, OdGsBaseModel* pModel);
601
609 inline bool isFaded() const;
610
614 inline OdUInt32 fadingIntensity() const;
615
622 inline bool isHighlighted() const;
623
631 inline bool isSelecting() const;
632
639 inline bool isHidden() const;
640
646 inline void setHidden( bool bHidden );
647
654 bool isDragging() const;
655
656 virtual OdGiConveyorOutput& gsExtentsOutput() { return secondaryOutput(); }
657
667 virtual void setAnalyticLinetypingCircles(bool analytic);
668
676 virtual bool isAnalyticLinetypingCircles() const;
677
686 virtual void setAnalyticLinetypingComplexCurves(bool analytic);
687
696
698
710
712 OdUInt32 incFlags = OdGsProperties::kAll);
713
718
719 // OdGiBaseVectorizerImpl methods
720
725 virtual void setUp(OdGsViewImpl& view);
726
727 // OdGiBaseVectorizer methods
728
733
737 virtual void endViewVectorization();
738
742 virtual void onTraitsModified();
743
766 virtual double deviation(const OdGiDeviationType deviationType, const OdGePoint3d& pointOnCurve) const;
767
773 virtual bool regenAbort() const;
774
782 virtual bool doDraw(OdUInt32 drawableFlags, const OdGiDrawable* pDrawable);
783
788 virtual void setSelectionMarker(OdGsMarker selectionMarker);
790
798 virtual void setVisualStyle(const OdGiVisualStyle& visualStyle);
799
804 const OdGsMarkerSet* highlightedSubentities() const;
805
812 OdUInt32 threadIndex() const;
813
821 void highlight(bool bHighlight, OdUInt32 nSelStyle = 0);
822
828 const OdGsStateBranch* currentHighlightBranch() const;
829
835 const OdGsStateBranch* currentVisibilityBranch() const;
836
843
848 OdGsLayerNode *activeLayerNode(bool bSync = false) const;
849
853 OdGsModel::RenderType activeRenderType() const;
854
858 OdGsOverlayId activeOverlay() const;
859
866 virtual bool isSpatialIndexDisabled() const { return false; }
867
872 virtual void beginMetafileRecording(OdGsGeomPortion* pGeomPortion);
873
877 virtual void endMetafileRecording();
878
883 {
888 virtual void blockBegin(const void *pRefId) = 0;
893 virtual void blockEnd(const void *pRefId) = 0;
894 };
895protected:
896 //DOM-IGNORE-BEGIN
897 void doSelect(const OdGePoint2d* aPtDc, int numPoints,
912 virtual void display(bool bUpdate);
918 virtual void updateExtents(bool bBuildCache);
919
920 // OdGiBaseVectorizer methods
922 virtual OdDbStub* switchLayer(OdDbStub* layerId) const;
923
924 void selectionMarkerOnChange(OdGsMarker nSelectionMarker);
925
926 void checkRenderType(const OdGsModel *pModel);
928 virtual void switchOverlay(OdGsOverlayId overlayId);
929
941 double handleDeviationMultiplier(const OdGiDeviationType deviationType, double dDeviationValue) const;
942
948 void displayWithoutNesting(OdGsEntityNode *pNode, BlockScopesCallback *pBlockScopesCbk = NULL);
949
950 virtual void displayNode(OdGsNode& node, OdGsDisplayContext& ctx);
951 virtual void displaySubnode(OdGsEntityNode& node, OdGsDisplayContext& ctx, bool bHighlighted);
952
953 void doDrawLight(const OdGiDrawable* pDrawable);
955 const OdGsUpdateState* currentState() const { return m_curState; }
956
957 virtual bool updateExtentsOnly() const ODRX_OVERRIDE;
958 //DOM-IGNORE-END
959public:
960
966 virtual OdUInt32 setAttributes(const OdGiDrawable* pDrawable);
967
968 void updateExtentsInThreadInit(OdGsMtContext& mtContext);
969
970private:
971 //DOM-IGNORE-BEGIN
972 void setInitGsState(bool bOn);
973 bool isRecordingHistory();
974 void deleteHistory();
975 void setThreadIndex(OdUInt32 idx) { m_threadIndex = idx; }
976 bool drawSectionable(const OdGiDrawable& drawable, bool& bRes);
977 bool drawSectionGeometry(OdGiSectionGeometry& geom, bool bVpModelTfAwareBefore);
978 void setCurrentState(OdGsUpdateState& newState);
979 OdGsUpdateState* currentState() { return m_curState; }
980 void applyState(const OdGsUpdateState& s, const OdGsUpdateState& prev);
981 //DOM-IGNORE-END
982public:
983 OdGsStateBranchPtr m_pCurHltBr; // Current highlight branch
984 OdGsStateBranchPtr m_pCurVisibilityBr; // Current visibility branch
985protected:
986 //DOM-IGNORE-BEGIN
994 const OdSiShape* m_MfPlayQuery; // Currently playing query
995 const OdGsEntityNode* m_MfPlayNode; // Currently playing node
997 OdGsUpdateState* m_curState;
1003 // Fading support
1005 {
1006 kFfLockedLayer = (1 << 0),
1007 kFfXref = (1 << 1),
1008 kFfRefEdit = (1 << 2),
1009 kFfFlagsMask = kFfLockedLayer | kFfXref | kFfRefEdit,
1010 kEFfLockedLayer = (1 << 4),
1011 kEFfXref = (1 << 5),
1012 kEFfRefEdit = (1 << 6),
1013 kEFfFlagsMask = kEFfLockedLayer | kEFfXref | kEFfRefEdit,
1014 kEFfFlagsOffset = 4,
1015 kFvLockedLayerOffset = 8,
1016 kFvLockedLayerMask = (0xFF << kFvLockedLayerOffset),
1017 kFvXrefOffset = 16,
1018 kFvXrefMask = (0xFF << kFvXrefOffset),
1019 kFvRefEditOffset = 24,
1020 kFvRefEditMask = (0xFF << kFvRefEditOffset)
1023 template <OdGiContext::FadingType fadingType> friend class OdGsLockFadingFlag;
1024
1026 //DOM-IGNORE-END
1027public:
1028
1033 OdUInt32 currentSelectionStyle() const { return m_selectionStyle; }
1034
1039 bool hasSelectionStyle() const { return m_selectionStyle != 0; }
1040
1045 int highlightingPass() const;
1046
1051 void setRenderAbort( bool bSet );
1052
1058 virtual bool renderAbort();
1059protected:
1060 //DOM-IGNORE-BEGIN
1062 {
1065 kHighlightFirstPass = OdGiBaseVectorizerImpl::kLastImplFlag << 3,
1066 kHighlightSecondPass = OdGiBaseVectorizerImpl::kLastImplFlag << 4,
1067 kAbsoluteDeviation = OdGiBaseVectorizerImpl::kLastImplFlag << 5,
1068
1069 kLastBaseVectorizerFlag = kAbsoluteDeviation
1073
1074 const OdGsExtAccum *secondaryOutputExtents() const { return m_pOutputExtents.get(); }
1075 OdGsExtAccum *secondaryOutputExtents() { return m_pOutputExtents.get(); }
1076private:
1077 mutable const OdGiLayerTraitsData* m_pCachedLayer;
1078 OdGsLayerNode* m_effectiveLayer;
1079 OdGsExtAccumPtr m_pOutputExtents;
1080 OdGiHistory* m_giHistory;
1081 OdUInt32 m_threadIndex;
1082 bool m_bTraitsDataChanged;
1083 bool m_bByBlockTraitsChanged;
1084 friend class OdGsUpdateContext;
1085 friend class OdGsDisplayContext;
1087 friend class OdGsApplyModelOverrides;
1088
1089protected:
1090 virtual void doCollide( OdGiPathNode const*const* pInputList, OdUInt32 nInputListSize, OdGsCollisionDetectionReactor* pReactor, OdGiPathNode const*const* pCollisionWithList = NULL, OdUInt32 nCollisionWithListSize = 0, const OdGsCollisionDetectionContext* pCtx = NULL );
1091 virtual void doCollideAll( OdGsCollisionDetectionReactor* pReactor, const OdGsCollisionDetectionContext* pCtx = NULL );
1092 void processDrawableForCollide( const OdGiPathNode* pStartNode, const OdGiDrawable* pDrawable, OdGsBaseModel*& pCurModel, OdGsApplyModelOverridesPtr& pCurOverrides );
1093 void processAllDrawablesForCollide( const OdGeExtents3d* pExtents = NULL, OdGiPathNode const*const* pCollisionWithList = NULL, OdUInt32 nCollisionWithListSize = 0, bool bIgnoreViewExtents = false );
1094 //DOM-IGNORE-END
1095};
1096
1097template <typename ClientClass = OdGsBaseVectorizer>
1099{
1100 protected:
1101 ClientClass& m_vect;
1102 const bool m_bHighlighted;
1104 public:
1106 : m_vect(vect)
1108 , m_selStyle(vect.currentSelectionStyle())
1109 { }
1111 { m_vect.highlight(m_bHighlighted, m_selStyle); }
1112 bool isHighlighted() const { return m_bHighlighted; }
1114};
1115
1116template <OdGiContext::FadingType fadingType>
1118{
1119 protected:
1122 public:
1124 : m_lockedFlags(vectorizer.m_fadingFlags)
1125 , m_bSavedBit(GETBIT(vectorizer.m_fadingFlags, 1 << fadingType))
1126 {}
1127 void set(bool bNewVal) { SETBIT(m_lockedFlags, 1 << fadingType, bNewVal); }
1128 OdGsLockFadingFlag(OdGsBaseVectorizer &vectorizer, bool bNewVal)
1129 : m_lockedFlags(vectorizer.m_fadingFlags)
1130 , m_bSavedBit(GETBIT(vectorizer.m_fadingFlags, 1 << fadingType))
1131 { set(bNewVal); }
1133};
1134
1136{ // Returns true in case if any type of fading is 'true' and fading value is positive
1138}
1139
1141{ // Returns percentage in [0-100] range
1142 OdUInt32 nIntensityMix = 100;
1144 {
1146 nIntensityMix = mix;
1147 }
1149 {
1150 OdUInt32 mix = 100 - ((m_fadingFlags & kFvXrefMask) >> kFvXrefOffset);
1151 nIntensityMix = odmin(nIntensityMix, mix);
1152 }
1154 {
1156 nIntensityMix = nIntensityMix * mix / 100;
1157 }
1158 nIntensityMix = odmax(10, nIntensityMix);
1159 return 100 - nIntensityMix;
1160}
1161
1163{
1164 return m_pCurHltBr.get() && m_pCurHltBr->markersSize() ? &m_pCurHltBr->markers() : NULL;
1165}
1166
1168{
1169 return m_threadIndex;
1170}
1171
1173{
1174 return m_pCurHltBr;
1175}
1176
1178{
1179 return m_pCurVisibilityBr;
1180}
1181
1183{
1184 if (bSync)
1186 return m_effectiveLayer;
1187}
1188
1190{
1191 return m_curRenderType;
1192}
1193
1195{
1196 return m_curOverlay;
1197}
1198
1200{
1201 return m_pSelectProc != 0;
1202}
1203
1204inline void OdGsBaseVectorizer::highlight(bool bHighlight, OdUInt32 nSelStyle)
1205{
1206 SETBIT(m_flags, kHighlighted, bHighlight);
1207 m_selectionStyle = nSelStyle;
1208}
1209
1211{
1212 return GETBIT(m_flags, kHighlighted);
1213}
1214
1216{
1218}
1219
1221{
1223}
1224
1225inline void OdGsBaseVectorizer::setHidden( bool bHidden )
1226{
1227 SETBIT( m_implFlags, kHiddenImplFlag, bHidden );
1228}
1229
1231{ // Metafile transformation matrix
1233}
1234
1235#include "TD_PackPop.h"
1236
1237#endif // __OD_GS_BASE_VECTORIZER_H_
#define ODA_ASSERT(exp)
Definition: DebugStuff.h:57
OdGiDeviationType
Definition: GiCommonDraw.h:65
std::set< OdGsMarker > OdGsMarkerSet
OdSharedPtr< OdGsApplyModelOverrides > OdGsApplyModelOverridesPtr
EMetafilePlayMode
Definition: GsDefs.h:515
#define GS_TOOLKIT_EXPORT
Definition: GsExport.h:37
OdGsOverlayId
Definition: GsOverlayDefs.h:42
#define odmin(X, Y)
Definition: OdPlatform.h:34
#define odmax(X, Y)
Definition: OdPlatform.h:35
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
bool isEmpty() const
Definition: OdArray.h:1547
T & last()
Definition: OdArray.h:1710
static GE_STATIC_EXPORT const OdGeMatrix3d kIdentity
Definition: GeMatrix3d.h:97
void updateLayerTraits(OdGiSubEntityTraitsData &subEntityTraits) const
OdGiSubEntityTraitsData m_effectiveEntityTraitsData
OdUInt64 lastMetafileSize() const
OdGsStateBranch * findHighlightedSubnodeBranch()
virtual OdDbStub * switchLayer(OdDbStub *layerId) const
virtual void addDistantLight(const OdGiDistantLightTraitsData &)
virtual void setAnalyticLinetypingComplexCurves(bool analytic)
OdIntPtr m_drawableFilterFunction
OdGiSelectProc * m_pSelectProc
OdGsMaterialNode * m_pCachedMaterial
const OdGsWriter & gsWriter() const
bool hasSelectionStyle() const
const OdGsMarkerSet * highlightedSubentities() 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)
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)
int highlightingPass() const
OdGiConveyorOutput & secondaryOutput()
OdPerfTimerBase * m_viewTimingProcessor
virtual void updateViewport()
virtual OdGeMatrix3d getTransformForMetafileGeometry() const
bool disableInfiniteGeomExtents() const
OdGsModel::RenderType activeRenderType() const
virtual bool updateExtentsOnly() const ODRX_OVERRIDE
const OdGsStateBranch * currentVisibilityBranch() const
bool isHighlighted() const
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)
void pushClipBoundary(OdGiClipBoundary *pBoundary, OdGiAbstractClipBoundary *pClipInfo)
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
OdGiCollideProc * m_pCollideProc
const OdGsUpdateState * currentState() const
virtual bool hasPaletteOverrides() const
virtual void setTransformForMetafileGeometry(const OdGeMatrix3d &)
virtual void setEntityTraitsDataChanged(int bit, bool value=true)
OdArray< OdGeMatrix3d > m_metafileTransfStack
bool isDragging() const
OdGsStateBranchPtr m_pCurHltBr
virtual void addSpotLight(const OdGiSpotLightTraitsData &)
void processAllDrawablesForCollide(const OdGeExtents3d *pExtents=NULL, OdGiPathNode const *const *pCollisionWithList=NULL, OdUInt32 nCollisionWithListSize=0, bool bIgnoreViewExtents=false)
bool isSelecting() const
virtual void onTraitsModified()
const OdGsEntityNode * m_MfPlayNode
virtual void displaySubnode(OdGsEntityNode &node, OdGsDisplayContext &ctx, bool bHighlighted)
virtual void display(bool bUpdate)
virtual void drawViewportFrame()
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
virtual OdGeMatrix3d objectToDeviceMatrix() const
void processDrawableForCollide(const OdGiPathNode *pStartNode, const OdGiDrawable *pDrawable, OdGsBaseModel *&pCurModel, OdGsApplyModelOverridesPtr &pCurOverrides)
ODRX_USING_HEAP_OPERATORS(OdGiBaseVectorizer)
OdGsWriter & gsWriter()
void playMetafileMode(const OdRxObject *pMetafile, EMetafilePlayMode eMode, OdGsEntityNode &node, OdGsBaseContext *ctx)
void setRenderAbort(bool bSet)
const OdSiShape * m_MfPlayQuery
virtual OdGiConveyorOutput & output()
OdGsStateBranch * findHiddenSubnodeBranch()
virtual void beginMetafileRecording(OdGsGeomPortion *pGeomPortion)
void highlight(bool bHighlight, OdUInt32 nSelStyle=0)
EMetafilePlayMode m_eMfPlayMode
virtual void setUp(OdGsViewImpl &view)
OdGsStateBranchPtr m_pCurVisibilityBr
const OdGsStateBranch * currentHighlightBranch() const
virtual const OdGeMatrix3d & metafileTransform() const
void doDrawLight(const OdGiDrawable *pDrawable)
void pushModelTransform(const OdGeMatrix3d &xfm)
virtual void addPointLight(const OdGiPointLightTraitsData &)
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
virtual bool doDraw(OdUInt32 drawableFlags, const OdGiDrawable *pDrawable)
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)
OdUInt32 markersSize() const
const OdGsMarkerSet & markers() const
SelectionMode
Definition: Gs.h:173
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
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 TObj * get() const
Definition: TPtr.h:128
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