24#ifndef __OD_GS_BLOCK_NODE__
25#define __OD_GS_BLOCK_NODE__
36class OdGsSharedRefDefinition;
37class OdGsReferenceImpl;
63 bool bSetGsNode):
OdGsNode(pModel, pUnderlyingDrawable), m_bModelTfDependent(0)
74 SETBIT(m_flags, kSyncDrawable,
false);
79 void setUnloaded(
bool isUnloaded);
80 bool isUnloaded()
const;
81 void setModelTfDependent(
bool bOn);
93 m_inserts.insert(pEntity);
97 m_inserts.insert(pEntity);
104 m_inserts.erase(pEntity);
105 if(!isUnloaded() || !m_inserts.empty())
109 SETBIT(m_flags, kSyncDrawable,
false);
159 m_sharedImp.destroy();
176 m_sharedImp.removeDef(pDef);
180 m_sharedImp.removeDef(pDef);
188 return m_sharedImp.findDef(pDef, d);
190 return m_sharedImp.findDef(pDef, d);
209 _map::iterator it = m_map.find(d);
210 return (it == m_map.end() ? NULL : it->second);
213 OdGsReferenceImpl* pImp);
225 std::less<OdGsBlockRefNodeDesc> >
_map;
230 typedef std::set<OdGsBlockReferenceNode*>
Inserts;
253#ifndef TD_SINGLE_THREAD
277#ifndef TD_SINGLE_THREAD
#define GS_TOOLKIT_EXPORT
bool isModelTfDependent(OdUInt32 flags)
#define SETBIT(flags, bit, value)
#define GETBIT(flags, bit)
#define TD_AUTOLOCK_P_DEF(Mutex)
#define TD_AUTOLOCK_P(Mutex)
FIRSTDLL_EXPORT ThreadsCounter & odThreadsCounter()
virtual void detach(OdGsNode *pNode)
bool layersChanged(OdGsViewImpl &view, OdGsBaseModel *pModel)
void removeDef(OdGsSharedRefDefinition *pDef)
bool findDef(const OdGsSharedRefDefinition *pDef, OdGsBlockRefNodeDesc &d)
void invalidateRegenDraw(OdUInt32 vpID, const OdDbStub *layoutId)
void propagateLayerChangesStock()
void invalidateAwareFlags(OdGsViewImpl *pView, OdUInt32 nViewChanges, const OdDbStub *layoutId, OdGsBaseModel *pModel)
OdGsSharedRefDefinition * findAt(const OdGsBlockRefNodeDesc &d)
std::map< OdGsBlockRefNodeDesc, OdGsSharedRefDefinition *, std::less< OdGsBlockRefNodeDesc > > _map
void invalidateSectionable()
OdGsSharedRefDefinition * insertAt(const OdGsBlockRefNodeDesc &d, OdGsReferenceImpl *pImp)
void invalidateSubents(OdUInt32 vpID, OdUInt32 nViewChanges)
Inserts::iterator InsertIterator
bool extents(OdGeExtents3d &) const
virtual void propagateLayerChanges(OdGsViewImpl &)
ODRX_DECLARE_MEMBERS(OdGsBlockNode)
void update(OdGsUpdateContext &, OdGsContainerNode *, OdSiSpatialIndex *)
bool saveNodeState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer=NULL) const
OdGsSharedRefDefinition * createDef(const OdGsBlockRefNodeDesc &d)
void removeDef(OdGsSharedRefDefinition *pDef)
void invalidateSharedAwareFlags(OdGsViewImpl *pView, OdUInt32 nViewChanges, const OdDbStub *layoutId)
void invalidateSharedRegenDraw(OdUInt32 vpID, const OdDbStub *layoutId)
void setModelTfDependent(bool bOn)
void invalidate(OdGsContainerNode *pParent, OdGsViewImpl *view, OdUInt32 mask)
OdGsSharedRefDefinition * findCreateDef(const OdGsBlockRefNodeDesc &d)
std::set< OdGsBlockReferenceNode * > Inserts
OdGsBlockNode(OdGsBaseModel *pModel, const OdGiDrawable *pUnderlyingDrawable, bool bSetGsNode)
void invalidateSharedSectionable()
void display(OdGsDisplayContext &)
bool loadNodeState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer=NULL)
void release(OdGsBlockReferenceNode *pEntity)
volatile int m_bModelTfDependent
void setUnloaded(bool isUnloaded)
void addRef(OdGsBlockReferenceNode *pEntity)
virtual ENodeType nodeType() const
void invalidateSharedSubents(OdUInt32 vpID, OdUInt32 nViewChanges)
bool findDef(const OdGsSharedRefDefinition *pDef, OdGsBlockRefNodeDesc &d)
bool isModelTfDependent() const
bool postprocessNodeLoading(OdGsFiler *pFiler)
void setToDrawable(const OdGiDrawable *pUnderlyingDrawable)
OdGsBaseModel * baseModel() const