CFx SDK Documentation  2023 SP0
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__
#define ODA_ASSERT(exp)
Definition: DebugStuff.h:49
scale
Definition: DimVarDefs.h:1684
OdSiRecursiveVisitor OdSiSelBaseVisitor
OdSiRecursiveVisitorTf OdSiSelectVisitorTf
EMetafilePlayMode
Definition: GsDefs.h:328
#define GS_TOOLKIT_EXPORT
Definition: GsExport.h:37
#define NULL
Definition: GsProperties.h:177
int OdRefCounter
Definition: OdMutex.h:436
ptrdiff_t OdGsMarker
unsigned int OdUInt32
#define SETBIT(flags, bit, value)
Definition: OdaDefs.h:499
#define GETBIT(flags, bit)
Definition: OdaDefs.h:500
void setChildrenUpToDate(bool childrenUpToDate, const OdUInt32 nVpID)
OdUInt32 get(OdUInt32 nVpID) const
bool areInvalid(OdUInt32 nVpID) const
void set(OdUInt32 nVpID, OdUInt32 flags)
bool findFlag(OdUInt32 nVpID) const
bool childrenUpToDate(OdUInt32 nVpID) const
OdUInt32 numAwareFlags() const
static OdGsBlockReferenceNode * create(OdGsBaseModel *pModel, const OdGiDrawable *pDrawable)
static void actionCheckCancelledSharedRef(void *pObj, OdGsUpdateState &state)
virtual OdGsEntityNode * firstEntity()
virtual void makeStock()
static void actionAddEntPropsFromState(void *pObj, OdGsUpdateState &state)
void checkCancelledSharedRef(OdGsUpdateState &state)
virtual void destroySubitems()
void updateBlockNode(const OdGiDrawable *pBlockTableRecord)
virtual bool doSelect(OdGsBaseVectorizer &vect, OdGiDrawable *pDrw, OdSiSelBaseVisitor *pVisitor, OdGsView::SelectionMode mode)
virtual OdGsEntityNode * firstAttrib()
virtual void setChildrenUpToDate(bool childrenUpToDate, const OdUInt32 nVpID)
void setAwareFlags(OdUInt32 viewportId, OdUInt32 nAwareFlags)
virtual bool isEmpty()
void initBlockNode(const OdGiDrawable *pBlock)
void updateImpl(OdGsUpdateContext &ctx, const OdGiDrawable *pInsert, OdSiSpatialIndex *pParentIndex)
void addEntPropsFromState(const OdGsUpdateState &state)
virtual void propagateLayerChangesStock()
virtual void invalidate(OdGsContainerNode *pParent, OdGsViewImpl *pView, OdUInt32 mask)
void postUpdateStep(OdGsUpdateState &state)
virtual void destroy()
virtual bool isMInsert() const
virtual OdUInt32 awareFlags(OdUInt32 viewportId) const
virtual void update(OdGsUpdateContext &ctx, OdGsContainerNode *pParent, OdSiSpatialIndex *pParentIndex)
bool loadClientNodeState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer)
bool needRegen(OdUInt32 nVpID) const
OdGsBlockNode * blockNode() const
virtual bool isReference() const
virtual void releaseStock()
static void actionRestartLocked(void *pObj, OdGsUpdateContext &ctx)
bool postprocessNodeLoading(OdGsFiler *pFiler)
OdGsBlockReferenceNode(OdGsBaseModel *pModel, const OdGiDrawable *pDrawable, bool bSetGsNode=false)
bool saveClientNodeState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer) const
virtual void doUpdateImpl(OdGsUpdateContext &ctx, const OdGiDrawable *pBlockTableRecord, unsigned iInstance)
virtual bool childrenRegenDraw(OdUInt32 nVpID) const
void setMetafile(OdGsUpdateContext &ctx, OdGsEntityNode::Metafile *pMf, OdUInt32 awareFlags, const OdGeExtents3d &ext)
TPtr< OdGsBlockReferenceNodeImpl > m_pImpl
virtual bool awareFlagsAreInvalid(OdUInt32 viewportId) const
virtual bool childrenUpToDate(OdUInt32 nVpID) const
virtual void playAsGeometry(OdGsBaseVectorizer &view, EMetafilePlayMode eMode)
void setExcludeFromViewExt(bool bSet)
void drawBlock(OdGsUpdateContext &ctx, const OdGiDrawable *pBlockTableRecord, OdGsBlockReferenceNodeImpl *pContainer, bool bEnableSharedGraphics)
OdGsEntityNode * m_pFirstAttrib
ODRX_DECLARE_MEMBERS(OdGsBlockReferenceNode)
static void actionPostUpdateStep(void *pObj, OdGsUpdateState &state)
virtual void propagateLayerChanges(OdGsViewImpl &view)
virtual void spatialQuery(const OdGsView &view, OdSiRecursiveVisitor *pVisitor)
virtual void doDisplay(OdGsDisplayContext &ctx)
bool highlightSubnodes(OdUInt32 nSubnodes, bool bHighlight, bool bAll)
virtual bool select(OdGsBaseVectorizer &view, OdSiSelBaseVisitor *, OdGsView::SelectionMode mode)
virtual void doSpatialQuery(OdGsSpQueryContext &ctx)
void updateAttribute(OdGsUpdateContext &ctx, OdGsEntityNode *pNode, const OdGiDrawable *pInsert, OdGsMarker marker)
virtual bool layersChanged(OdGsViewImpl &view) const
virtual void propagateLayerChangesStock()=0
virtual void playAsGeometry(OdGsBaseVectorizer &view, EMetafilePlayMode eMode)=0
virtual void makeStock()=0
virtual bool layersChanged(OdGsViewImpl &view) const
virtual void doSpatialQuery(OdGsSpQueryContext &ctx)=0
virtual bool saveNodeImplState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer) const =0
virtual void display(OdGsDisplayContext &ctx, bool isHighlightedAll)=0
virtual bool isSharedDefinition() const
virtual ~OdGsBlockReferenceNodeImpl()
virtual OdGsEntityNode * firstEntity()=0
virtual void postprocessNodeImplLoading(OdGsFiler *)
virtual void updateSubitems(OdGsUpdateContext &ctx, OdGsBlockNode &blockNode, const OdGiDrawable *pBlock)=0
virtual bool destroySubitems()=0
virtual bool isSharedReference() const
virtual bool invalidate(OdGsContainerNode *pParent, OdGsViewImpl *pView, OdUInt32 mask)=0
virtual void highlight(bool bDoIt, bool bWholeBranch)=0
virtual bool loadNodeImplState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer, OdGsBaseModel *pModel)=0
virtual void releaseStock()=0
virtual bool select(OdGsBaseVectorizer &view, OdSiSelBaseVisitor *pVisitor, bool bHasExtents, OdGsView::SelectionMode mode)=0
virtual bool destroy()=0
Collection(const Collection &c)
OdGsBlockReferenceNodeImpl * imp()
TPtr< OdGsBlockReferenceNodeImpl > m_nodeImp
const OdGsEntityNode * firstAttrib() const
void copyFrom(const CollectionItem &c)
const OdGsBlockReferenceNodeImpl * imp() const
virtual bool layersChanged(OdGsViewImpl &view) const
bool saveClientNodeState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer) const
virtual void destroy()
bool loadClientNodeState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer)
virtual void doUpdateImpl(OdGsUpdateContext &ctx, const OdGiDrawable *pBlockTableRecord, unsigned iInstance)
virtual bool isMInsert() const
virtual OdGsEntityNode * firstEntity()
virtual void doDisplay(OdGsDisplayContext &ctx)
static void actionStretchExtents(void *pObj, OdGsUpdateState &state)
bool postprocessNodeLoading(OdGsFiler *pFiler)
ODRX_DECLARE_MEMBERS(OdGsMInsertBlockNode)
virtual void destroySubitems()
OdGsEntityNode *& firstAttrib(unsigned iInstance)
OdGsMInsertBlockNode(OdGsBaseModel *pModel, const OdGiDrawable *pInsert, bool bSetGsNode=false)
virtual void releaseStock()
bool selectSubitems(OdGsBaseVectorizer &view, OdSiSelBaseVisitor *pVisitor, OdGsView::SelectionMode mode)
void setParams(const OdGeMatrix3d &blockTf, int nCols, int nRows, double sx, double sy)
bool selectAttributes(OdGsBaseVectorizer &view)
virtual void highlight(bool bDoIt, bool bWholeBranch)
virtual void invalidate(OdGsContainerNode *pParent, OdGsViewImpl *pView, OdUInt32 mask)
virtual void propagateLayerChangesStock()
virtual void playAsGeometry(OdGsBaseVectorizer &view, EMetafilePlayMode eMode)
CollectionItem * item(unsigned iInstance)
virtual OdGsEntityNode * firstAttrib()
OdGsBlockReferenceNodeImpl * getImpl(unsigned iInstance)
virtual void makeStock()
virtual bool doSelect(OdGsBaseVectorizer &vect, OdGiDrawable *pDrw, OdSiSelBaseVisitor *pVisitor, OdGsView::SelectionMode mode)
OdGsSpQueryContextTf(OdSiRecursiveVisitor &v, const OdGeMatrix3d &objectTf, const OdGeMatrix3d &objectTfInv, const OdGeScale3d &scale)
const OdGeMatrix3d * m_prevWorldToNode
const OdGeMatrix3d * m_prevWorldToModel
const OdGeMatrix3d * m_prevModelToWorld
const OdGeMatrix3d * m_prevNodeToWorld
Definition: Gs.h:133
SelectionMode
Definition: Gs.h:157
const OdGeMatrix3d * m_worldToNode
const OdGeMatrix3d * modelToWorld() const
const OdGeMatrix3d * m_worldToModel
const OdGeMatrix3d * worldToModel() const
const OdSiShape * query() const
const OdGeMatrix3d * nodeToWorld() const
void setModelToWorld(const OdGeMatrix3d *tf)
void resetQuery(const OdSiShape *pQuery)
const OdGeMatrix3d * m_modelToWorld
void setWorldToModel(const OdGeMatrix3d *tf)
const OdGeMatrix3d * worldToNode() const
void setNodeToWorld(const OdGeMatrix3d *tf)
const OdGeMatrix3d * m_nodeToWorld
const OdSiShape * m_pQuery
void setWorldToNode(const OdGeMatrix3d *tf)
OdSiRecursiveVisitor & m_visitor
OdSiRecursiveVisitorTf(OdSiRecursiveVisitor &v, const OdGeMatrix3d &mat)
GLenum GLint GLuint mask
Definition: gles2_ext.h:262
const GLfloat * v
Definition: gles2_ext.h:315
bool operator==(const BlockRefPath &rA, const BlockRefPath &rB)
DOM.
bool operator!=(const BlockRefPath &rA, const BlockRefPath &rB)
DOM.