CFx SDK Documentation  2023 SP0
GsBaseModel.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 __ODGSMODELIMPL_H__
25 #define __ODGSMODELIMPL_H__
26 
27 #define OD_MATERIAL_CACHE_SUPPORTED
28 class OdGsNode;
29 class OdGsViewImpl;
30 
31 #include "TD_PackPush.h"
32 
33 #include "OdList.h"
34 #include "UInt8Array.h"
35 #include "UInt32Array.h"
36 #include "DbStubPtrArray.h"
37 #include "StaticRxObject.h"
38 #include "OdVector.h"
39 
40 #include "Gi/GiDrawable.h"
41 #include "Gi/GiCommonDraw.h"
42 #include "Gi/GiPathNode.h"
43 
44 #include "Gs/GsExport.h"
45 #include "Gs/GsModel.h"
46 #include "Gs/GsViewProps.h"
47 #include "Gs/GsExtAccum.h"
48 #include "Gs/GsMaterialCache.h"
49 #include "Gs/GsViewLocalId.h"
50 #include "Gs/GsHighlightData.h"
51 
52 #define CACHE_STATISTICS
53 
54 class OdGsLayerNode;
56 class OdGsBaseVectorizer;
57 class OdGsBaseModule;
58 
59 class OdGsBaseModelImpl;
60 class OdGsEntityNode;
61 class OdGsContainerNode;
62 class OdGsLightNode;
63 
65 {
66 //FELIX_CHANGE_BEGIN
68 //FELIX_CHANGE_END
74  kLastNodeType, //number of types enumerated above
78 };
79 
87 {
88  public:
89  virtual bool onHighlight(OdGsModel *pModel, const OdGiPathNode& path, bool bDoIt, const OdGsView* pView) { return true; }
90 
91  virtual bool onInvalidate(OdGsModel *pModel, OdGsModel::InvalidationHint hint) { return true; }
92  virtual bool onInvalidate(OdGsModel *pModel, OdGsView* pView) { return true; }
93 
95  {
101 
103  };
104  virtual bool onPropertyModified(OdGsModel *pModel, ModelProperty nProp) { return true; }
105 };
106 
118 {
119  //FELIX_CHANGE_BEGIN
120  friend class CFxGsExtension;
122  //FELIX_CHANGE_END
123 protected:
126 
127  friend class OdGsNode;
128  friend class OdGsViewImpl;
129  friend class OdGsBaseVectorizer;
131 
136  void addNode(OdGsNode* pNode);
137 
138 public:
139  virtual void invalidateEntRect(OdGiDrawable* pDrawable, OdGiDrawable* pParent, bool bForceIfNoExtents = false);
140  virtual void invalidateEntRect(OdGsEntityNode* pNode, OdGsContainerNode* pParent, bool bForceIfNoExtents);
141 
142 #if defined(CACHE_STATISTICS)
143  unsigned m_nMfCached;
144  unsigned m_nMfReused;
145 #endif//CACHE_STATISTICS
146 protected:
148  {
149  kCheckFaded = (1 << 0),
150  kEnableLinetypes = (1 << 1),
151  kModelSelectable = (1 << 2),
152  kLightsInBlocks = (1 << 3),
153  kSkipViewClip = (1 << 4),
154  kIdentityXform = (1 << 5)
155  };
157 public:
158  bool checkFaded() const { return GETBIT(m_gsModelFlags, kCheckFaded); }
159  void setCheckFaded(bool bOn) { SETBIT(m_gsModelFlags, kCheckFaded, bOn); }
160 #ifdef ODA_DIAGNOSTICS
161  OdRefCounter m_nNodes; //number of OdGsNodes allocated within the model (not necessary in
162  //m_pNodes list _directly_, can be owned by insert/block nodes).
163 #endif
164 
165  typedef std::pair<OdGsViewImpl*, OdUInt32> ViewRef;
167  typedef std::pair<const OdGsBaseModule*, OdUInt32> ModuleRef;
169  const ViewPropsArray& getViewProps() const { return m_viewProps; }
170  OdGsViewImpl *refView() const;
172  OdUInt32 refModulesCount() const { return m_modules.size(); }
173 #ifdef ODGS_LOCAL_IDS
174  virtual void attachLocalViewportId(OdGsViewImpl* pView, OdGsViewImpl* pFrom = NULL);
175  virtual OdUInt32 getLocalViewportId(OdGsViewImpl* pView);
176  virtual OdUInt32 getMaxLocalViewportId() const;
177 #endif
178 
182  bool invalidVp(unsigned int viewportId) const
183  {
184  if(m_viewProps.size()>viewportId)
185  return m_viewProps[viewportId].isInvalid();
186  return true;
187  }
188 
189  OdGsBaseModelImpl* impl() { return m_impl; }
190  void invalidateRegenDrawBlocks(OdGsViewImpl& view, const OdDbStub* layoutId);
192 
194  {
196  bool m_bTopSet;
201  double m_dTop;
202  double m_dBottom;
203  OdDbStub *m_visualStyle;
205  : m_bEnabled(false), m_bTopSet(false), m_bBottomSet(false), m_bVisualStyle(false)
206  , m_dTop(0.0), m_dBottom(0.0), m_visualStyle(NULL) { }
207  bool isEnabled() const { return m_bEnabled && !m_points.isEmpty(); }
208  };
209 
210 protected:
211  void addViewRef(OdGsViewImpl* pView);
213 
217  void setInvalidVp(unsigned int viewportId, bool val)
218  {
219  if(m_viewProps.size()>viewportId)
220  m_viewProps[viewportId].setInvalid(val);
221  }
222  virtual void clearChangedLayersList();
223 
224 protected:
225 
229 
232  OdDbStub* m_modelBackground;
235 
237  // Reserved pointer for internal use (binary incompatible changes), do not delete.
239 
240  // Material cache support
242 
243  OdGsBaseModelImpl* m_impl;
244 
246 
247 #ifdef ODGS_LOCAL_IDS
248  OdGsBaseModelLocalIdsPtr m_pViewIds;
249 #endif
250 
253 
254 protected:
255 
258 
259 public:
267  virtual OdGsNode* gsNode(OdGiDrawable* pDrawable);
268 
273  virtual void detach(OdGsNode* pNode);
274 
278  virtual void detachAll();
279 
281 
289  OdGiDrawablePtr open(OdDbStub* objectId);
290 
291  void setOpenDrawableFn(OdGiOpenDrawableFn openDrawableFn);
293 
295  {
296  kAddDrawable = 0, // New drawable added
297  kUneraseDrawable // Exist drawable unerased
298  };
299 
300  void onAdded(OdGiDrawable* pAdded, OdGiDrawable* pParent);
301  void onAdded(OdGiDrawable* pAdded, OdDbStub* parentID);
302  virtual void onAddedImpl(OdGiDrawable* pAdded, OdGiDrawable* pParent, AdditionMode additionMode = kAddDrawable);
303 
304  void onModified(OdGiDrawable* pModified, OdGiDrawable* pParent);
305  void onModified(OdGiDrawable* pModified, OdDbStub* parentID);
306  virtual void onModifiedImpl(OdGiDrawable* pModified, OdGiDrawable* pParent);
307 
308  void onErased(OdGiDrawable* pErased, OdGiDrawable* pParent);
309  void onErased(OdGiDrawable* pErased, OdDbStub* parentID);
310  virtual void onErasedImpl(OdGiDrawable* pErased, OdGiDrawable* pParent);
311 
312  void onUnerased(OdGiDrawable* pUnerased, OdGiDrawable* pParent);
313  void onUnerased(OdGiDrawable* pUnerased, OdDbStub* parentID);
314 
316  void invalidate(OdGsView* pView);
317  void invalidateVisible( OdGsDevice* pDevice );
322 
328  OdUInt32 viewChanges(OdUInt32 viewportId) const;
332  OdUInt32 numViewProps() const;
333 
339  const ViewProps& viewProps(OdUInt32 viewportId) const;
340 
345  virtual void updateViewProps(const OdGsViewImpl& viewport);
346 
347  virtual bool isViewPropsValid(OdUInt32 viewportId) const;
348 
349  virtual OdGsLayerNode* gsLayerNode(OdDbStub* layerId, const OdGsBaseVectorizer* pView);
350 
352 
353  void setTransform(const OdGeMatrix3d& xForm);
354 
356 
357  bool isIdentityTransform() const;
358 
359  OdGsView::RenderMode renderModeOverride() const;
360 
362 
363  void highlight(const OdGiPathNode& path, bool bDoIt = true, const OdGsView* pView = NULL);
364  virtual void highlightImpl(const OdGiPathNode& path, bool bDoIt = true, const OdGsView* pView = NULL);
365 
366  // Material cache support
367  OdGsMaterialCache* materialCache() { return m_pMaterialCache.get(); }
368 
371 
372  void setRenderType(RenderType renderType);
373  RenderType renderType() const;
374 
375  void setBackground(OdDbStub *backgroundId);
376  OdDbStub *background() const;
377 
378  void setVisualStyle(OdDbStub *visualStyleId);
379  OdDbStub *visualStyle() const;
380  void setVisualStyle(const OdGiVisualStyle &visualStyle);
381  bool visualStyle(OdGiVisualStyle &visualStyle) const;
382  const OdGiDrawable *visualStyleDrawable() const;
383 
384  virtual bool makeStock(OdDbStub* layoutId);
385  virtual void releaseStock(OdDbStub* layoutId);
386 
387  bool hasChangedLayers() const { return m_pFirstChangedLayer != NULL; }
388 
391 
392  void setEnableSectioning(bool bEnable);
393  bool isSectioningEnabled() const;
394  bool setSectioning(const OdGePoint3dArray &points, const OdGeVector3d &upVector);
395  bool setSectioning(const OdGePoint3dArray &points, const OdGeVector3d &upVector,
396  double dTop, double dBottom);
397  void setSectioningVisualStyle(OdDbStub *visualStyleId);
398  const SectioningSettings &getSectioning() const { return m_sectioning; }
399 
400  void setViewClippingOverride(bool bEnable);
401  bool isViewClippingOverride() const;
402 
403  void setEnableLinetypes(bool bEnable);
404  bool isLinetypesEnabled() const;
405 
406  void setSelectable(bool bEnable);
407  bool isSelectable() const;
408 
409  void setEnableLightsInBlocks(bool bEnable);
411 
412  virtual bool saveModelState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer = NULL) const;
413  virtual bool loadModelState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer = NULL);
414  virtual bool saveClientModelState(OdGsFiler *pFiler) const;
415  virtual bool loadClientModelState(OdGsFiler *pFiler);
417 protected:
418  void onModifiedNode(OdGsNode* pCache, OdGiDrawable* pDrawable, OdGiDrawable* pParent);
419  void onModifiedDrawable(OdGiDrawable* pDrawable, OdGiDrawable* pParent);
422 public:
423  virtual OdGsNode* newNode(ENodeType ntp, const OdGiDrawable* drawable, bool bSetGsNode);
424 };
425 
427 {
428  return m_renderModeOverride;
429 }
430 
432 {
434 }
435 //FELIX_CHANGE_BEGIN
437 //FELIX_CHANGE_END
438 inline OdGiDrawablePtr OdGsBaseModel::open(OdDbStub* objectId)
439 {
440  //FELIX_CHANGE_BEGIN
441  /*
442  if(m_openDrawableFn)
443  return m_openDrawableFn(objectId);
444  //ODA_ASSERT_ONCE(objectId==0);
445  return OdGiDrawablePtr();
446  */
447  return( fxOpenDrawable( this, objectId ) );
448  //FELIX_CHANGE_END
449 }
450 
452 {
453  return m_viewProps.size();
454 }
455 
456 inline const ViewProps& OdGsBaseModel::viewProps(OdUInt32 viewportId) const
457 {
458  ODA_ASSERT(m_viewProps.size() > viewportId);
459  return m_viewProps[viewportId];
460 }
461 
463 {
464  return viewProps(viewportId).m_nViewChanges;
465 }
466 
468 {
469  if (m_views.empty())
470  return NULL;
471  return m_views.first().first;
472 }
473 
475 {
476  return m_renderType;
477 }
478 
480 {
482 }
483 
485 {
486  return m_pTransVisualStyle.get();
487 }
488 
489 #include "TD_PackPop.h"
490 
491 #endif // __ODGSMODELIMPL_H__
#define ODA_ASSERT(exp)
Definition: DebugStuff.h:49
false
Definition: DimVarDefs.h:165
GS_TOOLKIT_EXPORT OdGiDrawablePtr fxOpenDrawable(OdGsBaseModel *, OdDbStub *)
ENodeType
Definition: GsBaseModel.h:65
@ kBlockReferenceNode
Definition: GsBaseModel.h:76
@ kContainerNode
Definition: GsBaseModel.h:70
@ kLayerNode
Definition: GsBaseModel.h:71
@ kMInsertBlockNode
Definition: GsBaseModel.h:77
@ kEntityNode
Definition: GsBaseModel.h:72
@ kLightNode
Definition: GsBaseModel.h:75
@ kBlockNode
Definition: GsBaseModel.h:69
@ kFxNode
Definition: GsBaseModel.h:67
@ kMaterialNode
Definition: GsBaseModel.h:73
@ kLastNodeType
Definition: GsBaseModel.h:74
#define GS_TOOLKIT_EXPORT
Definition: GsExport.h:37
OdGiDrawablePtr(* OdGiOpenDrawableFn)(OdDbStub *id)
Definition: GsModel.h:65
#define NULL
Definition: GsProperties.h:177
int OdRefCounter
Definition: OdMutex.h:436
unsigned int OdUInt32
#define SETBIT(flags, bit, value)
Definition: OdaDefs.h:499
#define GETBIT(flags, bit)
Definition: OdaDefs.h:500
T & first()
Definition: OdArray.h:1186
bool empty() const
Definition: OdArray.h:901
bool isEmpty() const
Definition: OdArray.h:1062
size_type size() const
Definition: OdArray.h:893
void removeModelReactor(OdGsModelReactor *pReactor)
OdUInt32 m_gsModelFlags
Definition: GsBaseModel.h:156
void setRenderType(RenderType renderType)
bool isLightsInBlocksEnabled() const
void invalidateSectionableBlocks()
void onModifiedDrawable(OdGiDrawable *pDrawable, OdGiDrawable *pParent)
bool invalidVp(unsigned int viewportId) const
Definition: GsBaseModel.h:182
bool visualStyle(OdGiVisualStyle &visualStyle) const
SectioningSettings m_sectioning
Definition: GsBaseModel.h:245
const OdGiDrawable * visualStyleDrawable() const
Definition: GsBaseModel.h:484
OdGiDrawablePtr m_pTransVisualStyle
Definition: GsBaseModel.h:234
bool isSectioningEnabled() const
void setOpenDrawableFn(OdGiOpenDrawableFn openDrawableFn)
void invalidateRegenDrawBlocks(OdGsViewImpl &view, const OdDbStub *layoutId)
OdDbStub * visualStyle() const
OdDbStub * m_modelBackground
Definition: GsBaseModel.h:232
OdGiOpenDrawableFn m_openDrawableFn
Definition: GsBaseModel.h:124
virtual bool makeStock(OdDbStub *layoutId)
void invalidate(OdGsViewImpl &view, OdUInt32 mask)
void setEnableLinetypes(bool bEnable)
void setSelectable(bool bEnable)
void onModified(OdGiDrawable *pModified, OdDbStub *parentID)
OdVector< OdGsModelReactor *, OdMemoryAllocator< OdGsModelReactor * > > m_modelReactors
Definition: GsBaseModel.h:251
virtual void highlightImpl(const OdGiPathNode &path, bool bDoIt=true, const OdGsView *pView=NULL)
virtual void releaseStock(OdDbStub *layoutId)
OdDbStub * m_modelVisualStyle
Definition: GsBaseModel.h:233
OdGsBaseVectorizeDevice * refDevice() const
void onModified(OdGiDrawable *pModified, OdGiDrawable *pParent)
void onPropertyModifiedImpl(OdGsBaseModelReactor::ModelProperty nProp, bool &bReturnValue)
OdGsView::RenderMode renderModeOverride() const
Definition: GsBaseModel.h:426
OdArray< ViewProps > m_viewProps
Definition: GsBaseModel.h:226
virtual bool saveClientModelState(OdGsFiler *pFiler) const
void setVisualStyle(const OdGiVisualStyle &visualStyle)
virtual bool isViewPropsValid(OdUInt32 viewportId) const
void onUnerased(OdGiDrawable *pUnerased, OdGiDrawable *pParent)
OdGsMaterialCachePtr m_pMaterialCache
Definition: GsBaseModel.h:241
const SectioningSettings & getSectioning() const
Definition: GsBaseModel.h:398
virtual OdGsNode * gsNode(OdGiDrawable *pDrawable)
OdArray< ModuleRef, OdMemoryAllocator< ModuleRef > > m_modules
Definition: GsBaseModel.h:168
virtual void detach(OdGsNode *pNode)
void setEnableSectioning(bool bEnable)
virtual void invalidateEntRect(OdGsEntityNode *pNode, OdGsContainerNode *pParent, bool bForceIfNoExtents)
void setRenderModeOverride(OdGsView::RenderMode mode=OdGsView::kNone)
OdArray< ViewRef, OdMemoryAllocator< ViewRef > > m_views
Definition: GsBaseModel.h:166
bool checkFaded() const
Definition: GsBaseModel.h:158
void invalidate(InvalidationHint hint)
friend GS_TOOLKIT_EXPORT OdGiDrawablePtr fxOpenDrawable(OdGsBaseModel *, OdDbStub *)
void onUnerased(OdGiDrawable *pUnerased, OdDbStub *parentID)
virtual void clearChangedLayersList()
RenderType m_renderType
Definition: GsBaseModel.h:236
bool isLinetypesEnabled() const
OdGsBaseModelImpl * m_impl
Definition: GsBaseModel.h:243
unsigned m_nMfReused
Definition: GsBaseModel.h:144
void onModifiedNode(OdGsNode *pCache, OdGiDrawable *pDrawable, OdGiDrawable *pParent)
virtual OdGsLayerNode * gsLayerNode(OdDbStub *layerId, const OdGsBaseVectorizer *pView)
virtual void invalidateEntRect(OdGiDrawable *pDrawable, OdGiDrawable *pParent, bool bForceIfNoExtents=false)
OdGsLayerNode * m_pFirstChangedLayer
Definition: GsBaseModel.h:228
OdGsViewImpl * refView() const
Definition: GsBaseModel.h:467
const ViewPropsArray & getViewProps() const
Definition: GsBaseModel.h:169
void removeViewRef(OdGsViewImpl *pView)
bool postprocessModelLoading(OdGsFiler *pFiler)
OdVector< OdGsBaseModelReactor *, OdMemoryAllocator< OdGsBaseModelReactor * > > m_baseModelReactors
Definition: GsBaseModel.h:252
virtual bool saveModelState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer=NULL) const
void addViewRef(OdGsViewImpl *pView)
OdGiOpenDrawableFn openDrawableFn() const
std::pair< OdGsViewImpl *, OdUInt32 > ViewRef
Definition: GsBaseModel.h:165
OdGeMatrix3d m_xForm
Definition: GsBaseModel.h:231
RenderType renderType() const
Definition: GsBaseModel.h:474
virtual OdGsNode * newNode(ENodeType ntp, const OdGiDrawable *drawable, bool bSetGsNode)
void setAdditionMode(AdditionMode mode)
virtual void updateViewProps(const OdGsViewImpl &viewport)
void setVisualStyle(OdDbStub *visualStyleId)
void setTransform(const OdGeMatrix3d &xForm)
bool setSectioning(const OdGePoint3dArray &points, const OdGeVector3d &upVector, double dTop, double dBottom)
void setEnableLightsInBlocks(bool bEnable)
void setSectioningVisualStyle(OdDbStub *visualStyleId)
AdditionMode additionMode() const
virtual void onErasedImpl(OdGiDrawable *pErased, OdGiDrawable *pParent)
bool isIdentityTransform() const
Definition: GsBaseModel.h:479
bool isViewClippingOverride() const
Definition: GsBaseModel.h:431
void addNode(OdGsNode *pNode)
void addModelReactor(OdGsModelReactor *pReactor)
void setBackground(OdDbStub *backgroundId)
virtual bool loadModelState(OdGsFiler *pFiler, OdGsBaseVectorizer *pVectorizer=NULL)
OdUInt32 viewChanges(OdUInt32 viewportId) const
Definition: GsBaseModel.h:462
const ViewProps & viewProps(OdUInt32 viewportId) const
Definition: GsBaseModel.h:456
OdGeMatrix3d transform() const
void detachAllFromDb(const OdDbBaseDatabase *pDb)
void highlight(const OdGiPathNode &path, bool bDoIt=true, const OdGsView *pView=NULL)
OdGsView::RenderMode m_renderModeOverride
Definition: GsBaseModel.h:230
OdUInt32 numViewProps() const
Definition: GsBaseModel.h:451
void setInvalidVp(unsigned int viewportId, bool val)
Definition: GsBaseModel.h:217
void setViewClippingOverride(bool bEnable)
virtual void onAddedImpl(OdGiDrawable *pAdded, OdGiDrawable *pParent, AdditionMode additionMode=kAddDrawable)
void onAdded(OdGiDrawable *pAdded, OdGiDrawable *pParent)
virtual bool onPropertyModified(OdGsBaseModelReactor::ModelProperty nProp)
std::pair< const OdGsBaseModule *, OdUInt32 > ModuleRef
Definition: GsBaseModel.h:167
void setCheckFaded(bool bOn)
Definition: GsBaseModel.h:159
void onErased(OdGiDrawable *pErased, OdGiDrawable *pParent)
virtual void onModifiedImpl(OdGiDrawable *pModified, OdGiDrawable *pParent)
OdRxObjectPtr m_pGsReserved
Definition: GsBaseModel.h:238
OdGsBaseModelImpl * impl()
Definition: GsBaseModel.h:189
OdUInt32 m_nLayers
Definition: GsBaseModel.h:227
bool hasChangedLayers() const
Definition: GsBaseModel.h:387
OdGiDrawablePtr open(OdDbStub *objectId)
Definition: GsBaseModel.h:438
OdUInt32 refModulesCount() const
Definition: GsBaseModel.h:172
void onAdded(OdGiDrawable *pAdded, OdDbStub *parentID)
virtual void detachAll()
unsigned m_nMfCached
Definition: GsBaseModel.h:143
OdGsMaterialCache * materialCache()
Definition: GsBaseModel.h:367
void invalidateVisible(OdGsDevice *pDevice)
virtual void propagateLayerChanges(OdGsBaseVectorizeDevice &device)
OdDbStub * background() const
virtual bool loadClientModelState(OdGsFiler *pFiler)
void invalidate(OdGsView *pView)
bool setSectioning(const OdGePoint3dArray &points, const OdGeVector3d &upVector)
void onErased(OdGiDrawable *pErased, OdDbStub *parentID)
bool isSelectable() const
virtual bool onPropertyModified(OdGsModel *pModel, ModelProperty nProp)
Definition: GsBaseModel.h:104
virtual bool onHighlight(OdGsModel *pModel, const OdGiPathNode &path, bool bDoIt, const OdGsView *pView)
Definition: GsBaseModel.h:89
virtual bool onInvalidate(OdGsModel *pModel, OdGsModel::InvalidationHint hint)
Definition: GsBaseModel.h:91
virtual bool onInvalidate(OdGsModel *pModel, OdGsView *pView)
Definition: GsBaseModel.h:92
virtual RenderType renderType() const =0
InvalidationHint
Definition: GsModel.h:159
Definition: Gs.h:133
RenderMode
Definition: Gs.h:138
@ kNone
Definition: Gs.h:147
const T * get() const
Definition: SmartPtr.h:326
GLenum GLint GLuint mask
Definition: gles2_ext.h:262
StreamP open(const OdString &path, int acc=Read, Creation dispos=OpenExisting, Share sh=DenyNo)
Definition: RxFS.h:239
OdUInt32 m_nViewChanges
Definition: GsViewProps.h:66