24#ifndef __OD_GS_BASE_VECTORIZER_H_
25#define __OD_GS_BASE_VECTORIZER_H_
38class OdGsUpdateContext;
53class OdGsNestedMetafile;
54class OdGiSharedRefDesc;
57class OdGsApplyModelOverrides;
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); }
586#ifdef ODA_DIAGNOSTICS
976 void setInitGsState(
bool bOn);
977 bool isRecordingHistory();
978 void deleteHistory();
979 void setThreadIndex(
OdUInt32 idx) { m_threadIndex = idx; }
985 bool drawSectionable(
const OdGiDrawable& drawable,
bool& bRes);
987 void setCurrentState(OdGsUpdateState& newState);
989 void applyState(
const OdGsUpdateState& s,
const OdGsUpdateState& prev);
1057 int highlightingPass()
const;
1095 OdGiHistory* m_giHistory;
1097 bool m_bTraitsDataChanged;
1098 bool m_bByBlockTraitsChanged;
1113template <
typename ClientClass = OdGsBaseVectorizer>
1133template <OdGiContext::FadingType fadingType>
1164 nIntensityMix = mix;
1169 nIntensityMix =
odmin(nIntensityMix, mix);
1174 nIntensityMix = nIntensityMix * mix / 100;
1176 nIntensityMix =
odmax(10, nIntensityMix);
1177 return 100 - nIntensityMix;
1186{
bool bHasAnyBranch =
false;
1189 { bHasAnyBranch =
true;
break; } }
1190 return bHasAnyBranch;
1195 return m_threadIndex;
1202 return m_effectiveLayer;
const OdGsMarker kNullSubentIndex
OdSharedPtr< OdGsApplyModelOverrides > OdGsApplyModelOverridesPtr
#define GS_TOOLKIT_EXPORT
OdSmartPtr< OdGsExtAccum > OdGsExtAccumPtr
TPtr< OdGsStateBranch > OdGsStateBranchPtr
#define SETBIT(flags, bit, value)
#define GETBIT(flags, bit)
static GE_STATIC_EXPORT const OdGeMatrix3d kIdentity
void updateLayerTraits(OdGiSubEntityTraitsData &subEntityTraits) const
OdGiSubEntityTraitsData m_effectiveEntityTraitsData
void draw(const OdGiDrawable *pDrawable)
OdGsMarker selectionMarker() const
@ kDisableInfiniteGeomExtents
@ kSectionableGeomExtentsOnly
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)
OdIntPtr m_drawableFilterFunction
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
OdGsMarker m_activeSubMarker
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()
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)
bool isHighlighted() const
virtual bool renderAbort()
double handleDeviationMultiplier(const OdGiDeviationType deviationType, double dDeviationValue) const
double m_dRenderAbortCondition
@ kLastBaseVectorizerFlag
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
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)
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)
OdUInt32 m_selectionStyle
void doDrawLight(const OdGiDrawable *pDrawable)
void pushModelTransform(const OdGeMatrix3d &xfm)
virtual void addPointLight(const OdGiPointLightTraitsData &)
friend class OdGsUpdateContext
double m_dDeviationMultiplier
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()
OdUInt32 selectionStyle() const
bool isHighlighted() const
const bool m_bHighlighted
OdGsHighlightingStateSaver(ClientClass &vect)
const OdUInt32 m_selStyle
OdGsLockFadingFlag(OdGsBaseVectorizer &vectorizer, bool bNewVal)
OdGsLockFadingFlag(OdGsBaseVectorizer &vectorizer)
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
GLsizei const GLfloat * value
virtual void blockEnd(const void *pRefId)=0
virtual void blockBegin(const void *pRefId)=0