CFx SDK Documentation 2026 SP0
Loading...
Searching...
No Matches
GsBlockReferenceNode.h
Go to the documentation of this file.
1
2// Copyright (C) 2002-2024, 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-2024 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
33
41{
42public:
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; }
55 const OdGeMatrix3d* modelToWorld() const { return m_modelToWorld; }
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
112
113// forward declarations
115class OdGsBlockNode;
116class WorldDrawBlockRef;
117class OdGsUpdateState;
118
127{
128public:
130 enum
131 {
133 };
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;
143 {
144 if (m_vpAwareFlags.size() > nVpID)
145 m_vpAwareFlags[nVpID] = 0xFFFFFFFF;
146 }
147
148protected:
149 bool findFlag(OdUInt32 nVpID) const
150 { return nVpID < m_vpAwareFlags.size(); }
151
152private:
153 // viewport aware flags
154 OdUInt32Vector m_vpAwareFlags;
155};
156
165{
166public:
168 void* operator new(size_t);
169 void operator delete(void*);
170
171 void addRef()
172 {
174 }
175 void release()
176 {
178 if (!(--m_nRefCounter))
179 delete this;
180 }
181 long numRefs() const { return m_nRefCounter; }
182
183 // Main methods, used for OdGsNode interface implementation
184
185 //pBlock can be NULL.
186 //If is not NULL only when it is passed directly from the function where the drawable is open.
187 //If it is NULL and it is required then use blockNode.underlyingDrawable()
188 virtual void updateSubitems(OdGsUpdateContext& ctx,
189 OdGsBlockNode& blockNode, const OdGiDrawable* pBlock) = 0;
190 virtual void display(OdGsDisplayContext& ctx, bool isHighlightedAll) = 0;
191
192 //NS: following methods return true if operation succeded (invalidation
193 //or destroying leave the object valid). If they return false, it means that
194 //OdGsNode should release the instance and recreate m_pImpl.
195 virtual bool invalidate(OdGsContainerNode* pParent, OdGsViewImpl* pView,
196 OdUInt32 mask) = 0;
197 virtual bool destroy() = 0;
198 virtual bool destroySubitems() = 0;
199
200 virtual bool select(OdGsBaseVectorizer& view, OdSiSelBaseVisitor* pVisitor,
201 bool bHasExtents, OdGsView::SelectionMode mode) = 0;
202 virtual void highlight(bool bDoIt, bool bWholeBranch, OdUInt32 nSelStyle = 0) = 0;
203 // Methods for traversing internal subitems
206 virtual bool isSharedReference() const { return false; }
207 virtual bool isSharedDefinition() const { return false; }
208 virtual bool layersChanged(OdGsViewImpl& view) const;
209
210 virtual void makeStock() = 0;
211 virtual void releaseStock() = 0;
212 virtual void propagateLayerChangesStock() = 0;
213 virtual void doSpatialQuery(OdGsSpQueryContext& ctx) = 0;
214
215 virtual bool saveNodeImplState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer) const = 0;
216 virtual bool loadNodeImplState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer, OdGsBaseModel *pModel) = 0;
217 virtual void postprocessNodeImplLoading(OdGsFiler * /*pFiler*/) { }
218protected:
220
221protected:
223};
224
232 protected OdGsAwareFlagsArray
233{
234public:
236
237 OdGsBlockReferenceNode(OdGsBaseModel* pModel, const OdGiDrawable* pDrawable, bool bSetGsNode = false);
238public:
240
241 // additional flags for processing of inserts
242 enum
243 {
250 };
251
252 bool isValid() const { return GETBIT(m_flags, kValid); }
253 void setValid(bool bSet) { SETBIT(m_flags, kValid, bSet); }
256
257 bool isForceNotEmpty() const { return GETBIT( m_flags, kForceNotEmpty ); }
259
260 virtual bool isReference() const { return true; }
261 virtual bool isSelfReferential() const;
262 virtual bool layersChanged(OdGsViewImpl& view) const;
263 // implementation of OdGsEntityNode interface:
264 virtual void update(OdGsUpdateContext& ctx, OdGsContainerNode* pParent,
265 OdSiSpatialIndex* pParentIndex);
267
268 virtual void invalidate(OdGsContainerNode* pParent, OdGsViewImpl* pView, OdUInt32 mask);
269 virtual void destroy();
270 virtual void destroySubitems();
271
274
282 bool highlightSubnodes(OdUInt32 nSubnodes, bool bHighlight, bool bAll);
283
288 virtual OdUInt32 awareFlags(OdUInt32 viewportId) const;
289
295 virtual bool awareFlagsAreInvalid(OdUInt32 viewportId) const;
296
300 virtual bool isEmpty();
301
304 void updateImpl(OdGsUpdateContext& ctx, const OdGiDrawable* pInsert,
305 OdSiSpatialIndex* pParentIndex);
306
308 void clearBlockNode();
309
310 virtual void makeStock();
311 virtual void releaseStock();
313 void updateBlockNode(const OdGiDrawable* pBlockTableRecord);
314 //For testing purposes
315 void* sharedDefinition(const OdGsViewImpl &view);
316 virtual bool isMInsert() const { return false; }
317 static OdGsBlockReferenceNode* create(OdGsBaseModel* pModel, const OdGiDrawable* pDrawable);
318 virtual void doDisplay(OdGsDisplayContext& ctx);
319 virtual bool doSelect(OdGsBaseVectorizer& vect, OdGiDrawable* pDrw,
321
322 virtual void spatialQuery(const OdGsView& view, OdSiRecursiveVisitor* pVisitor);
323
330 virtual bool getSharedTransform(OdGeMatrix3d& transform) const;
331
341 OdGsViewImpl* pView, OdUInt32 mask, bool bRecursively = true );
342
343protected:
344 virtual void setChildrenUpToDate(bool childrenUpToDate, const OdUInt32 nVpID);
345 virtual bool childrenUpToDate(OdUInt32 nVpID) const;
346 virtual bool childrenRegenDraw(OdUInt32 nVpID) const;
347 void updateAttribute(OdGsUpdateContext& ctx, OdGsEntityNode* pNode,
348 const OdGiDrawable* pInsert, OdGsMarker marker);
349 // Tool methods
350 void setAwareFlags(OdUInt32 viewportId, OdUInt32 nAwareFlags);
352 void initBlockNode(const OdGiDrawable* pBlock);
353 void setMetafile(OdGsUpdateContext& ctx, OdGsEntityNode::Metafile* pMf,
354 OdUInt32 awareFlags, const OdGeExtents3d& ext);
355 bool needRegen(OdUInt32 nVpID) const
356 {
357 if(!childrenUpToDate(nVpID))
358 return true;
359 OdUInt32 nAF = awareFlags(nVpID);
360 if( nAF == 0xFFFFFFFF || (baseModel()->viewChanges(nVpID) & nAF) != 0 )
361 {
362 const_cast<OdGsBlockReferenceNode*>(this)->setChildrenUpToDate(false, nVpID);
363 return true;
364 }
365 return false;
366 }
367 virtual void doUpdateImpl(OdGsUpdateContext& ctx, const OdGiDrawable* pBlockTableRecord, unsigned iInstance);
368 void drawBlock(OdGsUpdateContext& ctx, const OdGiDrawable* pBlockTableRecord,
369 OdGsBlockReferenceNodeImpl* pContainer,
370 bool bEnableSharedGraphics);
371 void postUpdateStep(OdGsUpdateState& state);
372 void addEntPropsFromState(const OdGsUpdateState& state);
373 void checkCancelledSharedRef(OdGsUpdateState& state);
374 static void actionPostUpdateStep(void* pObj, OdGsUpdateState& state);
375 static void actionAddEntPropsFromState(void* pObj, OdGsUpdateState& state);
376 static void actionCheckCancelledSharedRef(void* pObj, OdGsUpdateState& state);
377 static void actionRestartLocked(void* pObj, OdGsUpdateContext& ctx);
380 {
381 if(!m_pImpl.get() || !m_pImpl->isSharedReference())
382 return m_pImpl;
383 return getSharedImpl(view);
384 }
385
386 bool saveClientNodeState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer) const;
389private:
390 void createImpl(const OdGsUpdateContext& ctx, bool bTryShared);
391 void drawBlockImpl(OdGsUpdateContext& ctx, const OdGiDrawable* pBlockTableRecord,
392 OdGsBlockReferenceNodeImpl* pContainer,
393 bool bEnableSharedGraphics);
394
395 bool isAProxy(OdGiDrawable *pDrw, const OdGiContext *pCtx = NULL) const;
396
397 void clearImpl() { m_pImpl = NULL; }
398 bool validateSharedRefImpl(const OdGsUpdateContext &ctx, bool &bTryShared);
399 OdGsBlockReferenceNodeImpl *getSharedImpl(const OdGsViewImpl &view);
400protected:
401 // Pointer to implementation object
403 // Pointer to the node, corresponding to the block table record
405 // list of attributes
407
408 friend class WorldDrawBlockRef;
409 friend class GsDrawableNested;
410 friend class OdGsSpQueryContext;
411};
412
420{
421public:
423 OdGsMInsertBlockNode(OdGsBaseModel* pModel, const OdGiDrawable* pInsert, bool bSetGsNode = false);
424public:
426
427 virtual void invalidate(OdGsContainerNode* pParent, OdGsViewImpl* pView, OdUInt32 mask);
428 virtual void destroy();
429 virtual void destroySubitems();
430
431 virtual void highlight(bool bDoIt, bool bWholeBranch, OdUInt32 nSelStyle = 0);
432
435 virtual bool layersChanged(OdGsViewImpl& view) const;
437
438 virtual void makeStock();
439 virtual void releaseStock();
441 virtual bool isMInsert() const { return true; }
442 virtual void doUpdateImpl(OdGsUpdateContext& ctx,
443 const OdGiDrawable* pBlockTableRecord, unsigned iInstance);
444 OdGsEntityNode*& firstAttrib(unsigned iInstance) { return item(iInstance)->m_pFirstAttrib; }
446 void setParams(const OdGeMatrix3d& blockTf, int nCols, int nRows, double sx, double sy)
447 {
448 m_blockTf = blockTf;
449 m_nCols = nCols;
450 m_nRows = nRows;
451 m_sx = sx;
452 m_sy = sy;
453 }
454 static void actionStretchExtents(void* pObj, OdGsUpdateState& state);
455 virtual void doDisplay(OdGsDisplayContext& ctx);
456 virtual bool doSelect(OdGsBaseVectorizer& vect, OdGiDrawable* pDrw,
458
459protected:
461
465
466protected:
493 class GS_TOOLKIT_EXPORT Collection: public OdArray<CollectionItem>
494 {
495 public:
499 };
500protected:
501 OdGsBlockReferenceNodeImpl* getImpl(unsigned iInstance) { return item(iInstance)->m_nodeImp; }
502 CollectionItem* item(unsigned iInstance);
503 void clearParams() {m_nCols = m_nRows = 0; m_sx = m_sy = 0.; m_blockTf.setToIdentity(); }
504
505 bool saveClientNodeState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer) const;
508protected:
509 // Collection of implementation objects, representing clipped MINSERT.
510 // (If MINSERT is not clipped, it's represented by only implementation
511 // object OdGsBlockReferenceNode::m_pImpl)
517 double m_sx;
518 double m_sy;
519};
520
525
526#include "TD_PackPop.h"
527
528#endif // __OD_GS_REFERENCE_NODE__
#define ODA_ASSERT(exp)
Definition DebugStuff.h:57
scale
bool operator!=(T left, const OdGiVariant::EnumType right)
Definition GiVariant.h:405
bool operator==(T left, const OdGiVariant::EnumType right)
Definition GiVariant.h:399
OdSiRecursiveVisitor OdSiSelBaseVisitor
OdSiRecursiveVisitorTf OdSiSelectVisitorTf
EMetafilePlayMode
Definition GsDefs.h:511
#define GS_TOOLKIT_EXPORT
Definition GsExport.h:37
int OdRefCounter
Definition OdMutex.h:478
ptrdiff_t OdGsMarker
unsigned int OdUInt32
OdVector< OdUInt32, OdMemoryAllocator< OdUInt32 > > OdUInt32Vector
Definition OdVector.h:1713
#define SETBIT(flags, bit, value)
Definition OdaDefs.h:516
#define GETBIT(flags, bit)
Definition OdaDefs.h:517
OdArray(size_type physicalLength, int growLength=8)
Definition OdArray.h:1941
void setInvalid(OdUInt32 nVpID)
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()
virtual void invalidateBlockNode(OdGsContainerNode *pParent, OdGsViewImpl *pView, OdUInt32 mask, bool bRecursively=true)
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)
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
OdGsEntityNode(OdGsBaseModel *pModel, const OdGiDrawable *pUnderlyingDrawable, bool bSetGsNode=false)
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)
friend class OdGsViewImpl
Definition GsNode.h:62
OdUInt32 m_flags
Definition GsNode.h:93
friend class OdGsBaseModel
Definition GsNode.h:61
OdGsBaseModel * baseModel() const
Definition GsNode.h:449
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:141
SelectionMode
Definition Gs.h:174
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