CFx SDK Documentation  2020SP3
GsEntityNode.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_ENTITY_NODE__
25 #define __OD_GS_ENTITY_NODE__
26 
27 #include "Gs/GsNode.h"
28 #include "Si/SiSpatialIndex.h"
29 #include "OdArrayMemAlloc.h"
30 #include "Gs/GsHighlightData.h"
31 #include "Gs/GsUpdateManager.h"
32 
33 class OdGsBaseVectorizer;
35 
36 #include "TD_PackPush.h"
37 
41 {
45 
47  : m_pLayer(0)
48  , m_pGsMetafile(0)
49  , m_pNext(0)
50  {
51  }
52 
54  {
55  m_pLayer = c.m_pLayer;
57  m_pNext = c.m_pNext;
58  }
59 
60  void clear()
61  {
62  m_pLayer = NULL;
64  m_pNext = NULL;
65  }
66 
68  {
69  OdGsGeomPortion* pPortion = m_pNext;
70  while (pPortion)
71  {
72  OdGsGeomPortion* pNextPortion = pPortion->m_pNext;
73  delete pPortion;
74  pPortion = pNextPortion;
75  }
76  }
77 
78  bool isEmptyPortion() const { return (m_pLayer == NULL) && m_pGsMetafile.isNull(); }
80  {
81  while (m_pNext && m_pNext->isEmptyPortion())
82  {
83  OdGsGeomPortion* pNextPortion = m_pNext->m_pNext;
84  delete m_pNext;
85  m_pNext = pNextPortion;
86  }
87  if (m_pNext)
89  }
90 };
91 
93 class OdGsBaseContext;
94 
103 {
104  OdGsEntityNode* m_pNextEntity;
105 
106  struct NextEntityEntry
107  {
108  OdGsEntityNode* m_pNextEntity;
109  OdUInt32 m_entFlags;
110  };
111  void allocNextEntityArray(OdUInt32 nMaxVpId);
112  inline NextEntityEntry *firstEntEntry() { return reinterpret_cast<NextEntityEntry*>(m_pNextEntity); }
113  inline const NextEntityEntry *firstEntEntry() const { return reinterpret_cast<const NextEntityEntry*>(m_pNextEntity); }
114  inline void checkEntEntry(OdUInt32 nVpId) const { if ((OdUInt32)OdPtrToInt32(firstEntEntry()->m_pNextEntity) <= nVpId) throw OdError(eInvalidIndex); }
115  inline NextEntityEntry *nextEntEntry(OdUInt32 nVpId) { checkEntEntry(nVpId); return reinterpret_cast<NextEntityEntry*>(m_pNextEntity) + (nVpId + 1); }
116  inline const NextEntityEntry *nextEntEntry(OdUInt32 nVpId) const { checkEntEntry(nVpId); return reinterpret_cast<const NextEntityEntry*>(m_pNextEntity) + (nVpId + 1); }
117 protected:
119 
120 public:
122  {
123  public:
124  void* operator new(size_t);
125  void operator delete(void *);
126 
129 
130  bool play(OdGsBaseVectorizer& view, EMetafilePlayMode eMode, OdGsEntityNode& node, OdGsBaseContext* ctx = NULL);
131  bool playNested(const OdGsView& view, OdGsEntityNode& node, OdGsBaseContext& ctx);
133  bool layersChanged(OdUInt32 nVpId) const;
135  bool containsFrozenLayers() const;
136  bool containsAnyOfLayers( OdDbStub*const* layers, OdUInt32 count ) const;
137 
138  bool isEmpty() const;
139  bool isAllLayersOff( OdUInt32 viewportId ) const;
140 
144  };
145  friend class Metafile;
146 
151 
153  {
154  protected:
157  public:
159  {
160  OdGsBaseVectorizeDevice* m_pDevice;
161  public:
163  {
164  m_pDevice = NULL;
165  };
167  {
168  m_pDevice = device;
169  }
170  OdGsBaseVectorizeDevice* device() { return m_pDevice; }
171  };
172 
173  MetafileEx() : Metafile(), OdGsUpdateManager::OdGsUpdateManagerElement()
174  {
175  m_pDeviceRef = NULL;
176  }
178  void setDevice( OdRxObjectPtr dev ) { m_pDeviceRef = dev; }
179  OdRxObjectPtr device() { return m_pDeviceRef; }
180 
181  void setMetafileLength( OdUInt64 l ) { m_nLength = l; }
182  OdUInt64 metafileLength() const { return m_nLength; }
183  };
184 
185  friend class OdGsModuleObject;
187 public:
188  static void* Alloc(size_t nBytes) { return OdGsNode::s_aAlloc.getAt(1)->alloc((int)nBytes); }
189  static void Free(void* pMemBlock) { OdGsNode::s_aAlloc.getAt(1)->release(pMemBlock); }
190  static void* Realloc(void* pMemBlock, size_t newSize, size_t)
191  {
192  if(pMemBlock)
193  OdGsNode::s_aAlloc.getAt(1)->release(pMemBlock);
194  return OdGsNode::s_aAlloc.getAt(1)->alloc((int)newSize);
195  }
199  class MetafilePtrArray: public OdArrayMemAlloc<MetafilePtr, OdObjectsAllocator<MetafilePtr>, OdGsEntityNode>
200  {
201  public:
203  };
204 
206  {
207  public:
208  enum
209  {
210  kArray = 1,
211  kVpDependent = 2,
212  kAwareFlagsRegenType = 4,
213 
214  kRegenTypeStandard = 8,
215  kRegenTypeHideOrShade = 16,
216  kRegenTypeRenderCommand = 32,
217  kRegenTypeMask = kRegenTypeStandard | kRegenTypeHideOrShade | kRegenTypeRenderCommand,
218 
219  kDependentGeometry = 64, // Marks PaperSpace entities
220  kLayerDependent = 128 // Marks compound entities w/o blocks cache (#15036)
221  };
222  MetafileHolder(): m_flags(0)
223  {
224  *reinterpret_cast<Metafile**>(rawPtr()) = 0;
225  }
226  MetafileHolder(const MetafileHolder& c): m_flags(0)
227  {
228  *reinterpret_cast<Metafile**>(rawPtr()) = 0;
229  if(!c.isValid())
230  return;
231  if(c.isArray())
232  {
233  allocateArray();
234  getArray() = const_cast<MetafileHolder&>(c).getArray();
235  }
236  else
237  {
238  *reinterpret_cast<Metafile**>(rawPtr()) = const_cast<MetafileHolder&>(c).get();
239  get()->addRef();
240  }
241  m_flags = c.m_flags;
242  }
244  {
245  destroy();
246  }
247 
248  bool isValid() const { return *((const Metafile**)rawPtr()) != NULL; }
249  bool isArray() const { return GETBIT(flags(), kArray); }
250 
251  bool isVpDependent() const { return GETBIT(flags(), kVpDependent); }
252  void setVpDependent(bool bOn)
253  {
254  SETBIT(m_flags, kVpDependent, bOn);
255  if(bOn)
256  {
257  SETBIT(m_flags, kRegenTypeMask, false);
258  setAwareFlagsRegenType(false);
259  }
260  }
261 
262  bool isAwareFlagsRegenType() const { return GETBIT(flags(), kAwareFlagsRegenType); }
263  bool isRegenTypeDependent() const { return GETBIT(flags(), kRegenTypeMask); }
264 
265  void setDependentGeometry(bool bSet) { SETBIT(m_flags, kDependentGeometry, bSet); }
266  bool isDependentGeometry() const { return GETBIT(flags(), kDependentGeometry); }
267 
268  void setLayerDependent(bool bSet) { SETBIT(m_flags, kLayerDependent, bSet); }
269  bool isLayerDependent() const { return GETBIT(m_flags, kLayerDependent); }
270 
272  {
273  ODA_ASSERT(!isArray());
274  return *reinterpret_cast<Metafile**>(rawPtr());
275  }
276  const Metafile* get() const
277  {
278  ODA_ASSERT(!isArray());
279  return *reinterpret_cast<Metafile**>(const_cast<MetafileHolder*>(this)->rawPtr());
280  }
282  {
283  ODA_ASSERT(isArray());
284  return *reinterpret_cast<MetafilePtrArray*>(rawPtr());
285  }
286  const MetafilePtrArray& getArray() const
287  {
288  ODA_ASSERT(isArray());
289  return *reinterpret_cast<const MetafilePtrArray*>(rawPtr());
290  }
291  void set(Metafile* pMf)
292  {
293  destroy();
294  *reinterpret_cast<Metafile**>(rawPtr()) = pMf;
295  if(pMf)
296  pMf->addRef();
297  }
298 
299  void setAtRegenType(Metafile* pMf, OdGiRegenType eRegenType)
300  {
301  int index = eRegenType - kOdGiStandardDisplay;
302  if(isArray())
303  {
304  ODA_ASSERT(isRegenTypeDependent());
305  setAt(index, pMf);
306  }
307  else if(isRegenTypeDependent())
308  {
309  if(GETBIT(m_flags , kRegenTypeStandard << index))
310  {
311  set(pMf);
312  if(!pMf)
313  setAwareFlagsRegenType(false);
314  return;
315  }
316  allocateArray();
317  setAt(index, pMf);
318  }
319  else
320  {
321  set(pMf);
322  }
323  if(pMf)
324  {
325  m_flags |= kRegenTypeStandard << index;
326  if(pMf->m_nAwareFlags & kVpRegenType)
327  setAwareFlagsRegenType(true);
328  }
329  }
330 
332  {
333  ODA_ASSERT(isRegenTypeDependent());
334  ODA_ASSERT(!isArray());
335  if(GETBIT(flags(), kRegenTypeStandard))
336  eRegenType = kOdGiStandardDisplay;
337  else if(GETBIT(flags(), kRegenTypeHideOrShade))
338  eRegenType = kOdGiHideOrShadeCommand;
339  else
340  eRegenType = kOdGiRenderCommand;
341  return get();
342  }
343 
345 
346  void destroy();
347  int checkValid();
348 
349  void moveTo(MetafileHolder& c, int& n);
351  {
352  if(isArray())
353  {
354  if(isVpDependent())
355  return getArray().at(nVpID)->m_nAwareFlags;
356  return kVpRenderMode | (isAwareFlagsRegenType() ? kVpRegenType : 0);
357  }
358  return isValid() ? get()->m_nAwareFlags : 0;
359  }
360 
361  void setAt(int n, Metafile* pMf)
362  {
363  ODA_ASSERT(isArray());
364  if(getArray().size() <= OdUInt32(n))
365  getArray().resize(n + 1);
366  getArray()[n] = pMf;
367  }
368 
369  protected:
370  int flags() const { return (int)m_flags; }
371  void* rawPtr() { return &m_data; }
372  const void* rawPtr() const { return &m_data; }
373  bool isValidMf(const Metafile& mf) const;
374  void setAwareFlagsRegenType(bool bOn) { SETBIT(m_flags, kAwareFlagsRegenType, bOn); }
375 
376  protected:
378 #ifdef TD_STRICT_ALIGNMENT
379  OdIntPtr m_data[odmax(sizeof(MetafilePtrArray),sizeof(OdRxObject*)) / sizeof(OdIntPtr)];
380 #else
381  OdUInt8 m_data[odmax(sizeof(MetafilePtrArray),sizeof(OdRxObject*))];
382 #endif
383  };
384 
385 protected:
387 
388  virtual void propagateLayerChanges(OdGsViewImpl& view);
389 protected:
393  MetafilePtrArray& metafileArray();
394 
399  const MetafilePtrArray& metafileArray() const;
400 
404  OdGsEntityNode::MetafilePtr metafile() const;
405 
407 public:
409 
414  OdGsEntityNode::MetafilePtr metafileAt(int metafileIndex) const;
415 
420  void setMetafile(OdGsEntityNode::Metafile* metafiles);
421 
427  void setMetafileAt(int metafileIndex, OdGsEntityNode::Metafile* pMetafile);
428 
433  void convertToViewportDependent(const OdGsUpdateContext& ctx);
434 
439  {
440  kSkipCheckCompatible = 0, // Avoid check of viewport compatibility.
441  kCheckViewChanges = 1, // Check for view changes.
442  kCheckCompatibleView = 2, // Avoid check for viewp changes, but find compatible metafile for other viewport.
443  kFindCompatible = 3 // Check for view changes and try to find compatible for other viewports.
444  };
445 
452  OdGsEntityNode::Metafile* metafile(const OdGsViewImpl& view, OdGsUpdateContext* ctx,
453  MetafileCompatibilityLevel findCompatibleLevel = kFindCompatible);
459  void setMetafile(OdGsUpdateContext& ctx, OdGsEntityNode::Metafile* metafiles);
460  OdRxObject* findCompatibleCache(const OdGsViewImpl& keyView, OdGsUpdateContext* ctx, OdUInt32 awareMask = 0);
461 protected:
462  // m_flags (don't add new flags here, we already utilized ~30 bits)
463  enum
464  {
465  kHasExtents = OdGsNode::kLastFlag << 1,
466  kSpatiallyIndexed = OdGsNode::kLastFlag << 2,
467  kInWorkset = OdGsNode::kLastFlag << 3,
468  kSingleThreaded = OdGsNode::kLastFlag << 4,
469  kOwned = OdGsNode::kLastFlag << 5,
470  kDrawableRegenDraw = OdGsNode::kLastFlag << 6,
471  kEntityUnerased = OdGsNode::kLastFlag << 7,
473  kExtentsOutOfMS = OdGsNode::kLastFlag << 9,
474  kNonSelectable = OdGsNode::kLastFlag << 10,
475  kSkipSelection = OdGsNode::kLastFlag << 11,
476  kErased = OdGsNode::kLastFlag << 12,
477  kDrawableIsXref = OdGsNode::kLastFlag << 13,
478  kMultilistNextPtr = OdGsNode::kLastFlag << 14,
479  kLastFlag = kMultilistNextPtr
480  };
481  // m_entFlags (add all new flags related to EntityNode here, keep some free space inside m_flags for inherited classes)
482  enum
483  {
484  kLineweightBit1 = (1 << 0), // reserve 8 bits for maximal lineweight
485  kLineweightBit2 = (1 << 1), kLineweightOffset = 0,
486  kLineweightBit3 = (1 << 2),
487  kLineweightBit4 = (1 << 3),
488  kLineweightBit5 = (1 << 4),
489  kLineweightBit6 = (1 << 5),
490  kLineweightBit7 = (1 << 6),
491  kLineweightBit8 = (1 << 7),
492  kLineweightBitMask = kLineweightBit1 | kLineweightBit2 | kLineweightBit3 | kLineweightBit4 | kLineweightBit5 | kLineweightBit6 | kLineweightBit7 | kLineweightBit8,
493  kLightSourceOwner = (1 << 8), // owning at least one light source
494  kRegenOnHighlight = (1 << 9), // cache require regeneration during highlighting state change
495  kMarkedByUpdateManager = (1 << 10),
496  kLastEntFlag = kMarkedByUpdateManager
497  };
498  // m_markToSkipFlags
499  enum
500  {
501  kMarkedToSkipFirst = 0x00000001,
502  kMarkedToSkipLast = kMarkedToSkipFirst << 30,
503  kMarkedToSkipAll = 0x7FFFFFFF
504  };
505 
506 public:
508 
512  OdGsEntityNode(OdGsBaseModel* pModel, const OdGiDrawable* pUnderlyingDrawable, bool bSetGsNode = false);
513 public:
515 
520  void setNextEntity(OdGsEntityNode* pNextEntity);
521 
527  void setNextEntity(OdUInt32 nVpId, OdGsEntityNode* pNextEntity);
532  OdGsEntityNode* nextEntity();
533  OdGsEntityNode* nextEntity(OdUInt32 nVpId);
538  const OdGsEntityNode* nextEntity() const;
539  const OdGsEntityNode* nextEntity(OdUInt32 nVpId) const;
543  OdUInt32 numNextEntity() const;
547  void enableMultipleNextEntities(OdUInt32 nMaxVpId);
548 
549  void update(OdGsUpdateContext& ctx, OdGsContainerNode* pParent,
550  OdSiSpatialIndex* pParentIndex);
551 
552  void updateVisible( OdGsViewImpl* pViewImpl );
553 
554  virtual OdGsEntityNode::MetafilePtr regenMetafile(OdGsUpdateContext &ctx, OdUInt32 vpDepFlags);
555 
574  virtual OdUInt32 awareFlags(OdUInt32 viewportId) const;
575 
576  virtual ENodeType nodeType() const { return kEntityNode; }
577 
578  virtual bool isReference() const { return false; }
579  virtual bool isLight() const { return false; }
580 
581  void display(OdGsDisplayContext& ctx);
582 
584 
586 
587  bool extents(OdGeExtents3d& extents) const;
588 
593  bool spatiallyIndexed() const;
594 
599  bool spatiallyIndexed(OdUInt32 nVpId) const;
600 
606  void setSpatiallyIndexed(bool spatiallyIndexed);
607 
613  void setSpatiallyIndexed(OdUInt32 nVpId, bool spatiallyIndexed);
614 
618  bool owned() const;
619 
624  bool owned(OdUInt32 nVpId) const;
630  void setOwned(bool owned);
631 
637  void setOwned(OdUInt32 nVpId, bool owned);
638 
642  bool markedByUpdateManager() const;
643 
648  void setMarkedByUpdateManager( bool marked );
649 
653  bool hasExtents() const;
654 
655  const OdGeExtents3d& extents() const;
656 
660  virtual bool isEmpty();
661 
665  virtual bool hasFrozenLayers();
666 
671  inline bool markedToSkip(unsigned mask);
672 
678  inline void markToSkip(unsigned mask, bool markToSkip);
679 
680  inline void markToSkipAll();
681 
682  static unsigned markToSkipMask(OdUInt32 threadIndex)
683  {
684  ODA_ASSERT(threadIndex >= 0 && threadIndex < 31);
685  return kMarkedToSkipFirst << threadIndex;
686  }
687 
688  void destroy(){}
689 
690  virtual bool layersChanged(OdGsViewImpl& view) const;
691 
692  bool markedAsNonSelectable() const;
693  void markAsNonSelectable(bool val);
694  bool isMarkedSkipSelection() const;
695  void markSkipSelection(bool val);
696  bool isMarkedErased() const;
697  void markErased(bool val);
698 
699  bool isInWorkset() const;
700  void setInWorkset(bool val);
701 
702  bool isRegenOnDraw() const;
703  void setRegenOnDraw(bool val);
704 
705  bool isSingleThreaded() const;
706  void setSingleThreaded(bool val);
707 
708  virtual void highlight(bool bDoIt, bool bWholeBranch);
709  void setHlBranch(OdGsHlBranch* pBr) { m_hlBranch = pBr; }
710  OdGsHlBranch* hlBranch() { return m_hlBranch; }
711  const OdGsHlBranch* hlBranch() const { return m_hlBranch; }
712 
714 
715  bool extents(const OdGsView* pView, OdGeExtents3d& ext) const;
716  OdDb::LineWeight getMaxLineweightUsed() const;
717  void addMaxLineweightUsed(OdDb::LineWeight lwd);
718  void setMaxLineweightUsed(OdDb::LineWeight lwd);
719 
720  bool entityUnerased() const;
721  void setEntityUnerased(bool flag);
722 
723  bool isInvisible() const;
724 
725  bool isExtentsOutOfModelSpace() const;
726  void setExtentsOutOfModelSpace(bool flag);
727 
728  void resetInvalidVpFlag();
729 
730  void setAsLightSourceOwner(bool bSet);
731  bool isLightSourceOwner() const;
732 
733  bool isRequireRegenOnHighlightChange() const;
734 
735 public:
736  virtual void makeStock();
737  virtual void releaseStock();
739 
740  bool saveNodeState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer = NULL) const;
741  bool loadNodeState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer = NULL);
742 protected:
743  bool findMetafileInStock(OdGsUpdateContext& ctx);
745  const OdGeExtents3d& prevExtents);
746  inline void setExtentsFlags();
747 
748 private:
749  MetafileHolder m_mfStock;
750  volatile int m_markToSkipFlags;
751 protected:
752  // This flags willn't increase memory usage (at least on Win32) since utilize free space in 8 bytes alignment (__alignof(entity_node) == 8).
754 
756 
757 public:
758  void addContentToUpdateManager( OdUInt32 viewportId, OdGsUpdateManager* pManager, const UpdateManagerContext& context );
759 };
760 
765 
766 
768 {
770  throw OdError(eInvalidIndex);
771  m_pNextEntity = pNextEntity;
772 }
773 
774 inline void OdGsEntityNode::setNextEntity(OdUInt32 nVpId, OdGsEntityNode* pNextEntity)
775 {
777  nextEntEntry(nVpId)->m_pNextEntity = pNextEntity;
778  else
779  m_pNextEntity = pNextEntity;
780 }
781 
783 {
784  if (nMaxVpId == 0xFFFFFFFF) nMaxVpId = 0;
785  if ((numNextEntity() <= nMaxVpId) || ((nMaxVpId == 0) && GETBIT(m_flags, kMultilistNextPtr)))
786  allocNextEntityArray(nMaxVpId);
787 }
788 
790 {
792  throw OdError(eInvalidIndex);
793  return m_pNextEntity;
794 }
795 
797 {
799  return nextEntEntry(nVpId)->m_pNextEntity;
800  //if (nVpId > 0) // Normal case, since we can request from non-VpDep container
801  // throw OdError(eInvalidIndex);
802  return m_pNextEntity;
803 }
804 
806 {
808  throw OdError(eInvalidIndex);
809  return m_pNextEntity;
810 }
811 
813 {
815  return nextEntEntry(nVpId)->m_pNextEntity;
816  //if (nVpId > 0) // Normal case, since we can request from non-VpDep container
817  // throw OdError(eInvalidIndex);
818  return m_pNextEntity;
819 }
820 
822 {
824  return (OdUInt32)OdPtrToInt32(firstEntEntry()->m_pNextEntity);
825  return 1;
826 }
827 
828 inline bool OdGsEntityNode::hasExtents() const
829 {
830  return GETBIT(m_flags, kHasExtents);
831 }
832 
834 {
835  return m_extents;
836 }
837 
838 inline bool OdGsEntityNode::markedToSkip(unsigned mask)
839 {
841  //atomic function is required, called in MT mode (display)
842 #ifndef TD_SINGLE_THREAD
843  return (mask & OdInterlockedExchangeAdd(&m_markToSkipFlags, 0)) != 0;
844 #else
845  return GETBIT(m_markToSkipFlags, mask);
846 #endif
847 }
848 
849 inline void OdGsEntityNode::markToSkip(unsigned mask, bool bSkip)
850 {
852  if(markedToSkip(mask) != bSkip)
853  {
854  //atomic function is required, called in MT mode (display)
855 #ifndef TD_SINGLE_THREAD
856  if(bSkip)
857  OdInterlockedExchangeAdd(&m_markToSkipFlags, mask);
858  else
859  OdInterlockedExchangeAdd(&m_markToSkipFlags, -(int)mask);
860 #else
861  SETBIT(m_markToSkipFlags, mask, bSkip);
862 #endif
863  }
864 }
865 
867 {
868  //atomic function is NOT required, is NOT called in MT mode
869  m_markToSkipFlags = kMarkedToSkipAll;
870 }
871 
873 {
875  throw OdError(eInvalidIndex);
877 }
878 
880 {
882  return GETBIT(nextEntEntry(nVpId)->m_entFlags, kSpatiallyIndexed);
883  //if (nVpId > 0) // Normal case, since we can request from non-VpDep container
884  // throw OdError(eInvalidIndex);
886 }
887 
888 inline void OdGsEntityNode::setSpatiallyIndexed(bool bIndexed)
889 {
891  throw OdError(eInvalidIndex);
892  SETBIT(m_flags, kSpatiallyIndexed, bIndexed);
893 }
894 
895 inline void OdGsEntityNode::setSpatiallyIndexed(OdUInt32 nVpId, bool bIndexed)
896 {
898  SETBIT(nextEntEntry(nVpId)->m_entFlags, kSpatiallyIndexed, bIndexed);
899  else
900  SETBIT(m_flags, kSpatiallyIndexed, bIndexed);
901 }
902 
903 inline bool OdGsEntityNode::owned() const
904 {
906  throw OdError(eInvalidIndex);
907  return GETBIT(m_flags, kOwned);
908 }
909 
910 inline bool OdGsEntityNode::owned(OdUInt32 nVpId) const
911 {
913  return GETBIT(nextEntEntry(nVpId)->m_entFlags, kOwned);
914  //if (nVpId > 0) // Normal case, since we can request from non-VpDep container
915  // throw OdError(eInvalidIndex);
916  return GETBIT(m_flags, kOwned);
917 }
918 
919 inline void OdGsEntityNode::setOwned(bool bOwned)
920 {
922  throw OdError(eInvalidIndex);
923  SETBIT(m_flags, kOwned, bOwned);
924 }
925 
926 inline void OdGsEntityNode::setOwned(OdUInt32 nVpId, bool bOwned)
927 {
929  SETBIT(nextEntEntry(nVpId)->m_entFlags, kOwned, bOwned);
930  else
931  SETBIT(m_flags, kOwned, bOwned);
932 }
933 
935 {
936  return m_metafile.getArray();
937 }
938 
940 {
941  return m_metafile.getArray();
942 }
943 
945 {
946  return m_metafile.get();
947 }
948 
950 {
951  return metafileArray()[metafileIndex];
952 }
953 
954 #define VPMETAFILEHOLDERARRAY_DESTRUCTOR ~MetafilePtrArray
955 
957 {
958  m_metafile.set(pMetafile);
959 }
960 
962 {
963  return GETBIT(m_flags, kEntityUnerased);
964 }
965 
966 inline void OdGsEntityNode::setEntityUnerased(bool flag)
967 {
969 }
970 
971 inline bool OdGsEntityNode::isInvisible() const
972 {
973  return GETBIT(m_flags, kInvisible);
974 }
975 
977 {
978  if (invalidVp())
979  {
980  setInvalidVp(false);
981  }
982 }
983 
985 {
986  return GETBIT(m_flags, kNonSelectable);
987 }
988 
990 {
992 }
993 
995 {
996  return GETBIT(m_flags, kSkipSelection);
997 }
998 
1000 {
1001  SETBIT(m_flags, kSkipSelection, val);
1002 }
1003 
1005 {
1006  return GETBIT(m_flags, kErased);
1007 }
1008 
1009 inline void OdGsEntityNode::markErased(bool val)
1010 {
1011  SETBIT(m_flags, kErased, val);
1012 }
1013 
1015 {
1016  for(const OdGsGeomPortion* ptr = &m_first; ptr; ptr = ptr->m_pNext)
1017  {
1018  if(ptr->m_pGsMetafile.get())
1019  return false;
1020  }
1021  return true;
1022 }
1023 
1025 {
1026  return GETBIT(m_flags, kExtentsOutOfMS);
1027 }
1028 
1030 {
1032 }
1033 
1035 {
1037 }
1038 
1040 {
1042 }
1043 
1045 {
1047 }
1048 
1049 inline bool OdGsEntityNode::isInWorkset() const
1050 {
1051  return GETBIT(m_flags, kInWorkset);
1052 }
1053 
1054 inline void OdGsEntityNode::setInWorkset(bool val)
1055 {
1056  SETBIT(m_flags, kInWorkset, val);
1057 }
1058 
1060 {
1061  return GETBIT(m_flags, kSingleThreaded);
1062 }
1063 
1065 {
1067 }
1068 
1070 {
1072 }
1073 
1074 inline void OdGsEntityNode::setRegenOnDraw(bool val)
1075 {
1077 }
1078 
1079 inline void OdGsEntityNode::highlight(bool bDoIt, bool bWholeBranch)
1080 {
1081  OdGsNode::highlight(bDoIt, bWholeBranch);
1082  if(hlBranch() && (!bDoIt || bWholeBranch))
1083  setHlBranch(NULL);
1084 }
1085 
1087 {
1090 }
1091 
1093 {
1095 }
1096 
1098 {
1099  if (lwd)
1100  {
1102  if (lwd > maxLwd)
1104  }
1105 }
1106 
1108 {
1110 }
1111 
1113 {
1115 }
1116 
1118 {
1120 }
1121 
1122 #include "TD_PackPop.h"
1123 
1124 #endif // __OD_GS_ENTITY_NODE__
GETBIT
#define GETBIT(flags, bit)
Definition: OdaDefs.h:498
OdGsEntityNode::isMarkedSkipSelection
bool isMarkedSkipSelection() const
Definition: GsEntityNode.h:994
OdGsEntityNode::numNextEntity
OdUInt32 numNextEntity() const
Definition: GsEntityNode.h:821
OdSiSpatialIndex
Definition: SiSpatialIndex.h:118
OdGsEntityNode::MetafileHolder::set
void set(Metafile *pMf)
Definition: GsEntityNode.h:291
NULL
#define NULL
Definition: GsProperties.h:177
OdGsEntityNode::m_extents
OdGeExtents3d m_extents
Definition: GsEntityNode.h:118
OdGsNode::s_aAlloc
static GS_STATIC_EXPORT AllocatorArray s_aAlloc
Definition: GsNode.h:70
OdGsEntityNode::Metafile::m_extents
OdGeExtents3d m_extents
Definition: GsEntityNode.h:142
OdGsEntityNode::MetafileHolder::isRegenTypeDependent
bool isRegenTypeDependent() const
Definition: GsEntityNode.h:263
OdRxObjectPtr
Definition: RxObject.h:345
OdGsEntityNode::MetafileEx::m_pDeviceRef
OdRxObjectPtr m_pDeviceRef
Definition: GsEntityNode.h:155
OdGsEntityNode::resetInvalidVpFlag
void resetInvalidVpFlag()
Definition: GsEntityNode.h:976
OdGsUpdateManager::OdGsUpdateManagerElement
Definition: GsUpdateManager.h:68
OdGsEntityNode::propagateLayerChanges
virtual void propagateLayerChanges(OdGsViewImpl &view)
OdUInt8
unsigned char OdUInt8
Definition: OdPlatformSettings.h:759
kOdGiStandardDisplay
@ kOdGiStandardDisplay
Definition: GiCommonDraw.h:52
OdGsContainerNode
Definition: GsContainerNode.h:47
OdGsEntityNode::setInWorkset
void setInWorkset(bool val)
Definition: GsEntityNode.h:1054
OdGsEntityNode::metafile
OdGsEntityNode::MetafilePtr metafile() const
Definition: GsEntityNode.h:944
OdGsEntityNode::MetafileHolder::awareFlags
OdUInt32 awareFlags(OdUInt32 nVpID) const
Definition: GsEntityNode.h:350
OdGsEntityNode::Metafile::playNested
bool playNested(const OdGsView &view, OdGsEntityNode &node, OdGsBaseContext &ctx)
OdGsBaseVectorizer
Definition: GsBaseVectorizer.h:112
OdGsView
Definition: Gs.h:133
OdGsGeomPortion::filterEmptyNestedPortions
void filterEmptyNestedPortions()
Definition: GsEntityNode.h:79
OdGsNode::highlight
virtual void highlight(bool bDoIt, bool bWholeBranch)
Definition: GsNode.h:262
OdGsEntityNode::MetafilePtrArray::~MetafilePtrArray
~MetafilePtrArray()
Definition: GsEntityNode.h:202
OdGsEntityNode::makeStock
virtual void makeStock()
OdGsEntityNode::getMaxLineweightUsed
OdDb::LineWeight getMaxLineweightUsed() const
Definition: GsEntityNode.h:1092
OdGsEntityNode::isMarkedErased
bool isMarkedErased() const
Definition: GsEntityNode.h:1004
OdGsEntityNode::regenMetafile
virtual OdGsEntityNode::MetafilePtr regenMetafile(OdGsUpdateContext &ctx, OdUInt32 vpDepFlags)
OdGsEntityNode::setOwned
void setOwned(bool owned)
Definition: GsEntityNode.h:919
OdGsEntityNode::Free
static void Free(void *pMemBlock)
Definition: GsEntityNode.h:189
OdGsEntityNode::markedToSkip
bool markedToSkip(unsigned mask)
Definition: GsEntityNode.h:838
OdGsEntityNode::MetafileHolder::allocateArray
void allocateArray()
OdGsEntityNode::isLight
virtual bool isLight() const
Definition: GsEntityNode.h:579
count
GLsizei GLsizei * count
Definition: gles2_ext.h:276
OdGsEntityNode::setSpatiallyIndexed
void setSpatiallyIndexed(bool spatiallyIndexed)
Definition: GsEntityNode.h:888
OdGsEntityNode::MetafileEx
Definition: GsEntityNode.h:153
OdGsEntityNode::setExtentsOutOfModelSpace
void setExtentsOutOfModelSpace(bool flag)
Definition: GsEntityNode.h:1029
OdGsEntityNode::isRequireRegenOnHighlightChange
bool isRequireRegenOnHighlightChange() const
Definition: GsEntityNode.h:1044
OdGsEntityNode::insertToSpatialIndex
void insertToSpatialIndex(OdUInt32 nVpId, OdSiSpatialIndex &parentIndex, const OdGeExtents3d &prevExtents)
OdGsEntityNode::kMarkedByUpdateManager
@ kMarkedByUpdateManager
Definition: GsEntityNode.h:495
OdGsGeomPortion::m_pGsMetafile
OdRxObjectPtr m_pGsMetafile
Definition: GsEntityNode.h:43
OdRxObject
Definition: RxObject.h:564
OdGsEntityNode::MetafileHolder::setAt
void setAt(int n, Metafile *pMf)
Definition: GsEntityNode.h:361
OdGsEntityNode::setAsLightSourceOwner
void setAsLightSourceOwner(bool bSet)
Definition: GsEntityNode.h:1034
OdGsDCRect
Definition: GsDefs.h:111
OdArrayMemAlloc.h
OdGsEntityNode::kLineweightOffset
@ kLineweightOffset
Definition: GsEntityNode.h:485
SETBIT
#define SETBIT(flags, bit, value)
Definition: OdaDefs.h:497
OdGsEntityNode::MetafileEx::OdGsDeviceSelfReference
Definition: GsEntityNode.h:159
OdGsGeomPortion::OdGsGeomPortion
OdGsGeomPortion()
Definition: GsEntityNode.h:46
OdGsEntityNode::isInvisible
bool isInvisible() const
Definition: GsEntityNode.h:971
OdGsEntityNode::extents
const OdGeExtents3d & extents() const
Definition: GsEntityNode.h:833
OdGsEntityNode::update
void update(OdGsUpdateContext &ctx, OdGsContainerNode *pParent, OdSiSpatialIndex *pParentIndex)
OdGsEntityNode::nodeType
virtual ENodeType nodeType() const
Definition: GsEntityNode.h:576
OdGsNode
Definition: GsNode.h:60
OdGsLayerNode
Definition: GsLayerNode.h:41
OdGsEntityNode::setEntityUnerased
void setEntityUnerased(bool flag)
Definition: GsEntityNode.h:966
OdGsEntityNode::MetafilePtrArray
Definition: GsEntityNode.h:200
OdGsEntityNode::m_entFlags
OdUInt32 m_entFlags
Definition: GsEntityNode.h:753
EMetafilePlayMode
EMetafilePlayMode
Definition: GsDefs.h:328
OdGsEntityNode::hasFrozenLayers
virtual bool hasFrozenLayers()
OdGeExtents3d::isValidExtents
bool isValidExtents() const
Definition: GeExtents3d.h:120
OdGsEntityNode::destroy
void destroy()
Definition: GsEntityNode.h:688
SiSpatialIndex.h
OdGsEntityNode::Metafile::isEmpty
bool isEmpty() const
Definition: GsEntityNode.h:1014
kVpRenderMode
@ kVpRenderMode
Definition: GsViewPropsDef.h:30
OdGsEntityNode::kSkipSelection
@ kSkipSelection
Definition: GsEntityNode.h:475
OdGsEntityNode::kMarkedToSkipLast
@ kMarkedToSkipLast
Definition: GsEntityNode.h:502
TD_PackPop.h
IAllocator::alloc
virtual void * alloc(int)=0
OdGsUpdateManager
Definition: GsUpdateManager.h:44
OdGsEntityNode::MetafileHolder::m_flags
OdUInt8 m_flags
Definition: GsEntityNode.h:377
OdGsGeomPortion::m_pNext
OdGsGeomPortion * m_pNext
Definition: GsEntityNode.h:44
OdGsGeomPortion::freeNestedPortions
void freeNestedPortions()
Definition: GsEntityNode.h:67
OdGsEntityNode::MetafileEx::OdGsDeviceSelfReference::OdGsDeviceSelfReference
OdGsDeviceSelfReference()
Definition: GsEntityNode.h:162
OdGsEntityNode::highlight
virtual void highlight(bool bDoIt, bool bWholeBranch)
Definition: GsEntityNode.h:1079
OdGsGeomPortion::clear
void clear()
Definition: GsEntityNode.h:60
GsUpdateManager.h
OdGsEntityNode::findCompatibleCache
OdRxObject * findCompatibleCache(const OdGsViewImpl &keyView, OdGsUpdateContext *ctx, OdUInt32 awareMask=0)
OdGsEntityNode::MetafileHolder::getArray
MetafilePtrArray & getArray()
Definition: GsEntityNode.h:281
OdGsEntityNode::MetafileEx::m_nLength
OdUInt64 m_nLength
Definition: GsEntityNode.h:156
OdGsEntityNode::MetafileHolder::MetafileHolder
MetafileHolder()
Definition: GsEntityNode.h:222
OdUInt32
unsigned int OdUInt32
Definition: OdPlatformSettings.h:783
OdGsEntityNode::MetafileHolder::MetafileHolder
MetafileHolder(const MetafileHolder &c)
Definition: GsEntityNode.h:226
OdGsHlBranch
Definition: GsHighlightData.h:53
OdGsEntityNode::kExtentsOutOfMS
@ kExtentsOutOfMS
Definition: GsEntityNode.h:473
OdGsEntityNode::kNonSelectable
@ kNonSelectable
Definition: GsEntityNode.h:474
kOdGiRenderCommand
@ kOdGiRenderCommand
Definition: GiCommonDraw.h:54
OdGsNode::invalidVp
bool invalidVp() const
Definition: GsNode.h:91
mask
GLenum GLint GLuint mask
Definition: gles2_ext.h:262
size
GLsizeiptr size
Definition: gles2_ext.h:182
OdGsEntityNode::entityUnerased
bool entityUnerased() const
Definition: GsEntityNode.h:961
index
GLuint index
Definition: gles2_ext.h:265
OdGsEntityNode::invalidate
void invalidate(OdGsContainerNode *pParent, OdGsViewImpl *pView, OdUInt32 mask)
OdGsEntityNodePtr
OdSmartPtr< OdGsEntityNode > OdGsEntityNodePtr
Definition: GsEntityNode.h:764
OdGsEntityNode::propagateLayerChangesStock
virtual void propagateLayerChangesStock()
OdGsEntityNode::MetafileHolder::isAwareFlagsRegenType
bool isAwareFlagsRegenType() const
Definition: GsEntityNode.h:262
OdGsEntityNode::OdGsEntityNode
OdGsEntityNode(OdGsBaseModel *pModel, const OdGiDrawable *pUnderlyingDrawable, bool bSetGsNode=false)
OdGsEntityNode::awareFlags
virtual OdUInt32 awareFlags(OdUInt32 viewportId) const
OdGsEntityNode::getEmptyMetafile
static OdGsEntityNode::MetafilePtr getEmptyMetafile(OdUInt32 flags, OdGsLayerNode *pLayerNode=NULL)
OdGsEntityNode::kLightSourceOwner
@ kLightSourceOwner
Definition: GsEntityNode.h:493
OdGsEntityNode::MetafileHolder::rawPtr
void * rawPtr()
Definition: GsEntityNode.h:371
OdSiEntity
Definition: SiSpatialIndex.h:81
OdGsEntityNode::MetafileHolder::setVpDependent
void setVpDependent(bool bOn)
Definition: GsEntityNode.h:252
OdGsEntityNode::metafileAt
OdGsEntityNode::MetafilePtr metafileAt(int metafileIndex) const
Definition: GsEntityNode.h:949
ENodeType
ENodeType
Definition: GsBaseModel.h:65
OdPtrToInt32
#define OdPtrToInt32(arg)
Definition: OdPlatformSettings.h:903
OdGsEntityNode::owned
bool owned() const
Definition: GsEntityNode.h:903
GsNode.h
OdGsEntityNode::Metafile::m_first
OdGsGeomPortion m_first
Definition: GsEntityNode.h:143
OdGsEntityNode::markToSkip
void markToSkip(unsigned mask, bool markToSkip)
Definition: GsEntityNode.h:849
OdBaseObjectPtr::isNull
bool isNull() const
Definition: BaseObjectPtr.h:70
OdGsGeomPortion::copyFrom
void copyFrom(OdGsGeomPortion &c)
Definition: GsEntityNode.h:53
OdGsEntityNode::ODRX_DECLARE_MEMBERS
ODRX_DECLARE_MEMBERS(OdGsEntityNode)
OdGsEntityNode::MetafileHolder::rawPtr
const void * rawPtr() const
Definition: GsEntityNode.h:372
OdSmartPtr
Definition: SmartPtr.h:58
OdGsEntityNode::MetafileHolder::setLayerDependent
void setLayerDependent(bool bSet)
Definition: GsEntityNode.h:268
OdGsEntityNode::kOwned
@ kOwned
Definition: GsEntityNode.h:469
OdGsEntityNode::kErased
@ kErased
Definition: GsEntityNode.h:476
OdGsEntityNode::Metafile::hasDataToPlay
bool hasDataToPlay(OdGsBaseVectorizer &view, EMetafilePlayMode eMode=kMfDisplay)
OdGsEntityNode::kMultilistNextPtr
@ kMultilistNextPtr
Definition: GsEntityNode.h:478
OdGsEntityNode::markToSkipAll
void markToSkipAll()
Definition: GsEntityNode.h:866
OdGsEntityNode::hlBranch
const OdGsHlBranch * hlBranch() const
Definition: GsEntityNode.h:711
OdGsEntityNode::setExtentsFlags
void setExtentsFlags()
Definition: GsEntityNode.h:1086
OdGsNode::kLastFlag
@ kLastFlag
Definition: GsNode.h:84
OdGsEntityNode::setExtentsFromMetafiles
void setExtentsFromMetafiles()
kInvisible
@ kInvisible
Definition: BrEnums.h:115
lwd
lwd
Definition: DimVarDefs.h:1474
OdGsEntityNode::display
void display(OdGsDisplayContext &ctx)
OdGsEntityNode::MetafileEx::MetafileEx
MetafileEx()
Definition: GsEntityNode.h:173
OdGsEntityNode::MetafileHolder::isDependentGeometry
bool isDependentGeometry() const
Definition: GsEntityNode.h:266
OdArrayMemAlloc
Definition: OdArrayMemAlloc.h:65
OdGsEntityNode::Alloc
static void * Alloc(size_t nBytes)
Definition: GsEntityNode.h:188
OdGsEntityNode::kRegenOnHighlight
@ kRegenOnHighlight
Definition: GsEntityNode.h:494
OdGsEntityNode::extentsToPixels
OdGsDCRect extentsToPixels(const OdGeExtents3d &ext, OdGsViewImpl *pViewImpl)
OdGsEntityNode::Metafile::containsFrozenLayers
bool containsFrozenLayers() const
OdGsEntityNode::saveNodeState
bool saveNodeState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer=NULL) const
OdGsEntityNode::MetafileHolder::isArray
bool isArray() const
Definition: GsEntityNode.h:249
OdGsEntityNode::kEntityUnerased
@ kEntityUnerased
Definition: GsEntityNode.h:471
OdGiDrawable
Definition: GiDrawable.h:49
OdGsEntityNode::Metafile::play
bool play(OdGsBaseVectorizer &view, EMetafilePlayMode eMode, OdGsEntityNode &node, OdGsBaseContext *ctx=NULL)
OdGsEntityNode::kLineweightBitMask
@ kLineweightBitMask
Definition: GsEntityNode.h:492
OdGsViewImpl
Definition: GsViewImpl.h:58
OdGsEntityNode::layersChanged
virtual bool layersChanged(OdGsViewImpl &view) const
OdGsEntityNode::MetafileHolder::get
Metafile * get()
Definition: GsEntityNode.h:271
OdGsEntityNode::addMaxLineweightUsed
void addMaxLineweightUsed(OdDb::LineWeight lwd)
Definition: GsEntityNode.h:1097
OdGsEntityNode::MetafileHolder
Definition: GsEntityNode.h:206
OdGsEntityNode::MetafileEx::OdGsDeviceSelfReference::setDevice
void setDevice(OdGsBaseVectorizeDevice *device)
Definition: GsEntityNode.h:166
OdGsEntityNode::MetafileHolder::isLayerDependent
bool isLayerDependent() const
Definition: GsEntityNode.h:269
OdGsEntityNode::nextEntity
OdGsEntityNode * nextEntity()
Definition: GsEntityNode.h:789
OdArray::resize
void resize(size_type logicalLength, const T &value)
Definition: OdArray.h:834
OdGsEntityNode::setMetafileAt
void setMetafileAt(int metafileIndex, OdGsEntityNode::Metafile *pMetafile)
OdGsEntityNode::markToSkipMask
static unsigned markToSkipMask(OdUInt32 threadIndex)
Definition: GsEntityNode.h:682
OdGsEntityNode::isRegenOnDraw
bool isRegenOnDraw() const
Definition: GsEntityNode.h:1069
OdGsEntityNode::MetafileHolder::setDependentGeometry
void setDependentGeometry(bool bSet)
Definition: GsEntityNode.h:265
OdGsEntityNode::kMarkedToSkipAll
@ kMarkedToSkipAll
Definition: GsEntityNode.h:503
OdGsEntityNode::setMarkedByUpdateManager
void setMarkedByUpdateManager(bool marked)
Definition: GsEntityNode.h:1117
OdGsEntityNode::Metafile::~Metafile
~Metafile()
OdGsEntityNode::Realloc
static void * Realloc(void *pMemBlock, size_t newSize, size_t)
Definition: GsEntityNode.h:190
OdGsEntityNode::MetafileHolder::getAtRegenType
Metafile * getAtRegenType(OdGiRegenType &eRegenType)
Definition: GsEntityNode.h:331
OdGsEntityNode::isSingleThreaded
bool isSingleThreaded() const
Definition: GsEntityNode.h:1059
TD_PackPush.h
OdGsEntityNode::~OdGsEntityNode
~OdGsEntityNode()
OdGsEntityNode::MetafileEx::device
OdRxObjectPtr device()
Definition: GsEntityNode.h:179
OdGsEntityNode::MetafileHolder::isValidMf
bool isValidMf(const Metafile &mf) const
OdGsEntityNode::Metafile::Metafile
Metafile()
OdGsEntityNode::Metafile::layersChanged
bool layersChanged(OdUInt32 nVpId) const
OdGsEntityNode::markedAsNonSelectable
bool markedAsNonSelectable() const
Definition: GsEntityNode.h:984
OdGsBaseVectorizeDevice
Definition: GsBaseVectorizeDevice.h:69
OdGsBlockReferenceNode
Definition: GsBlockReferenceNode.h:228
OdGsEntityNode::MetafileEx::~MetafileEx
~MetafileEx()
OdGsEntityNode::isInWorkset
bool isInWorkset() const
Definition: GsEntityNode.h:1049
OdArray::at
T & at(size_type arrayIndex)
Definition: OdArray.h:1140
odmax
#define odmax(X, Y)
Definition: OdPlatform.h:35
OdGsEntityNode::MetafileHolder::flags
int flags() const
Definition: GsEntityNode.h:370
OdGsEntityNode::MetafileHolder::checkValid
int checkValid()
OdGsEntityNode::select
void select(OdGsBaseVectorizer &view)
OdGsEntityNode::loadNodeState
bool loadNodeState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer=NULL)
getArray
GE_TOOLKIT_EXPORT OdGeDoubleArray & getArray(OdGeKnotVector *p)
OdGsEntityNode::MetafileEx::setDevice
void setDevice(OdRxObjectPtr dev)
Definition: GsEntityNode.h:178
kEntityNode
@ kEntityNode
Definition: GsBaseModel.h:72
TPtr< OdGsHlBranch >
OdGsEntityNode::Metafile::m_nAwareFlags
OdUInt32 m_nAwareFlags
Definition: GsEntityNode.h:141
OdGsEntityNode::isExtentsOutOfModelSpace
bool isExtentsOutOfModelSpace() const
Definition: GsEntityNode.h:1024
OdIntPtr
ptrdiff_t OdIntPtr
Definition: OdPlatformSettings.h:884
OdGsEntityNode::kInvisible
@ kInvisible
Definition: GsEntityNode.h:472
OdGsEntityNode::isLightSourceOwner
bool isLightSourceOwner() const
Definition: GsEntityNode.h:1039
OdGsEntityNode::setNextEntity
void setNextEntity(OdGsEntityNode *pNextEntity)
Definition: GsEntityNode.h:767
OdGsEntityNode::setSingleThreaded
void setSingleThreaded(bool val)
Definition: GsEntityNode.h:1064
OdGsEntityNode::updateVisible
void updateVisible(OdGsViewImpl *pViewImpl)
OdGsEntityNode::Metafile::isAllLayersOff
bool isAllLayersOff(OdUInt32 viewportId) const
OdGsEntityNode::hasExtents
bool hasExtents() const
Definition: GsEntityNode.h:828
OdGsBaseModel
Definition: GsBaseModel.h:118
ODA_ASSERT
#define ODA_ASSERT(exp)
Definition: DebugStuff.h:49
OdGsEntityNode::hlBranch
OdGsHlBranch * hlBranch()
Definition: GsEntityNode.h:710
OdGsEntityNode::extents
bool extents(const OdGsView *pView, OdGeExtents3d &ext) const
GsHighlightData.h
OdGeExtents3d
Definition: GeExtents3d.h:45
OdGsGeomPortion::m_pLayer
OdGsLayerNode * m_pLayer
Definition: GsEntityNode.h:42
GS_TOOLKIT_EXPORT
#define GS_TOOLKIT_EXPORT
Definition: GsExport.h:37
OdGsEntityNode::MetafileHolder::get
const Metafile * get() const
Definition: GsEntityNode.h:276
OdDb::LineWeight
LineWeight
Definition: OdaDefs.h:382
OdGsEntityNode::releaseStock
virtual void releaseStock()
OdGsEntityNode::markSkipSelection
void markSkipSelection(bool val)
Definition: GsEntityNode.h:999
OdGsEntityNode::setMetafile
void setMetafile(OdGsEntityNode::Metafile *metafiles)
Definition: GsEntityNode.h:956
OdGsEntityNode::kDrawableRegenDraw
@ kDrawableRegenDraw
Definition: GsEntityNode.h:470
OdGsEntityNode::setRegenOnDraw
void setRegenOnDraw(bool val)
Definition: GsEntityNode.h:1074
OdError
Definition: OdError.h:43
OdGsEntityNode::enableMultipleNextEntities
void enableMultipleNextEntities(OdUInt32 nMaxVpId)
Definition: GsEntityNode.h:782
OdGsEntityNode::Metafile
Definition: GsEntityNode.h:122
OdGsNode::UpdateManagerContext
Definition: GsNode.h:222
OdGsEntityNode::MetafileHolder::getArray
const MetafilePtrArray & getArray() const
Definition: GsEntityNode.h:286
kOdGiHideOrShadeCommand
@ kOdGiHideOrShadeCommand
Definition: GiCommonDraw.h:53
OdGsEntityNode::m_metafile
MetafileHolder m_metafile
Definition: GsEntityNode.h:395
OdGsNode::m_flags
OdUInt32 m_flags
Definition: GsNode.h:87
OdRxObject::addRef
virtual void addRef()=0
OdGsGeomPortion::isEmptyPortion
bool isEmptyPortion() const
Definition: GsEntityNode.h:78
OdGsEntityNode::isReference
virtual bool isReference() const
Definition: GsEntityNode.h:578
OdGsEntityNode::MetafilePtr
OdSmartPtr< Metafile > MetafilePtr
Definition: GsEntityNode.h:150
OdGsEntityNode::addContentToUpdateManager
void addContentToUpdateManager(OdUInt32 viewportId, OdGsUpdateManager *pManager, const UpdateManagerContext &context)
OdGsEntityNode::markedByUpdateManager
bool markedByUpdateManager() const
Definition: GsEntityNode.h:1112
OdGsEntityNode::MetafileEx::OdGsDeviceSelfReference::device
OdGsBaseVectorizeDevice * device()
Definition: GsEntityNode.h:170
OdGsEntityNode::Metafile::containsVpFrozenLayers
bool containsVpFrozenLayers() const
OdGsEntityNode::m_hlBranch
OdGsHlBranchPtr m_hlBranch
Definition: GsEntityNode.h:386
OdGsEntityNode::kMarkedToSkipFirst
@ kMarkedToSkipFirst
Definition: GsEntityNode.h:501
OdGsEntityNode::MetafileHolder::setAwareFlagsRegenType
void setAwareFlagsRegenType(bool bOn)
Definition: GsEntityNode.h:374
OdGiRegenType
OdGiRegenType
Definition: GiCommonDraw.h:50
OdGsEntityNode::kHasExtents
@ kHasExtents
Definition: GsEntityNode.h:465
OdGsEntityNode::MetafileEx::setMetafileLength
void setMetafileLength(OdUInt64 l)
Definition: GsEntityNode.h:181
IAllocator::release
virtual void release(void *p)=0
OdGsFiler
Definition: GsFiler.h:63
OdGsEntityNode::isEmpty
virtual bool isEmpty()
OdGsEntityNode::spatiallyIndexed
bool spatiallyIndexed() const
Definition: GsEntityNode.h:872
OdGsEntityNode::kSpatiallyIndexed
@ kSpatiallyIndexed
Definition: GsEntityNode.h:466
kVpRegenType
@ kVpRegenType
Definition: GsViewPropsDef.h:29
OdGsNode::setInvalidVp
void setInvalidVp(bool val)
Definition: GsNode.h:93
OdGsEntityNode::MetafileCompatibilityLevel
MetafileCompatibilityLevel
Definition: GsEntityNode.h:439
OdGsEntityNode::Metafile::containsAnyOfLayers
bool containsAnyOfLayers(OdDbStub *const *layers, OdUInt32 count) const
OdGsEntityNode::playAsGeometry
virtual void playAsGeometry(OdGsBaseVectorizer &view, EMetafilePlayMode eMode)
OdGsEntityNode::MetafileEx::metafileLength
OdUInt64 metafileLength() const
Definition: GsEntityNode.h:182
OdGsEntityNode::metafile
OdGsEntityNode::Metafile * metafile(const OdGsViewImpl &view, OdGsUpdateContext *ctx, MetafileCompatibilityLevel findCompatibleLevel=kFindCompatible)
OdGsEntityNode::setMaxLineweightUsed
void setMaxLineweightUsed(OdDb::LineWeight lwd)
Definition: GsEntityNode.h:1107
OdGsEntityNode::kInWorkset
@ kInWorkset
Definition: GsEntityNode.h:467
kMfDisplay
@ kMfDisplay
Definition: GsDefs.h:329
OdGsEntityNode::metafileArray
MetafilePtrArray & metafileArray()
Definition: GsEntityNode.h:934
OdGsEntityNode::MetafileHolder::destroy
void destroy()
OdGsEntityNode::MetafileHolder::isValid
bool isValid() const
Definition: GsEntityNode.h:248
AllocatorArray::getAt
IAllocator * getAt(unsigned i)
Definition: ChunkAllocator.h:61
OdGsEntityNode::setMetafile
void setMetafile(OdGsUpdateContext &ctx, OdGsEntityNode::Metafile *metafiles)
OdGsEntityNode::MetafileHolder::setAtRegenType
void setAtRegenType(Metafile *pMf, OdGiRegenType eRegenType)
Definition: GsEntityNode.h:299
OdGsGeomPortion
Definition: GsEntityNode.h:41
OdGsEntityNode::extents
bool extents(OdGeExtents3d &extents) const
OdGsEntityNode::MetafileHolder::moveTo
void moveTo(MetafileHolder &c, int &n)
OdGsEntityNode::MetafileHolder::~MetafileHolder
~MetafileHolder()
Definition: GsEntityNode.h:243
OdSi::properExtents
bool ODSI_API properExtents(const OdGeExtents3d &ext)
OdGsEntityNode::markAsNonSelectable
void markAsNonSelectable(bool val)
Definition: GsEntityNode.h:989
OdGsEntityNode::setHlBranch
void setHlBranch(OdGsHlBranch *pBr)
Definition: GsEntityNode.h:709
OdGsEntityNode::convertToViewportDependent
void convertToViewportDependent(const OdGsUpdateContext &ctx)
OdGsEntityNode::kSingleThreaded
@ kSingleThreaded
Definition: GsEntityNode.h:468
OdGsEntityNode
Definition: GsEntityNode.h:103
OdUInt64
Definition: Int64.h:137
OdGsEntityNode::MetafileHolder::isVpDependent
bool isVpDependent() const
Definition: GsEntityNode.h:251
OdGsEntityNode::findMetafileInStock
bool findMetafileInStock(OdGsUpdateContext &ctx)
OdGsEntityNode::markErased
void markErased(bool val)
Definition: GsEntityNode.h:1009