24#ifndef __OD_GS_CONTAINER_NODE__
25#define __OD_GS_CONTAINER_NODE__
55 kLastFlag = kVpDepCache
60 kChildrenNotUpToDate = 0x80000000
92 inline VpData *getVpData(
OdUInt32 nVpId,
bool bCreateIfNotFound =
true)
const;
104 inline bool hasVpData(
OdUInt32 nVpId)
const;
122 void setEntityListsInvalid();
139 inline bool isVpDepCache()
const;
155 void setEntityListValid(
OdUInt32 nVpId,
bool entityListValid);
165 bool childrenUpToDate(
OdUInt32 nVpId)
const;
171 bool needRegen(
OdUInt32 nVpId)
const;
346 bool entityListValid(
OdUInt32 nVpId)
const;
355 bool allEntityListsValid()
const;
362 bool isEmpty()
const;
371 void setChildrenUpToDate(
bool childrenUpToDate,
const OdUInt32* nVpID = NULL);
379 bool childrenRegenDraw(
OdUInt32 nVpID)
const;
386 void setChildrenRegenDraw(
bool bVal,
OdUInt32 nVpID);
472 bool checkWorkset()
const;
473 void setCheckWorkset(
bool bVal);
521 inline void addViewRef(
OdUInt32 nVpId);
522 inline void removeViewRef(
OdUInt32 nVpId);
523 inline const ViewRefs& viewRefs()
const;
602 inline int numberOfChildren(
OdUInt32 nVpId)
const;
638 if (!pVpData && bCreateIfNotFound)
649 for (
OdUInt32 nVpId = 0; nVpId < nVpData; nVpId++)
651 if (pVpDataPtr[nVpId].get() == pVpData)
695 for (
OdUInt32 nView = 0; nView < nVpData; nView++)
722 bool bAllListsValid =
true;
723 for (
OdUInt32 nView = 0; nView < nViews; nView++)
728 bAllListsValid =
false;
821 flags &= ~kChildrenNotUpToDate;
840 return ( nAF == 0xFFFFFFFF || (
baseModel()->viewChanges(nVpID) & nAF) != 0 );
#define GS_TOOLKIT_EXPORT
#define SETBIT(flags, bit, value)
#define SETBIT_0(flags, bit)
#define GETBIT(flags, bit)
typename A::size_type size_type
void setRealExtents(OdUInt32 nVpId, const OdGsUpdateExtents &ext)
virtual void updateEntities(OdGsUpdateContext &ctx)
OdUInt32 awareFlags(OdUInt32 viewportId) const
bool saveNodeState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer=NULL) const
void addViewRef(OdUInt32 nVpId)
void setEntityListsInvalid()
bool loadVpData(OdGsFiler *pFiler, VpData *pVpData)
OdList< OdGsLightNode * > & lightNodesList(OdUInt32 nVpId)
void invalidate(OdGsContainerNode *pParent, OdGsViewImpl *pView, OdUInt32 mask)
void setVpDepCache(const OdGsViewImpl &pView)
OdUInt32 currViewChanges() const
OdVector< VpDataPtr > VpDataArray
OdList< OdGsLightNode * > LightsList
virtual void removeChild(OdGsNode *pNode)
bool isMetafilesCompatible(const OdGsViewImpl *pView1, const OdGsViewImpl *pView2, OdGsUpdateContext *ctx)
void turnOnLights(OdGsBaseVectorizer &view)
OdUInt32 isAttached(OdGsEntityNode *pNode) const
virtual void propagateLayerChanges(OdGsViewImpl &view)
void display(OdGsDisplayContext &ctx)
OdGsEntityNode * firstEntityNode(OdUInt32 nVpId)
OdGsEntityNode * lastEntityNode(OdUInt32 nVpId)
int numberOfChildren(OdUInt32 nVpId) const
OdUInt32 viewportId(const OdGsViewImpl &pView, bool bForceVpId=true) const
virtual bool extents(const OdGsView *pView, OdGeExtents3d &ext) const
virtual bool updateEntityList(OdGsUpdateContext &ctx)
const ViewRefs & viewRefs() const
bool findCompatibleCache(OdGsViewImpl &keyView)
ODRX_DECLARE_MEMBERS(OdGsContainerNode)
bool highlightSubnodes(OdUInt32 nSubnodes, bool bHighlight, bool bAll, OdUInt32 nSelStyle=0)
void setCheckWorkset(bool bVal)
virtual ENodeType nodeType() const
void addEntProps(const OdGsUpdateContext &ctx)
bool isVpDepCache() const
bool allEntityListsValid() const
bool saveVpData(OdGsFiler *pFiler, const VpData *pVpData) const
bool entityListValid(OdUInt32 nVpId) const
void doSTUpdate(OdGsUpdateContext &ctx)
OdUInt32 vpDataId(const VpData *pVpData) const
VpData * makeVpData(OdUInt32 nVpId) const
const OdGsUpdateExtents & realExtents(OdUInt32 nVpId) const
bool postprocessNodeLoading(OdGsFiler *pFiler)
VpData * getVpData(OdUInt32 nVpId, bool bCreateIfNotFound=true) const
void updateVisible(OdGsViewImpl *pViewImpl)
bool extents(OdGeExtents3d &extents) const
VpDataPtr m_shareableData
OdUInt32Vector m_vpAwareFlags
bool childrenUpToDate(OdUInt32 nVpId) const
void setChildrenUpToDate(bool childrenUpToDate, const OdUInt32 *nVpID=NULL)
bool doMTUpdate(OdGsUpdateContext &ctx)
bool safeEntityUpdate(OdGsEntityNode *pEntity, OdGsUpdateContext &ctx, OdSiSpatialIndex *pSpatialIndex)
void setChildrenRegenDraw(bool bVal, OdUInt32 nVpID)
void setAwareFlags(OdUInt32 viewportId, OdUInt32 flags)
OdSmartPtr< VpData > VpDataPtr
void addContentToUpdateManager(OdUInt32 viewportId, OdGsUpdateManager *pManager, const UpdateManagerContext &context)
virtual void addLight(OdGsUpdateContext &ctx, const OdGiDrawable *pDrawable)
virtual void addChild(const OdGiDrawable *pDrawable, OdGsViewImpl *pView, bool unerased=false)
OdUInt32 numberOfChildrenErased(OdUInt32 nVpId) const
OdSiSpatialIndex & spatialIndex(OdUInt32 nVpId)
bool needRegen(OdUInt32 nVpId) const
bool hasVpData(OdUInt32 nVpId) const
bool childrenRegenDraw(OdUInt32 nVpID) const
void propagateInvalidVpFlag()
virtual void removeLights(OdGsNode *pOwner, OdUInt32 nVpId=0xFFFFFFFF)
void addChildNode(OdUInt32 nVpId, OdGsEntityNode *pEnt)
OdUInt32 numVpData() const
OdGsContainerNode(OdGsBaseModel *pModel, const OdGiDrawable *pUnderlyingDrawable, bool bSetGsNode=true)
const StockProps & stock() const
bool loadNodeState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer=NULL)
OdUInt32 numberOfChildrenST(OdUInt32 nVpId) const
void update(OdGsUpdateContext &ctx, OdGsContainerNode *pParent, OdSiSpatialIndex *pParentIndex)
bool checkWorkset() const
void removeViewRef(OdUInt32 nVpId)
void setEntityListValid(OdUInt32 nVpId, bool entityListValid)
void propagateLayerChangesStock()
virtual void displayEntityList(OdGsDisplayContext &ctx)
OdGsBaseModel * baseModel() const
static GS_STATIC_EXPORT const OdGsUpdateExtents kInvalid
const T & getAt(size_type index) const
void insert(iterator before, const_iterator first, const_iterator afterLast)
void remove(OdUInt32 viewportId)
void add(OdUInt32 viewportId)
OdGsUpdateExtents m_realExtents
OdUInt32 m_nChildHighlighted
OdUInt32 m_nChildErasedPermanently
OdUInt32 m_nChildSingleThreaded
OdGsEntityNode * m_pClearSpatialQueryStateFirst
OdGsEntityNode * m_pLastEntity
OdSiSpatialIndexPtr m_pSpIndex
OdGsEntityNode * m_pFirstEntity
static OdSmartPtr< VpData > createObject(bool bShareable=false)