CFx SDK Documentation  2020SP3
GsContainerNode.h
Go to the documentation of this file.
1 // Copyright (C) 2002-2017, Open Design Alliance (the "Alliance").
3 // All rights reserved.
4 //
5 // This software and its documentation and related materials are owned by
6 // the Alliance. The software may only be incorporated into application
7 // programs owned by members of the Alliance, subject to a signed
8 // Membership Agreement and Supplemental Software License Agreement with the
9 // Alliance. The structure and organization of this software are the valuable
10 // trade secrets of the Alliance and its suppliers. The software is also
11 // protected by copyright law and international treaty provisions. Application
12 // programs incorporating this software must include the following statement
13 // with their copyright notices:
14 //
15 // This application incorporates Teigha(R) software pursuant to a license
16 // agreement with Open Design Alliance.
17 // Teigha(R) Copyright (C) 2002-2017 by Open Design Alliance.
18 // All rights reserved.
19 //
20 // By use of this software, its documentation or related materials, you
21 // acknowledge and accept the above terms.
23 
24 #ifndef __OD_GS_CONTAINER_NODE__
25 #define __OD_GS_CONTAINER_NODE__
26 
27 #include "TD_PackPush.h"
28 
29 #include "Gs/GsNode.h"
30 #include "Gs/GsDrawableHolder.h"
31 #include "Si/SiSpatialIndex.h"
32 #include "OdVector.h"
33 #include "ThreadsCounter.h"
34 
35 class OdGsEntityNode;
36 class OdGsLightNode;
37 class OdGsBlockNode;
38 
47 {
48 protected:
49  enum
50  {
51  kEntityListValid = OdGsNode::kLastFlag << 1,
52  kCheckWorkset = OdGsNode::kLastFlag << 2,
53  kHasStockData = OdGsNode::kLastFlag << 3,
54  kVpDepCache = OdGsNode::kLastFlag << 4,
55  kLastFlag = kVpDepCache
56  };
57 
58  enum
59  {
60  kChildrenNotUpToDate = 0x80000000 //special flag to use in setChildrenUpToDate/childrenUpToDate
61  //per each viewport, flags are stored in m_vpAwareFlags
62  };
63 
65 
67  {
70  LightsList m_lightPtrs; // some of the lights are entities (ones that lies in model space)
73  int m_nChild;
77  OdGsUpdateExtents m_realExtents; //Keeps real extents (for EXTMIN/MAX support)
79 
80  enum
81  {
83  kVpDepCache = OdGsContainerNode::kVpDepCache
84  };
85 
86  VpData();
87  static OdSmartPtr<VpData> createObject(bool bShareable = false);
88  };
91 
92  inline VpData *getVpData(OdUInt32 nVpId, bool bCreateIfNotFound = true) const;
93  VpData *makeVpData(OdUInt32 nVpId) const;
94  inline OdUInt32 vpDataId(const VpData *pVpData) const;
95 public:
96  inline bool hasVpData(OdUInt32 nVpId) const;
97  inline OdUInt32 numVpData() const;
99  void setEntityListsInvalid();
100  OdUInt32 viewportId(const OdGsViewImpl &pView, bool bForceVpId = true) const;
101  inline bool isVpDepCache() const;
102 public:
111  void setEntityListValid(OdUInt32 nVpId, bool entityListValid);
112 
119  bool childrenUpToDate(OdUInt32 nVpId) const;
120 
125  bool needRegen(OdUInt32 nVpId) const;
126 
128 
130  virtual ENodeType nodeType() const { return kContainerNode; }
131 
136  virtual void displayEntityList(OdGsDisplayContext& ctx);
137 
142  OdGsEntityNode* firstEntityNode(OdUInt32 nVpId);
147  const OdGsEntityNode* firstEntityNode(OdUInt32 nVpId) const;
152  OdGsEntityNode* lastEntityNode(OdUInt32 nVpId);
157  const OdGsEntityNode* lastEntityNode(OdUInt32 nVpId) const;
162  OdList<OdGsLightNode*> &lightNodesList(OdUInt32 nVpId);
167  const OdList<OdGsLightNode*> &lightNodesList(OdUInt32 nVpId) const;
168 
210  OdUInt32 awareFlags(OdUInt32 viewportId) const;
211 
254  void setAwareFlags(OdUInt32 viewportId, OdUInt32 flags);
255 
256 protected:
257  virtual void propagateLayerChanges(OdGsViewImpl& view);
258  bool saveVpData(OdGsFiler *pFiler, const VpData *pVpData) const;
259  bool loadVpData(OdGsFiler *pFiler, VpData *pVpData);
260 
261 public:
263 
268  OdGsContainerNode(OdGsBaseModel* pModel, const OdGiDrawable* pUnderlyingDrawable, bool bSetGsNode = true);
270 
277  bool entityListValid(OdUInt32 nVpId) const;
278  bool allEntityListsValid() const;
279  bool isEmpty() const;
280 
288  void setChildrenUpToDate(bool childrenUpToDate, const OdUInt32* nVpID = NULL);
289  bool childrenRegenDraw(OdUInt32 nVpID) const;
290  void setChildrenRegenDraw(bool bVal, OdUInt32 nVpID);
291 
297  virtual void addChild(const OdGiDrawable* pDrawable, OdGsViewImpl *pView, bool unerased = false);
298 
299  /* \details
300  Adds information about the light if the light doesn't have gsNode yet.
301  \param ctx [in] Current update context.
302  \param pDrawable [in] Pointer to the Drawable object.
303  */
304  virtual void addLight(OdGsUpdateContext& ctx, const OdGiDrawable* pDrawable);
305  /* \details
306  Removes information about the light added through addLight method.
307  \param pOwner [in] gsNode of the owner entity.
308  \param nVpId [in] Optional Viewport ID.
309  */
310  virtual void removeLights(OdGsNode *pOwner, OdUInt32 nVpId = 0xFFFFFFFF);
311 
316  virtual void removeChild(OdGsNode* pNode);
317 
318  void update(OdGsUpdateContext& ctx, OdGsContainerNode* pParent, OdSiSpatialIndex* pParentIndex);
319 
320  void updateVisible( OdGsViewImpl* pViewImpl );
321 
322  void display(OdGsDisplayContext& ctx);
323 
328  OdSiSpatialIndex& spatialIndex(OdUInt32 nVpId);
333  const OdSiSpatialIndex& spatialIndex(OdUInt32 nVpId) const;
334 
339 
344 
349  bool extents(OdGeExtents3d& extents) const;
350 
355  virtual bool extents(const OdGsView* pView, OdGeExtents3d& ext) const;
356 
361 
362  bool checkWorkset() const;
363  void setCheckWorkset(bool bVal);
364 
365  virtual bool updateEntityList(OdGsUpdateContext& ctx);
366 
367  virtual void updateEntities(OdGsUpdateContext& ctx);
368 
370 
378  bool highlightSubnodes(OdUInt32 nSubnodes, bool bHighlight, bool bAll);
379 
380  void destroy();
381 
383 
388  inline const OdGsUpdateExtents& realExtents(OdUInt32 nVpId) const;
389 
396  inline void setRealExtents(OdUInt32 nVpId, const OdGsUpdateExtents& ext);
397 
398  inline void addViewRef(OdUInt32 nVpId);
399  inline void removeViewRef(OdUInt32 nVpId);
400  inline const ViewRefs& viewRefs() const;
401 
402  inline const StockProps& stock() const;
403  void makeStock();
404  void releaseStock();
406 
407  bool saveNodeState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer = NULL) const;
408  bool loadNodeState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer = NULL);
410 
411  bool safeEntityUpdate(OdGsEntityNode* pEntity, OdGsUpdateContext& ctx, OdSiSpatialIndex* pSpatialIndex);
412  void addEntProps(const OdGsUpdateContext& ctx);
413  bool doMTUpdate(OdGsUpdateContext& ctx);
414  void doSTUpdate(OdGsUpdateContext& ctx);
415 
419  void removeErased();
420 
425  inline int numberOfChildren(OdUInt32 nVpId) const;
426  inline OdUInt32 numberOfChildrenST(OdUInt32 nVpId) const;
427  inline OdUInt32 numberOfChildrenErased(OdUInt32 nVpId) const;
428 protected:
431  OdUInt32Vector m_vpAwareFlags; //this memory is never shared, no need in OdArray with refcounter on buffer
435 public:
436  void addContentToUpdateManager( OdUInt32 viewportId, OdGsUpdateManager* pManager, const UpdateManagerContext& context );
437 };
438 
439 inline OdGsContainerNode::VpData *OdGsContainerNode::getVpData(OdUInt32 nVpId, bool bCreateIfNotFound) const
440 {
441  if (!GETBIT(m_flags, kVpDepCache))
442  return m_shareableData;
443  VpData *pVpData = (m_vpData.size() > nVpId) ? m_vpData[nVpId].get() : NULL;
444  if (!pVpData && bCreateIfNotFound)
445  return makeVpData(nVpId);
446  return pVpData;
447 }
448 
449 inline OdUInt32 OdGsContainerNode::vpDataId(const VpData *pVpData) const
450 {
451  if (GETBIT(m_flags, kVpDepCache))
452  {
453  const OdUInt32 nVpData = m_vpData.size();
454  const VpDataPtr *pVpDataPtr = m_vpData.getPtr();
455  for (OdUInt32 nVpId = 0; nVpId < nVpData; nVpId++)
456  {
457  if (pVpDataPtr[nVpId].get() == pVpData)
458  return nVpId;
459  }
460  }
461  return 0;
462 }
463 
464 inline bool OdGsContainerNode::hasVpData(OdUInt32 nVpId) const
465 {
466  if (!GETBIT(m_flags, kVpDepCache))
467  return true;
468  return ((m_vpData.size() > nVpId) && !m_vpData.getAt(nVpId).isNull());
469 }
470 
472 {
473  if (!GETBIT(m_flags, kVpDepCache))
474  return 1;
475  return m_vpData.size();
476 }
477 
479 {
480  return GETBIT(m_flags, kVpDepCache);
481 }
482 
484 {
485  if (!isVpDepCache())
487  const VpData *pVpData = getVpData(nVpId, false);
488  if (pVpData)
489  return GETBIT(pVpData->m_flags, kEntityListValid);
490  return false;
491 }
492 
494 {
496 }
497 
498 inline bool OdGsContainerNode::isEmpty() const
499 {
500  const OdUInt32 nVpData = numVpData();
501  for (OdUInt32 nView = 0; nView < nVpData; nView++)
502  {
503  const VpData *pVpData = getVpData(nView, false);
504  if (pVpData && pVpData->m_pFirstEntity)
505  return false;
506  }
507  return true;
508 }
509 
511 {
512  for (OdUInt32 nView = 0; nView < numVpData(); nView++)
513  {
514  if (hasVpData(nView))
516  }
518 }
519 
520 inline void OdGsContainerNode::setEntityListValid(OdUInt32 nVpId, bool bValid)
521 {
522  SETBIT(getVpData(nVpId)->m_flags, kEntityListValid, bValid);
523  if (!bValid || !isVpDepCache())
524  SETBIT(m_flags, kEntityListValid, bValid);
525  else
526  { // Check does all entity lists valid
527  const OdUInt32 nViews = numVpData();
528  bool bAllListsValid = true;
529  for (OdUInt32 nView = 0; nView < nViews; nView++)
530  {
531  const VpData *pVpData = getVpData(nView, false);
532  if (pVpData && !GETBIT(pVpData->m_flags, VpData::kEntityListValid))
533  {
534  bAllListsValid = false;
535  break;
536  }
537  }
538  SETBIT(m_flags, kEntityListValid, bAllListsValid);
539  }
540 }
541 
543 {
544  return *getVpData(nVpId)->m_pSpIndex.get();
545 }
546 
548 {
549  return *getVpData(nVpId)->m_pSpIndex.get();
550 }
551 
553 {
554  VpData *pVpData = getVpData(nVpId, false);
555  if (!pVpData)
556  return NULL;
557  return pVpData->m_pFirstEntity;
558 }
559 
561 {
562  VpData *pVpData = getVpData(nVpId, false);
563  if (!pVpData)
564  return NULL;
565  return pVpData->m_pFirstEntity;
566 }
567 
569 {
570  VpData *pVpData = getVpData(nVpId, false);
571  if (!pVpData)
572  return NULL;
573  return pVpData->m_pLastEntity;
574 }
575 
577 {
578  VpData *pVpData = getVpData(nVpId, false);
579  if (!pVpData)
580  return NULL;
581  return pVpData->m_pLastEntity;
582 }
583 
585 {
586  return getVpData(nVpId)->m_lightPtrs;
587 }
588 
590 {
591  return getVpData(nVpId)->m_lightPtrs;
592 }
593 
595 {
596  if(m_vpAwareFlags.size()>nVpID)
597  return !GETBIT(m_vpAwareFlags[nVpID], kChildrenNotUpToDate);
598  return false;
599 }
600 
601 inline void OdGsContainerNode::setChildrenUpToDate(bool bValid, const OdUInt32* nVpID)
602 {
603  if(nVpID)
604  {
606  if(n <= *nVpID)
607  m_vpAwareFlags.insert(m_vpAwareFlags.end(), (*nVpID)+1-n, 0xFFFFFFFF);
608  SETBIT(m_vpAwareFlags[*nVpID], kChildrenNotUpToDate, !bValid);
609  }
610  else
611  {
612  ODA_ASSERT(!bValid);
613  for(OdUInt32 i = 0; i < m_vpAwareFlags.size(); ++i)
615  }
616 }
617 
619 {
620  if(m_vpAwareFlags.size()>nVpID)
621  return m_vpAwareFlags[nVpID] & ~kChildrenNotUpToDate;
622  return 0xFFFFFFFF;
623 }
624 
626 {
627  flags &= ~kChildrenNotUpToDate;
629  if(n <= nVpID)
630  {
631  m_vpAwareFlags.insert(m_vpAwareFlags.end(), nVpID+1-n, 0xFFFFFFFF);
632  m_vpAwareFlags[nVpID] = flags;
633  }
634  else
635  {
636  m_vpAwareFlags[nVpID] = ((m_vpAwareFlags[nVpID] & kChildrenNotUpToDate) | flags);
637  }
638 }
639 
640 inline bool OdGsContainerNode::needRegen(OdUInt32 nVpID) const
641 {
642  if(!childrenUpToDate(nVpID))
643  return true;
644 
645  OdUInt32 nAF = awareFlags(nVpID);
646  return ( nAF == 0xFFFFFFFF || ( baseModel()->viewChanges(nVpID) & nAF) != 0 );
647 }
648 
650 {
651  return GETBIT(m_flags, kCheckWorkset);
652 }
653 
655 {
656  SETBIT(m_flags, kCheckWorkset, bVal);
657 }
658 
660 {
661  if(m_vpAwareFlags.size()>nVpID)
662  return GETBIT(m_vpAwareFlags[nVpID], kEntityRegenDraw);
663  return false;
664 }
665 
667 {
669  if(n <= nVpID)
670  m_vpAwareFlags.insert(m_vpAwareFlags.end(), nVpID+1-n, 0xFFFFFFFF);
671  SETBIT(m_vpAwareFlags[nVpID], kEntityRegenDraw, bVal);
672 }
673 
675 {
676  VpData *pVpData = getVpData(nVpId, false);
677  if (!pVpData)
679  return getVpData(nVpId)->m_realExtents;
680 }
681 
683 {
684  VpData *pVpData = getVpData(nVpId);
685  pVpData->m_realExtents = ext;
686 }
687 
689 {
690  m_viewRefs.add(nVpId);
691 }
692 
694 {
695  m_viewRefs.remove(nVpId);
696 }
697 
699 {
700  return m_viewRefs;
701 }
702 
704 {
705  return m_stock;
706 }
707 
709 {
710  return getVpData(nVpId)->m_nChild;
711 }
712 
714 {
715  return getVpData(nVpId)->m_nChildSingleThreaded;
716 }
717 
719 {
720  return getVpData(nVpId)->m_nChildErased;
721 }
722 
723 #include "TD_PackPop.h"
724 
725 #endif // __OD_GS_CONTAINER_NODE__
GETBIT
#define GETBIT(flags, bit)
Definition: OdaDefs.h:498
kEntityRegenDraw
@ kEntityRegenDraw
Definition: GsViewPropsDef.h:47
OdGsContainerNode::viewRefs
const ViewRefs & viewRefs() const
Definition: GsContainerNode.h:698
OdSiSpatialIndex
Definition: SiSpatialIndex.h:118
OdGsContainerNode::checkWorkset
bool checkWorkset() const
Definition: GsContainerNode.h:649
OdGsContainerNode::propagateLayerChangesStock
void propagateLayerChangesStock()
OdGsContainerNode::VpData::m_pSpIndex
OdSiSpatialIndexPtr m_pSpIndex
Definition: GsContainerNode.h:71
NULL
#define NULL
Definition: GsProperties.h:177
OdVector::insert
void insert(iterator before, const_iterator first, const_iterator afterLast)
OdGsContainerNode::VpDataPtr
OdSmartPtr< VpData > VpDataPtr
Definition: GsContainerNode.h:89
OdGsContainerNode
Definition: GsContainerNode.h:47
OdGsContainerNode::childrenRegenDraw
bool childrenRegenDraw(OdUInt32 nVpID) const
Definition: GsContainerNode.h:659
OdGsContainerNode::removeErased
void removeErased()
OdGsBaseVectorizer
Definition: GsBaseVectorizer.h:112
OdGsView
Definition: Gs.h:133
OdGsContainerNode::makeStock
void makeStock()
OdVector.h
OdGsContainerNode::addViewRef
void addViewRef(OdUInt32 nVpId)
Definition: GsContainerNode.h:688
OdGsContainerNode::viewportId
OdUInt32 viewportId(const OdGsViewImpl &pView, bool bForceVpId=true) const
OdGsContainerNode::destroySubitems
void destroySubitems()
OdGsContainerNode::isAttached
OdUInt32 isAttached(OdGsEntityNode *pNode) const
OdGsContainerNode::setEntityListsInvalid
void setEntityListsInvalid()
Definition: GsContainerNode.h:510
OdGsContainerNode::needRegen
bool needRegen(OdUInt32 nVpId) const
Definition: GsContainerNode.h:640
OdGsContainerNode::loadVpData
bool loadVpData(OdGsFiler *pFiler, VpData *pVpData)
OdGsContainerNode::addContentToUpdateManager
void addContentToUpdateManager(OdUInt32 viewportId, OdGsUpdateManager *pManager, const UpdateManagerContext &context)
OdRxObject
Definition: RxObject.h:564
OdGsContainerNode::doSTUpdate
void doSTUpdate(OdGsUpdateContext &ctx)
OdGsContainerNode::extents
bool extents(OdGeExtents3d &extents) const
SETBIT
#define SETBIT(flags, bit, value)
Definition: OdaDefs.h:497
OdGsContainerNode::kCheckWorkset
@ kCheckWorkset
Definition: GsContainerNode.h:52
kContainerNode
@ kContainerNode
Definition: GsBaseModel.h:70
OdGsNode
Definition: GsNode.h:60
ViewRefs::add
void add(OdUInt32 viewportId)
Definition: GsViewProps.h:88
OdGsContainerNode::addChildNode
void addChildNode(OdUInt32 nVpId, OdGsEntityNode *pEnt)
OdGsContainerNode::saveNodeState
bool saveNodeState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer=NULL) const
OdGsContainerNode::m_viewRefs
ViewRefs m_viewRefs
Definition: GsContainerNode.h:432
OdVector::getAt
const T & getAt(size_type index) const
Definition: OdVector.h:1027
SiSpatialIndex.h
OdGsContainerNode::VpData::createObject
static OdSmartPtr< VpData > createObject(bool bShareable=false)
TD_PackPop.h
OdGsUpdateManager
Definition: GsUpdateManager.h:44
OdGsContainerNode::makeVpData
VpData * makeVpData(OdUInt32 nVpId) const
OdGsContainerNode::removeLights
virtual void removeLights(OdGsNode *pOwner, OdUInt32 nVpId=0xFFFFFFFF)
OdGsContainerNode::safeEntityUpdate
bool safeEntityUpdate(OdGsEntityNode *pEntity, OdGsUpdateContext &ctx, OdSiSpatialIndex *pSpatialIndex)
OdGsContainerNode::setChildrenRegenDraw
void setChildrenRegenDraw(bool bVal, OdUInt32 nVpID)
Definition: GsContainerNode.h:666
OdGsContainerNode::lightNodesList
OdList< OdGsLightNode * > & lightNodesList(OdUInt32 nVpId)
Definition: GsContainerNode.h:584
OdGsContainerNode::kVpDepCache
@ kVpDepCache
Definition: GsContainerNode.h:54
OdGsUpdateExtents::kInvalid
static GS_STATIC_EXPORT const OdGsUpdateExtents kInvalid
Definition: GsDrawableHolder.h:42
OdGsContainerNode::displayEntityList
virtual void displayEntityList(OdGsDisplayContext &ctx)
OdUInt32
unsigned int OdUInt32
Definition: OdPlatformSettings.h:783
OdGsContainerNode::removeViewRef
void removeViewRef(OdUInt32 nVpId)
Definition: GsContainerNode.h:693
OdGsContainerNode::kEntityListValid
@ kEntityListValid
Definition: GsContainerNode.h:51
OdGsContainerNode::display
void display(OdGsDisplayContext &ctx)
mask
GLenum GLint GLuint mask
Definition: gles2_ext.h:262
OdGsContainerNode::addChild
virtual void addChild(const OdGiDrawable *pDrawable, OdGsViewImpl *pView, bool unerased=false)
OdGsBlockNode
Definition: GsBlockNode.h:124
OdVector::getPtr
const T * getPtr() const
Definition: OdVector.h:976
OdGsContainerNode::extents
virtual bool extents(const OdGsView *pView, OdGeExtents3d &ext) const
OdGsContainerNode::vpDataId
OdUInt32 vpDataId(const VpData *pVpData) const
Definition: GsContainerNode.h:449
OdGsContainerNode::highlightSubnodes
bool highlightSubnodes(OdUInt32 nSubnodes, bool bHighlight, bool bAll)
OdGsContainerNode::VpData::m_lightPtrs
LightsList m_lightPtrs
Definition: GsContainerNode.h:70
ENodeType
ENodeType
Definition: GsBaseModel.h:65
OdGsContainerNode::numVpData
OdUInt32 numVpData() const
Definition: GsContainerNode.h:471
OdGsContainerNode::VpData::m_pLastEntity
OdGsEntityNode * m_pLastEntity
Definition: GsContainerNode.h:69
OdGsContainerNode::setRealExtents
void setRealExtents(OdUInt32 nVpId, const OdGsUpdateExtents &ext)
Definition: GsContainerNode.h:682
OdGsContainerNode::VpData::m_flags
OdUInt32 m_flags
Definition: GsContainerNode.h:78
GsNode.h
ThreadsCounter.h
OdSmartPtr< OdSiSpatialIndex >
SETBIT_0
#define SETBIT_0(flags, bit)
Definition: OdaDefs.h:500
OdGsContainerNode::getVpData
VpData * getVpData(OdUInt32 nVpId, bool bCreateIfNotFound=true) const
Definition: GsContainerNode.h:439
OdGsNode::kLastFlag
@ kLastFlag
Definition: GsNode.h:84
OdGsContainerNode::VpData::m_nChildErased
OdUInt32 m_nChildErased
Definition: GsContainerNode.h:74
OdGsContainerNode::VpData::m_nChildSingleThreaded
OdUInt32 m_nChildSingleThreaded
Definition: GsContainerNode.h:75
OdGsContainerNode::lastEntityNode
OdGsEntityNode * lastEntityNode(OdUInt32 nVpId)
Definition: GsContainerNode.h:568
OdGsContainerNode::childrenUpToDate
bool childrenUpToDate(OdUInt32 nVpId) const
Definition: GsContainerNode.h:594
OdGsContainerNode::OdGsContainerNode
OdGsContainerNode(OdGsBaseModel *pModel, const OdGiDrawable *pUnderlyingDrawable, bool bSetGsNode=true)
OdGsContainerNode::m_lightsMutex
OdMutexPtr m_lightsMutex
Definition: GsContainerNode.h:434
OdGsContainerNode::numberOfChildren
int numberOfChildren(OdUInt32 nVpId) const
Definition: GsContainerNode.h:708
OdGsContainerNode::releaseStock
void releaseStock()
OdGsContainerNode::VpData::m_pClearSpatialQueryStateFirst
OdGsEntityNode * m_pClearSpatialQueryStateFirst
Definition: GsContainerNode.h:72
OdGsContainerNode::doMTUpdate
bool doMTUpdate(OdGsUpdateContext &ctx)
OdGiDrawable
Definition: GiDrawable.h:49
OdGsContainerNode::setCheckWorkset
void setCheckWorkset(bool bVal)
Definition: GsContainerNode.h:654
OdGsContainerNode::~OdGsContainerNode
~OdGsContainerNode()
OdGsContainerNode::entityListValid
bool entityListValid(OdUInt32 nVpId) const
Definition: GsContainerNode.h:483
OdGsViewImpl
Definition: GsViewImpl.h:58
OdSmartPtr::get
const T * get() const
Definition: SmartPtr.h:326
OdGsContainerNode::updateVisible
void updateVisible(OdGsViewImpl *pViewImpl)
OdGsContainerNode::VpDataArray
OdVector< VpDataPtr > VpDataArray
Definition: GsContainerNode.h:90
OdGsContainerNode::m_stock
StockProps m_stock
Definition: GsContainerNode.h:433
OdVector< VpDataPtr >
OdGsContainerNode::m_vpData
VpDataArray m_vpData
Definition: GsContainerNode.h:429
OdGsContainerNode::setEntityListValid
void setEntityListValid(OdUInt32 nVpId, bool entityListValid)
Definition: GsContainerNode.h:520
OdGsContainerNode::updateEntityList
virtual bool updateEntityList(OdGsUpdateContext &ctx)
GsDrawableHolder.h
TD_PackPush.h
OdArray< OdUInt32, OdMemoryAllocator< OdUInt32 > >::size_type
A::size_type size_type
Definition: OdArray.h:593
OdGsContainerNode::VpData::VpData
VpData()
OdGsContainerNode::addLight
virtual void addLight(OdGsUpdateContext &ctx, const OdGiDrawable *pDrawable)
OdGsContainerNode::destroy
void destroy()
OdGsContainerNode::isVpDepCache
bool isVpDepCache() const
Definition: GsContainerNode.h:478
OdGsContainerNode::update
void update(OdGsUpdateContext &ctx, OdGsContainerNode *pParent, OdSiSpatialIndex *pParentIndex)
OdGsContainerNode::setChildrenUpToDate
void setChildrenUpToDate(bool childrenUpToDate, const OdUInt32 *nVpID=NULL)
Definition: GsContainerNode.h:601
OdGsContainerNode::realExtents
const OdGsUpdateExtents & realExtents(OdUInt32 nVpId) const
Definition: GsContainerNode.h:674
OdGsContainerNode::m_shareableData
VpDataPtr m_shareableData
Definition: GsContainerNode.h:430
OdGsContainerNode::saveVpData
bool saveVpData(OdGsFiler *pFiler, const VpData *pVpData) const
OdGsContainerNode::findCompatibleCache
bool findCompatibleCache(OdGsViewImpl &keyView)
OdGsContainerNode::hasVpData
bool hasVpData(OdUInt32 nVpId) const
Definition: GsContainerNode.h:464
OdGsContainerNode::postprocessNodeLoading
bool postprocessNodeLoading(OdGsFiler *pFiler)
OdGsBaseModel
Definition: GsBaseModel.h:118
OdGsContainerNode::m_vpAwareFlags
OdUInt32Vector m_vpAwareFlags
Definition: GsContainerNode.h:431
OdGsContainerNode::numberOfChildrenST
OdUInt32 numberOfChildrenST(OdUInt32 nVpId) const
Definition: GsContainerNode.h:713
ODA_ASSERT
#define ODA_ASSERT(exp)
Definition: DebugStuff.h:49
OdGsContainerNode::awareFlags
OdUInt32 awareFlags(OdUInt32 viewportId) const
Definition: GsContainerNode.h:618
OdGeExtents3d
Definition: GeExtents3d.h:45
GS_TOOLKIT_EXPORT
#define GS_TOOLKIT_EXPORT
Definition: GsExport.h:37
OdGsContainerNode::turnOnLights
void turnOnLights(OdGsBaseVectorizer &view)
StockProps
Definition: GsViewProps.h:181
OdGsContainerNode::VpData::m_pFirstEntity
OdGsEntityNode * m_pFirstEntity
Definition: GsContainerNode.h:68
OdGsContainerNode::stock
const StockProps & stock() const
Definition: GsContainerNode.h:703
OdGsContainerNode::removeChild
virtual void removeChild(OdGsNode *pNode)
OdGsContainerNode::setAwareFlags
void setAwareFlags(OdUInt32 viewportId, OdUInt32 flags)
Definition: GsContainerNode.h:625
OdGsNode::UpdateManagerContext
Definition: GsNode.h:222
OdGsContainerNode::kChildrenNotUpToDate
@ kChildrenNotUpToDate
Definition: GsContainerNode.h:60
OdGsContainerNode::VpData
Definition: GsContainerNode.h:67
OdGsContainerNode::nodeType
virtual ENodeType nodeType() const
Definition: GsContainerNode.h:130
OdGsNode::m_flags
OdUInt32 m_flags
Definition: GsNode.h:87
OdGsContainerNode::LightsList
OdList< OdGsLightNode * > LightsList
Definition: GsContainerNode.h:64
OdGsContainerNode::ODRX_DECLARE_MEMBERS
ODRX_DECLARE_MEMBERS(OdGsContainerNode)
OdGsUpdateExtents
Definition: GsDrawableHolder.h:37
OdGsContainerNode::propagateInvalidVpFlag
void propagateInvalidVpFlag()
OdGsContainerNode::VpData::m_nChildHighlighted
OdUInt32 m_nChildHighlighted
Definition: GsContainerNode.h:76
OdGsContainerNode::numberOfChildrenErased
OdUInt32 numberOfChildrenErased(OdUInt32 nVpId) const
Definition: GsContainerNode.h:718
OdVector::size
size_type size() const
Definition: OdVector.h:866
OdGsLightNode
Definition: GsLightNode.h:40
OdGsContainerNode::VpData::kEntityListValid
@ kEntityListValid
Definition: GsContainerNode.h:82
OdGsContainerNode::loadNodeState
bool loadNodeState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer=NULL)
OdMutexPtr
Definition: ThreadsCounter.h:38
OdGsContainerNode::currViewChanges
OdUInt32 currViewChanges() const
ViewRefs
Definition: GsViewProps.h:84
OdGsFiler
Definition: GsFiler.h:63
OdList< OdGsLightNode * >
ViewRefs::remove
void remove(OdUInt32 viewportId)
Definition: GsViewProps.h:103
OdGsContainerNode::VpData::m_realExtents
OdGsUpdateExtents m_realExtents
Definition: GsContainerNode.h:77
OdGsContainerNode::VpData::m_nChild
int m_nChild
Definition: GsContainerNode.h:73
OdGsContainerNode::invalidate
void invalidate(OdGsContainerNode *pParent, OdGsViewImpl *pView, OdUInt32 mask)
OdGsContainerNode::allEntityListsValid
bool allEntityListsValid() const
Definition: GsContainerNode.h:493
OdGsContainerNode::addEntProps
void addEntProps(const OdGsUpdateContext &ctx)
OdGsContainerNode::propagateLayerChanges
virtual void propagateLayerChanges(OdGsViewImpl &view)
OdGsContainerNode::updateEntities
virtual void updateEntities(OdGsUpdateContext &ctx)
OdGsContainerNode::firstEntityNode
OdGsEntityNode * firstEntityNode(OdUInt32 nVpId)
Definition: GsContainerNode.h:552
OdGsContainerNode::spatialIndex
OdSiSpatialIndex & spatialIndex(OdUInt32 nVpId)
Definition: GsContainerNode.h:542
OdGsEntityNode
Definition: GsEntityNode.h:103
OdGsContainerNode::isEmpty
bool isEmpty() const
Definition: GsContainerNode.h:498
OdVector::end
iterator end()
Definition: OdVector.h:671
OdGsNode::baseModel
OdGsBaseModel * baseModel() const
Definition: GsNode.h:278