CFx SDK Documentation 2026 SP0
Loading...
Searching...
No Matches
TrVisMetafileBuilder.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 device metafile builder
24
25#ifndef ODTRVISMETAFILEBUILDER
26#define ODTRVISMETAFILEBUILDER
27
28#include "TD_PackPush.h"
29#include "TrVisMetafileDef.h"
30#include "TrVisCamera.h"
31#include "Ge/GeCurve2d.h"
32#include "Ge/GeCurve3d.h"
33
34class OdTrVisMetafileWriter;
36class OdTrVisFont;
37class OdTrVisMetafilesPool;
38
61
79
80class OdTrVisGeometryDraw : public OdRxObject
81{
82protected:
84public:
97
99
100 virtual void polypoint(OdUInt32 nPoints, const OdGePoint3d *pPoints) = 0;
101 virtual void polypoint(OdUInt32 nPoints, const OdGePoint3d *pPoints, const OdTrVisVertexData& data ) = 0;
102
103 virtual void polyline(OdUInt32 nPoints, const OdGePoint3d *pPoints, LinesPrimType type ) = 0;
104 virtual void polyline(OdUInt32 nPoints, const OdGePoint3d *pPoints, LinesPrimType type, const OdTrVisVertexData& data ) = 0;
105
106 virtual void triangle( OdUInt32 nPoints, const OdGePoint3d *pPoints, TrianglesPrimType type ) = 0;
107 virtual void triangle( OdUInt32 nPoints, const OdGePoint3d *pPoints, TrianglesPrimType type, const OdTrVisVertexData& data ) = 0;
108
109 virtual void polygon(OdUInt32 nPoints, const OdGePoint3d *pPoints) = 0;
110 virtual void polygon(OdUInt32 nPoints, const OdGePoint3d *pPoints, const OdTrVisVertexData& data) = 0;
111
112 virtual void arc(const OdGePoint3d &center, double radius, const OdGeVector3d &normal = OdGeVector3d::kZAxis, OdUInt32 nSegs = 16,
113 const OdGeVector3d &start = OdGeVector3d::kYAxis, double angleFrom = 0.0, double angleTo = Oda2PI) = 0;
114 virtual void circle( const OdGePoint3d &center, double radius, const OdGeVector3d &normal, OdUInt32 nSegs ) = 0;
115 virtual void curve2d( const OdGeCurve2d& curve ) = 0;
116 virtual void curve3d( const OdGeCurve3d& curve ) = 0;
117
118 virtual void setDeviation( double dev ) = 0;
119 virtual double deviation() const = 0;
120
121 //Indexed mode
122 virtual void beginIndexedMode(OdUInt32 nPoints, const OdGePoint3d* pPoints, const OdTrVisVertexData& data = OdTrVisVertexData() ) = 0;
123 virtual void endIndexedMode() = 0;
124
125 virtual void indexedPolypoint( OdUInt32 nPoints, const OdInt32* pIndeces ) = 0;
126 virtual void indexedPolypoint( OdUInt32 nPoints, const OdInt32* pIndeces, OdUInt8 nEnabledVertexData ) = 0;
127
128 virtual void indexedPolyline( OdUInt32 nPoints, const OdInt32* pIndeces, LinesPrimType type ) = 0;
129 virtual void indexedPolyline( OdUInt32 nPoints, const OdInt32* pIndeces, LinesPrimType type, OdUInt8 nEnabledVertexData ) = 0;
130
131 virtual void indexedTriangle( OdUInt32 nPoints, const OdInt32* pIndeces, TrianglesPrimType type ) = 0;
132 virtual void indexedTriangle( OdUInt32 nPoints, const OdInt32* pIndeces, TrianglesPrimType type, OdUInt8 nEnabledVertexData ) = 0;
133
134 virtual void indexedPolygon( OdUInt32 nPoints, const OdInt32* pIndeces ) = 0;
135 virtual void indexedPolygon( OdUInt32 nPoints, const OdInt32* pIndeces, OdUInt8 nEnabledVertexData ) = 0;
136
137 virtual void text( const OdGePoint3d& pt, const OdGeVector3d& direction, const OdGeVector3d& normal, const char* str, const OdTrVisFont* pFont ) = 0;
138};
139
141
143{
144 OdTrVisMetafilesPool *m_pMetafilesPool;
145 OdTrVisMetafileWriter *m_pWriter;
150
159 OdTrVisMetafileBuilderInit(OdTrVisMetafileWriter *pWriter, const OdTrVisCamera *pCamera, OdTrVisViewportId refVp,
160 OdTrVisOverlayId refOr = kTrVisMainOverlayId, OdTrVisMetafilesPool *pMfPool = NULL, bool b2dModel = false)
161 : m_pMetafilesPool(pMfPool)
162 , m_pWriter(pWriter)
163 , m_pCamera(pCamera)
164 , m_refVp(refVp)
165 , m_refOr(refOr)
166 , m_b2dModel(b2dModel)
167 { }
168
169 OdTrVisMetafileBuilderInit &setMetafilesPool(OdTrVisMetafilesPool *pMfPool) { m_pMetafilesPool = pMfPool; return *this; }
170 OdTrVisMetafilesPool *metafilesPool() const { return m_pMetafilesPool; }
171
172 OdTrVisMetafileBuilderInit &setMetafileWriter(OdTrVisMetafileWriter *pWriter) { m_pWriter = pWriter; return *this; }
173 OdTrVisMetafileWriter *metafileWriter() const { return m_pWriter; }
174
175 OdTrVisMetafileBuilderInit &setCamera(const OdTrVisCamera *pCamera) { m_pCamera = pCamera; return *this; }
176 const OdTrVisCamera *camera() const { return m_pCamera; }
177
182
183 OdTrVisMetafileBuilderInit &set2dModel(bool b2dModel) { m_b2dModel = b2dModel; return *this; }
184 bool is2dModel() const { return m_b2dModel; }
185};
186
187class OdTrVisMetafileBuilder : public OdRxObject
188{
189protected:
191public:
193
194 virtual void beginMetafileBuilding(const OdTrVisMetafileBuilderInit &mbInit) = 0;
195 virtual void endMetafileBuilding(OdTrVisMetafileDef &mfDef, bool bFin = false) = 0;
196
197 virtual OdTrVisMetafileWriter *underlyingMetafileWriter() const = 0;
198
199 virtual void rollback(bool bFin = true) = 0;
200
201 virtual void writeAttribute(OdTrVisAttribute attrName, bool bEnable = true) = 0;
202 virtual void writeShading( OdTrVisShading shadName, bool bEnable = true ) = 0;
203
204 // @@@TODO: reimplement this using TransformStack
205 virtual void pushTransform(const OdGeMatrix3d &tf) = 0;
206 virtual void popTransform() = 0;
207
208 virtual void addMetafile(OdTrVisMetafileId mfId) = 0;
209
210 virtual void setGeometryMarker(OdTrVisGeomType geomType) = 0;
211 virtual void setMaterial( OdTrVisMaterialId matId ) = 0;
212
216
217 virtual void setColor( const OdTrVisColorRGBA& ) = 0;
218 virtual void setLineweight( OdInt32 ) = 0;
219
220 // @@@TODO: eliminate this, but now ExClip uses it
221 virtual OdTrVisViewportId viewportId() const = 0;
222 virtual OdTrVisOverlayId overlayId() const = 0;
223
225};
226
228
229#include "TD_PackPop.h"
230
231#endif // ODTRVISMETAFILEBUILDER
false
Definition DimVarDefs.h:165
unsigned int OdUInt32
int OdInt32
unsigned char OdUInt8
#define Oda2PI
Definition OdaCommon.h:52
const OdTrVisId kTrVisMainOverlayId
Definition TrVisDefs.h:147
const OdTrVisId kTrVisNullId
Definition TrVisDefs.h:141
OdTrVisId OdTrVisOverlayId
Definition TrVisDefs.h:124
OdTrVisId OdTrVisViewportId
Definition TrVisDefs.h:103
OdTrVisId OdTrVisMaterialId
Definition TrVisDefs.h:109
OdTrVisId OdTrVisMetafileId
Definition TrVisDefs.h:105
OdSmartPtr< OdTrVisGeometryDraw > OdTrVisGeometryDrawPtr
OdTrVisEnabledVertexData
@ kVDCutoutsTexCoord
@ kVDNormMapTNormal
@ kVDRefractionTexCoord
@ kVDBumpNormalT
@ kVDEmissionTexCoord
@ kVDNormMapTexCoord
@ kVDRoughnessTexCoord
@ kVDNormMapBNormal
@ kVDBumpMapTexCoord
@ kVDReflectionTexCoord
@ kVDSpecularTexCoord
@ kVDOpacityTexCoord
@ kVDDiffuseTexCoord
@ kVDBumpNormalB
OdSmartPtr< OdTrVisMetafileBuilder > OdTrVisMetafileBuilderPtr
static GE_STATIC_EXPORT const OdGeVector3d kZAxis
Definition GeVector3d.h:103
static GE_STATIC_EXPORT const OdGeVector3d kYAxis
Definition GeVector3d.h:102
virtual void curve2d(const OdGeCurve2d &curve)=0
virtual void indexedPolyline(OdUInt32 nPoints, const OdInt32 *pIndeces, LinesPrimType type)=0
virtual void indexedTriangle(OdUInt32 nPoints, const OdInt32 *pIndeces, TrianglesPrimType type)=0
virtual void indexedPolyline(OdUInt32 nPoints, const OdInt32 *pIndeces, LinesPrimType type, OdUInt8 nEnabledVertexData)=0
virtual void indexedPolypoint(OdUInt32 nPoints, const OdInt32 *pIndeces)=0
virtual void indexedPolygon(OdUInt32 nPoints, const OdInt32 *pIndeces)=0
virtual void setDeviation(double dev)=0
virtual void polyline(OdUInt32 nPoints, const OdGePoint3d *pPoints, LinesPrimType type)=0
virtual void polypoint(OdUInt32 nPoints, const OdGePoint3d *pPoints, const OdTrVisVertexData &data)=0
virtual double deviation() const =0
virtual void indexedPolygon(OdUInt32 nPoints, const OdInt32 *pIndeces, OdUInt8 nEnabledVertexData)=0
virtual void text(const OdGePoint3d &pt, const OdGeVector3d &direction, const OdGeVector3d &normal, const char *str, const OdTrVisFont *pFont)=0
virtual void circle(const OdGePoint3d &center, double radius, const OdGeVector3d &normal, OdUInt32 nSegs)=0
virtual void polygon(OdUInt32 nPoints, const OdGePoint3d *pPoints, const OdTrVisVertexData &data)=0
virtual void polypoint(OdUInt32 nPoints, const OdGePoint3d *pPoints)=0
virtual void endIndexedMode()=0
virtual void polyline(OdUInt32 nPoints, const OdGePoint3d *pPoints, LinesPrimType type, const OdTrVisVertexData &data)=0
virtual void indexedTriangle(OdUInt32 nPoints, const OdInt32 *pIndeces, TrianglesPrimType type, OdUInt8 nEnabledVertexData)=0
virtual void indexedPolypoint(OdUInt32 nPoints, const OdInt32 *pIndeces, OdUInt8 nEnabledVertexData)=0
virtual void triangle(OdUInt32 nPoints, const OdGePoint3d *pPoints, TrianglesPrimType type, const OdTrVisVertexData &data)=0
virtual void arc(const OdGePoint3d &center, double radius, const OdGeVector3d &normal=OdGeVector3d::kZAxis, OdUInt32 nSegs=16, const OdGeVector3d &start=OdGeVector3d::kYAxis, double angleFrom=0.0, double angleTo=Oda2PI)=0
virtual void polygon(OdUInt32 nPoints, const OdGePoint3d *pPoints)=0
virtual void curve3d(const OdGeCurve3d &curve)=0
virtual void triangle(OdUInt32 nPoints, const OdGePoint3d *pPoints, TrianglesPrimType type)=0
virtual void beginIndexedMode(OdUInt32 nPoints, const OdGePoint3d *pPoints, const OdTrVisVertexData &data=OdTrVisVertexData())=0
virtual void addMetafile(OdTrVisMetafileId mfId)=0
virtual void pushTransform(const OdGeMatrix3d &tf)=0
static OdSmartPtr< OdTrVisMetafileBuilder > createObject()
virtual void writeAttribute(OdTrVisAttribute attrName, bool bEnable=true)=0
virtual void setLineweight(OdInt32)=0
virtual void endMetafileBuilding(OdTrVisMetafileDef &mfDef, bool bFin=false)=0
virtual OdTrVisMetafileWriter * underlyingMetafileWriter() const =0
virtual OdTrVisGeometryDraw * wcsGeometry()=0
virtual void popTransform()=0
virtual void setMaterial(OdTrVisMaterialId matId)=0
virtual OdTrVisViewportId viewportId() const =0
virtual void rollback(bool bFin=true)=0
virtual void setColor(const OdTrVisColorRGBA &)=0
virtual void writeShading(OdTrVisShading shadName, bool bEnable=true)=0
virtual OdTrVisOverlayId overlayId() const =0
virtual OdTrVisGeometryDraw * scsGeometry()=0
virtual OdTrVisGeometryDraw * ecsGeometry()=0
virtual void beginMetafileBuilding(const OdTrVisMetafileBuilderInit &mbInit)=0
virtual void setGeometryMarker(OdTrVisGeomType geomType)=0
GLint GLenum GLsizei GLsizei GLint GLsizei const void * data
Definition gles2_ext.h:110
GLuint GLsizei GLsizei GLint GLenum * type
Definition gles2_ext.h:274
OdTrVisMetafileBuilderInit & set2dModel(bool b2dModel)
OdTrVisMetafileWriter * m_pWriter
const OdTrVisCamera * m_pCamera
OdTrVisMetafilesPool * metafilesPool() const
OdTrVisMetafileBuilderInit(OdTrVisMetafileWriter *pWriter, const OdTrVisCamera *pCamera, OdTrVisViewportId refVp, OdTrVisOverlayId refOr=kTrVisMainOverlayId, OdTrVisMetafilesPool *pMfPool=NULL, bool b2dModel=false)
OdTrVisOverlayId refOverlayId() const
OdTrVisViewportId refViewportId() const
OdTrVisMetafilesPool * m_pMetafilesPool
OdTrVisMetafileBuilderInit & setCamera(const OdTrVisCamera *pCamera)
const OdTrVisCamera * camera() const
OdTrVisMetafileWriter * metafileWriter() const
OdTrVisMetafileBuilderInit & setRefIds(OdTrVisViewportId refVp, OdTrVisOverlayId refOr=kTrVisMainOverlayId)
OdTrVisMetafileBuilderInit & setMetafilesPool(OdTrVisMetafilesPool *pMfPool)
OdTrVisMetafileBuilderInit & setMetafileWriter(OdTrVisMetafileWriter *pWriter)
const double * arrayDepth
OdTrVisVertexData(const OdTrVisColorRGBA *, OdTrVisColorRGBA::ColorRep=OdTrVisColorRGBA::kRGBA, const OdGeVector3d *=NULL, const OdGeVector3d *=NULL, const OdGePoint2d *=NULL, const double *=NULL)
void clearTexCoordArrays()
const OdGePoint2d * arrayTexCoord[int(OdTrVisTextureType::kNumTypes)]
void clearNormalArrays()
const OdTrVisColorRGBA * arrayColor
const OdGeVector3d * arrayNormal[int(OdTrVisNormalType::kNumTypes)]
OdTrVisColorRGBA::ColorRep colorRep