CFx SDK Documentation 2024 SP0
Loading...
Searching...
No Matches
GsBlockReferenceNode.h
Go to the documentation of this file.
1
2// Copyright (C) 2002-2022, 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 Open Design Alliance software pursuant to a license
16// agreement with Open Design Alliance.
17// Open Design Alliance Copyright (C) 2002-2022 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
32class OdGsSpQueryContext;
33
41{
42public:
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
58protected:
64};
65
67
75{
76public:
79 operator OdSiRecursiveVisitor*() { return &m_visitor; }
80
81protected:
83private:
84 const OdSiShape* m_prevQuery;
85 std::unique_ptr<OdSiShape> m_transformedQuery;
86};
88
96{
97public:
99 const OdGeScale3d& scale);
101
102protected:
111};
112
113// forward declarations
115class OdGsBlockNode;
116class WorldDrawBlockRef;
117class OdGsUpdateState;
118
127{
128public:
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
143protected:
144 bool findFlag(OdUInt32 nVpID) const
145 { return nVpID < m_vpAwareFlags.size(); }
146
147private:
148 // viewport aware flags
149 OdUInt32Vector m_vpAwareFlags;
150};
151
160{
161public:
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, OdUInt32 nSelStyle = 0) = 0;
198 // Methods for traversing internal subitems
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*/) { }
213protected:
215
216protected:
218};
219
227 protected OdGsAwareFlagsArray
228{
229public:
231
232 OdGsBlockReferenceNode(OdGsBaseModel* pModel, const OdGiDrawable* pDrawable, bool bSetGsNode = false);
233public:
235
236 // additional flags for processing of inserts
237 enum
238 {
240 kBrExcludeFromViewExt = OdGsEntityNode::kLastFlag << 2,
241 kBrClipped = OdGsEntityNode::kLastFlag << 3,
242 kForceNotEmpty = OdGsEntityNode::kLastFlag << 4,
243 kLastFlag = kForceNotEmpty
244 };
245
246 bool isValid() const { return GETBIT(m_flags, kValid); }
247 void setValid(bool bSet) { SETBIT(m_flags, kValid, bSet); }
248 bool excludeFromViewExt() const { return GETBIT(m_flags, kBrExcludeFromViewExt); }
249 void setExcludeFromViewExt(bool bSet) { SETBIT(m_flags, kBrExcludeFromViewExt, bSet); }
250
251 bool isForceNotEmpty() const { return GETBIT( m_flags, kForceNotEmpty ); }
252 void setForceNotEmpty( bool b ) { SETBIT( m_flags, kForceNotEmpty, b ); }
253
254 virtual bool isReference() const { return true; }
255 virtual bool isSelfReferential() const;
256 virtual bool layersChanged(OdGsViewImpl& view) const;
257 // implementation of OdGsEntityNode interface:
258 virtual void update(OdGsUpdateContext& ctx, OdGsContainerNode* pParent,
259 OdSiSpatialIndex* pParentIndex);
261
262 virtual void invalidate(OdGsContainerNode* pParent, OdGsViewImpl* pView, OdUInt32 mask);
263 virtual void destroy();
264 virtual void destroySubitems();
265
268
276 bool highlightSubnodes(OdUInt32 nSubnodes, bool bHighlight, bool bAll);
277
282 virtual OdUInt32 awareFlags(OdUInt32 viewportId) const;
283
289 virtual bool awareFlagsAreInvalid(OdUInt32 viewportId) const;
290
294 virtual bool isEmpty();
295
297 virtual OdGsEntityNode* firstAttrib() { return m_pFirstAttrib; }
298 void updateImpl(OdGsUpdateContext& ctx, const OdGiDrawable* pInsert,
299 OdSiSpatialIndex* pParentIndex);
300
301 OdGsBlockNode* blockNode() const { return m_pBlockNode; }
302 void clearBlockNode();
303
304 virtual void makeStock();
305 virtual void releaseStock();
307 void updateBlockNode(const OdGiDrawable* pBlockTableRecord);
308 //For testing purposes
309 void* sharedDefinition(const OdGsViewImpl &view);
310 virtual bool isMInsert() const { return false; }
311 static OdGsBlockReferenceNode* create(OdGsBaseModel* pModel, const OdGiDrawable* pDrawable);
312 virtual void doDisplay(OdGsDisplayContext& ctx);
313 virtual bool doSelect(OdGsBaseVectorizer& vect, OdGiDrawable* pDrw,
315
316 virtual void spatialQuery(const OdGsView& view, OdSiRecursiveVisitor* pVisitor);
317
324 virtual bool getSharedTransform(OdGeMatrix3d& transform) const;
325
326protected:
327 virtual void setChildrenUpToDate(bool childrenUpToDate, const OdUInt32 nVpID);
328 virtual bool childrenUpToDate(OdUInt32 nVpID) const;
329 virtual bool childrenRegenDraw(OdUInt32 nVpID) const;
330 void updateAttribute(OdGsUpdateContext& ctx, OdGsEntityNode* pNode,
331 const OdGiDrawable* pInsert, OdGsMarker marker);
332 // Tool methods
333 void setAwareFlags(OdUInt32 viewportId, OdUInt32 nAwareFlags);
335 void initBlockNode(const OdGiDrawable* pBlock);
336 void setMetafile(OdGsUpdateContext& ctx, OdGsEntityNode::Metafile* pMf,
337 OdUInt32 awareFlags, const OdGeExtents3d& ext);
338 bool needRegen(OdUInt32 nVpID) const
339 {
340 if(!childrenUpToDate(nVpID))
341 return true;
342 OdUInt32 nAF = awareFlags(nVpID);
343 if( nAF == 0xFFFFFFFF || (baseModel()->viewChanges(nVpID) & nAF) != 0 )
344 {
345 const_cast<OdGsBlockReferenceNode*>(this)->setChildrenUpToDate(false, nVpID);
346 return true;
347 }
348 return false;
349 }
350 virtual void doUpdateImpl(OdGsUpdateContext& ctx, const OdGiDrawable* pBlockTableRecord, unsigned iInstance);
351 void drawBlock(OdGsUpdateContext& ctx, const OdGiDrawable* pBlockTableRecord,
352 OdGsBlockReferenceNodeImpl* pContainer,
353 bool bEnableSharedGraphics);
354 void postUpdateStep(OdGsUpdateState& state);
355 void addEntPropsFromState(const OdGsUpdateState& state);
356 void checkCancelledSharedRef(OdGsUpdateState& state);
357 static void actionPostUpdateStep(void* pObj, OdGsUpdateState& state);
358 static void actionAddEntPropsFromState(void* pObj, OdGsUpdateState& state);
359 static void actionCheckCancelledSharedRef(void* pObj, OdGsUpdateState& state);
360 static void actionRestartLocked(void* pObj, OdGsUpdateContext& ctx);
361 virtual void doSpatialQuery(OdGsSpQueryContext& ctx);
363 {
364 if(!m_pImpl.get() || !m_pImpl->isSharedReference())
365 return m_pImpl;
366 return getSharedImpl(view);
367 }
368
369 bool saveClientNodeState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer) const;
372private:
373 void createImpl(const OdGsUpdateContext& ctx, bool bTryShared);
374 void drawBlockImpl(OdGsUpdateContext& ctx, const OdGiDrawable* pBlockTableRecord,
375 OdGsBlockReferenceNodeImpl* pContainer,
376 bool bEnableSharedGraphics);
377
378 bool isAProxy(OdGiDrawable *pDrw, const OdGiContext *pCtx = NULL) const;
379
380 void clearImpl() { m_pImpl = NULL; }
381 bool validateSharedRefImpl(const OdGsUpdateContext &ctx, bool &bTryShared);
382 OdGsBlockReferenceNodeImpl *getSharedImpl(const OdGsViewImpl &view);
383protected:
384 // Pointer to implementation object
386 // Pointer to the node, corresponding to the block table record
388 // list of attributes
390
391 friend class WorldDrawBlockRef;
392 friend class GsDrawableNested;
393 friend class OdGsSpQueryContext;
394};
395
403{
404public:
406 OdGsMInsertBlockNode(OdGsBaseModel* pModel, const OdGiDrawable* pInsert, bool bSetGsNode = false);
407public:
409
410 virtual void invalidate(OdGsContainerNode* pParent, OdGsViewImpl* pView, OdUInt32 mask);
411 virtual void destroy();
412 virtual void destroySubitems();
413
414 virtual void highlight(bool bDoIt, bool bWholeBranch, OdUInt32 nSelStyle = 0);
415
418 virtual bool layersChanged(OdGsViewImpl& view) const;
420
421 virtual void makeStock();
422 virtual void releaseStock();
424 virtual bool isMInsert() const { return true; }
425 virtual void doUpdateImpl(OdGsUpdateContext& ctx,
426 const OdGiDrawable* pBlockTableRecord, unsigned iInstance);
427 OdGsEntityNode*& firstAttrib(unsigned iInstance) { return item(iInstance)->m_pFirstAttrib; }
429 void setParams(const OdGeMatrix3d& blockTf, int nCols, int nRows, double sx, double sy)
430 {
431 m_blockTf = blockTf;
432 m_nCols = nCols;
433 m_nRows = nRows;
434 m_sx = sx;
435 m_sy = sy;
436 }
437 static void actionStretchExtents(void* pObj, OdGsUpdateState& state);
438 virtual void doDisplay(OdGsDisplayContext& ctx);
439 virtual bool doSelect(OdGsBaseVectorizer& vect, OdGiDrawable* pDrw,
441
442protected:
444
448
449protected:
451 {
452 public:
453 CollectionItem() : m_nodeImp(0), m_pFirstAttrib(0) { }
455 m_nodeImp(c.m_nodeImp), m_pFirstAttrib(c.m_pFirstAttrib){}
456 void copyFrom(const CollectionItem& c);
457
458 OdGsBlockReferenceNodeImpl* imp() { return m_nodeImp; }
459 const OdGsBlockReferenceNodeImpl* imp() const { return m_nodeImp; }
460 OdGsEntityNode* firstAttrib() { return m_pFirstAttrib; }
461 const OdGsEntityNode* firstAttrib() const { return m_pFirstAttrib; }
462
463 public:
466
467 bool operator ==(const CollectionItem &it2) const
468 {
469 return (m_nodeImp == it2.m_nodeImp) && (m_pFirstAttrib == it2.m_pFirstAttrib);
470 }
471 bool operator !=(const CollectionItem &it2) const
472 {
473 return (m_nodeImp != it2.m_nodeImp) || (m_pFirstAttrib != it2.m_pFirstAttrib);
474 }
475 };
476 class GS_TOOLKIT_EXPORT Collection: public OdArray<CollectionItem>
477 {
478 public:
482 };
483protected:
484 OdGsBlockReferenceNodeImpl* getImpl(unsigned iInstance) { return item(iInstance)->m_nodeImp; }
485 CollectionItem* item(unsigned iInstance);
486 void clearParams() {m_nCols = m_nRows = 0; m_sx = m_sy = 0.; m_blockTf.setToIdentity(); }
487
488 bool saveClientNodeState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer) const;
491protected:
492 // Collection of implementation objects, representing clipped MINSERT.
493 // (If MINSERT is not clipped, it's represented by only implementation
494 // object OdGsBlockReferenceNode::m_pImpl)
500 double m_sx;
501 double m_sy;
502};
503
505{
506 m_pBlockNode = 0;
507}
508
509#include "TD_PackPop.h"
510
511#endif // __OD_GS_REFERENCE_NODE__
#define ODA_ASSERT(exp)
Definition: DebugStuff.h:57
scale
Definition: DimVarDefs.h:1684
bool operator!=(T left, const OdGiVariant::EnumType right)
Definition: GiVariant.h:403
bool operator==(T left, const OdGiVariant::EnumType right)
Definition: GiVariant.h:397
OdSiRecursiveVisitor OdSiSelBaseVisitor
OdSiRecursiveVisitorTf OdSiSelectVisitorTf
EMetafilePlayMode
Definition: GsDefs.h:515
#define GS_TOOLKIT_EXPORT
Definition: GsExport.h:37
int OdRefCounter
Definition: OdMutex.h:487
ptrdiff_t OdGsMarker
unsigned int OdUInt32
#define SETBIT(flags, bit, value)
Definition: OdaDefs.h:516
#define GETBIT(flags, bit)
Definition: OdaDefs.h:517
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 void actionCheckCancelledSharedRef(void *pObj, OdGsUpdateState &state)
virtual bool getSharedTransform(OdGeMatrix3d &transform) const
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 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 * sharedDefinition(const OdGsViewImpl &view)
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)
virtual OdGsEntityNode * firstAttrib()
virtual OdGsEntityNode * firstEntity()
bool loadClientNodeState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer)
OdGsBlockNode * blockNode() const
virtual bool isSelfReferential() const
OdGsBlockReferenceNodeImpl * getImpl(const OdGsViewImpl &view)
bool needRegen(OdUInt32 nVpID) 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)
static OdGsBlockReferenceNode * create(OdGsBaseModel *pModel, const OdGiDrawable *pDrawable)
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 highlight(bool bDoIt, bool bWholeBranch, OdUInt32 nSelStyle=0)=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 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)
TPtr< OdGsBlockReferenceNodeImpl > m_nodeImp
OdGsBlockReferenceNodeImpl * imp()
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
CollectionItem * item(unsigned iInstance)
virtual void destroy()
bool loadClientNodeState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer)
virtual void doUpdateImpl(OdGsUpdateContext &ctx, const OdGiDrawable *pBlockTableRecord, unsigned iInstance)
virtual bool isMInsert() const
virtual void doDisplay(OdGsDisplayContext &ctx)
virtual void highlight(bool bDoIt, bool bWholeBranch, OdUInt32 nSelStyle=0)
static void actionStretchExtents(void *pObj, OdGsUpdateState &state)
bool postprocessNodeLoading(OdGsFiler *pFiler)
ODRX_DECLARE_MEMBERS(OdGsMInsertBlockNode)
virtual void destroySubitems()
OdGsMInsertBlockNode(OdGsBaseModel *pModel, const OdGiDrawable *pInsert, bool bSetGsNode=false)
virtual void releaseStock()
bool selectSubitems(OdGsBaseVectorizer &view, OdSiSelBaseVisitor *pVisitor, OdGsView::SelectionMode mode)
OdGsEntityNode *& firstAttrib(unsigned iInstance)
OdGsBlockReferenceNodeImpl * getImpl(unsigned iInstance)
void setParams(const OdGeMatrix3d &blockTf, int nCols, int nRows, double sx, double sy)
virtual OdGsEntityNode * firstEntity()
bool selectAttributes(OdGsBaseVectorizer &view)
virtual void invalidate(OdGsContainerNode *pParent, OdGsViewImpl *pView, OdUInt32 mask)
virtual void propagateLayerChangesStock()
virtual void playAsGeometry(OdGsBaseVectorizer &view, EMetafilePlayMode eMode)
virtual OdGsEntityNode * firstAttrib()
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:140
SelectionMode
Definition: Gs.h:173
const OdGeMatrix3d * m_worldToNode
const OdGeMatrix3d * nodeToWorld() const
const OdGeMatrix3d * m_worldToModel
const OdGeMatrix3d * worldToNode() const
const OdGeMatrix3d * worldToModel() const
void setModelToWorld(const OdGeMatrix3d *tf)
const OdSiShape * query() const
void resetQuery(const OdSiShape *pQuery)
const OdGeMatrix3d * m_modelToWorld
void setWorldToModel(const OdGeMatrix3d *tf)
void setNodeToWorld(const OdGeMatrix3d *tf)
const OdGeMatrix3d * m_nodeToWorld
const OdSiShape * m_pQuery
const OdGeMatrix3d * modelToWorld() const
void setWorldToNode(const OdGeMatrix3d *tf)
OdSiRecursiveVisitor & m_visitor
OdSiRecursiveVisitorTf(OdSiRecursiveVisitor &v, const OdGeMatrix3d &mat)
Definition: TPtr.h:76
GLenum GLint GLuint mask
Definition: gles2_ext.h:262
const GLfloat * v
Definition: gles2_ext.h:315