24 #ifndef __OD_GS_BASE_VECTORIZER_H_
25 #define __OD_GS_BASE_VECTORIZER_H_
38 class OdGsUpdateContext;
48 class OdGsUpdateState;
49 class OdGiSharedRefDesc;
71 return *m_pExtAccum.get();
87 void onLayerModified(OdDbStub* layerId);
88 void onLayerModified(OdDbStub* layerId,
bool bFrozen);
89 void onFrozenLayerModified(OdDbStub* layerId)
const;
121 virtual void draw(
const OdGiDrawable* pDrawable) {draw(pDrawable);};
203 if( m_nMetafileSize !=
OdUInt64( -1 ) )
return m_nMetafileSize;
271 kSharedRefTransform = (1 << 0),
272 kSharedRefUpdate = (1 << 1),
273 kSharedRefSelect = (1 << 2)
285 #ifdef ODA_DIAGNOSTICS
297 inline bool isFaded()
const;
298 inline OdUInt32 fadingIntensity()
const;
300 inline bool isHighlighted()
const;
302 inline bool isSelecting()
const;
431 void setInitGsState(
bool bOn);
432 bool isRecordingHistory();
433 void deleteHistory();
434 void setThreadIndex(
OdUInt32 idx) { m_threadIndex = idx; }
435 bool drawSectionable(
const OdGiDrawable& drawable,
bool& bRes);
437 void setCurrentState(OdGsUpdateState& newState);
438 OdGsUpdateState* currentState() {
return m_curState; }
439 const OdGsUpdateState* currentState()
const {
return m_curState; }
440 void applyState(
const OdGsUpdateState& s,
const OdGsUpdateState& prev);
458 kFfLockedLayer = (1 << 0),
460 kFfRefEdit = (1 << 2),
461 kFfFlagsMask = kFfLockedLayer | kFfXref | kFfRefEdit,
462 kEFfLockedLayer = (1 << 4),
464 kEFfRefEdit = (1 << 6),
465 kEFfFlagsMask = kEFfLockedLayer | kEFfXref | kEFfRefEdit,
467 kFvLockedLayerOffset = 8,
468 kFvLockedLayerMask = (0xFF << kFvLockedLayerOffset),
470 kFvXrefMask = (0xFF << kFvXrefOffset),
471 kFvRefEditOffset = 24,
472 kFvRefEditMask = (0xFF << kFvRefEditOffset)
492 kLastBaseVectorizerFlag = kViewInteractive
502 OdGiHistory* m_giHistory;
504 bool m_bTraitsDataChanged;
505 bool m_bByBlockTraitsChanged;
506 friend class OdGsUpdateContext;
507 friend class OdGsDisplayContext;
509 friend class OdGsApplyModelOverrides;
512 template <OdGiContext::FadingType fadingType>
545 return 100 - nIntensityMix;
555 return m_threadIndex;
567 return m_effectiveLayer;
#define GS_TOOLKIT_EXPORT
#define SETBIT(flags, bit, value)
#define GETBIT(flags, bit)
static GE_STATIC_EXPORT const OdGeMatrix3d kIdentity
void updateLayerTraits(OdGiSubEntityTraitsData &subEntityTraits) const
OdGiSubEntityTraitsData m_effectiveEntityTraitsData
OdUInt64 lastMetafileSize() const
virtual void addDistantLight(const OdGiDistantLightTraitsData &)
virtual void setAnalyticLinetypingComplexCurves(bool analytic)
OdIntPtr m_drawableFilterFunction
OdGiSelectProc * m_pSelectProc
OdGsHlBranch * findHighlightedSubnodeBranch()
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)
virtual OdGiConveyorOutput & gsExtentsOutput()
virtual OdRxObjectPtr loadMetafile(OdGsFiler *pFiler)
void displayWithoutNesting(OdGsEntityNode *pNode)
OdUInt32 threadIndex() const
virtual void renderTypeOnChange(OdGsModel::RenderType renderType)
virtual OdGiConveyorOutput & outputForMetafileGeometry()
virtual void loadViewport()
virtual void popMetafileTransform(OdUInt32=0)
virtual void setVisualStyle(const OdGiVisualStyle &visualStyle)
OdUInt32 fadingIntensity() const
OdPerfTimerBase * m_viewTimingProcessor
virtual void updateViewport()
virtual OdGeMatrix3d getTransformForMetafileGeometry() const
bool disableInfiniteGeomExtents() const
OdGsModel::RenderType activeRenderType() const
bool isHighlighted() const
OdGiConveyorOutput & secondaryOutput()
virtual bool renderAbort()
double m_dRenderAbortCondition
virtual void addWebLight(const OdGiWebLightTraitsData &)
virtual OdRxObjectPtr newGsMetafile()
virtual void endMetafile(OdRxObject *pMetafile)
void pushClipBoundary(OdGiClipBoundary *pBoundary, OdGiAbstractClipBoundary *pClipInfo)
void playMetafileMode(const OdRxObject *pMetafile, EMetafilePlayMode eMode)
OdGiConveyorGeometry * m_pDetachedOutput
virtual void endViewVectorization()
virtual bool regenAbort() const
OdGsUpdateState * m_curState
virtual void setTransformForMetafileGeometry(const OdGeMatrix3d &)
virtual void setEntityTraitsDataChanged(int bit, bool value=true)
virtual void addSpotLight(const OdGiSpotLightTraitsData &)
virtual void onTraitsModified()
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
OdGsHlBranchPtr m_pCurHltBr
ODRX_USING_HEAP_OPERATORS(OdGiBaseVectorizer)
void setRenderAbort(bool bSet)
virtual const OdGiLayerTraitsData & effectiveLayerTraits() const
EMetafilePlayMode m_eMfPlayMode
virtual void setUp(OdGsViewImpl &view)
OdGsLayerNode * gsLayerNode(OdDbStub *layerId, OdGsBaseModel *pModel)
void updateExtentsInThreadInit(OdGsMtContext &mtContext)
OdGsExtAccum & gsExtentsAccum()
void pushModelTransform(const OdGeMatrix3d &xfm)
virtual void addPointLight(const OdGiPointLightTraitsData &)
virtual void switchOverlay(OdGsOverlayId overlayId)
virtual void setEntityTraitsDataChanged()
virtual void setAnalyticLinetypingCircles(bool analytic)
virtual void playMetafile(const OdRxObject *pMetafile)
const OdGsHlBranch * currentHighlightBranch() const
void selectionMarkerOnChange(OdGsMarker nSelectionMarker)
virtual void setSelectionMarker(OdGsMarker selectionMarker)
OdGsModel::RenderType m_curRenderType
const OdGsWriter & gsWriter() const
OdGsOverlayId activeOverlay() const
virtual bool isAnalyticLinetypingComplexCurves() const
virtual bool doDraw(OdUInt32 drawableFlags, const OdGiDrawable *pDrawable)
virtual OdDbStub * switchLayer(OdDbStub *layerId) const
virtual void reportUpdateError(OdDbStub *, const OdError &error)
const OdGsMarkerArray * highlightedSubentities() const
void setSectionableGeomExtentsOnly(bool bOn)
OdGsOverlayId m_curOverlay
bool sectionableGeomExtentsOnly() const
virtual bool isViewRegenerated() const
virtual bool forceMetafilesDependence() const
virtual bool isAnalyticLinetypingCircles() const
void highlight(bool bHighlight)
bool doViewExtents(OdGeBoundBlock3d &extents)
OdGiConveyorGeometry * m_pDetachedSecondaryOutput
bool isMetafileEmpty() const
virtual bool loadMaterialCache(OdGsMaterialNode *pNode, OdGsFiler *pFiler)
virtual OdGiConveyorOutput & output()
virtual void processMaterialNode(OdDbStub *materialId, OdGsMaterialNode *pNode)
void checkRenderType(const OdGsModel *pModel)
void pushModelTransform(const OdGeVector3d &normal)
void pushClipBoundary(OdGiClipBoundary *pBoundary)
virtual bool saveMetafile(const OdRxObject *pMetafile, OdGsFiler *pFiler)
const OdGsMarkerArray & markers() const
OdGsLockFadingFlag(OdGsBaseVectorizer &vectorizer, bool bNewVal)
OdGsLockFadingFlag(OdGsBaseVectorizer &vectorizer)
OdGsExtAccumPtr m_pExtAccum
void endMetafileRecording()
void beginMetafileRecording(OdGsGeomPortion *pGeomPortion)
OdGsGeomPortion * currentGeomPortion() const
bool isLayerFrozen(OdGsLayerNode *pLayerNode) const
OdGsBaseModel * m_pGsModel
void onNestedDrawable(OdDbStub *layerId)
bool isRecordingMetafile()
OdGsBaseVectorizer * m_vectorizer
OdGsExtAccum & extentsAccum()
OdGsBaseModel * gsModel() const
OdGsGeomPortion * m_pGeomPortion
GLsizei const GLfloat * value