CFx SDK Documentation  2022 SP0
TrVisMetafileStream.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 // GLES2 metafiles stream definitions
24 
25 #ifndef _EXTRVISMETAFILESTREAM_INCLUDED_
26 #define _EXTRVISMETAFILESTREAM_INCLUDED_
27 
28 #include "TD_PackPush.h"
29 
30 #include "MetafileStreamBase.h"
31 #include "Gs/Gs.h"
32 #include "TrVisDefs.h"
33 #include "Ps/PlotStyles.h"
34 
35 // Enable conversion from double to float for vertex and normal buffers
36 #define OD_TRVIS_ENABLEFLOATCONVERSION
37 
38 #ifdef OD_TRVIS_ENABLEFLOATCONVERSION
39 typedef float OdTrVisVertexType;
40 #else
41 typedef double OdTrVisVertexType;
42 #endif
43 
44 void od_dbl2float(float *pFloats, const double *pDoubles, size_t numData);
45 
46 enum OdTrVisMetaRecType // Currently packed as one byte
47 {
48  OdTrVisMetaRecType_Empty = 0x00, // No data record (useful for padding)
49  OdTrVisMetaRecType_EnableOpt = 0x01, // Enable rendering option
50  OdTrVisMetaRecType_DisableOpt = 0x02, // Disable rendering option
51  OdTrVisMetaRecType_Color = 0x03, // Setup color
52  OdTrVisMetaRecType_EnableArray = 0x04, // Enable rendering array
53  OdTrVisMetaRecType_DisableArray = 0x05, // Disable rendering array
54  OdTrVisMetaRecType_DrawArrays = 0x06, // Draw primitive
55  OdTrVisMetaRecType_DrawElements = 0x07, // Draw indexed primitive
56  OdTrVisMetaRecType_CullFace = 0x08, // Setup faces culling
57  OdTrVisMetaRecType_LStipple = 0x09, // Setup line pattern
58  OdTrVisMetaRecType_PStipple = 0x0A, // Setup fill pattern
59  OdTrVisMetaRecType_VPoint = 0x0B, // Draw single point
60  OdTrVisMetaRecType_VLine = 0x0C, // Draw single line
61  OdTrVisMetaRecType_IPoint = 0x0D, // Draw single indexed point
62  OdTrVisMetaRecType_ILine = 0x0E, // Draw single indexed line
63  OdTrVisMetaRecType_HLRStencil = 0x0F, // Enable HLR shading mode
64  OdTrVisMetaRecType_EnableShading = 0x10, // Enable shading option
65  OdTrVisMetaRecType_DisableShading = 0x11, // Disable shading option
66  OdTrVisMetaRecType_Material = 0x12, // Change material (shaded mode)
67  OdTrVisMetaRecType_UserEntry = 0x13, // User can process own data entries
68  OdTrVisMetaRecType_InitTexture = 0x14, // Set texture for raster image
69  OdTrVisMetaRecType_UninitTexture = 0x15, // Reset texture for raster image
70  OdTrVisMetaRecType_SelectionMarker = 0x16, // Stand-alone selection marker
71  OdTrVisMetaRecType_EnableMarkerArray = 0x17, // Enable markers array
72  OdTrVisMetaRecType_DisableMarkerArray = 0x18, // Disable markers array
73  OdTrVisMetaRecType_SelectionFlags = 0x19, // Display and selection geometry markers
74  OdTrVisMetaRecType_Lineweight = 0x1A, // Lineweight
75  OdTrVisMetaRecType_Linestyle = 0x1B, // Cap&Joint style
76  OdTrVisMetaRecType_Program = 0x1C, // Shader program
77  OdTrVisMetaRecType_TtfText = 0x1D, // Cached TtfFont
78  OdTrVisMetaRecType_PushMatrix = 0x1E, // Push transformation matrix
79  OdTrVisMetaRecType_PopMatrix = 0x1F, // Pop transformation matrix
80  OdTrVisMetaRecType_Metafile = 0x20, // Play nested metafile
81  OdTrVisMetaRecType_GeomMarker = 0x21, // Geometry marker
82  OdTrVisMetaRecType_VisualStyle = 0x22, // Visual Style
83  OdTrVisMetaRecType_MetafileMarker = 0x23, // Stand-alone metafile marker
84 
85  OdTrVisMetaRecType_NTypes // == last + 1
86 };
87 
88 // Convert OdTrVisMetaRecType into string representation
90 
91 enum OdTrVisMetaRecArrayType // Type of rendering array
92 {
93  OdTrVisMetaRecArrayType_Vertex = 0x00, // Vertexes array
94  OdTrVisMetaRecArrayType_Color = 0x01, // Colors array
95  OdTrVisMetaRecArrayType_TexCoord = 0x02, // Texture coordinates array
96  OdTrVisMetaRecArrayType_Normal = 0x03, // Primary normals array
97  OdTrVisMetaRecArrayType_Normal2 = 0x04, // Secondary normals array
98 
99  OdTrVisMetaRecArrayType_NTypes // == last + 1
100 };
101 
102 enum OdTrVisMetaRecMarkerType // Type of markers array
103 {
104  OdTrVisMetaRecMarkerType_Selection = 0x00, // Selection markers array
105  OdTrVisMetaRecMarkerType_Metafile = 0x01, // Metafile markers array
106 
107  OdTrVisMetaRecMarkerType_NTypes // == last + 1
108 };
109 
110 enum OdTrVisAttribute // List of frequently called attributes
111 {
112  OdTrVisAttribute_Depth = 0x00, // Disable depth buffer
113  OdTrVisAttribute_Blend = 0x01, // Enable colors blending (transparency)
114  OdTrVisAttribute_Reserved1 = 0x02, // reserved
115  OdTrVisAttribute_Reserved2 = 0x03, // reserved
116 
117  OdTrVisAttribute_NTypes, // == last + 1
118  OdTrVisAttribute_Mask = 0x0F
119 };
120 
121 enum OdTrVisShading // List of shading attributes
122 {
123  OdTrVisShading_Lighting = 0x00, // Faces lighting state
124  OdTrVisShading_Highlighting = 0x01, // Highlighting state
125  OdTrVisShading_Gouraud = 0x02, // Vertex colors state
126  OdTrVisShading_MultiNormals = 0x03, // Face come with vertex and face normals for gouraud and flat shading
127  OdTrVisShading_Disable2dLineweights = 0x04, // Disable lineweight display in 2d
128  OdTrVisShading_NoColorOverride = 0x05, // Avoid all color overrides
129 
130  OdTrVisShading_NTypes, // == last + 1
131  OdTrVisShading_Mask = 0x3F
132 };
133 
134 enum OdTrVisFaceCulling // List of face culling states
135 {
136  // Culling modes for faces
137  OdTrVisCullFace_None = 0x00, // Disable face culling (default state)
138  OdTrVisCullFace_Back = 0x01, // Enable back faces culling
139  OdTrVisCullFace_Front = 0x02, // Enable front faces culling
140  OdTrVisCullFace_Default = 0x03, // Invoke default faces culling method
141  // Culling modes for edges
142  OdTrVisCullEdge_None = 0x00, // Disable edge culling (default state)
143  OdTrVisCullEdge_Back = 0x04, // Back edges culling
144  OdTrVisCullEdge_Front = 0x08, // Front edges culling
145  OdTrVisCullEdge_Default = 0x0C // Default edges culling method
146 };
147 
148 // OdTrVisFaceCulling helpers
150 { return (OdTrVisFaceCulling)(faceMode | edgeMode); }
151 inline void splitCullingModes(OdTrVisFaceCulling &cullingMode, OdTrVisFaceCulling &edgeMode)
152 { edgeMode = (OdTrVisFaceCulling)(cullingMode & OdTrVisCullEdge_Default); cullingMode = (OdTrVisFaceCulling)(cullingMode & OdTrVisCullFace_Default); }
154 { return (OdTrVisFaceCulling)((faceMode & OdTrVisCullFace_Default) << 2); }
156 { return (OdTrVisFaceCulling)((edgeMode >> 2) & OdTrVisCullFace_Default); }
157 
159 {
166 };
167 
168 enum OdTrVisAffection // List of metafile affections
169 {
170  OdTrVisAffection_Attributes = 0x01, // Affects attributes/disable/enable
171  OdTrVisAffection_Colors = (0x01 << 1), // Affects color
172  OdTrVisAffection_Materials = (0x01 << 2), // Affects materal
173  OdTrVisAffection_Arrays = (0x01 << 3), // Affects arrays
174  OdTrVisAffection_Geometry = (0x01 << 4) // Call's geometry rendering
175 };
176 
177 enum OdTrVisPushMatrixType // Type of matrixes utilized by PushMatrix metafile entries
178 {
179  OdTrVisPushMatrixType_Identity = 0, // Identity matrix, no input matrix
180  OdTrVisPushMatrixType_Full // Complete 4x4 matrix
181 };
182 
184 {
185  OdTrVisGeomType_Default = 0, // Non-classified geometry which take part in any rendering mode, like simple lines
186  // Facet markers
187  OdTrVisGeomType_2dFacets = 1, // Non-shaded facets (visible in all modes except hidden line)
188  OdTrVisGeomType_2dFacetsNoFill = 2, // Non-shaded facets (visible in all modes except hidden line), invisible in 2d
189  OdTrVisGeomType_3dFacets = 3, // Shaded facets (invisible in 2d in case if filling disabled)
190  OdTrVisGeomType_3dFacetsNoFill = 4, // Shaded facets (invisible in 2d in case if filling disabled), invisible in 2d
191  OdTrVisGeomType_RasterImageFacets = 5, // Raster image facets (visible in all modes)
192  // Edge markers
193  OdTrVisGeomType_2dFacetEdges = 6, // Non-shaded facet edges (invisible in shaded modes w/o wireframe)
194  OdTrVisGeomType_3dFacetEdges = 7, // Shaded facet edges (available with isolines only)
195  OdTrVisGeomType_Isolines = 8, // Isolines (simple polylines doesn't marked)
196  OdTrVisGeomType_EdgesWithIsolines = 9, // Represent shaded facet edges and isolines together
197  OdTrVisGeomType_HatchIsolineEdges = 10, // Hatch isoline edges (invisible in HiddenLine)
198  OdTrVisGeomType_FillPatternEdges = 11, // Shell filling patterns (for BIM filling patterns support)
199  OdTrVisGeomType_IntersectionEdges = 12, // Intersection edges
200  OdTrVisGeomType_Silhouettes = 13, // Silhouettes (stub for future needs)
201  // Number of registered geometry visibility types
203 };
204 
205 // Check visibility of geometry type for specified rendering mode
207 
208 // Geometry primitives
210 {
219 };
220 
227 {
228  void *m_pData;
232 
233  enum Type
234  {
241 
242  Type_Invalid = 0x0F,
244  };
245 
247  : m_pData(NULL)
248  , m_uSize(0)
250  , m_bind(0)
251  {
252  }
253 
254  void setArray(Type type, const void *pPtr, OdUInt32 size);
255  void clearArray();
256  void concatArray(const void *pPtr, OdUInt32 size);
257 
258  // Double->float
259  void setArray_flt(Type type, const double *pPtr, OdUInt32 size);
260  void concatArray_flt(const double *pPtr, OdUInt32 size);
261  // UInt8->float
262  void setArray_flt(Type type, const OdUInt8 *pPtr, OdUInt32 size);
263  void concatArray_flt(const OdUInt8 *pPtr, OdUInt32 size);
264  // Int32->UInt16
265  void setArray_ush(Type type, const OdInt32 *pPtr, OdUInt32 size);
266  void concatArray_ush(const OdInt32 *pPtr, OdUInt32 size);
267 
268  void save(OdGsFiler *pFiler) const;
269  void load(OdGsFiler *pFiler);
270 };
271 
272 // Selection/metafile markers
273 
274 template <typename UInt64Type>
276 {
277  UInt64Type m_nMark;
279  typedef UInt64Type data_type;
280  private: OdUInt32 padding;
281  public: OdTrVisMarkBase() : padding(0) {} enum EnPosInit { kNone };
282  OdTrVisMarkBase(UInt64Type nMark) : m_nMark(nMark), padding(0) {}
283  OdTrVisMarkBase(UInt64Type nMark, OdUInt32 uFrom) : m_nMark(nMark), m_uFrom(uFrom), padding(0) {}
284  OdTrVisMarkBase(EnPosInit, OdUInt32 uFrom) : m_uFrom(uFrom), padding(0) {}
285 };
286 // Default processing marker (for internal use only)
288 // Selection marker
290 // Metafile marker
292 
298 {
299  protected:
304  public:
307  OdTrVisLwdStyle(bool bByDefault, OdPs::LineEndStyle lesStyle, OdPs::LineJoinStyle ljsStyle)
308  { m_curStyleDef = 1; setCurUsesDef(bByDefault); setCurLesStyle(lesStyle); setCurLjsStyle(ljsStyle); }
309  void setCurStyleDef(bool bSet) { m_curStyleDef = (bSet) ? 1 : 0; }
310  bool curStyleDef() const { return m_curStyleDef != 0; }
311  void setCurUsesDef(bool bSet) { m_curUsesDef = (bSet) ? 1 : 0; }
312  bool curUsesDef() const { return m_curUsesDef != 0; }
317  bool operator ==(const OdTrVisLwdStyle &sec) const
318  { if (m_curUsesDef == sec.m_curUsesDef)
319  { if (m_curUsesDef) return true;
320  return (m_curLesStyle == sec.m_curLesStyle) && (m_curLjsStyle == sec.m_curLjsStyle);
321  } return false;
322  }
323  bool operator !=(const OdTrVisLwdStyle &sec) const
324  { if (m_curUsesDef == sec.m_curUsesDef)
325  { if (m_curUsesDef) return false;
326  return (m_curLesStyle != sec.m_curLesStyle) || (m_curLjsStyle != sec.m_curLjsStyle);
327  } return true;
328  }
329 };
330 
336 {
337  enum LwdType
339  protected:
340  union {
343  } m_val;
345  public:
346  OdTrVisLwdSetting() : m_type(0) { m_val.m_iLineWeight = 0; }
347  OdTrVisLwdSetting(double dVal, LwdType typ = kPlotStyle) : m_type(typ) { m_val.m_dLineWeight = dVal; }
348  OdTrVisLwdSetting(OdDb::LineWeight lw, LwdType typ = kDatabase) : m_type(typ) { m_val.m_iLineWeight = (OdInt64)lw; }
349  OdTrVisLwdSetting(OdInt32 pix, LwdType typ = kPixels) : m_type(typ) { m_val.m_iLineWeight = (OdInt64)pix; }
350  // Type
351  void setType(LwdType typ) { m_type = (OdUInt8)typ; }
352  LwdType type() const { return (LwdType)m_type; }
353  bool isForcedLineweight() const { return (m_type == kPixels) && (m_val.m_iLineWeight > 0); }
354  // dLineWeight
355  void setDLineWeight(double dVal, LwdType typ = kPlotStyle) { m_val.m_dLineWeight = dVal; m_type = typ; }
356  double dLineWeight() const { return m_val.m_dLineWeight; }
357  // lwLineWeight
358  void setLwLineWeight(OdDb::LineWeight lw, LwdType typ = kDatabase) { m_val.m_iLineWeight = (OdInt64)lw; m_type = typ; }
359  OdDb::LineWeight lwLineWeight() const { return (OdDb::LineWeight)m_val.m_iLineWeight; }
360  // pixLineWeight
361  void setPixLineWeight(OdInt32 pix, LwdType typ = kPixels) { m_val.m_iLineWeight = pix; m_type = typ; }
362  OdInt32 pixLineWeight() const { return (OdInt32)m_val.m_iLineWeight; }
363  // Comparators
364  bool operator ==(const OdTrVisLwdSetting &sec) const
365  { if (m_type == sec.m_type)
366  { switch (m_type)
367  { case kDatabase:
368  case kPixels: return m_val.m_iLineWeight == sec.m_val.m_iLineWeight;
369  case kAbsolute:
370  case kPlotStyle: return OdEqual(m_val.m_dLineWeight, sec.m_val.m_dLineWeight);
371  } }
372  return false;
373  }
374  bool operator !=(const OdTrVisLwdSetting &sec) const
375  { if (m_type == sec.m_type)
376  { switch (m_type)
377  { case kDatabase:
378  case kPixels: return m_val.m_iLineWeight != sec.m_val.m_iLineWeight;
379  case kAbsolute:
380  case kPlotStyle: return !OdEqual(m_val.m_dLineWeight, sec.m_val.m_dLineWeight);
381  } }
382  return true;
383  }
384  bool hasLineweight() const
385  { switch (m_type)
386  { case kDatabase: return m_val.m_iLineWeight != OdDb::kLnWt000;
387  case kAbsolute:
388  case kPlotStyle: return OdNonZero(m_val.m_dLineWeight);
389  case kPixels: return m_val.m_iLineWeight > 1;
390  }
391  return false;
392  }
393  bool isPs() const { return GETBIT(m_type, 1); }
394  static bool isPs(LwdType type) { return GETBIT(type, 1); }
395 };
396 
404 class OdTrVisFlatMetafileContainer : public OdFlatMetafileContainer
405 {
406  public:
407  OdArray<OdTrVisArrayWrapper> m_ArrayElements; // Array contain pointers to some memory elements
408  public:
411 
413 
415  {
416  m_ArrayElements.push_back(static_cast<const OdTrVisArrayWrapper&>(element));
417  return OdTrVisArrayId(m_ArrayElements.size() - 1);
418  }
420  {
421  return m_ArrayElements.size();
422  }
424  {
425  return m_ArrayElements.at((OdUInt32)nElem);
426  }
428  {
429  return m_ArrayElements.at((OdUInt32)nElem);
430  }
431 
433 
434  // Base container overrides
436 
437  OdBaseMetafileContainerReader *createReader() const;
438  OdBaseMetafileContainerWriter *createWriter() const;
439 
440  // Extended GLES2 container manipulators
441 
442  // Direct access to stream memory
443  inline const OdUInt8 *memoryPtr() const
444  {
445  return m_pData;
446  }
447 };
448 
456 class OdTrVisFlatMetafileContainerWriter : public OdFlatMetafileContainerWriter
457 {
458  public:
459  OdTrVisFlatMetafileContainerWriter() : OdFlatMetafileContainerWriter() { }
460  OdTrVisFlatMetafileContainerWriter(OdBaseMetafileContainer *pContainer) : OdFlatMetafileContainerWriter(pContainer) { }
461 
462  inline OdBaseMetafileContainer *createContainer() const
463  {
464  return new OdTrVisFlatMetafileContainer();
465  }
466 
467  inline OdTrVisFlatMetafileContainer *glContainer() const { return static_cast<OdTrVisFlatMetafileContainer*>(container()); }
468 };
469 
477 class OdTrVisFlatMetafileContainerReader : public OdFlatMetafileContainerReader
478 {
479  public:
480  OdTrVisFlatMetafileContainerReader() : OdFlatMetafileContainerReader() { }
481  OdTrVisFlatMetafileContainerReader(OdBaseMetafileContainer *pContainer) : OdFlatMetafileContainerReader(pContainer) { }
482 
483  inline OdBaseMetafileContainer *createContainer() const
484  {
485  return new OdTrVisFlatMetafileContainer();
486  }
487 
488  inline OdTrVisFlatMetafileContainer *glContainer() const { return static_cast<OdTrVisFlatMetafileContainer*>(container()); }
489 };
490 
491 // Optimization definitions:
492 #define OD_OGL_RDR_SEEKFWD(pMemPtr, uSize) (pMemPtr) += (uSize)
493 #define OD_OGL_RDR_SEEKBWD(pMemPtr, uSize) (pMemPtr) -= (uSize)
494 #define OD_OGL_RDR_SEEKINC(pMemPtr) (pMemPtr)++
495 #define OD_OGL_RDR_SEEKDEC(pMemPtr) (pMemPtr)--
496 
497 #define OD_OGL_RDR_READVAL(cType, pMemPtr) *(cType*)(pMemPtr)
498 #define OD_OGL_RDR_READVALOFFSET(cType, pMemPtr, uOffset) *(cType*)((pMemPtr) + (uOffset))
499 #define OD_OGL_RDR_READVALRETYPE(cOutType, cInType, pMemPtr) (cOutType)OD_OGL_RDR_READVAL(cInType, pMemPtr)
500 #define OD_OGL_RDR_READVALOFFSETRETYPE(cOutType, cInType, pMemPtr, uOffset) (cOutType)OD_OGL_RDR_READVALOFFSET(cInType, pMemPtr, uOffset)
501 #define OD_OGL_RDR_GETPTRNATIVE(cType, pMemPtr) (cType*)(pMemPtr)
502 #define OD_OGL_RDR_GETPTRNATIVEOFFSET(cType, pMemPtr, uSize) (cType*)((pMemPtr) + (uSize))
503 #define OD_OGL_RDR_GETPTRSTORAGE(imedType, name, count)
504 #define OD_OGL_RDR_GETPTR(cType, imedType, name, count, pMemPtr) OD_OGL_RDR_GETPTRNATIVE(cType, pMemPtr)
505 #define OD_OGL_RDR_GETPTROFFSET(cType, imedType, name, count, pMemPtr, uSize) OD_OGL_RDR_GETPTRNATIVEOFFSET(cType, pMemPtr, uSize)
506 
507 #define OD_OGL_RDR_INITIATE(pMemPtr, uSize) const OdUInt8 *pMemPtrReadFor = (const OdUInt8*)pMemPtr + uSize
508 #define OD_OGL_RDR_CHECKEOF(pMemPtr) pMemPtr < pMemPtrReadFor
509 
510 #include "TD_PackPop.h"
511 
512 #endif // _EXTRVISMETAFILESTREAM_INCLUDED_
#define NULL
Definition: GsProperties.h:177
unsigned int OdUInt32
int OdInt32
unsigned char OdUInt8
wchar_t OdChar
bool OdEqual(double x, double y, double tol=1.e-10)
Definition: OdaDefs.h:523
bool OdNonZero(double x, double tol=1.e-10)
Definition: OdaDefs.h:518
#define GETBIT(flags, bit)
Definition: OdaDefs.h:498
OdUInt32 OdTrVisArrayId
Definition: TrVisDefs.h:90
OdTrVisShading
@ OdTrVisShading_Gouraud
@ OdTrVisShading_NoColorOverride
@ OdTrVisShading_NTypes
@ OdTrVisShading_MultiNormals
@ OdTrVisShading_Lighting
@ OdTrVisShading_Disable2dLineweights
@ OdTrVisShading_Mask
@ OdTrVisShading_Highlighting
const OdChar * chunkDecode(OdTrVisMetaRecType rt)
OdTrVisSelectionFlags
@ OdTrVisSelFlag_DontDisplayUnhighlighted
@ OdTrVisSelFlag_FlagsMask
@ OdTrVisSelFlag_DontSelectUnhighlighted
@ OdTrVisSelFlag_DontDisplayHighlighted
@ OdTrVisSelFlag_DontSelectHighlighted
@ OdTrVisSelFlag_Default
OdTrVisFaceCulling faceCullingModeAsEdge(OdTrVisFaceCulling faceMode)
OdTrVisMarkBase< OdTrVisGsMarker > OdTrVisSelMark
OdTrVisMetaRecArrayType
@ OdTrVisMetaRecArrayType_Normal2
@ OdTrVisMetaRecArrayType_Normal
@ OdTrVisMetaRecArrayType_NTypes
@ OdTrVisMetaRecArrayType_TexCoord
@ OdTrVisMetaRecArrayType_Vertex
@ OdTrVisMetaRecArrayType_Color
OdTrVisMetaRecType
@ OdTrVisMetaRecType_GeomMarker
@ OdTrVisMetaRecType_DrawArrays
@ OdTrVisMetaRecType_Metafile
@ OdTrVisMetaRecType_HLRStencil
@ OdTrVisMetaRecType_PopMatrix
@ OdTrVisMetaRecType_Color
@ OdTrVisMetaRecType_UninitTexture
@ OdTrVisMetaRecType_EnableMarkerArray
@ OdTrVisMetaRecType_DisableMarkerArray
@ OdTrVisMetaRecType_NTypes
@ OdTrVisMetaRecType_EnableOpt
@ OdTrVisMetaRecType_VisualStyle
@ OdTrVisMetaRecType_SelectionMarker
@ OdTrVisMetaRecType_Empty
@ OdTrVisMetaRecType_MetafileMarker
@ OdTrVisMetaRecType_UserEntry
@ OdTrVisMetaRecType_DrawElements
@ OdTrVisMetaRecType_DisableOpt
@ OdTrVisMetaRecType_Program
@ OdTrVisMetaRecType_DisableShading
@ OdTrVisMetaRecType_VLine
@ OdTrVisMetaRecType_ILine
@ OdTrVisMetaRecType_LStipple
@ OdTrVisMetaRecType_PushMatrix
@ OdTrVisMetaRecType_DisableArray
@ OdTrVisMetaRecType_Linestyle
@ OdTrVisMetaRecType_VPoint
@ OdTrVisMetaRecType_InitTexture
@ OdTrVisMetaRecType_EnableArray
@ OdTrVisMetaRecType_Lineweight
@ OdTrVisMetaRecType_EnableShading
@ OdTrVisMetaRecType_TtfText
@ OdTrVisMetaRecType_IPoint
@ OdTrVisMetaRecType_SelectionFlags
@ OdTrVisMetaRecType_PStipple
@ OdTrVisMetaRecType_Material
@ OdTrVisMetaRecType_CullFace
float OdTrVisVertexType
OdTrVisMetaRecMarkerType
@ OdTrVisMetaRecMarkerType_Selection
@ OdTrVisMetaRecMarkerType_NTypes
@ OdTrVisMetaRecMarkerType_Metafile
OdTrVisAttribute
@ OdTrVisAttribute_Mask
@ OdTrVisAttribute_Reserved2
@ OdTrVisAttribute_Reserved1
@ OdTrVisAttribute_Blend
@ OdTrVisAttribute_Depth
@ OdTrVisAttribute_NTypes
OdTrVisMarkBase< OdUInt64 > OdTrVisDefProcMark
void splitCullingModes(OdTrVisFaceCulling &cullingMode, OdTrVisFaceCulling &edgeMode)
void od_dbl2float(float *pFloats, const double *pDoubles, size_t numData)
OdTrVisGeomType
@ OdTrVisGeomType_3dFacetsNoFill
@ OdTrVisGeomType_HatchIsolineEdges
@ OdTrVisGeomType_Silhouettes
@ OdTrVisGeomType_2dFacetEdges
@ OdTrVisGeomType_Isolines
@ OdTrVisGeomType_3dFacetEdges
@ OdTrVisGeomType_2dFacets
@ OdTrVisGeomType_NTypes
@ OdTrVisGeomType_FillPatternEdges
@ OdTrVisGeomType_Default
@ OdTrVisGeomType_RasterImageFacets
@ OdTrVisGeomType_2dFacetsNoFill
@ OdTrVisGeomType_EdgesWithIsolines
@ OdTrVisGeomType_3dFacets
@ OdTrVisGeomType_IntersectionEdges
OdTrVisFaceCulling edgeCullingModeAsFace(OdTrVisFaceCulling edgeMode)
OdTrVisFaceCulling combineCullingModes(OdTrVisFaceCulling faceMode, OdTrVisFaceCulling edgeMode)
OdTrVisGeomPrim
@ kTrVisLines
@ kTrVisTriangles
@ kTrVisTriangleFan
@ kTrVisGeomPrimInvalid
@ kTrVisTriangleStrip
@ kTrVisLineLoop
@ kTrVisPoints
@ kTrVisLineStrip
OdTrVisMarkBase< OdTrVisMetafileId > OdTrVisMetaMark
OdTrVisFaceCulling
@ OdTrVisCullEdge_Front
@ OdTrVisCullFace_None
@ OdTrVisCullFace_Default
@ OdTrVisCullFace_Front
@ OdTrVisCullEdge_None
@ OdTrVisCullFace_Back
@ OdTrVisCullEdge_Back
@ OdTrVisCullEdge_Default
OdTrVisPushMatrixType
@ OdTrVisPushMatrixType_Identity
@ OdTrVisPushMatrixType_Full
OdTrVisAffection
@ OdTrVisAffection_Materials
@ OdTrVisAffection_Geometry
@ OdTrVisAffection_Colors
@ OdTrVisAffection_Arrays
@ OdTrVisAffection_Attributes
bool isGeomTypeVisible(OdTrVisGeomType geomType, OdGsView::RenderMode rMode)
size_type size() const
Definition: OdArray.h:893
void push_back(const T &value)
Definition: OdArray.h:987
T & at(size_type arrayIndex)
Definition: OdArray.h:1140
RenderMode
Definition: Gs.h:138
Definition: Int64.h:43
void optimizeMemory(OdUInt32 uSize)
OdArray< OdTrVisArrayWrapper > m_ArrayElements
OdTrVisArrayWrapper & arrayElement(OdTrVisArrayId nElem)
OdBaseMetafileContainerWriter * createWriter() const
const OdUInt8 * memoryPtr() const
const OdTrVisArrayWrapper & arrayElement(OdTrVisArrayId nElem) const
OdBaseMetafileContainerReader * createReader() const
OdTrVisArrayId appendArrayElement(const OdTrVisArrayWrapper &element)
OdTrVisArrayId lastArrayElement() const
OdTrVisFlatMetafileContainer * glContainer() const
OdBaseMetafileContainer * createContainer() const
OdTrVisFlatMetafileContainerReader(OdBaseMetafileContainer *pContainer)
OdTrVisFlatMetafileContainer * glContainer() const
OdBaseMetafileContainer * createContainer() const
OdTrVisFlatMetafileContainerWriter(OdBaseMetafileContainer *pContainer)
GLsizeiptr size
Definition: gles2_ext.h:182
GLuint GLsizei GLsizei GLint GLenum * type
Definition: gles2_ext.h:274
LineWeight
Definition: OdaDefs.h:382
@ kLnWt000
Definition: OdaDefs.h:383
LineJoinStyle
Definition: PlotStyles.h:78
LineEndStyle
Definition: PlotStyles.h:69
void save(OdGsFiler *pFiler) const
void setArray_flt(Type type, const OdUInt8 *pPtr, OdUInt32 size)
void setArray_ush(Type type, const OdInt32 *pPtr, OdUInt32 size)
void setArray_flt(Type type, const double *pPtr, OdUInt32 size)
void setArray(Type type, const void *pPtr, OdUInt32 size)
void concatArray_flt(const OdUInt8 *pPtr, OdUInt32 size)
void concatArray(const void *pPtr, OdUInt32 size)
void concatArray_flt(const double *pPtr, OdUInt32 size)
void concatArray_ush(const OdInt32 *pPtr, OdUInt32 size)
void load(OdGsFiler *pFiler)
LwdType type() const
bool hasLineweight() const
static bool isPs(LwdType type)
OdTrVisLwdSetting(OdInt32 pix, LwdType typ=kPixels)
OdDb::LineWeight lwLineWeight() const
bool operator==(const OdTrVisLwdSetting &sec) const
OdTrVisLwdSetting(OdDb::LineWeight lw, LwdType typ=kDatabase)
union OdTrVisLwdSetting::@64 m_val
bool operator!=(const OdTrVisLwdSetting &sec) const
void setDLineWeight(double dVal, LwdType typ=kPlotStyle)
OdTrVisLwdSetting(double dVal, LwdType typ=kPlotStyle)
OdInt32 pixLineWeight() const
void setLwLineWeight(OdDb::LineWeight lw, LwdType typ=kDatabase)
void setType(LwdType typ)
void setPixLineWeight(OdInt32 pix, LwdType typ=kPixels)
bool isForcedLineweight() const
double dLineWeight() const
void setCurLjsStyle(OdPs::LineJoinStyle curLjsStyle)
OdTrVisLwdStyle(bool bByDefault, OdPs::LineEndStyle lesStyle, OdPs::LineJoinStyle ljsStyle)
bool curStyleDef() const
void setCurLesStyle(OdPs::LineEndStyle curLesStyle)
bool operator!=(const OdTrVisLwdStyle &sec) const
OdPs::LineEndStyle curLesStyle() const
void setCurStyleDef(bool bSet)
bool operator==(const OdTrVisLwdStyle &sec) const
bool curUsesDef() const
void setCurUsesDef(bool bSet)
OdPs::LineJoinStyle curLjsStyle() const
OdTrVisMarkBase(UInt64Type nMark, OdUInt32 uFrom)
OdTrVisMarkBase(UInt64Type nMark)
OdTrVisMarkBase(EnPosInit, OdUInt32 uFrom)