CFx SDK Documentation  2020SP3
GsBlockReferenceNode.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_BLOCKREFERENCE_NODE__
25 #define __OD_GS_BLOCKREFERENCE_NODE__
26 
27 #include "TD_PackPush.h"
28 
29 #include "GsEntityNode.h"
30 #include "OdVector.h"
31 
32 class OdGsSpQueryContext;
33 
41 {
42 public:
43  OdSiRecursiveVisitor(): m_pQuery(NULL), m_worldToNode(NULL), m_nodeToWorld(NULL),
44  m_worldToModel(NULL), m_modelToWorld(NULL){}
45 
46  const OdSiShape* query() const { return m_pQuery; }
47  void resetQuery(const OdSiShape* pQuery) { m_pQuery = pQuery; }
48 
49  const OdGeMatrix3d* worldToNode() const { return m_worldToNode; }
50  void setWorldToNode(const OdGeMatrix3d* tf) { m_worldToNode = tf; }
51  const OdGeMatrix3d* nodeToWorld() const { return m_nodeToWorld; }
52  void setNodeToWorld(const OdGeMatrix3d* tf) { m_nodeToWorld = tf; }
53  const OdGeMatrix3d* worldToModel() const { return m_worldToModel; }
54  void setWorldToModel(const OdGeMatrix3d* tf) { m_worldToModel = tf; }
55  const OdGeMatrix3d* modelToWorld() const { return m_modelToWorld; }
56  void setModelToWorld(const OdGeMatrix3d* tf) { m_modelToWorld = tf; }
57 
58 protected:
64 };
65 
67 
75 {
76 public:
79  operator OdSiRecursiveVisitor*() { return &m_visitor; }
80 
81 protected:
83 private:
84  const OdSiShape* m_prevQuery;
85  std::auto_ptr<OdSiShape> m_transformedQuery;
86 };
88 
96 {
97 public:
98  OdGsSpQueryContextTf(OdSiRecursiveVisitor& v, const OdGeMatrix3d& objectTf, const OdGeMatrix3d& objectTfInv,
99  const OdGeScale3d& scale);
101 
102 protected:
111 };
112 
113 // forward declarations
115 class OdGsBlockNode;
116 class WorldDrawBlockRef;
117 class OdGsUpdateState;
118 
127 {
128 public:
130  enum
131  {
132  kChildrenNotUpToDate = 0x80000000
133  };
134  void setChildrenUpToDate(bool childrenUpToDate, const OdUInt32 nVpID);
135  bool childrenUpToDate(OdUInt32 nVpID) const;
136  OdUInt32 get(OdUInt32 nVpID) const;
137  void set(OdUInt32 nVpID, OdUInt32 flags);
138  void clear() { m_vpAwareFlags.clear(); }
139  bool isEmpty() const { return m_vpAwareFlags.isEmpty(); }
140  OdUInt32 numAwareFlags() const { return m_vpAwareFlags.size(); }
141  bool areInvalid(OdUInt32 nVpID) const;
142 
143 protected:
144  bool findFlag(OdUInt32 nVpID) const
145  { return nVpID < m_vpAwareFlags.size(); }
146 
147 private:
148  // viewport aware flags
149  OdUInt32Vector m_vpAwareFlags;
150 };
151 
160 {
161 public:
163  void* operator new(size_t);
164  void operator delete(void*);
165 
166  void addRef()
167  {
168  ++m_nRefCounter;
169  }
170  void release()
171  {
172  ODA_ASSERT((m_nRefCounter > 0));
173  if (!(--m_nRefCounter))
174  delete this;
175  }
176  long numRefs() const { return m_nRefCounter; }
177 
178  // Main methods, used for OdGsNode interface implementation
179 
180  //pBlock can be NULL.
181  //If is not NULL only when it is passed directly from the function where the drawable is open.
182  //If it is NULL and it is required then use blockNode.underlyingDrawable()
183  virtual void updateSubitems(OdGsUpdateContext& ctx,
184  OdGsBlockNode& blockNode, const OdGiDrawable* pBlock) = 0;
185  virtual void display(OdGsDisplayContext& ctx, bool isHighlightedAll) = 0;
186 
187  //NS: following methods return true if operation succeded (invalidation
188  //or destroying leave the object valid). If they return false, it means that
189  //OdGsNode should release the instance and recreate m_pImpl.
190  virtual bool invalidate(OdGsContainerNode* pParent, OdGsViewImpl* pView,
191  OdUInt32 mask) = 0;
192  virtual bool destroy() = 0;
193  virtual bool destroySubitems() = 0;
194 
195  virtual bool select(OdGsBaseVectorizer& view, OdSiSelBaseVisitor* pVisitor,
196  bool bHasExtents, OdGsView::SelectionMode mode) = 0;
197  virtual void highlight(bool bDoIt, bool bWholeBranch) = 0;
198  // Methods for traversing internal subitems
199  virtual OdGsEntityNode* firstEntity() = 0;
200  virtual void playAsGeometry(OdGsBaseVectorizer& view, EMetafilePlayMode eMode) = 0;
201  virtual bool isSharedReference() const { return false; }
202  virtual bool isSharedDefinition() const { return false; }
203  virtual bool layersChanged(OdGsViewImpl& view) const;
204 
205  virtual void makeStock() = 0;
206  virtual void releaseStock() = 0;
207  virtual void propagateLayerChangesStock() = 0;
208  virtual void doSpatialQuery(OdGsSpQueryContext& ctx) = 0;
209 
210  virtual bool saveNodeImplState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer) const = 0;
211  virtual bool loadNodeImplState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer, OdGsBaseModel *pModel) = 0;
212  virtual void postprocessNodeImplLoading(OdGsFiler * /*pFiler*/) { }
213 protected:
215 
216 protected:
218 };
219 
227  protected OdGsAwareFlagsArray
228 {
229 public:
231 
232  OdGsBlockReferenceNode(OdGsBaseModel* pModel, const OdGiDrawable* pDrawable, bool bSetGsNode = false);
233 public:
235 
236  // additional flags for processing of inserts
237  enum
238  {
240  kBrExcludeFromViewExt = OdGsEntityNode::kLastFlag << 2,
241  kBrClipped = OdGsEntityNode::kLastFlag << 3,
242  kLastFlag = kBrClipped
243  };
244 
245  bool isValid() const { return GETBIT(m_flags, kValid); }
246  void setValid(bool bSet) { SETBIT(m_flags, kValid, bSet); }
247  bool excludeFromViewExt() const { return GETBIT(m_flags, kBrExcludeFromViewExt); }
248  void setExcludeFromViewExt(bool bSet) { SETBIT(m_flags, kBrExcludeFromViewExt, bSet); }
249 
250  virtual bool isReference() const { return true; }
251  virtual bool layersChanged(OdGsViewImpl& view) const;
252  // implementation of OdGsEntityNode interface:
253  virtual void update(OdGsUpdateContext& ctx, OdGsContainerNode* pParent,
254  OdSiSpatialIndex* pParentIndex);
255  virtual void propagateLayerChanges(OdGsViewImpl& view);
256 
257  virtual void invalidate(OdGsContainerNode* pParent, OdGsViewImpl* pView, OdUInt32 mask);
258  virtual void destroy();
259  virtual void destroySubitems();
260 
263 
271  bool highlightSubnodes(OdUInt32 nSubnodes, bool bHighlight, bool bAll);
272 
277  virtual OdUInt32 awareFlags(OdUInt32 viewportId) const;
278 
284  virtual bool awareFlagsAreInvalid(OdUInt32 viewportId) const;
285 
289  virtual bool isEmpty();
290 
292  virtual OdGsEntityNode* firstAttrib() { return m_pFirstAttrib; }
293  void updateImpl(OdGsUpdateContext& ctx, const OdGiDrawable* pInsert,
294  OdSiSpatialIndex* pParentIndex);
295 
296  OdGsBlockNode* blockNode() const { return m_pBlockNode; }
297  void clearBlockNode();
298 
299  virtual void makeStock();
300  virtual void releaseStock();
302  void updateBlockNode(const OdGiDrawable* pBlockTableRecord);
303  //For testing purposes
305  virtual bool isMInsert() const { return false; }
306  static OdGsBlockReferenceNode* create(OdGsBaseModel* pModel, const OdGiDrawable* pDrawable);
307  virtual void doDisplay(OdGsDisplayContext& ctx);
308  virtual bool doSelect(OdGsBaseVectorizer& vect, OdGiDrawable* pDrw,
310 
311  virtual void spatialQuery(const OdGsView& view, OdSiRecursiveVisitor* pVisitor);
312 
313 protected:
314  virtual void setChildrenUpToDate(bool childrenUpToDate, const OdUInt32 nVpID);
315  virtual bool childrenUpToDate(OdUInt32 nVpID) const;
316  virtual bool childrenRegenDraw(OdUInt32 nVpID) const;
317  void updateAttribute(OdGsUpdateContext& ctx, OdGsEntityNode* pNode,
318  const OdGiDrawable* pInsert, OdGsMarker marker);
319  // Tool methods
320  void setAwareFlags(OdUInt32 viewportId, OdUInt32 nAwareFlags);
322  void initBlockNode(const OdGiDrawable* pBlock);
323  void setMetafile(OdGsUpdateContext& ctx, OdGsEntityNode::Metafile* pMf,
324  OdUInt32 awareFlags, const OdGeExtents3d& ext);
325  bool needRegen(OdUInt32 nVpID) const
326  {
327  if(!childrenUpToDate(nVpID))
328  return true;
329  OdUInt32 nAF = awareFlags(nVpID);
330  if( nAF == 0xFFFFFFFF || (baseModel()->viewChanges(nVpID) & nAF) != 0 )
331  {
332  const_cast<OdGsBlockReferenceNode*>(this)->setChildrenUpToDate(false, nVpID);
333  return true;
334  }
335  return false;
336  }
337  virtual void doUpdateImpl(OdGsUpdateContext& ctx, const OdGiDrawable* pBlockTableRecord, unsigned iInstance);
338  void drawBlock(OdGsUpdateContext& ctx, const OdGiDrawable* pBlockTableRecord,
339  OdGsBlockReferenceNodeImpl* pContainer,
340  bool bEnableSharedGraphics);
341  void postUpdateStep(OdGsUpdateState& state);
342  void addEntPropsFromState(const OdGsUpdateState& state);
343  void checkCancelledSharedRef(OdGsUpdateState& state);
344  static void actionPostUpdateStep(void* pObj, OdGsUpdateState& state);
345  static void actionAddEntPropsFromState(void* pObj, OdGsUpdateState& state);
346  static void actionCheckCancelledSharedRef(void* pObj, OdGsUpdateState& state);
347  static void actionRestartLocked(void* pObj, OdGsUpdateContext& ctx);
348  virtual void doSpatialQuery(OdGsSpQueryContext& ctx);
349 
350  bool saveClientNodeState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer) const;
351  bool loadClientNodeState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer);
353 private:
354  void createImpl(const OdGsUpdateContext& ctx, bool bTryShared);
355  void drawBlockImpl(OdGsUpdateContext& ctx, const OdGiDrawable* pBlockTableRecord,
356  OdGsBlockReferenceNodeImpl* pContainer,
357  bool bEnableSharedGraphics);
358 
359  bool isAProxy(OdGiDrawable *pDrw, const OdGiContext *pCtx = NULL) const;
360 protected:
361  // Pointer to implementation object
363  // Pointer to the node, corresponding to the block table record
365  // list of attributes
367 
368  friend class WorldDrawBlockRef;
369  friend class GsDrawableNested;
370  friend class OdGsSpQueryContext;
371 };
372 
380 {
381 public:
383  OdGsMInsertBlockNode(OdGsBaseModel* pModel, const OdGiDrawable* pInsert, bool bSetGsNode = false);
384 public:
386 
387  virtual void invalidate(OdGsContainerNode* pParent, OdGsViewImpl* pView, OdUInt32 mask);
388  virtual void destroy();
389  virtual void destroySubitems();
390 
391  virtual void highlight(bool bDoIt, bool bWholeBranch);
392 
395  virtual bool layersChanged(OdGsViewImpl& view) const;
397 
398  virtual void makeStock();
399  virtual void releaseStock();
401  virtual bool isMInsert() const { return true; }
402  virtual void doUpdateImpl(OdGsUpdateContext& ctx,
403  const OdGiDrawable* pBlockTableRecord, unsigned iInstance);
404  OdGsEntityNode*& firstAttrib(unsigned iInstance) { return item(iInstance)->m_pFirstAttrib; }
406  void setParams(const OdGeMatrix3d& blockTf, int nCols, int nRows, double sx, double sy)
407  {
408  m_blockTf = blockTf;
409  m_nCols = nCols;
410  m_nRows = nRows;
411  m_sx = sx;
412  m_sy = sy;
413  }
414  static void actionStretchExtents(void* pObj, OdGsUpdateState& state);
415  virtual void doDisplay(OdGsDisplayContext& ctx);
416  virtual bool doSelect(OdGsBaseVectorizer& vect, OdGiDrawable* pDrw,
418 
419 protected:
421 
425 
426 protected:
428  {
429  public:
430  CollectionItem() : m_nodeImp(0), m_pFirstAttrib(0) { }
432  m_nodeImp(c.m_nodeImp), m_pFirstAttrib(c.m_pFirstAttrib){}
433  void copyFrom(const CollectionItem& c);
434 
435  OdGsBlockReferenceNodeImpl* imp() { return m_nodeImp; }
436  const OdGsBlockReferenceNodeImpl* imp() const { return m_nodeImp; }
437  OdGsEntityNode* firstAttrib() { return m_pFirstAttrib; }
438  const OdGsEntityNode* firstAttrib() const { return m_pFirstAttrib; }
439 
440  public:
443 
444  bool operator ==(const CollectionItem &it2) const
445  {
446  return (m_nodeImp == it2.m_nodeImp) && (m_pFirstAttrib == it2.m_pFirstAttrib);
447  }
448  bool operator !=(const CollectionItem &it2) const
449  {
450  return (m_nodeImp != it2.m_nodeImp) || (m_pFirstAttrib != it2.m_pFirstAttrib);
451  }
452  };
453  class GS_TOOLKIT_EXPORT Collection: public OdArray<CollectionItem>
454  {
455  public:
459  };
460 protected:
461  OdGsBlockReferenceNodeImpl* getImpl(unsigned iInstance) { return item(iInstance)->m_nodeImp; }
462  CollectionItem* item(unsigned iInstance);
463  void clearParams() {m_nCols = m_nRows = 0; m_sx = m_sy = 0.; m_blockTf.setToIdentity(); }
464 
465  bool saveClientNodeState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer) const;
466  bool loadClientNodeState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer);
468 protected:
469  // Collection of implementation objects, representing clipped MINSERT.
470  // (If MINSERT is not clipped, it's represented by only implementation
471  // object OdGsBlockReferenceNode::m_pImpl)
475  int m_nCols;
476  int m_nRows;
477  double m_sx;
478  double m_sy;
479 };
480 
482 {
483  m_pBlockNode = 0;
484 }
485 
486 #include "TD_PackPop.h"
487 
488 #endif // __OD_GS_REFERENCE_NODE__
OdGsBlockReferenceNode::addEntPropsFromState
void addEntPropsFromState(const OdGsUpdateState &state)
GETBIT
#define GETBIT(flags, bit)
Definition: OdaDefs.h:498
OdGsBlockReferenceNode::doSpatialQuery
virtual void doSpatialQuery(OdGsSpQueryContext &ctx)
OdGsMInsertBlockNode::layersChanged
virtual bool layersChanged(OdGsViewImpl &view) const
OdGsBlockReferenceNodeImpl::~OdGsBlockReferenceNodeImpl
virtual ~OdGsBlockReferenceNodeImpl()
OdSiRecursiveVisitor::modelToWorld
const OdGeMatrix3d * modelToWorld() const
Definition: GsBlockReferenceNode.h:55
OdGsBlockReferenceNodeImpl::saveNodeImplState
virtual bool saveNodeImplState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer) const =0
OdGiContext
Definition: GiCommonDraw.h:108
OdGsAwareFlagsArray
Definition: GsBlockReferenceNode.h:127
OdSiSpatialIndex
Definition: SiSpatialIndex.h:118
OdGsMInsertBlockNode::destroyCollection
void destroyCollection()
OdGsBlockReferenceNode::postUpdateStep
void postUpdateStep(OdGsUpdateState &state)
NULL
#define NULL
Definition: GsProperties.h:177
OdGsMInsertBlockNode::playAsGeometry
virtual void playAsGeometry(OdGsBaseVectorizer &view, EMetafilePlayMode eMode)
OdGsMInsertBlockNode::Collection::~Collection
~Collection()
OdGsMInsertBlockNode::getImpl
OdGsBlockReferenceNodeImpl * getImpl(unsigned iInstance)
Definition: GsBlockReferenceNode.h:461
OdGsMInsertBlockNode::firstAttrib
OdGsEntityNode *& firstAttrib(unsigned iInstance)
Definition: GsBlockReferenceNode.h:404
OdSiRecursiveVisitorTf
Definition: GsBlockReferenceNode.h:75
OdGsBlockReferenceNodeImpl::doSpatialQuery
virtual void doSpatialQuery(OdGsSpQueryContext &ctx)=0
OdGsMInsertBlockNode::stretchExtents
void stretchExtents()
OdGsBlockReferenceNode::childrenRegenDraw
virtual bool childrenRegenDraw(OdUInt32 nVpID) const
OdGsMInsertBlockNode::invalidate
virtual void invalidate(OdGsContainerNode *pParent, OdGsViewImpl *pView, OdUInt32 mask)
OdGsBlockReferenceNode::destroySubitems
virtual void destroySubitems()
OdGsContainerNode
Definition: GsContainerNode.h:47
OdGsBlockReferenceNodeImpl::releaseStock
virtual void releaseStock()=0
scale
scale
Definition: DimVarDefs.h:1684
OdGsBaseVectorizer
Definition: GsBaseVectorizer.h:112
OdGsView
Definition: Gs.h:133
OdGsBlockReferenceNode::~OdGsBlockReferenceNode
~OdGsBlockReferenceNode()
OdGsBlockReferenceNodeImpl::select
virtual bool select(OdGsBaseVectorizer &view, OdSiSelBaseVisitor *pVisitor, bool bHasExtents, OdGsView::SelectionMode mode)=0
OdGsMInsertBlockNode::Collection::Collection
Collection()
Definition: GsBlockReferenceNode.h:456
OdVector.h
OdGsMInsertBlockNode::doDisplay
virtual void doDisplay(OdGsDisplayContext &ctx)
OdGsAwareFlagsArray::get
OdUInt32 get(OdUInt32 nVpID) const
OdSiRecursiveVisitor::m_nodeToWorld
const OdGeMatrix3d * m_nodeToWorld
Definition: GsBlockReferenceNode.h:61
OdGsBlockReferenceNodeImpl::isSharedReference
virtual bool isSharedReference() const
Definition: GsBlockReferenceNode.h:201
OdGsBlockReferenceNodeImpl::playAsGeometry
virtual void playAsGeometry(OdGsBaseVectorizer &view, EMetafilePlayMode eMode)=0
OdGsMInsertBlockNode::CollectionItem::firstAttrib
const OdGsEntityNode * firstAttrib() const
Definition: GsBlockReferenceNode.h:438
OdGsBlockReferenceNode::select
virtual bool select(OdGsBaseVectorizer &view, OdSiSelBaseVisitor *, OdGsView::SelectionMode mode)
OdGsBlockReferenceNode::layersChanged
virtual bool layersChanged(OdGsViewImpl &view) const
OdGsMInsertBlockNode::item
CollectionItem * item(unsigned iInstance)
OdGsBlockReferenceNodeImpl::OdGsBlockReferenceNodeImpl
OdGsBlockReferenceNodeImpl()
OdGsSpQueryContextTf::~OdGsSpQueryContextTf
~OdGsSpQueryContextTf()
OdGsBlockReferenceNode::actionCheckCancelledSharedRef
static void actionCheckCancelledSharedRef(void *pObj, OdGsUpdateState &state)
OdGsSpQueryContextTf::m_modelToWorld
OdGeMatrix3d m_modelToWorld
Definition: GsBlockReferenceNode.h:107
SETBIT
#define SETBIT(flags, bit, value)
Definition: OdaDefs.h:497
OdGeScale3d
Definition: GeScale3d.h:47
OdGsBlockReferenceNode::saveClientNodeState
bool saveClientNodeState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer) const
OdGsBlockReferenceNodeImpl::m_nRefCounter
OdRefCounter m_nRefCounter
Definition: GsBlockReferenceNode.h:217
OdRefCounter
int OdRefCounter
Definition: OdMutex.h:436
OdGsMInsertBlockNode::doSelect
virtual bool doSelect(OdGsBaseVectorizer &vect, OdGiDrawable *pDrw, OdSiSelBaseVisitor *pVisitor, OdGsView::SelectionMode mode)
OdGsBlockReferenceNodeImpl::highlight
virtual void highlight(bool bDoIt, bool bWholeBranch)=0
OdGsBlockReferenceNodeImpl::updateSubitems
virtual void updateSubitems(OdGsUpdateContext &ctx, OdGsBlockNode &blockNode, const OdGiDrawable *pBlock)=0
EMetafilePlayMode
EMetafilePlayMode
Definition: GsDefs.h:328
OdGsBlockReferenceNode::doSelect
virtual bool doSelect(OdGsBaseVectorizer &vect, OdGiDrawable *pDrw, OdSiSelBaseVisitor *pVisitor, OdGsView::SelectionMode mode)
OdGsMInsertBlockNode::loadClientNodeState
bool loadClientNodeState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer)
OdSiRecursiveVisitor::worldToModel
const OdGeMatrix3d * worldToModel() const
Definition: GsBlockReferenceNode.h:53
OdGsSpQueryContextTf::m_worldToModel
OdGeMatrix3d m_worldToModel
Definition: GsBlockReferenceNode.h:108
OdArray
Definition: OdArray.h:591
OdSiSelBaseVisitor
OdSiRecursiveVisitor OdSiSelBaseVisitor
Definition: GsBlockReferenceNode.h:66
TD_PackPop.h
OdGsMInsertBlockNode::m_pCollectionImpl
Collection * m_pCollectionImpl
Definition: GsBlockReferenceNode.h:472
OdGsBlockReferenceNode::m_pBlockNode
OdGsBlockNode * m_pBlockNode
Definition: GsBlockReferenceNode.h:364
OdGsBlockReferenceNode::initBlockNode
void initBlockNode(const OdGiDrawable *pBlock)
OdGsBlockReferenceNode::propagateLayerChanges
virtual void propagateLayerChanges(OdGsViewImpl &view)
OdGsBlockReferenceNode::update
virtual void update(OdGsUpdateContext &ctx, OdGsContainerNode *pParent, OdSiSpatialIndex *pParentIndex)
OdGsMarker
ptrdiff_t OdGsMarker
Definition: OdPlatformSettings.h:889
OdGsBlockReferenceNodeImpl::isSharedDefinition
virtual bool isSharedDefinition() const
Definition: GsBlockReferenceNode.h:202
OdGsBlockReferenceNode::loadClientNodeState
bool loadClientNodeState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer)
OdGsMInsertBlockNode::selectSubitems
bool selectSubitems(OdGsBaseVectorizer &view, OdSiSelBaseVisitor *pVisitor, OdGsView::SelectionMode mode)
OdGsBlockReferenceNode::firstEntity
virtual OdGsEntityNode * firstEntity()
OdSiRecursiveVisitor::m_worldToNode
const OdGeMatrix3d * m_worldToNode
Definition: GsBlockReferenceNode.h:60
OdUInt32
unsigned int OdUInt32
Definition: OdPlatformSettings.h:783
OdGsMInsertBlockNode::CollectionItem::CollectionItem
CollectionItem()
Definition: GsBlockReferenceNode.h:430
OdGeMatrix3d
Definition: GeMatrix3d.h:73
mask
GLenum GLint GLuint mask
Definition: gles2_ext.h:262
OdGsBlockNode
Definition: GsBlockNode.h:124
OdSiRecursiveVisitorTf::m_visitor
OdSiRecursiveVisitor & m_visitor
Definition: GsBlockReferenceNode.h:82
OdGsBlockReferenceNodeImpl::propagateLayerChangesStock
virtual void propagateLayerChangesStock()=0
OdSiRecursiveVisitor::setNodeToWorld
void setNodeToWorld(const OdGeMatrix3d *tf)
Definition: GsBlockReferenceNode.h:52
OdGsBlockReferenceNode::sharedDefinition
void * sharedDefinition()
OdGsMInsertBlockNode::ODRX_DECLARE_MEMBERS
ODRX_DECLARE_MEMBERS(OdGsMInsertBlockNode)
OdGsEntityNode::awareFlags
virtual OdUInt32 awareFlags(OdUInt32 viewportId) const
OdGsMInsertBlockNode::firstEntity
virtual OdGsEntityNode * firstEntity()
OdGsMInsertBlockNode::m_blockTf
OdGeMatrix3d m_blockTf
Definition: GsBlockReferenceNode.h:474
OdGsMInsertBlockNode::CollectionItem::copyFrom
void copyFrom(const CollectionItem &c)
OdGsAwareFlagsArray::set
void set(OdUInt32 nVpID, OdUInt32 flags)
OdGsBlockReferenceNode::childrenUpToDate
virtual bool childrenUpToDate(OdUInt32 nVpID) const
OdGsBlockReferenceNodeImpl::numRefs
long numRefs() const
Definition: GsBlockReferenceNode.h:176
OdGsMInsertBlockNode::m_nRows
int m_nRows
Definition: GsBlockReferenceNode.h:476
OdGsAwareFlagsArray::areInvalid
bool areInvalid(OdUInt32 nVpID) const
OdGsView::SelectionMode
SelectionMode
Definition: Gs.h:157
OdGsMInsertBlockNode
Definition: GsBlockReferenceNode.h:380
OdGsMInsertBlockNode::CollectionItem::m_nodeImp
TPtr< OdGsBlockReferenceNodeImpl > m_nodeImp
Definition: GsBlockReferenceNode.h:441
OdGsBlockReferenceNode::drawBlock
void drawBlock(OdGsUpdateContext &ctx, const OdGiDrawable *pBlockTableRecord, OdGsBlockReferenceNodeImpl *pContainer, bool bEnableSharedGraphics)
OdGsBlockReferenceNode::actionRestartLocked
static void actionRestartLocked(void *pObj, OdGsUpdateContext &ctx)
OdGsMInsertBlockNode::destroySubitems
virtual void destroySubitems()
OdGsBlockReferenceNodeImpl::display
virtual void display(OdGsDisplayContext &ctx, bool isHighlightedAll)=0
OdGsMInsertBlockNode::firstAttrib
virtual OdGsEntityNode * firstAttrib()
GsEntityNode.h
OdGsBlockReferenceNode::actionAddEntPropsFromState
static void actionAddEntPropsFromState(void *pObj, OdGsUpdateState &state)
OdGsBlockReferenceNodeImpl::destroy
virtual bool destroy()=0
OdGsBlockReferenceNode::setChildrenUpToDate
virtual void setChildrenUpToDate(bool childrenUpToDate, const OdUInt32 nVpID)
OdGsSpQueryContextTf::m_prevModelToWorld
const OdGeMatrix3d * m_prevModelToWorld
Definition: GsBlockReferenceNode.h:109
OdGsMInsertBlockNode::m_sy
double m_sy
Definition: GsBlockReferenceNode.h:478
OdSiRecursiveVisitor::query
const OdSiShape * query() const
Definition: GsBlockReferenceNode.h:46
OdSiRecursiveVisitor
Definition: GsBlockReferenceNode.h:41
OdDAI::operator!=
bool DAI_EXPORT operator!=(const OdDAI::OdSelect &left, const OdDAI::OdSelect &right)
OdGsMInsertBlockNode::setParams
void setParams(const OdGeMatrix3d &blockTf, int nCols, int nRows, double sx, double sy)
Definition: GsBlockReferenceNode.h:406
OdGsSpQueryContextTf
Definition: GsBlockReferenceNode.h:96
OdGsMInsertBlockNode::CollectionItem
Definition: GsBlockReferenceNode.h:428
OdGsBlockReferenceNodeImpl::loadNodeImplState
virtual bool loadNodeImplState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer, OdGsBaseModel *pModel)=0
OdGsMInsertBlockNode::m_xModelToWorld
OdGeMatrix3d m_xModelToWorld
Definition: GsBlockReferenceNode.h:473
OdGsBlockReferenceNodeImpl::invalidate
virtual bool invalidate(OdGsContainerNode *pParent, OdGsViewImpl *pView, OdUInt32 mask)=0
OdGsMInsertBlockNode::OdGsMInsertBlockNode
OdGsMInsertBlockNode(OdGsBaseModel *pModel, const OdGiDrawable *pInsert, bool bSetGsNode=false)
OdGsBlockReferenceNode::awareFlagsAreInvalid
virtual bool awareFlagsAreInvalid(OdUInt32 viewportId) const
OdGsMInsertBlockNode::doUpdateImpl
virtual void doUpdateImpl(OdGsUpdateContext &ctx, const OdGiDrawable *pBlockTableRecord, unsigned iInstance)
OdGsBlockReferenceNode::setValid
void setValid(bool bSet)
Definition: GsBlockReferenceNode.h:246
OdGsMInsertBlockNode::makeStock
virtual void makeStock()
OdGsAwareFlagsArray::clear
void clear()
Definition: GsBlockReferenceNode.h:138
OdGiDrawable
Definition: GiDrawable.h:49
OdGsBlockReferenceNode::m_pImpl
TPtr< OdGsBlockReferenceNodeImpl > m_pImpl
Definition: GsBlockReferenceNode.h:362
OdGsSpQueryContextTf::m_prevWorldToModel
const OdGeMatrix3d * m_prevWorldToModel
Definition: GsBlockReferenceNode.h:110
OdGsViewImpl
Definition: GsViewImpl.h:58
OdSiRecursiveVisitor::m_worldToModel
const OdGeMatrix3d * m_worldToModel
Definition: GsBlockReferenceNode.h:62
OdSiRecursiveVisitor::setWorldToModel
void setWorldToModel(const OdGeMatrix3d *tf)
Definition: GsBlockReferenceNode.h:54
OdGsBlockReferenceNode::postprocessNodeLoading
bool postprocessNodeLoading(OdGsFiler *pFiler)
OdSiRecursiveVisitor::OdSiRecursiveVisitor
OdSiRecursiveVisitor()
Definition: GsBlockReferenceNode.h:43
OdGsSpQueryContextTf::m_nodeToWorld
OdGeMatrix3d m_nodeToWorld
Definition: GsBlockReferenceNode.h:103
OdGsMInsertBlockNode::~OdGsMInsertBlockNode
~OdGsMInsertBlockNode()
v
const GLfloat * v
Definition: gles2_ext.h:315
OdVector< OdUInt32, OdMemoryAllocator< OdUInt32 > >
OdGsSpQueryContextTf::OdGsSpQueryContextTf
OdGsSpQueryContextTf(OdSiRecursiveVisitor &v, const OdGeMatrix3d &objectTf, const OdGeMatrix3d &objectTfInv, const OdGeScale3d &scale)
OdGsBlockReferenceNode::checkCancelledSharedRef
void checkCancelledSharedRef(OdGsUpdateState &state)
OdGsMInsertBlockNode::actionStretchExtents
static void actionStretchExtents(void *pObj, OdGsUpdateState &state)
OdGsBlockReferenceNode::ODRX_DECLARE_MEMBERS
ODRX_DECLARE_MEMBERS(OdGsBlockReferenceNode)
OdGsBlockReferenceNode::updateImpl
void updateImpl(OdGsUpdateContext &ctx, const OdGiDrawable *pInsert, OdSiSpatialIndex *pParentIndex)
TD_PackPush.h
OdGsBlockReferenceNode::updateBlockNode
void updateBlockNode(const OdGiDrawable *pBlockTableRecord)
OdSiVisitor
Definition: SiSpatialIndex.h:98
OdGsMInsertBlockNode::CollectionItem::firstAttrib
OdGsEntityNode * firstAttrib()
Definition: GsBlockReferenceNode.h:437
OdGsMInsertBlockNode::highlight
virtual void highlight(bool bDoIt, bool bWholeBranch)
OdGsSpQueryContextTf::m_worldToNode
OdGeMatrix3d m_worldToNode
Definition: GsBlockReferenceNode.h:104
OdGsBlockReferenceNode::m_pFirstAttrib
OdGsEntityNode * m_pFirstAttrib
Definition: GsBlockReferenceNode.h:366
OdGsBlockReferenceNode::actionPostUpdateStep
static void actionPostUpdateStep(void *pObj, OdGsUpdateState &state)
OdGsMInsertBlockNode::releaseStock
virtual void releaseStock()
OdSiShape
Definition: SiSpatialIndex.h:51
OdGsBlockReferenceNode
Definition: GsBlockReferenceNode.h:228
OdGsBlockReferenceNode::awareFlags
virtual OdUInt32 awareFlags(OdUInt32 viewportId) const
OdGsEntityNode::kLastFlag
@ kLastFlag
Definition: GsEntityNode.h:479
OdGsMInsertBlockNode::m_sx
double m_sx
Definition: GsBlockReferenceNode.h:477
OdGsBlockReferenceNode::excludeFromViewExt
bool excludeFromViewExt() const
Definition: GsBlockReferenceNode.h:247
OdSiRecursiveVisitor::m_pQuery
const OdSiShape * m_pQuery
Definition: GsBlockReferenceNode.h:59
OdGsBlockReferenceNode::setMetafile
void setMetafile(OdGsUpdateContext &ctx, OdGsEntityNode::Metafile *pMf, OdUInt32 awareFlags, const OdGeExtents3d &ext)
OdGsBlockReferenceNode::doDisplay
virtual void doDisplay(OdGsDisplayContext &ctx)
OdGsBlockReferenceNode::highlightSubnodes
bool highlightSubnodes(OdUInt32 nSubnodes, bool bHighlight, bool bAll)
OdGsMInsertBlockNode::saveClientNodeState
bool saveClientNodeState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer) const
OdGsBlockReferenceNode::makeStock
virtual void makeStock()
OdGsBlockReferenceNode::needRegen
bool needRegen(OdUInt32 nVpID) const
Definition: GsBlockReferenceNode.h:325
OdSiRecursiveVisitor::worldToNode
const OdGeMatrix3d * worldToNode() const
Definition: GsBlockReferenceNode.h:49
OdSiRecursiveVisitorTf::OdSiRecursiveVisitorTf
OdSiRecursiveVisitorTf(OdSiRecursiveVisitor &v, const OdGeMatrix3d &mat)
OdGsBlockReferenceNode::updateAttribute
void updateAttribute(OdGsUpdateContext &ctx, OdGsEntityNode *pNode, const OdGiDrawable *pInsert, OdGsMarker marker)
TPtr< OdGsBlockReferenceNodeImpl >
OdGsMInsertBlockNode::destroy
virtual void destroy()
OdGsBlockReferenceNodeImpl::layersChanged
virtual bool layersChanged(OdGsViewImpl &view) const
OdGsBlockReferenceNodeImpl::makeStock
virtual void makeStock()=0
OdGsMInsertBlockNode::clearParams
void clearParams()
Definition: GsBlockReferenceNode.h:463
OdGsMInsertBlockNode::CollectionItem::imp
const OdGsBlockReferenceNodeImpl * imp() const
Definition: GsBlockReferenceNode.h:436
OdGsBlockReferenceNode::create
static OdGsBlockReferenceNode * create(OdGsBaseModel *pModel, const OdGiDrawable *pDrawable)
OdGsBlockReferenceNodeImpl::postprocessNodeImplLoading
virtual void postprocessNodeImplLoading(OdGsFiler *)
Definition: GsBlockReferenceNode.h:212
OdGsBlockReferenceNodeImpl::destroySubitems
virtual bool destroySubitems()=0
OdGsAwareFlagsArray::childrenUpToDate
bool childrenUpToDate(OdUInt32 nVpID) const
OdGsBaseModel
Definition: GsBaseModel.h:118
OdGsBlockReferenceNode::setExcludeFromViewExt
void setExcludeFromViewExt(bool bSet)
Definition: GsBlockReferenceNode.h:248
ODA_ASSERT
#define ODA_ASSERT(exp)
Definition: DebugStuff.h:49
OdSiRecursiveVisitor::setWorldToNode
void setWorldToNode(const OdGeMatrix3d *tf)
Definition: GsBlockReferenceNode.h:50
OdGsAwareFlagsArray::isEmpty
bool isEmpty() const
Definition: GsBlockReferenceNode.h:139
OdGeExtents3d
Definition: GeExtents3d.h:45
GS_TOOLKIT_EXPORT
#define GS_TOOLKIT_EXPORT
Definition: GsExport.h:37
OdGsBlockReferenceNode::releaseStock
virtual void releaseStock()
OdGsBlockReferenceNode::destroy
virtual void destroy()
OdGsMInsertBlockNode::isMInsert
virtual bool isMInsert() const
Definition: GsBlockReferenceNode.h:401
OdGsBlockReferenceNode::isMInsert
virtual bool isMInsert() const
Definition: GsBlockReferenceNode.h:305
OdGsMInsertBlockNode::Collection
Definition: GsBlockReferenceNode.h:454
OdGsEntityNode::Metafile
Definition: GsEntityNode.h:122
OdGsBlockReferenceNode::isReference
virtual bool isReference() const
Definition: GsBlockReferenceNode.h:250
OdDAI::operator==
bool DAI_EXPORT operator==(const OdFileDescriptionAuto &left, const OdFileDescriptionAuto &right)
OdGsBlockReferenceNode::invalidate
virtual void invalidate(OdGsContainerNode *pParent, OdGsViewImpl *pView, OdUInt32 mask)
OdGsBlockReferenceNodeImpl
Definition: GsBlockReferenceNode.h:160
OdSiRecursiveVisitor::nodeToWorld
const OdGeMatrix3d * nodeToWorld() const
Definition: GsBlockReferenceNode.h:51
OdGsBlockReferenceNodeImpl::addRef
void addRef()
Definition: GsBlockReferenceNode.h:166
OdGsBlockReferenceNode::isEmpty
virtual bool isEmpty()
OdSiSelectVisitorTf
OdSiRecursiveVisitorTf OdSiSelectVisitorTf
Definition: GsBlockReferenceNode.h:87
OdGsMInsertBlockNode::CollectionItem::CollectionItem
CollectionItem(const CollectionItem &c)
Definition: GsBlockReferenceNode.h:431
OdGsBlockReferenceNodeImpl::firstEntity
virtual OdGsEntityNode * firstEntity()=0
OdGsMInsertBlockNode::m_nCols
int m_nCols
Definition: GsBlockReferenceNode.h:475
OdSiRecursiveVisitor::setModelToWorld
void setModelToWorld(const OdGeMatrix3d *tf)
Definition: GsBlockReferenceNode.h:56
OdGsBlockReferenceNode::isValid
bool isValid() const
Definition: GsBlockReferenceNode.h:245
OdGsAwareFlagsArray::OdGsAwareFlagsArray
OdGsAwareFlagsArray()
Definition: GsBlockReferenceNode.h:129
OdGsBlockReferenceNode::doUpdateImpl
virtual void doUpdateImpl(OdGsUpdateContext &ctx, const OdGiDrawable *pBlockTableRecord, unsigned iInstance)
OdGsBlockReferenceNode::propagateLayerChangesStock
virtual void propagateLayerChangesStock()
OdGsBlockReferenceNodeImpl::release
void release()
Definition: GsBlockReferenceNode.h:170
OdGsMInsertBlockNode::postprocessNodeLoading
bool postprocessNodeLoading(OdGsFiler *pFiler)
OdGsFiler
Definition: GsFiler.h:63
OdGsBlockReferenceNode::setAwareFlags
void setAwareFlags(OdUInt32 viewportId, OdUInt32 nAwareFlags)
OdGsMInsertBlockNode::CollectionItem::imp
OdGsBlockReferenceNodeImpl * imp()
Definition: GsBlockReferenceNode.h:435
OdGsBlockReferenceNode::playAsGeometry
virtual void playAsGeometry(OdGsBaseVectorizer &view, EMetafilePlayMode eMode)
OdGsMInsertBlockNode::propagateLayerChangesStock
virtual void propagateLayerChangesStock()
OdGsSpQueryContextTf::m_prevWorldToNode
const OdGeMatrix3d * m_prevWorldToNode
Definition: GsBlockReferenceNode.h:106
OdGsBlockReferenceNode::clearBlockNode
void clearBlockNode()
Definition: GsBlockReferenceNode.h:481
OdGsBlockReferenceNode::firstAttrib
virtual OdGsEntityNode * firstAttrib()
Definition: GsBlockReferenceNode.h:292
OdGsMInsertBlockNode::Collection::Collection
Collection(const Collection &c)
OdGsAwareFlagsArray::numAwareFlags
OdUInt32 numAwareFlags() const
Definition: GsBlockReferenceNode.h:140
OdGsSpQueryContextTf::m_prevNodeToWorld
const OdGeMatrix3d * m_prevNodeToWorld
Definition: GsBlockReferenceNode.h:105
OdGsBlockReferenceNode::spatialQuery
virtual void spatialQuery(const OdGsView &view, OdSiRecursiveVisitor *pVisitor)
OdGsMInsertBlockNode::CollectionItem::m_pFirstAttrib
OdGsEntityNode * m_pFirstAttrib
Definition: GsBlockReferenceNode.h:442
OdSiRecursiveVisitor::m_modelToWorld
const OdGeMatrix3d * m_modelToWorld
Definition: GsBlockReferenceNode.h:63
OdGsBlockReferenceNode::OdGsBlockReferenceNode
OdGsBlockReferenceNode(OdGsBaseModel *pModel, const OdGiDrawable *pDrawable, bool bSetGsNode=false)
OdGsMInsertBlockNode::selectAttributes
bool selectAttributes(OdGsBaseVectorizer &view)
OdSiRecursiveVisitorTf::~OdSiRecursiveVisitorTf
~OdSiRecursiveVisitorTf()
OdSiRecursiveVisitor::resetQuery
void resetQuery(const OdSiShape *pQuery)
Definition: GsBlockReferenceNode.h:47
OdGsAwareFlagsArray::findFlag
bool findFlag(OdUInt32 nVpID) const
Definition: GsBlockReferenceNode.h:144
OdGsAwareFlagsArray::setChildrenUpToDate
void setChildrenUpToDate(bool childrenUpToDate, const OdUInt32 nVpID)
OdGsBlockReferenceNode::blockNode
OdGsBlockNode * blockNode() const
Definition: GsBlockReferenceNode.h:296
OdGsEntityNode
Definition: GsEntityNode.h:103
OdGsNode::baseModel
OdGsBaseModel * baseModel() const
Definition: GsNode.h:278