CFx SDK Documentation 2026 SP0
Loading...
Searching...
No Matches
TrVisMetafileStream.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// 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
39typedef float OdTrVisVertexType;
40#else
41typedef double OdTrVisVertexType;
42#endif
43
44void od_dbl2float(float *pFloats, const double *pDoubles, size_t numData);
45
46enum 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 (32 bit float format)
60 OdTrVisMetaRecType_VLine = 0x0C, // Draw single line (32 bit float format)
61 OdTrVisMetaRecType_IPoint = 0x0D, // Draw single indexed point
62 OdTrVisMetaRecType_ILine = 0x0E, // Draw single indexed line
63 OdTrVisMetaRecType_EnableShading = 0x0F, // Enable shading option
64 OdTrVisMetaRecType_DisableShading = 0x10, // Disable shading option
65 OdTrVisMetaRecType_Material = 0x11, // Change material (shaded mode)
66 OdTrVisMetaRecType_UserEntry = 0x12, // User can process own data entries
67 OdTrVisMetaRecType_InitTexture = 0x13, // Set texture for raster image
68 OdTrVisMetaRecType_UninitTexture = 0x14, // Reset texture for raster image
69 OdTrVisMetaRecType_SelectionMarker = 0x15, // Stand-alone selection marker
70 OdTrVisMetaRecType_EnableMarkerArray = 0x16, // Enable markers array
71 OdTrVisMetaRecType_DisableMarkerArray = 0x17, // Disable markers array
72 OdTrVisMetaRecType_VisibilityFlags = 0x18, // Display and selection geometry visibility flags
73 OdTrVisMetaRecType_Lineweight = 0x19, // Lineweight
74 OdTrVisMetaRecType_Linestyle = 0x1A, // Cap&Joint style
75 OdTrVisMetaRecType_Program = 0x1B, // Shader program
76 OdTrVisMetaRecType_TtfText = 0x1C, // Cached TtfFont
77 OdTrVisMetaRecType_PushMatrix = 0x1D, // Push transformation matrix
78 OdTrVisMetaRecType_PopMatrix = 0x1E, // Pop transformation matrix
79 OdTrVisMetaRecType_Metafile = 0x1F, // Play nested metafile
80 OdTrVisMetaRecType_GeomMarker = 0x20, // Geometry marker
81 OdTrVisMetaRecType_VisualStyle = 0x21, // Visual Style
82 OdTrVisMetaRecType_MetafileMarker = 0x22, // Stand-alone metafile marker
83 OdTrVisMetaRecType_ExtensionObject = 0x23, // Play extension object graphics
84 OdTrVisMetaRecType_SelectionStyle = 0x24, // Highlighting with non-default style
85 OdTrVisMetaRecType_DPoint = 0x25, // Draw single point (64 bit float format)
86 OdTrVisMetaRecType_DLine = 0x26, // Draw single line (64 bit float format)
87 OdTrVisMetaRecType_Block = 0x27, // Nested block marker
88 OdTrVisMetaRecType_MaterialRP = 0x28, // Change material and/or reflection plane
89
91};
92
93// Convert OdTrVisMetaRecType into string representation
95
96enum OdTrVisMetaRecArrayType // Type of rendering array
97{
98 OdTrVisMetaRecArrayType_Vertex = 0x00, // Vertexes array
99 OdTrVisMetaRecArrayType_Color = 0x01, // Colors array
101 OdTrVisMetaRecArrayType_OpacityTexCoord = 0x02 + int(OdTrVisTextureType::kOpacity), // Opacity texture coordinates array
102 OdTrVisMetaRecArrayType_BumpMapTexCoord = 0x02 + int(OdTrVisTextureType::kBumpMap), // Bump-mapping texture coordinates array
103 OdTrVisMetaRecArrayType_SpecularTexCoord = 0x02 + int(OdTrVisTextureType::kSpecular), // Specular texture coordinates array
104 OdTrVisMetaRecArrayType_RefractionTexCoord = 0x02 + int(OdTrVisTextureType::kRefraction), // Refraction texture coordinates array
105 OdTrVisMetaRecArrayType_EmissionTexCoord = 0x02 + int(OdTrVisTextureType::kEmission), // Emission texture coordinates array
106 OdTrVisMetaRecArrayType_NormMapTexCoord = 0x02 + int(OdTrVisTextureType::kNormalMap), // Normal map texture coordinates array
107 OdTrVisMetaRecArrayType_RoughnessTexCoord = 0x02 + int(OdTrVisTextureType::kRoughness), // Roughness texture coordinates array
108 OdTrVisMetaRecArrayType_CutoutsTexCoord = 0x02 + int(OdTrVisTextureType::kCutouts), // Cutouts texture coordinates array
109 OdTrVisMetaRecArrayType_ReflectionTexCoord = 0x02 + int(OdTrVisTextureType::kReflection), // Cutouts texture coordinates array
110 OdTrVisMetaRecArrayType_Normal = 0x0C + int(OdTrVisNormalType::kPrimary), // Primary normals array
111 OdTrVisMetaRecArrayType_Normal2 = 0x0C + int(OdTrVisNormalType::kSecondary), // Secondary normals array
113 OdTrVisMetaRecArrayType_BumpBNormal = 0x0C + int(OdTrVisNormalType::kBumpMappingB), // Second bump-mapping normals
114 OdTrVisMetaRecArrayType_NormMapTNormal = 0x0C + int(OdTrVisNormalType::kNormalMapT), // First normal map mapping normals
115 OdTrVisMetaRecArrayType_NormMapBNormal = 0x0C + int(OdTrVisNormalType::kNormalMapB), // Second normal map mapping normals
116 OdTrVisMetaRecArrayType_Depth = 0x12, // Depths array
117 OdTrVisMetaRecArrayType_SpriteCoord = 0x13, // Trails data array
118
120};
121
122enum OdTrVisMetaRecMarkerType // Type of markers array
123{
124 OdTrVisMetaRecMarkerType_Selection = 0x00, // Selection markers array
125 OdTrVisMetaRecMarkerType_Metafile = 0x01, // Metafile markers array
126
128};
129
130enum OdTrVisAttribute // List of attributes which modifies rendering conveyor states
131{
132 OdTrVisAttribute_Depth = 0x00, // Disable depth buffer
133 OdTrVisAttribute_Blend = 0x01, // Enable colors blending (transparency)
134 OdTrVisAttribute_Lighting = 0x02, // Faces lighting state
135 OdTrVisAttribute_Highlighting = 0x03, // Highlighting state
136
139};
140
141enum OdTrVisShading // List of shading attributes which modifies geometry behavior
142{
143 OdTrVisShading_Gouraud = 0x00, // Vertex colors state
144 OdTrVisShading_MultiNormals = 0x01, // Face come with vertex and face normals for gouraud and flat shading
145 OdTrVisShading_Disable2dLineweights = 0x02, // Disable lineweight display in 2d
146 OdTrVisShading_NoColorOverride = 0x03, // Avoid all color overrides
147 OdTrVisShading_LinkedLinesList = 0x04, // Marks geometry with linked line lists
148 OdTrVisShading_HLRStencil = 0x05, // HLR shading mode
149
150 OdTrVisShading_NTypes, // == last + 1
152};
153
154enum OdTrVisFaceCulling // List of face culling states
155{
156 // Culling modes for faces
157 OdTrVisCullFace_None = 0x00, // Disable face culling (default state)
158 OdTrVisCullFace_Back = 0x01, // Enable back faces culling
159 OdTrVisCullFace_Front = 0x02, // Enable front faces culling
160 OdTrVisCullFace_Default = 0x03, // Invoke default faces culling method
161 // Culling modes for edges
162 OdTrVisCullEdge_None = 0x00, // Disable edge culling (default state)
163 OdTrVisCullEdge_Back = 0x04, // Back edges culling
164 OdTrVisCullEdge_Front = 0x08, // Front edges culling
165 OdTrVisCullEdge_Default = 0x0C, // Default edges culling method
166 // Number of invoked flags
168};
169
170// OdTrVisFaceCulling helpers
172{ return (OdTrVisFaceCulling)(faceMode | edgeMode); }
173inline void splitCullingModes(OdTrVisFaceCulling &cullingMode, OdTrVisFaceCulling &edgeMode)
174{ edgeMode = (OdTrVisFaceCulling)(cullingMode & OdTrVisCullEdge_Default); cullingMode = (OdTrVisFaceCulling)(cullingMode & OdTrVisCullFace_Default); }
179
181{
182 OdTrVisVblFlag_DontDisplayUnhighlighted = (1 << 0), // Don't display underlying geometry if it is not highlighted.
183 OdTrVisVblFlag_DontSelectUnhighlighted = (1 << 1), // Don't select underlying geometry if it is not highlighted.
184 OdTrVisVblFlag_DontDisplayHighlighted = (1 << 2), // Don't display underlying geometry if it is highlighted.
185 OdTrVisVblFlag_DontSelectHighlighted = (1 << 3), // Don't select underlying geometry if it is highlighted.
186 OdTrVisVblFlag_DontDisplayIn2d = (1 << 4), // Don't display underlying geometry in 2d rendering mode.
187 OdTrVisVblFlag_DontSelectIn2d = (1 << 5), // Don't select underlying geometry in 2d rendering mode.
188 OdTrVisVblFlag_DontDisplayIn3d = (1 << 6), // Don't display underlying geometry in 3d rendering modes.
189 OdTrVisVblFlag_DontSelectIn3d = (1 << 7), // Don't select underlying geometry in 3d rendering modes.
192};
193
194enum OdTrVisAffection // List of metafile affections
195{
196 OdTrVisAffection_Attributes = 0x01, // Affects attributes/disable/enable
197 OdTrVisAffection_Colors = (0x01 << 1), // Affects color
198 OdTrVisAffection_Materials = (0x01 << 2), // Affects materal
199 OdTrVisAffection_Arrays = (0x01 << 3), // Affects arrays
200 OdTrVisAffection_Geometry = (0x01 << 4), // Call's geometry rendering
201 OdTrVisAffection_Proxy = (0x01 << 5) // Proxy rendering invoked
202};
203
204enum OdTrVisPushMatrixType // Type of matrixes utilized by PushMatrix metafile entries
205{
206 OdTrVisPushMatrixType_Identity = 0, // Identity matrix, no input matrix
207 OdTrVisPushMatrixType_Full // Complete 4x4 matrix
208};
209
210enum OdTrVisBlockRecType // Type of block record utilized by Block metafile entries
211{
212 OdTrVisBlockRecType_Auto = 0x41, // 'A' : Renderer should automatically filter embedded metafiles list.
213 OdTrVisBlockRecType_BuiltIn = 0x42, // 'B' : Render already registered block stream list.
214 OdTrVisBlockRecType_SizedAuto = 0x43, // 'C' : "Auto" with precalculated number of metafile entries.
215 OdTrVisBlockRecType_Sized = 0x44, // 'D' : "Embedded" with precalculated number of metafile entries.
216 OdTrVisBlockRecType_Embedded = 0x45, // 'E' : Store single copy of embedded metafiles list.
217 OdTrVisBlockRecType_EOF = 0x46 // 'F' : EOF for 'A' and 'E'. Ignored elsewhere.
218};
219
221{
222 OdTrVisGeomType_Default = 0, // Non-classified geometry which take part in any rendering mode, like simple lines
223 // Facet markers
224 OdTrVisGeomType_2dFacets = 1, // Non-shaded facets (visible in all modes except hidden line)
225 OdTrVisGeomType_2dFacetsNoFill = 2, // Non-shaded facets (visible in all modes except hidden line), invisible in 2d
226 OdTrVisGeomType_3dFacets = 3, // Shaded facets (invisible in 2d in case if filling disabled)
227 OdTrVisGeomType_3dFacetsNoFill = 4, // Shaded facets (invisible in 2d in case if filling disabled), invisible in 2d
228 OdTrVisGeomType_RasterImageFacets = 5, // Raster image facets (visible in all modes)
229 // Edge markers
230 OdTrVisGeomType_2dFacetEdges = 6, // Non-shaded facet edges (invisible in shaded modes w/o wireframe)
231 OdTrVisGeomType_3dFacetEdges = 7, // Shaded facet edges (available with isolines only)
232 OdTrVisGeomType_Isolines = 8, // Isolines (simple polylines doesn't marked)
233 OdTrVisGeomType_EdgesWithIsolines = 9, // Represent shaded facet edges and isolines together
234 OdTrVisGeomType_HatchIsolineEdges = 10, // Hatch isoline edges (invisible in HiddenLine)
235 OdTrVisGeomType_FillPatternEdges = 11, // Shell filling patterns (for ODA BimRv filling patterns support)
236 OdTrVisGeomType_IntersectionEdges = 12, // Intersection edges
237 OdTrVisGeomType_Silhouettes = 13, // Silhouettes (stub for future needs)
238 // Number of registered geometry visibility types
240};
241
242// Check visibility of geometry type for specified rendering mode
244
245// Geometry primitives
257
264{
265 public:
266 typedef size_t size_type;
267 typedef void *rData;
268 protected:
277 mutable rData m_itSet;
279 mutable int m_divisor;
280 public:
282
283 template <typename ArrayType>
284 OD_TYPENAME ArrayType::value_type *init(const ArrayType &arry, size_type nPos = 0)
285 {
286 return arry.cPtr(nPos, m_itSet, m_itSize);
287 }
288 int setDivisor(int divisor) const { return m_divisor = divisor; }
289
290 size_type pageSize() const { return m_itSize * m_divisor; }
291 bool has() const { return m_itSize != 0; }
292
293 rData pageData() const { Block *pBlock = reinterpret_cast<Block*>(m_itSet);
294 return pBlock->m_pData; }
295 rData nextPage() const { Block *pBlock = reinterpret_cast<Block*>(m_itSet);
296 if (!pBlock || !pBlock->m_pBlockNext) return nullptr;
297 m_itSet = pBlock = pBlock->m_pBlockNext;
298 m_itSize = pBlock->m_nBlockFill;
299 if (!m_itSize) return nullptr;
300 return pBlock->m_pData; }
301};
302
309{
310 void *m_pData;
311 OdUInt32 m_uData : 4; // Data type size (0-1, 1-2, 3-4, 4-8, etc).
312 OdUInt32 m_uSize : 28; // Number of data types (Full data size = m_uSize << m_uData).
313 OdUInt32 m_type : 4; // Data type layout
314 OdUInt32 m_bind : 28; // Binding index (depends from renderer)
315
316 enum Type
317 { // Actually represents only data layout. Physically can be used for different processes.
318 Type_Vertex = 0, // Flt*3
319 Type_Normal, // Flt*3 (normalized)
320 Type_Color, // Flt*4
322 Type_Depth, // Flt*1
323 Type_Xform, // Flt*16
324 Type_Index, // U16*1
325 Type_Marker, // Marker
326 // Runtime array extensions, which is typically attached as last arrays to exist metafile.
327 Type_LwdCache, // Lineweights cache for internal use
328 Type_Selection, // Mapped vertices for gpu selection
329 Type_Binding, // Array of shared metafile bindings
330 // Extra types
333 };
334
336 { DS_1 = 0, DS_2 = 1, DS_4 = 2, DS_8 = 3, DS_16 = 4, DS_32 = 5, DS_64 = 6 };
337
339 : m_pData(NULL)
340 , m_uData(0)
341 , m_uSize(0)
343 , m_bind(0)
344 { }
345
346 inline OdUInt32 arraySize() const { return m_uSize << m_uData; }
347 inline Type type() const { return (Type)m_type; }
348 inline DataSize dataSize() const { return (DataSize)m_uData; }
350 { return ((dataSize == 1) ? DS_1 : ((dataSize == 2) ? DS_2 : ((dataSize == 4) ? DS_4 : ((dataSize == 8) ? DS_8 :
351 ((dataSize == 16) ? DS_16 : ((dataSize == 32) ? DS_32 : ((dataSize == 64) ? DS_64 : DS_1)))))));
352 }
353
354 inline OdUInt32 binding() const { return m_bind; }
355 inline bool hasBinding() const { return m_bind != 0; }
356 inline bool uniqueBindings() const { return m_bind == 0x0FFFFFFF; }
357 inline void setUniqueBindings() { m_bind = 0x0FFFFFFF; }
358
359 static const struct ReallocLogic
360 { OdInt32 m_nGrowOption;
361 ReallocLogic(OdInt32 nGrowOption = 0)
362 : m_nGrowOption(nGrowOption) { }
363 void *extendArray(OdTrVisArrayWrapper &arry, OdUInt32 nBytesAlloc) const;
365
366 void setArray(Type type, const void *pPtr, OdUInt32 size, DataSize ds, const OdTrVisWrPageChain *pChain = nullptr);
370 void concatArray(const void *pPtr, OdUInt32 size, DataSize ds, const OdTrVisWrPageChain *pChain,
371 const ReallocLogic &racLg = g_defaultReallocLogic);
372 OD_FORCEINLINE void concatArray(const void *pPtr, OdUInt32 size, DataSize ds, const ReallocLogic &racLg = g_defaultReallocLogic)
373 { concatArray(pPtr, size, ds, nullptr, racLg); }
374
375 OD_FORCEINLINE void setArray(Type type, const void *pPtr, OdUInt32 size, size_t ds, const OdTrVisWrPageChain *pChain = nullptr)
376 { setArray(type, pPtr, size, dataSizeEst(ds), pChain); }
377 OD_FORCEINLINE void concatArray(const void *pPtr, OdUInt32 size, size_t ds, const OdTrVisWrPageChain *pChain,
378 const ReallocLogic &racLg = g_defaultReallocLogic)
379 { concatArray(pPtr, size, dataSizeEst(ds), pChain, racLg); }
380 OD_FORCEINLINE void concatArray(const void *pPtr, OdUInt32 size, size_t ds, const ReallocLogic &racLg = g_defaultReallocLogic)
381 { concatArray(pPtr, size, dataSizeEst(ds), nullptr, racLg); }
382
383 // Double->float
384 void setArray_flt(Type type, const double *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain = nullptr);
385 void concatArray_flt(const double *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain,
386 const ReallocLogic &racLg = g_defaultReallocLogic);
387 OD_FORCEINLINE void concatArray_flt(const double *pPtr, OdUInt32 size, const ReallocLogic &racLg = g_defaultReallocLogic)
388 { concatArray_flt(pPtr, size, nullptr, racLg); }
389 // UInt8->float
390 void setArray_flt(Type type, const OdUInt8 *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain = nullptr);
391 void concatArray_flt(const OdUInt8 *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain,
392 const ReallocLogic &racLg = g_defaultReallocLogic);
393 OD_FORCEINLINE void concatArray_flt(const OdUInt8 *pPtr, OdUInt32 size, const ReallocLogic &racLg = g_defaultReallocLogic)
394 { concatArray_flt(pPtr, size, nullptr, racLg); }
395 // UInt8->double
396 void setArray_dbl(Type type, const OdUInt8 *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain = nullptr);
397 void concatArray_dbl(const OdUInt8 *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain,
398 const ReallocLogic &racLg = g_defaultReallocLogic);
399 OD_FORCEINLINE void concatArray_dbl(const OdUInt8 *pPtr, OdUInt32 size, const ReallocLogic &racLg = g_defaultReallocLogic)
400 { concatArray_dbl(pPtr, size, nullptr, racLg); }
401 // Float->double
402 void setArray_dbl(Type type, const float *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain = nullptr);
403 void concatArray_dbl(const float *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain,
404 const ReallocLogic &racLg = g_defaultReallocLogic);
405 OD_FORCEINLINE void concatArray_dbl(const float *pPtr, OdUInt32 size, const ReallocLogic &racLg = g_defaultReallocLogic)
406 { concatArray_dbl(pPtr, size, nullptr, racLg); }
407 // Float->UInt8
408 void setArray_u8c(Type type, const float *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain = nullptr);
409 void concatArray_u8c(const float *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain,
410 const ReallocLogic &racLg = g_defaultReallocLogic);
411 OD_FORCEINLINE void concatArray_u8c(const float *pPtr, OdUInt32 size, const ReallocLogic &racLg = g_defaultReallocLogic)
412 { concatArray_u8c(pPtr, size, nullptr, racLg); }
413 // Int32->UInt16
414 void setArray_ush(Type type, const OdInt32 *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain = nullptr);
415 void concatArray_ush(const OdInt32 *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain,
416 const ReallocLogic &racLg = g_defaultReallocLogic);
417 OD_FORCEINLINE void concatArray_ush(const OdInt32 *pPtr, OdUInt32 size, const ReallocLogic &racLg = g_defaultReallocLogic)
418 { concatArray_ush(pPtr, size, nullptr, racLg); }
419 // UInt16->Int32
420 void setArray_int(Type type, const OdUInt16 *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain = nullptr);
421 void concatArray_int(const OdUInt16 *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain,
422 const ReallocLogic &racLg = g_defaultReallocLogic);
423 OD_FORCEINLINE void concatArray_int(const OdUInt16 *pPtr, OdUInt32 size, const ReallocLogic &racLg = g_defaultReallocLogic)
424 { concatArray_int(pPtr, size, nullptr, racLg); }
425 // Int32->UInt8
426 void setArray_u8i(Type type, const OdInt32 *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain = nullptr);
427 void concatArray_u8i(const OdInt32 *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain,
428 const ReallocLogic &racLg = g_defaultReallocLogic);
429 OD_FORCEINLINE void concatArray_u8i(const OdInt32 *pPtr, OdUInt32 size, const ReallocLogic &racLg = g_defaultReallocLogic)
430 { concatArray_u8i(pPtr, size, nullptr, racLg); }
431 // UInt16->Int8
432 void setArray_u8i(Type type, const OdUInt16 *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain = nullptr);
433 void concatArray_u8i(const OdUInt16 *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain,
434 const ReallocLogic &racLg = g_defaultReallocLogic);
435 OD_FORCEINLINE void concatArray_u8i(const OdUInt16 *pPtr, OdUInt32 size, const ReallocLogic &racLg = g_defaultReallocLogic)
436 { concatArray_u8i(pPtr, size, nullptr, racLg); }
437 // Float->HalfFloat
438 void setArray_hfl(Type type, const float *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain = nullptr);
439 void concatArray_hfl(const float *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain,
440 const ReallocLogic &racLg = g_defaultReallocLogic);
441 OD_FORCEINLINE void concatArray_hfl(const float *pPtr, OdUInt32 size, const ReallocLogic &racLg = g_defaultReallocLogic)
442 { concatArray_hfl(pPtr, size, nullptr, racLg); }
443 // Double->HalfFloat
444 void setArray_hfl(Type type, const double *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain = nullptr);
445 void concatArray_hfl(const double *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain,
446 const ReallocLogic &racLg = g_defaultReallocLogic);
447 OD_FORCEINLINE void concatArray_hfl(const double *pPtr, OdUInt32 size, const ReallocLogic &racLg = g_defaultReallocLogic)
448 { concatArray_hfl(pPtr, size, nullptr, racLg); }
449
450 // Convert vertex array to floats (possible for Vertex/Normal/Color/TexCoord and Depth array types only)
451 bool asFloatsArray(OdFloatArray &result) const;
452
453 void save(OdGsFiler *pFiler) const;
454 void load(OdGsFiler *pFiler);
455};
456
457// Selection/metafile markers
458
459template <typename UInt64Type>
461{
462 UInt64Type m_nMark;
464 typedef UInt64Type data_type;
465 private: OdUInt32 padding;
466 public: OdTrVisMarkBase() : padding(0) {} enum EnPosInit { kNone };
467 OdTrVisMarkBase(UInt64Type nMark) : m_nMark(nMark), padding(0) {}
468 OdTrVisMarkBase(UInt64Type nMark, OdUInt32 uFrom) : m_nMark(nMark), m_uFrom(uFrom), padding(0) {}
469 OdTrVisMarkBase(EnPosInit, OdUInt32 uFrom) : m_uFrom(uFrom), padding(0) {}
470};
471// Default processing marker (for internal use only)
473// Selection marker
475// Metafile marker
477
483{
484 protected:
489 public:
492 OdTrVisLwdStyle(bool bByDefault, OdPs::LineEndStyle lesStyle, OdPs::LineJoinStyle ljsStyle)
493 { m_curStyleDef = 1; setCurUsesDef(bByDefault); setCurLesStyle(lesStyle); setCurLjsStyle(ljsStyle); }
494 void setCurStyleDef(bool bSet) { m_curStyleDef = (bSet) ? 1 : 0; }
495 bool curStyleDef() const { return m_curStyleDef != 0; }
496 void setCurUsesDef(bool bSet) { m_curUsesDef = (bSet) ? 1 : 0; }
497 bool curUsesDef() const { return m_curUsesDef != 0; }
502 bool operator ==(const OdTrVisLwdStyle &sec) const
503 { if (m_curUsesDef == sec.m_curUsesDef)
504 { if (m_curUsesDef) return true;
505 return (m_curLesStyle == sec.m_curLesStyle) && (m_curLjsStyle == sec.m_curLjsStyle);
506 } return false;
507 }
508 bool operator !=(const OdTrVisLwdStyle &sec) const
509 { if (m_curUsesDef == sec.m_curUsesDef)
510 { if (m_curUsesDef) return false;
511 return (m_curLesStyle != sec.m_curLesStyle) || (m_curLjsStyle != sec.m_curLjsStyle);
512 } return true;
513 }
514};
515
521{
524 protected:
525 union {
530 public:
531 OdTrVisLwdSetting() : m_type(0) { m_val.m_iLineWeight = 0; }
532 OdTrVisLwdSetting(double dVal, LwdType typ = kPlotStyle) : m_type(typ) { m_val.m_dLineWeight = dVal; }
533 OdTrVisLwdSetting(OdDb::LineWeight lw, LwdType typ = kDatabase) : m_type(typ) { m_val.m_iLineWeight = (OdInt64)lw; }
534 OdTrVisLwdSetting(OdInt32 pix, LwdType typ = kPixels) : m_type(typ) { m_val.m_iLineWeight = (OdInt64)pix; }
535 // Type
536 void setType(LwdType typ) { m_type = (OdUInt8)typ; }
537 LwdType type() const { return (LwdType)m_type; }
538 bool isForcedLineweight() const { return (m_type == kPixels) && (m_val.m_iLineWeight > 0); }
539 // dLineWeight
540 void setDLineWeight(double dVal, LwdType typ = kPlotStyle) { m_val.m_dLineWeight = dVal; m_type = typ; }
541 double dLineWeight() const { return m_val.m_dLineWeight; }
542 // lwLineWeight
543 void setLwLineWeight(OdDb::LineWeight lw, LwdType typ = kDatabase) { m_val.m_iLineWeight = (OdInt64)lw; m_type = typ; }
544 OdDb::LineWeight lwLineWeight() const { return (OdDb::LineWeight)m_val.m_iLineWeight; }
545 // pixLineWeight
546 void setPixLineWeight(OdInt32 pix, LwdType typ = kPixels) { m_val.m_iLineWeight = pix; m_type = typ; }
547 OdInt32 pixLineWeight() const { return (OdInt32)m_val.m_iLineWeight; }
548 // Comparators
549 bool operator ==(const OdTrVisLwdSetting &sec) const
550 { if (m_type == sec.m_type)
551 { switch (m_type)
552 { case kDatabase:
553 case kPixels: return m_val.m_iLineWeight == sec.m_val.m_iLineWeight;
554 case kAbsolute:
555 case kPlotStyle: return OdEqual(m_val.m_dLineWeight, sec.m_val.m_dLineWeight);
556 } }
557 return false;
558 }
559 bool operator !=(const OdTrVisLwdSetting &sec) const
560 { if (m_type == sec.m_type)
561 { switch (m_type)
562 { case kDatabase:
563 case kPixels: return m_val.m_iLineWeight != sec.m_val.m_iLineWeight;
564 case kAbsolute:
565 case kPlotStyle: return !OdEqual(m_val.m_dLineWeight, sec.m_val.m_dLineWeight);
566 } }
567 return true;
568 }
569 bool hasLineweight() const
570 { switch (m_type)
571 { case kDatabase: return m_val.m_iLineWeight != OdDb::kLnWt000;
572 case kAbsolute:
573 case kPlotStyle: return OdNonZero(m_val.m_dLineWeight);
574 case kPixels: return m_val.m_iLineWeight > 1;
575 }
576 return false;
577 }
578 bool isPs() const { return GETBIT(m_type, 1); }
579 static bool isPs(LwdType type) { return GETBIT(type, 1); }
580};
581
589class OdTrVisFlatMetafileContainer : public OdFlatMetafileContainer
590{
591 public:
592 OdArray<OdTrVisArrayWrapper> m_ArrayElements; // Array contain pointers to some memory elements
593 public:
596
598
600 {
601 m_ArrayElements.push_back(static_cast<const OdTrVisArrayWrapper&>(element));
602 return OdTrVisArrayId(m_ArrayElements.size() - 1);
603 }
605 {
606 return m_ArrayElements.size();
607 }
609 {
610 return m_ArrayElements.at((OdUInt32)nElem);
611 }
613 {
614 return m_ArrayElements.at((OdUInt32)nElem);
615 }
616
618
620 { OdUInt64 calcSize = 0;
621 const OdUInt32 nArrays = arrayElementsSize(); // Include size of arrays
622 for (OdUInt32 nArray = 0; nArray < nArrays; nArray++)
623 calcSize += arrayElement((OdTrVisArrayId)nArray).arraySize() + sizeof(OdTrVisArrayWrapper);
624 return calcSize;
625 }
626
627 // Base container overrides
629
630 void exchangeData(OdFlatMetafileContainer &sndCnt)
631 { OdTrVisFlatMetafileContainer &pCont = static_cast<OdTrVisFlatMetafileContainer&>(sndCnt);
632 OdFlatMetafileContainer::exchangeData(pCont);
634 }
635
636 // OdFlatMetafileContainer overrides
637 OdFlatMetafileContainer *createMe() const { return new OdTrVisFlatMetafileContainer; }
638 // Clone stream data with gaps elimination
639 OdFlatMetafileContainer *clone(const Gap *pGaps = NULL) const
640 { OdTrVisFlatMetafileContainer *pCont = static_cast<OdTrVisFlatMetafileContainer*>(OdFlatMetafileContainer::clone(pGaps));
641 for (OdUInt32 nArray = 0, nArrays = arrayElementsSize(); nArray < nArrays; nArray++)
642 { const OdTrVisArrayWrapper &fromArr = arrayElement((OdTrVisArrayId)nArray);
643 OdTrVisArrayWrapper newArr; newArr.setArray((OdTrVisArrayWrapper::Type)fromArr.m_type, fromArr.m_pData, fromArr.m_uSize, fromArr.m_uData);
644 pCont->appendArrayElement(newArr);
645 }
646 return pCont;
647 }
648
649 OdBaseMetafileContainerReader *createReader() const;
650 OdBaseMetafileContainerWriter *createWriter() const;
651
652 // Extended renderer container manipulators
653
654 // Convert bindings into shared container representation
655 void enableUniqueBindings(OdTrVisId existClientId, OdTrVisId extendedClientId = kTrVisNullId);
656 // Extract shared array binding
658 // Install shared array binding
659 void setUniqueBinding(OdTrVisId clientId, OdTrVisArrayId arrayId, OdUInt32 binding);
660 // Convert from shared container representation into standard bindings
662
663 // Direct access to stream memory
664 inline const OdUInt8 *memoryPtr() const
665 {
666 return m_pData;
667 }
668};
669
677class OdTrVisFlatMetafileContainerWriter : public OdFlatMetafileContainerWriter
678{
679 public:
680 OdTrVisFlatMetafileContainerWriter() : OdFlatMetafileContainerWriter() { }
681 OdTrVisFlatMetafileContainerWriter(OdBaseMetafileContainer *pContainer) : OdFlatMetafileContainerWriter(pContainer) { }
682
683 inline OdBaseMetafileContainer *createContainer() const
684 {
685 return new OdTrVisFlatMetafileContainer();
686 }
687
688 inline OdTrVisFlatMetafileContainer *glContainer() const { return static_cast<OdTrVisFlatMetafileContainer*>(container()); }
689};
690
698class OdTrVisFlatMetafileContainerReader : public OdFlatMetafileContainerReader
699{
700 public:
701 OdTrVisFlatMetafileContainerReader() : OdFlatMetafileContainerReader() { }
702 OdTrVisFlatMetafileContainerReader(OdBaseMetafileContainer *pContainer) : OdFlatMetafileContainerReader(pContainer) { }
703
704 inline OdBaseMetafileContainer *createContainer() const
705 {
706 return new OdTrVisFlatMetafileContainer();
707 }
708
709 inline OdTrVisFlatMetafileContainer *glContainer() const { return static_cast<OdTrVisFlatMetafileContainer*>(container()); }
710};
711
712// Optimization definitions:
713#define OD_OGL_RDR_SEEKFWD(pMemPtr, uSize) (pMemPtr) += (uSize)
714#define OD_OGL_RDR_SEEKBWD(pMemPtr, uSize) (pMemPtr) -= (uSize)
715#define OD_OGL_RDR_SEEKINC(pMemPtr) (pMemPtr)++
716#define OD_OGL_RDR_SEEKDEC(pMemPtr) (pMemPtr)--
717
718#define OD_OGL_RDR_READVAL(cType, pMemPtr) *(cType*)(pMemPtr)
719#define OD_OGL_RDR_READVALOFFSET(cType, pMemPtr, uOffset) *(cType*)((pMemPtr) + (uOffset))
720#define OD_OGL_RDR_READVALRETYPE(cOutType, cInType, pMemPtr) (cOutType)OD_OGL_RDR_READVAL(cInType, pMemPtr)
721#define OD_OGL_RDR_READVALOFFSETRETYPE(cOutType, cInType, pMemPtr, uOffset) (cOutType)OD_OGL_RDR_READVALOFFSET(cInType, pMemPtr, uOffset)
722#define OD_OGL_RDR_GETPTRNATIVE(cType, pMemPtr) (cType*)(pMemPtr)
723#define OD_OGL_RDR_GETPTRNATIVEOFFSET(cType, pMemPtr, uSize) (cType*)((pMemPtr) + (uSize))
724#define OD_OGL_RDR_GETPTRSTORAGE(imedType, name, count)
725#define OD_OGL_RDR_GETPTR(cType, imedType, name, count, pMemPtr) OD_OGL_RDR_GETPTRNATIVE(cType, pMemPtr)
726#define OD_OGL_RDR_GETPTROFFSET(cType, imedType, name, count, pMemPtr, uSize) OD_OGL_RDR_GETPTRNATIVEOFFSET(cType, pMemPtr, uSize)
727
728#define OD_OGL_RDR_INITIATE(pMemPtr, uSize) const OdUInt8 *pMemPtrReadFor = (const OdUInt8*)pMemPtr + uSize
729#define OD_OGL_RDR_CHECKEOF(pMemPtr) pMemPtr < pMemPtrReadFor
730
731#include "TD_PackPop.h"
732
733#endif // _EXTRVISMETAFILESTREAM_INCLUDED_
OdArray< float, OdMemoryAllocator< float > > OdFloatArray
Definition GsFiler.h:58
#define OD_TYPENAME
unsigned int OdUInt32
unsigned short OdUInt16
int OdInt32
unsigned char OdUInt8
wchar_t OdChar
bool OdEqual(double x, double y, double tol=1.e-10)
Definition OdaDefs.h:542
bool OdNonZero(double x, double tol=1.e-10)
Definition OdaDefs.h:537
#define GETBIT(flags, bit)
Definition OdaDefs.h:517
#define OD_CONSTEXPR_FUNC
Definition TrVisDefs.h:57
const OdTrVisId kTrVisNullId
Definition TrVisDefs.h:141
OdUInt32 OdTrVisArrayId
Definition TrVisDefs.h:106
#define OD_FORCEINLINE
Definition TrVisDefs.h:41
OdUInt64 OdTrVisId
Definition TrVisDefs.h:101
@ OdTrVisShading_Gouraud
@ OdTrVisShading_HLRStencil
@ OdTrVisShading_NoColorOverride
@ OdTrVisShading_NTypes
@ OdTrVisShading_MultiNormals
@ OdTrVisShading_Disable2dLineweights
@ OdTrVisShading_LinkedLinesList
@ OdTrVisShading_Mask
OdTrVisFaceCulling faceCullingModeAsEdge(OdTrVisFaceCulling faceMode)
OdTrVisVisibilityFlags
@ OdTrVisVblFlag_DontSelectHighlighted
@ OdTrVisVblFlag_DontSelectUnhighlighted
@ OdTrVisVblFlag_Default
@ OdTrVisVblFlag_DontSelectIn2d
@ OdTrVisVblFlag_DontDisplayIn2d
@ OdTrVisVblFlag_DontDisplayHighlighted
@ OdTrVisVblFlag_DontDisplayIn3d
@ OdTrVisVblFlag_DontSelectIn3d
@ OdTrVisVblFlag_FlagsMask
@ OdTrVisVblFlag_DontDisplayUnhighlighted
OdTrVisMarkBase< OdTrVisGsMarker > OdTrVisSelMark
OdTrVisMetaRecArrayType
@ OdTrVisMetaRecArrayType_Depth
@ OdTrVisMetaRecArrayType_Normal2
@ OdTrVisMetaRecArrayType_BumpTNormal
@ OdTrVisMetaRecArrayType_CutoutsTexCoord
@ OdTrVisMetaRecArrayType_EmissionTexCoord
@ OdTrVisMetaRecArrayType_NormMapBNormal
@ OdTrVisMetaRecArrayType_Normal
@ OdTrVisMetaRecArrayType_NormMapTexCoord
@ OdTrVisMetaRecArrayType_ReflectionTexCoord
@ OdTrVisMetaRecArrayType_RefractionTexCoord
@ OdTrVisMetaRecArrayType_NTypes
@ OdTrVisMetaRecArrayType_BumpMapTexCoord
@ OdTrVisMetaRecArrayType_RoughnessTexCoord
@ OdTrVisMetaRecArrayType_DiffuseTexCoord
@ OdTrVisMetaRecArrayType_SpriteCoord
@ OdTrVisMetaRecArrayType_OpacityTexCoord
@ OdTrVisMetaRecArrayType_BumpBNormal
@ OdTrVisMetaRecArrayType_Vertex
@ OdTrVisMetaRecArrayType_NormMapTNormal
@ OdTrVisMetaRecArrayType_SpecularTexCoord
@ OdTrVisMetaRecArrayType_Color
OdTrVisMetaRecType
@ OdTrVisMetaRecType_GeomMarker
@ OdTrVisMetaRecType_DrawArrays
@ OdTrVisMetaRecType_DPoint
@ OdTrVisMetaRecType_Metafile
@ OdTrVisMetaRecType_PopMatrix
@ OdTrVisMetaRecType_Block
@ OdTrVisMetaRecType_Color
@ OdTrVisMetaRecType_UninitTexture
@ OdTrVisMetaRecType_EnableMarkerArray
@ OdTrVisMetaRecType_MaterialRP
@ OdTrVisMetaRecType_DisableMarkerArray
@ OdTrVisMetaRecType_SelectionStyle
@ OdTrVisMetaRecType_NTypes
@ OdTrVisMetaRecType_EnableOpt
@ OdTrVisMetaRecType_VisualStyle
@ OdTrVisMetaRecType_SelectionMarker
@ OdTrVisMetaRecType_Empty
@ OdTrVisMetaRecType_MetafileMarker
@ OdTrVisMetaRecType_UserEntry
@ OdTrVisMetaRecType_DrawElements
@ OdTrVisMetaRecType_DLine
@ OdTrVisMetaRecType_DisableOpt
@ OdTrVisMetaRecType_Program
@ OdTrVisMetaRecType_DisableShading
@ OdTrVisMetaRecType_VLine
@ OdTrVisMetaRecType_ILine
@ OdTrVisMetaRecType_LStipple
@ OdTrVisMetaRecType_PushMatrix
@ OdTrVisMetaRecType_ExtensionObject
@ OdTrVisMetaRecType_DisableArray
@ OdTrVisMetaRecType_Linestyle
@ OdTrVisMetaRecType_VPoint
@ OdTrVisMetaRecType_InitTexture
@ OdTrVisMetaRecType_EnableArray
@ OdTrVisMetaRecType_Lineweight
@ OdTrVisMetaRecType_EnableShading
@ OdTrVisMetaRecType_TtfText
@ OdTrVisMetaRecType_VisibilityFlags
@ OdTrVisMetaRecType_IPoint
@ OdTrVisMetaRecType_PStipple
@ OdTrVisMetaRecType_Material
@ OdTrVisMetaRecType_CullFace
float OdTrVisVertexType
OdTrVisMetaRecMarkerType
@ OdTrVisMetaRecMarkerType_Selection
@ OdTrVisMetaRecMarkerType_NTypes
@ OdTrVisMetaRecMarkerType_Metafile
@ OdTrVisAttribute_Highlighting
@ OdTrVisAttribute_Mask
@ OdTrVisAttribute_Lighting
@ OdTrVisAttribute_Blend
@ OdTrVisAttribute_Depth
@ OdTrVisAttribute_NTypes
OdTrVisBlockRecType
@ OdTrVisBlockRecType_Auto
@ OdTrVisBlockRecType_Sized
@ OdTrVisBlockRecType_Embedded
@ OdTrVisBlockRecType_BuiltIn
@ OdTrVisBlockRecType_EOF
@ OdTrVisBlockRecType_SizedAuto
const OdChar * chunkDecode(OdTrVisMetaRecType rt)
OdTrVisMarkBase< OdUInt64 > OdTrVisDefProcMark
void splitCullingModes(OdTrVisFaceCulling &cullingMode, OdTrVisFaceCulling &edgeMode)
void od_dbl2float(float *pFloats, const double *pDoubles, size_t numData)
@ 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)
@ kTrVisLines
@ kTrVisTriangles
@ kTrVisTriangleFan
@ kTrVisGeomPrimInvalid
@ kTrVisTriangleStrip
@ kTrVisLineLoop
@ kTrVisPoints
@ kTrVisLineStrip
OdTrVisMarkBase< OdTrVisMetafileId > OdTrVisMetaMark
OdTrVisFaceCulling
@ OdTrVisCullEdge_Front
@ OdTrVisCullEdge_NFlags
@ OdTrVisCullFace_None
@ OdTrVisCullFace_Default
@ OdTrVisCullFace_Front
@ OdTrVisCullEdge_None
@ OdTrVisCullFace_Back
@ OdTrVisCullEdge_Back
@ OdTrVisCullEdge_Default
OdTrVisPushMatrixType
@ OdTrVisPushMatrixType_Identity
@ OdTrVisPushMatrixType_Full
@ OdTrVisAffection_Proxy
@ OdTrVisAffection_Materials
@ OdTrVisAffection_Geometry
@ OdTrVisAffection_Colors
@ OdTrVisAffection_Arrays
@ OdTrVisAffection_Attributes
bool isGeomTypeVisible(OdTrVisGeomType geomType, OdGsView::RenderMode rMode)
RenderMode
Definition Gs.h:149
void optimizeMemory(OdUInt32 uSize)
void setUniqueBinding(OdTrVisId clientId, OdTrVisArrayId arrayId, OdUInt32 binding)
OdArray< OdTrVisArrayWrapper > m_ArrayElements
OdFlatMetafileContainer * createMe() const
OdUInt32 uniqueBinding(OdTrVisId clientId, OdTrVisArrayId arrayId) const
const OdUInt8 * memoryPtr() const
const OdTrVisArrayWrapper & arrayElement(OdTrVisArrayId nElem) const
OdBaseMetafileContainerWriter * createWriter() const
void exchangeData(OdFlatMetafileContainer &sndCnt)
void enableUniqueBindings(OdTrVisId existClientId, OdTrVisId extendedClientId=kTrVisNullId)
OdTrVisArrayId appendArrayElement(const OdTrVisArrayWrapper &element)
void disableUniqueBindings(OdTrVisId clientId)
OdFlatMetafileContainer * clone(const Gap *pGaps=NULL) const
OdTrVisArrayId lastArrayElement() const
OdTrVisArrayWrapper & arrayElement(OdTrVisArrayId nElem)
OdBaseMetafileContainerReader * createReader() const
OdTrVisFlatMetafileContainer * glContainer() const
OdTrVisFlatMetafileContainerReader(OdBaseMetafileContainer *pContainer)
OdBaseMetafileContainer * createContainer() const
OdBaseMetafileContainer * createContainer() const
OdTrVisFlatMetafileContainer * glContainer() const
OdTrVisFlatMetafileContainerWriter(OdBaseMetafileContainer *pContainer)
size_type pageSize() const
OD_TYPENAME ArrayType::value_type * init(const ArrayType &arry, size_type nPos=0)
int setDivisor(int divisor) const
GLsizeiptr size
Definition gles2_ext.h:182
LineWeight
Definition OdaDefs.h:386
@ kLnWt000
Definition OdaDefs.h:387
LineJoinStyle
Definition PlotStyles.h:78
LineEndStyle
Definition PlotStyles.h:69
void setArray_hfl(Type type, const float *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain=nullptr)
void concatArray_hfl(const float *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain, const ReallocLogic &racLg=g_defaultReallocLogic)
void concatArray_int(const OdUInt16 *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain, const ReallocLogic &racLg=g_defaultReallocLogic)
void concatArray_u8i(const OdInt32 *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain, const ReallocLogic &racLg=g_defaultReallocLogic)
void save(OdGsFiler *pFiler) const
void setArray(Type type, const void *pPtr, OdUInt32 size, DataSize ds, const OdTrVisWrPageChain *pChain=nullptr)
void setArray_hfl(Type type, const double *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain=nullptr)
OdUInt32 arraySize() const
void concatArray_hfl(const double *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain, const ReallocLogic &racLg=g_defaultReallocLogic)
OD_FORCEINLINE void concatArray_hfl(const float *pPtr, OdUInt32 size, const ReallocLogic &racLg=g_defaultReallocLogic)
void setArray_u8i(Type type, const OdUInt16 *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain=nullptr)
void setArray_u8i(Type type, const OdInt32 *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain=nullptr)
void concatArray_flt(const double *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain, const ReallocLogic &racLg=g_defaultReallocLogic)
void concatArray_dbl(const OdUInt8 *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain, const ReallocLogic &racLg=g_defaultReallocLogic)
OD_FORCEINLINE void concatArray_ush(const OdInt32 *pPtr, OdUInt32 size, const ReallocLogic &racLg=g_defaultReallocLogic)
OD_FORCEINLINE void concatArray(const void *pPtr, OdUInt32 size, DataSize ds, const ReallocLogic &racLg=g_defaultReallocLogic)
void setArray_flt(Type type, const OdUInt8 *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain=nullptr)
OD_FORCEINLINE void concatArray_u8i(const OdUInt16 *pPtr, OdUInt32 size, const ReallocLogic &racLg=g_defaultReallocLogic)
OD_FORCEINLINE void concatArray_int(const OdUInt16 *pPtr, OdUInt32 size, const ReallocLogic &racLg=g_defaultReallocLogic)
static OD_CONSTEXPR_FUNC DataSize dataSizeEst(size_t dataSize)
OD_FORCEINLINE void concatArray_u8c(const float *pPtr, OdUInt32 size, const ReallocLogic &racLg=g_defaultReallocLogic)
OD_FORCEINLINE void concatArray_flt(const OdUInt8 *pPtr, OdUInt32 size, const ReallocLogic &racLg=g_defaultReallocLogic)
OD_FORCEINLINE void concatArray_dbl(const float *pPtr, OdUInt32 size, const ReallocLogic &racLg=g_defaultReallocLogic)
DataSize dataSize() const
OD_FORCEINLINE void concatArray_hfl(const double *pPtr, OdUInt32 size, const ReallocLogic &racLg=g_defaultReallocLogic)
void setArray_dbl(Type type, const OdUInt8 *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain=nullptr)
OD_FORCEINLINE void concatArray_dbl(const OdUInt8 *pPtr, OdUInt32 size, const ReallocLogic &racLg=g_defaultReallocLogic)
void setArray_int(Type type, const OdUInt16 *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain=nullptr)
void concatArray_u8c(const float *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain, const ReallocLogic &racLg=g_defaultReallocLogic)
void concatArray_dbl(const float *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain, const ReallocLogic &racLg=g_defaultReallocLogic)
void setArray_flt(Type type, const double *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain=nullptr)
static const struct OdTrVisArrayWrapper::ReallocLogic g_defaultReallocLogic
void concatArray(const void *pPtr, OdUInt32 size, DataSize ds, const OdTrVisWrPageChain *pChain, const ReallocLogic &racLg=g_defaultReallocLogic)
OD_FORCEINLINE void concatArray_u8i(const OdInt32 *pPtr, OdUInt32 size, const ReallocLogic &racLg=g_defaultReallocLogic)
OD_FORCEINLINE void concatArray(const void *pPtr, OdUInt32 size, size_t ds, const ReallocLogic &racLg=g_defaultReallocLogic)
void concatArray_u8i(const OdUInt16 *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain, const ReallocLogic &racLg=g_defaultReallocLogic)
void concatArray_ush(const OdInt32 *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain, const ReallocLogic &racLg=g_defaultReallocLogic)
void setArray_u8c(Type type, const float *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain=nullptr)
bool asFloatsArray(OdFloatArray &result) const
void setArray_ush(Type type, const OdInt32 *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain=nullptr)
void truncateArray(OdUInt32 size, DataSize ds)
OD_FORCEINLINE void concatArray(const void *pPtr, OdUInt32 size, size_t ds, const OdTrVisWrPageChain *pChain, const ReallocLogic &racLg=g_defaultReallocLogic)
OD_FORCEINLINE void setArray(Type type, const void *pPtr, OdUInt32 size, size_t ds, const OdTrVisWrPageChain *pChain=nullptr)
void concatArray_flt(const OdUInt8 *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain, const ReallocLogic &racLg=g_defaultReallocLogic)
void load(OdGsFiler *pFiler)
void setArray_dbl(Type type, const float *pPtr, OdUInt32 size, const OdTrVisWrPageChain *pChain=nullptr)
OD_FORCEINLINE void concatArray_flt(const double *pPtr, OdUInt32 size, const ReallocLogic &racLg=g_defaultReallocLogic)
static bool isPs(LwdType type)
union OdTrVisLwdSetting::@037000061037254153350016212020030252157125162255 m_val
OdTrVisLwdSetting(OdInt32 pix, LwdType typ=kPixels)
OdDb::LineWeight lwLineWeight() const
bool operator==(const OdTrVisLwdSetting &sec) const
OdTrVisLwdSetting(OdDb::LineWeight lw, LwdType typ=kDatabase)
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)
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
void setCurUsesDef(bool bSet)
OdPs::LineJoinStyle curLjsStyle() const
OdTrVisMarkBase(UInt64Type nMark, OdUInt32 uFrom)
OdTrVisMarkBase(UInt64Type nMark)
OdTrVisMarkBase(EnPosInit, OdUInt32 uFrom)