24 #ifndef __OD_GS_BLOCKREFERENCE_NODE__
25 #define __OD_GS_BLOCKREFERENCE_NODE__
32 class OdGsSpQueryContext;
44 m_worldToModel(
NULL), m_modelToWorld(
NULL){}
85 std::auto_ptr<OdSiShape> m_transformedQuery;
116 class WorldDrawBlockRef;
117 class OdGsUpdateState;
132 kChildrenNotUpToDate = 0x80000000
138 void clear() { m_vpAwareFlags.clear(); }
139 bool isEmpty()
const {
return m_vpAwareFlags.isEmpty(); }
145 {
return nVpID < m_vpAwareFlags.size(); }
163 void*
operator new(size_t);
164 void operator delete(
void*);
173 if (!(--m_nRefCounter))
176 long numRefs()
const {
return m_nRefCounter; }
185 virtual void display(OdGsDisplayContext& ctx,
bool isHighlightedAll) = 0;
197 virtual void highlight(
bool bDoIt,
bool bWholeBranch) = 0;
242 kLastFlag = kBrClipped
297 void clearBlockNode();
327 if(!childrenUpToDate(nVpID))
330 if( nAF == 0xFFFFFFFF || (baseModel()->viewChanges(nVpID) & nAF) != 0 )
340 bool bEnableSharedGraphics);
354 void createImpl(
const OdGsUpdateContext& ctx,
bool bTryShared);
355 void drawBlockImpl(OdGsUpdateContext& ctx,
const OdGiDrawable* pBlockTableRecord,
357 bool bEnableSharedGraphics);
368 friend class WorldDrawBlockRef;
369 friend class GsDrawableNested;
370 friend class OdGsSpQueryContext;
403 const OdGiDrawable* pBlockTableRecord,
unsigned iInstance);
432 m_nodeImp(c.m_nodeImp), m_pFirstAttrib(c.m_pFirstAttrib){}
463 void clearParams() {m_nCols = m_nRows = 0; m_sx = m_sy = 0.; m_blockTf.setToIdentity(); }
OdSiRecursiveVisitor OdSiSelBaseVisitor
OdSiRecursiveVisitorTf OdSiSelectVisitorTf
#define GS_TOOLKIT_EXPORT
#define SETBIT(flags, bit, value)
#define GETBIT(flags, bit)
void setChildrenUpToDate(bool childrenUpToDate, const OdUInt32 nVpID)
OdUInt32 get(OdUInt32 nVpID) const
bool areInvalid(OdUInt32 nVpID) const
void set(OdUInt32 nVpID, OdUInt32 flags)
bool findFlag(OdUInt32 nVpID) const
bool childrenUpToDate(OdUInt32 nVpID) const
OdUInt32 numAwareFlags() const
void * sharedDefinition()
static OdGsBlockReferenceNode * create(OdGsBaseModel *pModel, const OdGiDrawable *pDrawable)
static void actionCheckCancelledSharedRef(void *pObj, OdGsUpdateState &state)
virtual OdGsEntityNode * firstEntity()
static void actionAddEntPropsFromState(void *pObj, OdGsUpdateState &state)
void checkCancelledSharedRef(OdGsUpdateState &state)
virtual void destroySubitems()
void updateBlockNode(const OdGiDrawable *pBlockTableRecord)
virtual bool doSelect(OdGsBaseVectorizer &vect, OdGiDrawable *pDrw, OdSiSelBaseVisitor *pVisitor, OdGsView::SelectionMode mode)
virtual OdGsEntityNode * firstAttrib()
virtual void setChildrenUpToDate(bool childrenUpToDate, const OdUInt32 nVpID)
void setAwareFlags(OdUInt32 viewportId, OdUInt32 nAwareFlags)
void initBlockNode(const OdGiDrawable *pBlock)
void updateImpl(OdGsUpdateContext &ctx, const OdGiDrawable *pInsert, OdSiSpatialIndex *pParentIndex)
void addEntPropsFromState(const OdGsUpdateState &state)
virtual void propagateLayerChangesStock()
virtual void invalidate(OdGsContainerNode *pParent, OdGsViewImpl *pView, OdUInt32 mask)
~OdGsBlockReferenceNode()
void postUpdateStep(OdGsUpdateState &state)
virtual bool isMInsert() const
virtual OdUInt32 awareFlags(OdUInt32 viewportId) const
virtual void update(OdGsUpdateContext &ctx, OdGsContainerNode *pParent, OdSiSpatialIndex *pParentIndex)
bool loadClientNodeState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer)
bool excludeFromViewExt() const
bool needRegen(OdUInt32 nVpID) const
OdGsBlockNode * blockNode() const
virtual bool isReference() const
virtual void releaseStock()
static void actionRestartLocked(void *pObj, OdGsUpdateContext &ctx)
bool postprocessNodeLoading(OdGsFiler *pFiler)
OdGsBlockReferenceNode(OdGsBaseModel *pModel, const OdGiDrawable *pDrawable, bool bSetGsNode=false)
OdGsBlockNode * m_pBlockNode
bool saveClientNodeState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer) const
virtual void doUpdateImpl(OdGsUpdateContext &ctx, const OdGiDrawable *pBlockTableRecord, unsigned iInstance)
virtual bool childrenRegenDraw(OdUInt32 nVpID) const
void setMetafile(OdGsUpdateContext &ctx, OdGsEntityNode::Metafile *pMf, OdUInt32 awareFlags, const OdGeExtents3d &ext)
TPtr< OdGsBlockReferenceNodeImpl > m_pImpl
virtual bool awareFlagsAreInvalid(OdUInt32 viewportId) const
virtual bool childrenUpToDate(OdUInt32 nVpID) const
virtual void playAsGeometry(OdGsBaseVectorizer &view, EMetafilePlayMode eMode)
void setExcludeFromViewExt(bool bSet)
void drawBlock(OdGsUpdateContext &ctx, const OdGiDrawable *pBlockTableRecord, OdGsBlockReferenceNodeImpl *pContainer, bool bEnableSharedGraphics)
OdGsEntityNode * m_pFirstAttrib
ODRX_DECLARE_MEMBERS(OdGsBlockReferenceNode)
static void actionPostUpdateStep(void *pObj, OdGsUpdateState &state)
virtual void propagateLayerChanges(OdGsViewImpl &view)
virtual void spatialQuery(const OdGsView &view, OdSiRecursiveVisitor *pVisitor)
virtual void doDisplay(OdGsDisplayContext &ctx)
bool highlightSubnodes(OdUInt32 nSubnodes, bool bHighlight, bool bAll)
virtual bool select(OdGsBaseVectorizer &view, OdSiSelBaseVisitor *, OdGsView::SelectionMode mode)
virtual void doSpatialQuery(OdGsSpQueryContext &ctx)
void updateAttribute(OdGsUpdateContext &ctx, OdGsEntityNode *pNode, const OdGiDrawable *pInsert, OdGsMarker marker)
virtual bool layersChanged(OdGsViewImpl &view) const
virtual void propagateLayerChangesStock()=0
virtual void playAsGeometry(OdGsBaseVectorizer &view, EMetafilePlayMode eMode)=0
virtual void makeStock()=0
virtual bool layersChanged(OdGsViewImpl &view) const
virtual void doSpatialQuery(OdGsSpQueryContext &ctx)=0
virtual bool saveNodeImplState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer) const =0
virtual void display(OdGsDisplayContext &ctx, bool isHighlightedAll)=0
virtual bool isSharedDefinition() const
virtual ~OdGsBlockReferenceNodeImpl()
virtual OdGsEntityNode * firstEntity()=0
virtual void postprocessNodeImplLoading(OdGsFiler *)
virtual void updateSubitems(OdGsUpdateContext &ctx, OdGsBlockNode &blockNode, const OdGiDrawable *pBlock)=0
virtual bool destroySubitems()=0
OdRefCounter m_nRefCounter
OdGsBlockReferenceNodeImpl()
virtual bool isSharedReference() const
virtual bool invalidate(OdGsContainerNode *pParent, OdGsViewImpl *pView, OdUInt32 mask)=0
virtual void highlight(bool bDoIt, bool bWholeBranch)=0
virtual bool loadNodeImplState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer, OdGsBaseModel *pModel)=0
virtual void releaseStock()=0
virtual bool select(OdGsBaseVectorizer &view, OdSiSelBaseVisitor *pVisitor, bool bHasExtents, OdGsView::SelectionMode mode)=0
Collection(const Collection &c)
OdGsBlockReferenceNodeImpl * imp()
TPtr< OdGsBlockReferenceNodeImpl > m_nodeImp
const OdGsEntityNode * firstAttrib() const
OdGsEntityNode * firstAttrib()
CollectionItem(const CollectionItem &c)
OdGsEntityNode * m_pFirstAttrib
void copyFrom(const CollectionItem &c)
const OdGsBlockReferenceNodeImpl * imp() const
virtual bool layersChanged(OdGsViewImpl &view) const
bool saveClientNodeState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer) const
bool loadClientNodeState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer)
virtual void doUpdateImpl(OdGsUpdateContext &ctx, const OdGiDrawable *pBlockTableRecord, unsigned iInstance)
virtual bool isMInsert() const
virtual OdGsEntityNode * firstEntity()
OdGeMatrix3d m_xModelToWorld
virtual void doDisplay(OdGsDisplayContext &ctx)
static void actionStretchExtents(void *pObj, OdGsUpdateState &state)
bool postprocessNodeLoading(OdGsFiler *pFiler)
ODRX_DECLARE_MEMBERS(OdGsMInsertBlockNode)
virtual void destroySubitems()
OdGsEntityNode *& firstAttrib(unsigned iInstance)
OdGsMInsertBlockNode(OdGsBaseModel *pModel, const OdGiDrawable *pInsert, bool bSetGsNode=false)
virtual void releaseStock()
bool selectSubitems(OdGsBaseVectorizer &view, OdSiSelBaseVisitor *pVisitor, OdGsView::SelectionMode mode)
void setParams(const OdGeMatrix3d &blockTf, int nCols, int nRows, double sx, double sy)
Collection * m_pCollectionImpl
bool selectAttributes(OdGsBaseVectorizer &view)
virtual void highlight(bool bDoIt, bool bWholeBranch)
virtual void invalidate(OdGsContainerNode *pParent, OdGsViewImpl *pView, OdUInt32 mask)
virtual void propagateLayerChangesStock()
virtual void playAsGeometry(OdGsBaseVectorizer &view, EMetafilePlayMode eMode)
CollectionItem * item(unsigned iInstance)
virtual OdGsEntityNode * firstAttrib()
OdGsBlockReferenceNodeImpl * getImpl(unsigned iInstance)
virtual bool doSelect(OdGsBaseVectorizer &vect, OdGiDrawable *pDrw, OdSiSelBaseVisitor *pVisitor, OdGsView::SelectionMode mode)
OdGsSpQueryContextTf(OdSiRecursiveVisitor &v, const OdGeMatrix3d &objectTf, const OdGeMatrix3d &objectTfInv, const OdGeScale3d &scale)
OdGeMatrix3d m_worldToModel
const OdGeMatrix3d * m_prevWorldToNode
const OdGeMatrix3d * m_prevWorldToModel
OdGeMatrix3d m_worldToNode
OdGeMatrix3d m_modelToWorld
const OdGeMatrix3d * m_prevModelToWorld
const OdGeMatrix3d * m_prevNodeToWorld
OdGeMatrix3d m_nodeToWorld
const OdGeMatrix3d * m_worldToNode
const OdGeMatrix3d * modelToWorld() const
const OdGeMatrix3d * m_worldToModel
const OdGeMatrix3d * worldToModel() const
const OdSiShape * query() const
const OdGeMatrix3d * nodeToWorld() const
void setModelToWorld(const OdGeMatrix3d *tf)
void resetQuery(const OdSiShape *pQuery)
const OdGeMatrix3d * m_modelToWorld
void setWorldToModel(const OdGeMatrix3d *tf)
const OdGeMatrix3d * worldToNode() const
void setNodeToWorld(const OdGeMatrix3d *tf)
const OdGeMatrix3d * m_nodeToWorld
const OdSiShape * m_pQuery
void setWorldToNode(const OdGeMatrix3d *tf)
OdSiRecursiveVisitor & m_visitor
~OdSiRecursiveVisitorTf()
OdSiRecursiveVisitorTf(OdSiRecursiveVisitor &v, const OdGeMatrix3d &mat)
bool operator==(const BlockRefPath &rA, const BlockRefPath &rB)
DOM.
bool operator!=(const BlockRefPath &rA, const BlockRefPath &rB)
DOM.