CFx SDK Documentation  2023 SP0
GiGeometry.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 __ODGIGEOMETRY_H__
25 #define __ODGIGEOMETRY_H__
26 
27 #include "TD_PackPush.h"
28 #include "RxObject.h"
29 
30 #include "Ge/GePoint3d.h"
31 #include "Ge/GeMatrix3d.h"
32 
33 #include "Gi/GiRasterImage.h"
34 #include "Gi/GiMaterial.h"
35 
36 class OdDbStub;
37 class OdCmEntityColor;
38 class OdGeMatrix3d;
39 class OdGeVector3d;
40 class OdGePoint2d;
41 class OdGeCurve2d;
42 class OdGiPathNode;
43 class OdGiMapper;
44 class OdCmTransparency;
45 class OdGiImageBGRA32;
46 
48 
67 {
68  const OdUInt16* m_pColors;
69  const OdCmEntityColor* m_pTrueColors;
70  OdDbStub** m_pLayerIds;
71  OdDbStub** m_pLinetypeIds;
72  const OdGsMarker* m_pSelectionMarkers;
73  const OdUInt8* m_pVisibilities;
74 public:
76  : m_pColors(NULL)
77  , m_pTrueColors(NULL)
78  , m_pLayerIds(NULL)
79  , m_pLinetypeIds(NULL)
80  , m_pSelectionMarkers(NULL)
81  , m_pVisibilities(NULL)
82  {}
83 
95  void setColors(
96  const OdUInt16 *colors) { m_pColors = colors; }
97 
110  const OdCmEntityColor *colors) { m_pTrueColors = colors; }
111 
121  void setLayers(
122  OdDbStub* *layerIds) { m_pLayerIds = layerIds; }
123 
134  OdDbStub* *linetypeIds) { m_pLinetypeIds = linetypeIds; }
135 
146  const OdGsMarker* selectionMarkers) { m_pSelectionMarkers = selectionMarkers; }
147 
168  const OdUInt8* visibilities) { m_pVisibilities = visibilities; }
169 
177  const OdUInt16* colors() const { return m_pColors; }
178 
186  const OdCmEntityColor* trueColors() const { return m_pTrueColors; }
187 
195  OdDbStub** layerIds() const { return m_pLayerIds; }
196 
204  OdDbStub** linetypeIds() const { return m_pLinetypeIds; }
205 
213  const OdGsMarker* selectionMarkers() const { return m_pSelectionMarkers; }
214 
232  const OdUInt8* visibility() const { return m_pVisibilities; }
233 };
234 
235 
245 {
246  const OdUInt16* m_pColors;
247  const OdCmEntityColor* m_pTrueColors;
248  OdDbStub** m_pLayerIds;
249  const OdGsMarker* m_pSelectionMarkers;
250  const OdUInt8* m_pVisibilities;
251  const OdGeVector3d* m_pNormals;
252  OdDbStub** m_pMaterialIds;
253  const OdGiMapper* m_pMappers;
254  const OdCmTransparency* m_pTransparency;
255  const OdGePoint2d* m_pFillOrigins;
256  const OdGeVector2d* m_pFillDirections;
257 public:
259  : m_pColors(NULL)
260  , m_pTrueColors(NULL)
261  , m_pLayerIds(NULL)
262  , m_pSelectionMarkers(NULL)
263  , m_pVisibilities(NULL)
264  , m_pNormals(NULL)
265  , m_pMaterialIds(NULL)
266  , m_pMappers(NULL)
267  , m_pTransparency(NULL)
268  , m_pFillOrigins(NULL)
269  , m_pFillDirections(NULL)
270  {}
271 
283  void setColors(
284  const OdUInt16 *colors) { m_pColors = colors; }
285 
298  const OdCmEntityColor *colors) { m_pTrueColors = colors; }
299 
309  void setLayers(
310  OdDbStub* *layerIds) { m_pLayerIds = layerIds; }
311 
322  const OdGsMarker* selectionMarkers) { m_pSelectionMarkers = selectionMarkers; }
323 
334  const OdGeVector3d* normals) { m_pNormals = normals; }
335 
355  const OdUInt8* visibilities) { m_pVisibilities = visibilities; }
356 
367  OdDbStub* *materialIds) { m_pMaterialIds = materialIds; }
368 
379  const OdGiMapper* mappers) { m_pMappers = mappers; }
380 
390  const OdCmTransparency *transparencies) { m_pTransparency = transparencies; }
391 
402  const OdGePoint2d* fillOrigins) { m_pFillOrigins = fillOrigins; }
403 
414  const OdGeVector2d* fillDirections) { m_pFillDirections = fillDirections; }
415 
423  const OdUInt16* colors() const { return m_pColors; }
424 
432  const OdCmEntityColor* trueColors() const { return m_pTrueColors; }
433 
441  OdDbStub** layerIds() const { return m_pLayerIds; }
442 
450  const OdGsMarker* selectionMarkers() const { return m_pSelectionMarkers; }
451 
459  const OdGeVector3d* normals() const { return m_pNormals; }
460 
477  const OdUInt8* visibility() const { return m_pVisibilities; }
478 
486  OdDbStub** materials() const { return m_pMaterialIds; }
487 
495  const OdGiMapper* mappers() const { return m_pMappers; }
496 
504  const OdCmTransparency* transparency() const { return m_pTransparency; }
505 
513  const OdGePoint2d* fillOrigins() const { return m_pFillOrigins; }
514 
522  const OdGeVector2d* fillDirections() const { return m_pFillDirections; }
523 };
524 
525 typedef enum
526 {
529  kOdGiClockwise = 1
531 
532 
549 {
550  const OdGeVector3d* m_pNormals;
551  OdGiOrientationType m_orientationFlag;
552  const OdCmEntityColor* m_pTrueColors;
553  const OdGePoint3d* m_pMappingCoords;
554 public:
556  : m_pNormals(NULL)
557  , m_orientationFlag(kOdGiNoOrientation)
558  , m_pTrueColors(NULL)
559  , m_pMappingCoords(NULL)
560  {}
561 
562  enum MapChannel { kAllChannels = 0 };
563 
574  const OdGeVector3d* normals) { m_pNormals = normals; }
575 
594  const OdGiOrientationType orientationType) { m_orientationFlag = orientationType; }
595 
606  const OdCmEntityColor *colors) { m_pTrueColors = colors; }
607 
619  MapChannel channel,
620  const OdGePoint3d *coords) { ODA_ASSERT(channel == kAllChannels); m_pMappingCoords = coords; }
621 
629  const OdGeVector3d* normals() const { return m_pNormals; }
630 
644  OdGiOrientationType orientationFlag() const { return m_orientationFlag; }
645 
653  const OdCmEntityColor* trueColors() const { return m_pTrueColors; }
654 
664  const OdGePoint3d* mappingCoords(MapChannel channel) const { ODA_ASSERT(channel == kAllChannels); return m_pMappingCoords; }
665 };
666 
667 class OdGiDrawable;
668 struct OdGiClipBoundary;
670 
671 class OdDbPolyline;
672 class OdPolyPolygon3d;
673 class OdGeNurbCurve3d;
674 class OdGiTextStyle;
675 class OdDbBody;
676 class OdGeEllipArc3d;
677 class OdGiPolyline;
678 
682 typedef enum
683 {
684  kOdGiArcSimple = 0, // Unfilled.
685  kOdGiArcSector = 1, // Filled area bounded by the arc and its center.
686  kOdGiArcChord = 2 // Filled area bounded by the arc and its end points
688 
698 {
699 public:
701 
712 
720 
735  virtual void pushModelTransform(
736  const OdGeVector3d& normal) = 0;
737 
750  virtual void pushModelTransform(
751  const OdGeMatrix3d& xfm) = 0;
752 
756  virtual void popModelTransform() = 0;
757 
771  virtual void circle(
772  const OdGePoint3d& center,
773  double radius,
774  const OdGeVector3d& normal) = 0;
775 
783  virtual void circle(
784  const OdGePoint3d& firstPoint,
785  const OdGePoint3d& secondPoint,
786  const OdGePoint3d& thirdPoint) = 0;
787 
816  virtual void circularArc(
817  const OdGePoint3d& center,
818  double radius,
819  const OdGeVector3d& normal,
820  const OdGeVector3d& startVector,
821  double sweepAngle,
822  OdGiArcType arcType = kOdGiArcSimple) = 0;
823 
832  virtual void circularArc(
833  const OdGePoint3d& firstPoint,
834  const OdGePoint3d& secondPoint,
835  const OdGePoint3d& thirdPoint,
836  OdGiArcType arcType = kOdGiArcSimple) = 0;
837 
855  virtual void polyline(
856  OdInt32 numVertices,
857  const OdGePoint3d* vertexList,
858  const OdGeVector3d* pNormal = 0,
859  OdGsMarker baseSubEntMarker = -1) = 0;
860 
874  virtual void polygon(
875  OdInt32 numVertices,
876  const OdGePoint3d* vertexList) = 0;
877 
892  virtual void polygon(
893  OdInt32 numVertices,
894  const OdGePoint3d* vertexList,
895  const OdGeVector3d* pNormal);
896 
912  virtual void pline(
913  const OdGiPolyline& polyline,
914  OdUInt32 fromIndex = 0,
915  OdUInt32 numSegs = 0) = 0;
916 
939  virtual void mesh(
940  OdInt32 numRows,
941  OdInt32 numColumns,
942  const OdGePoint3d* vertexList,
943  const OdGiEdgeData* pEdgeData = 0,
944  const OdGiFaceData* pFaceData = 0,
945  const OdGiVertexData* pVertexData = 0) = 0;
946 
973  virtual void shell(
974  OdInt32 numVertices,
975  const OdGePoint3d* vertexList,
976  OdInt32 faceListSize,
977  const OdInt32* faceList,
978  const OdGiEdgeData* pEdgeData = 0,
979  const OdGiFaceData* pFaceData = 0,
980  const OdGiVertexData* pVertexData = 0) = 0;
981 
1004  virtual void text(
1005  const OdGePoint3d& position,
1006  const OdGeVector3d& normal,
1007  const OdGeVector3d& direction,
1008  double height,
1009  double width,
1010  double oblique,
1011  const OdString& msg) = 0;
1012 
1024  virtual void text(
1025  const OdGePoint3d& position,
1026  const OdGeVector3d& normal,
1027  const OdGeVector3d& direction,
1028  const OdChar* msg,
1029  OdInt32 length,
1030  bool raw,
1031  const OdGiTextStyle* pTextStyle) = 0;
1032 
1044  virtual void xline(
1045  const OdGePoint3d& firstPoint,
1046  const OdGePoint3d& secondPoint) = 0;
1047 
1060  virtual void ray(
1061  const OdGePoint3d& basePoint,
1062  const OdGePoint3d& throughPoint) = 0;
1063 
1072  virtual void nurbs(
1073  const OdGeNurbCurve3d& nurbsCurve) = 0;
1074 
1092  virtual void ellipArc(
1093  const OdGeEllipArc3d& ellipArc,
1094  const OdGePoint3d* endPointsOverrides = 0,
1095  OdGiArcType arcType = kOdGiArcSimple) = 0;
1096 
1108  virtual void draw(
1109  const OdGiDrawable* pDrawable) = 0;
1110 
1119  virtual void pushClipBoundary(
1120  OdGiClipBoundary* pBoundary) = 0;
1121 
1125  virtual void popClipBoundary() = 0;
1126 
1135  virtual void worldLine(
1136  const OdGePoint3d points[2]) = 0;
1137 
1147  virtual void image(
1148  const OdGiImageBGRA32& img,
1149  const OdGePoint3d& origin,
1150  const OdGeVector3d& uVec,
1151  const OdGeVector3d& vVec,
1153 
1159  virtual void edge(
1160  const OdGiEdge2dArray& edges) = 0;
1161 
1165  virtual const OdGiPathNode* currentGiPath() const;
1166 
1176  virtual void pushClipBoundary(
1177  OdGiClipBoundary* pBoundary, OdGiAbstractClipBoundary* pClipInfo);
1178 
1195  virtual void polypoint(
1196  OdInt32 numPoints,
1197  const OdGePoint3d* vertexList,
1198  const OdCmEntityColor* pColors,
1199  const OdCmTransparency* pTransparency,
1200  const OdGeVector3d* pNormals = NULL,
1201  const OdGsMarker* pSubEntMarkers = NULL,
1202  OdInt32 nPointSize = 0);
1203 
1218  ODRX_SEALED_VIRTUAL void polypoint(
1219  OdInt32 numPoints,
1220  const OdGePoint3d* vertexList,
1221  const OdCmEntityColor* pColors,
1222  const OdGeVector3d* pNormals = NULL,
1223  const OdGsMarker* pSubEntMarkers = NULL) ODRX_SEALED;
1224 
1238  ODRX_SEALED_VIRTUAL void polypoint(
1239  OdInt32 numPoints,
1240  const OdGePoint3d* vertexList,
1241  const OdGeVector3d* pNormals = NULL,
1242  const OdGsMarker* pSubEntMarkers = NULL) ODRX_SEALED;
1243 
1254  virtual void rowOfDots(
1255  OdInt32 numPoints, const OdGePoint3d& startPoint, const OdGeVector3d& dirToNextPoint);
1256 };
1257 
1259 {
1260  return 0;
1261 }
1262 
1264 {
1265  // Some implementations could not support additional clipping styles, so redirect to old style clipping method by default.
1266  pushClipBoundary(pBoundary);
1267 }
1268 
1269 inline void OdGiGeometry::polygon(OdInt32 numVertices, const OdGePoint3d* vertexList, const OdGeVector3d* pNormal)
1270 {
1271  polygon(numVertices, vertexList);
1272 }
1273 
1274 inline void OdGiGeometry::polypoint(OdInt32 numPoints, const OdGePoint3d* vertexList, const OdCmEntityColor* /*pColors*/,
1275  const OdCmTransparency* /*pTransparency*/, const OdGeVector3d* pNormals, const OdGsMarker* pSubEntMarkers,
1276  OdInt32 /*nPointSize*/)
1277 {
1278  OdGePoint3d tmpVerts[2];
1279  for (OdInt32 nPoint = 0; nPoint < numPoints; nPoint++)
1280  {
1281  const OdGeVector3d *pNormal = (pNormals) ? (pNormals + nPoint) : NULL;
1282  const OdGsMarker baseSubEntMarker = (pSubEntMarkers) ? pSubEntMarkers[nPoint] : -1;
1283  tmpVerts[1] = tmpVerts[0] = vertexList[nPoint];
1284  polyline(2, tmpVerts, pNormal, baseSubEntMarker);
1285  }
1286 }
1287 
1288 inline void OdGiGeometry::polypoint(OdInt32 numPoints, const OdGePoint3d* vertexList, const OdCmEntityColor* pColors,
1289  const OdGeVector3d* pNormals, const OdGsMarker* pSubEntMarkers)
1290 {
1291  polypoint(numPoints, vertexList, pColors, NULL, pNormals, pSubEntMarkers);
1292 }
1293 
1294 inline void OdGiGeometry::polypoint(OdInt32 numPoints, const OdGePoint3d* vertexList,
1295  const OdGeVector3d* pNormals, const OdGsMarker* pSubEntMarkers)
1296 {
1297  polypoint(numPoints, vertexList, NULL, pNormals, pSubEntMarkers);
1298 }
1299 
1300 inline void OdGiGeometry::rowOfDots(OdInt32 numPoints, const OdGePoint3d& startPoint, const OdGeVector3d& dirToNextPoint)
1301 {
1302  OdGePoint3d tmpVerts[2];
1303  for (OdInt32 nPoint = 0; nPoint < numPoints; nPoint++)
1304  {
1305  tmpVerts[1] = tmpVerts[0] = startPoint + dirToNextPoint * double(nPoint);
1306  polyline(2, tmpVerts);
1307  }
1308 }
1309 
1320 {
1321  bool m_bSave;
1322  OdGiGeometry& m_geom;
1323 public:
1324  OdGiClipBoundarySaver(OdGiGeometry& geom, bool bSave) : m_bSave(bSave), m_geom(geom){}
1325  void setSave(bool bSave){m_bSave = bSave;}
1327  {
1328  if (m_bSave)
1329  m_geom.popClipBoundary();
1330  }
1331 };
1332 
1343 {
1344  OdGiGeometry& m_geom;
1345 public:
1346  OdGiModelTransformSaver(OdGiGeometry& geom, const OdGeMatrix3d& xMat) : m_geom(geom)
1347  {
1348  m_geom.pushModelTransform(xMat);
1349  }
1351  {
1352  m_geom.popModelTransform();
1353  }
1354 };
1355 
1356 /* #11298 info: Matrix identity check was removed from OdGiModelTransformSaver and place into separate OdGiModelTransformSaverOpt class.
1357  Identity check is also time consuming operation and it is only makes things worse if matrices become identity seldom in
1358  some case. Following statistics on 10 typical drawing was collected on 18.10.2012:
1359 
1360  Source File : Line Identity=true Identity=false % of identity=true
1361 ..\..\..\..\..\TD\Source\Gs\GsBlockReferenceNode.cpp : 1263 3202 60838 5%
1362 ..\..\..\..\..\TD\Source\Gs\GsBlockReferenceNodeImpl.cpp : 707 2 64364 0.003%
1363 ..\..\..\..\..\TD\Source\Gs\GsBlockReferenceNodeImpl.cpp : 868 3 62 4.6%
1364 ..\..\..\..\..\TD\Source\database\Entities\DbBlockReference.cpp : 1101 25 64905 0.038%
1365 ..\..\..\..\..\TD\Source\database\Entities\DbDimension.cpp : 1307 12546 16 99.87%
1366 ..\..\..\..\..\TD\Source\database\Entities\DbHatchRender.cpp : 714 38566 0 100%
1367 ..\..\..\..\..\TD\Source\database\Entities\DbMInsertBlock.cpp : 322 1603 30457 5%
1368 ..\..\..\..\..\TD\Source\database\Entities\DbModelerGeometryImpl.cpp : 1410 8 0 100%
1369 ..\..\..\..\..\TD\Source\database\Entities\DbModelerGeometryImpl.cpp : 1545 6 0 100%
1370 ..\..\..\..\..\TD\Source\database\Entities\DbPoint.cpp : 264 0 208 0%
1371 ..\..\..\..\TD\Source\database\GiDefaultContext.cpp : 454 4405 0 100%
1372 ..\..\..\..\TD\Source\database\GiDefaultContext.cpp : 557 124 23626 0.522%
1373 
1374 All places where percents of identity=true < 10% will use OdGiModelTransformSaver. Places where Identity=true very frequent will use
1375 OdGiModelTransformSaverOpt. Unchecked places isn't principle since them are called very seldom. */
1376 
1387 {
1388  OdGiGeometry& m_geom;
1389  bool m_bIdentity;
1390 public:
1391  OdGiModelTransformSaverOpt(OdGiGeometry& geom, const OdGeMatrix3d& xMat) : m_geom(geom)
1392  {
1393  // @@@TODO: check, probably simple memcmp will be more effective here. memcmp is very assembler-optimized in modern crt's. Identity
1394  // matrix could be inexact only after some multiplications and etc. But statistics must be collected first for isEqual check
1395  // and for memcmp, if it will be faster and precisely enough isEqualTo check with tolerance can be exchanged by memcmp.
1396  m_bIdentity = xMat.isEqualTo(OdGeMatrix3d::kIdentity);
1397  if (!m_bIdentity)
1398  m_geom.pushModelTransform(xMat);
1399  }
1401  {
1402  if (!m_bIdentity)
1403  m_geom.popModelTransform();
1404  }
1405 };
1406 
1407 #include "TD_PackPop.h"
1408 
1409 #endif
#define ODA_ASSERT(exp)
Definition: DebugStuff.h:49
OdGiArcType
Definition: GiGeometry.h:683
@ kOdGiArcSimple
Definition: GiGeometry.h:684
@ kOdGiArcSector
Definition: GiGeometry.h:685
@ kOdGiArcChord
Definition: GiGeometry.h:686
OdArray< OdGeCurve2d *, OdMemoryAllocator< OdGeCurve2d * > > OdGiEdge2dArray
Definition: GiGeometry.h:45
OdGiOrientationType
Definition: GiGeometry.h:526
@ kOdGiCounterClockwise
Definition: GiGeometry.h:527
@ kOdGiNoOrientation
Definition: GiGeometry.h:528
@ kOdGiClockwise
Definition: GiGeometry.h:529
#define NULL
Definition: GsProperties.h:177
ptrdiff_t OdGsMarker
unsigned int OdUInt32
unsigned short OdUInt16
int OdInt32
unsigned char OdUInt8
#define ODRX_SEALED_VIRTUAL
#define ODRX_SEALED
wchar_t OdChar
#define FIRSTDLL_EXPORT
Definition: RootExport.h:39
bool isEqualTo(const OdGeMatrix3d &matrix, const OdGeTol &tol=OdGeContext::gTol) const
static GE_STATIC_EXPORT const OdGeMatrix3d kIdentity
Definition: GeMatrix3d.h:79
OdGiClipBoundarySaver(OdGiGeometry &geom, bool bSave)
Definition: GiGeometry.h:1324
void setSave(bool bSave)
Definition: GiGeometry.h:1325
OdDbStub ** layerIds() const
Definition: GiGeometry.h:195
OdDbStub ** linetypeIds() const
Definition: GiGeometry.h:204
void setTrueColors(const OdCmEntityColor *colors)
Definition: GiGeometry.h:109
void setColors(const OdUInt16 *colors)
Definition: GiGeometry.h:95
const OdGsMarker * selectionMarkers() const
Definition: GiGeometry.h:213
const OdCmEntityColor * trueColors() const
Definition: GiGeometry.h:186
void setVisibility(const OdUInt8 *visibilities)
Definition: GiGeometry.h:167
const OdUInt16 * colors() const
Definition: GiGeometry.h:177
void setSelectionMarkers(const OdGsMarker *selectionMarkers)
Definition: GiGeometry.h:145
const OdUInt8 * visibility() const
Definition: GiGeometry.h:232
void setLayers(OdDbStub **layerIds)
Definition: GiGeometry.h:121
void setLinetypes(OdDbStub **linetypeIds)
Definition: GiGeometry.h:133
const OdGePoint2d * fillOrigins() const
Definition: GiGeometry.h:513
const OdGeVector3d * normals() const
Definition: GiGeometry.h:459
const OdUInt8 * visibility() const
Definition: GiGeometry.h:477
void setFillOrigins(const OdGePoint2d *fillOrigins)
Definition: GiGeometry.h:401
void setLayers(OdDbStub **layerIds)
Definition: GiGeometry.h:309
void setNormals(const OdGeVector3d *normals)
Definition: GiGeometry.h:333
void setSelectionMarkers(const OdGsMarker *selectionMarkers)
Definition: GiGeometry.h:321
void setMaterials(OdDbStub **materialIds)
Definition: GiGeometry.h:366
void setColors(const OdUInt16 *colors)
Definition: GiGeometry.h:283
void setTrueColors(const OdCmEntityColor *colors)
Definition: GiGeometry.h:297
void setFillDirections(const OdGeVector2d *fillDirections)
Definition: GiGeometry.h:413
void setMappers(const OdGiMapper *mappers)
Definition: GiGeometry.h:378
const OdCmEntityColor * trueColors() const
Definition: GiGeometry.h:432
OdDbStub ** materials() const
Definition: GiGeometry.h:486
void setTransparency(const OdCmTransparency *transparencies)
Definition: GiGeometry.h:389
const OdUInt16 * colors() const
Definition: GiGeometry.h:423
const OdGiMapper * mappers() const
Definition: GiGeometry.h:495
const OdGsMarker * selectionMarkers() const
Definition: GiGeometry.h:450
const OdCmTransparency * transparency() const
Definition: GiGeometry.h:504
OdDbStub ** layerIds() const
Definition: GiGeometry.h:441
const OdGeVector2d * fillDirections() const
Definition: GiGeometry.h:522
void setVisibility(const OdUInt8 *visibilities)
Definition: GiGeometry.h:354
virtual void circle(const OdGePoint3d &center, double radius, const OdGeVector3d &normal)=0
virtual void circularArc(const OdGePoint3d &firstPoint, const OdGePoint3d &secondPoint, const OdGePoint3d &thirdPoint, OdGiArcType arcType=kOdGiArcSimple)=0
virtual void edge(const OdGiEdge2dArray &edges)=0
virtual OdGeMatrix3d getModelToWorldTransform() const =0
virtual void image(const OdGiImageBGRA32 &img, const OdGePoint3d &origin, const OdGeVector3d &uVec, const OdGeVector3d &vVec, OdGiRasterImage::TransparencyMode trpMode=OdGiRasterImage::kTransparency8Bit)=0
virtual void ray(const OdGePoint3d &basePoint, const OdGePoint3d &throughPoint)=0
virtual void polypoint(OdInt32 numPoints, const OdGePoint3d *vertexList, const OdCmEntityColor *pColors, const OdCmTransparency *pTransparency, const OdGeVector3d *pNormals=NULL, const OdGsMarker *pSubEntMarkers=NULL, OdInt32 nPointSize=0)
Definition: GiGeometry.h:1274
virtual void popModelTransform()=0
virtual void shell(OdInt32 numVertices, const OdGePoint3d *vertexList, OdInt32 faceListSize, const OdInt32 *faceList, const OdGiEdgeData *pEdgeData=0, const OdGiFaceData *pFaceData=0, const OdGiVertexData *pVertexData=0)=0
virtual void pline(const OdGiPolyline &polyline, OdUInt32 fromIndex=0, OdUInt32 numSegs=0)=0
virtual void text(const OdGePoint3d &position, const OdGeVector3d &normal, const OdGeVector3d &direction, const OdChar *msg, OdInt32 length, bool raw, const OdGiTextStyle *pTextStyle)=0
virtual const OdGiPathNode * currentGiPath() const
Definition: GiGeometry.h:1258
virtual OdGeMatrix3d getWorldToModelTransform() const =0
ODRX_DECLARE_MEMBERS(OdGiGeometry)
virtual void circularArc(const OdGePoint3d &center, double radius, const OdGeVector3d &normal, const OdGeVector3d &startVector, double sweepAngle, OdGiArcType arcType=kOdGiArcSimple)=0
virtual void text(const OdGePoint3d &position, const OdGeVector3d &normal, const OdGeVector3d &direction, double height, double width, double oblique, const OdString &msg)=0
virtual void polyline(OdInt32 numVertices, const OdGePoint3d *vertexList, const OdGeVector3d *pNormal=0, OdGsMarker baseSubEntMarker=-1)=0
virtual void nurbs(const OdGeNurbCurve3d &nurbsCurve)=0
virtual void pushClipBoundary(OdGiClipBoundary *pBoundary)=0
virtual void xline(const OdGePoint3d &firstPoint, const OdGePoint3d &secondPoint)=0
virtual void worldLine(const OdGePoint3d points[2])=0
virtual void pushModelTransform(const OdGeMatrix3d &xfm)=0
virtual void ellipArc(const OdGeEllipArc3d &ellipArc, const OdGePoint3d *endPointsOverrides=0, OdGiArcType arcType=kOdGiArcSimple)=0
virtual void circle(const OdGePoint3d &firstPoint, const OdGePoint3d &secondPoint, const OdGePoint3d &thirdPoint)=0
virtual void polygon(OdInt32 numVertices, const OdGePoint3d *vertexList)=0
virtual void draw(const OdGiDrawable *pDrawable)=0
virtual void popClipBoundary()=0
virtual void pushModelTransform(const OdGeVector3d &normal)=0
virtual void mesh(OdInt32 numRows, OdInt32 numColumns, const OdGePoint3d *vertexList, const OdGiEdgeData *pEdgeData=0, const OdGiFaceData *pFaceData=0, const OdGiVertexData *pVertexData=0)=0
virtual void rowOfDots(OdInt32 numPoints, const OdGePoint3d &startPoint, const OdGeVector3d &dirToNextPoint)
Definition: GiGeometry.h:1300
OdGiModelTransformSaver(OdGiGeometry &geom, const OdGeMatrix3d &xMat)
Definition: GiGeometry.h:1346
OdGiModelTransformSaverOpt(OdGiGeometry &geom, const OdGeMatrix3d &xMat)
Definition: GiGeometry.h:1391
void setMappingCoords(MapChannel channel, const OdGePoint3d *coords)
Definition: GiGeometry.h:618
void setOrientationFlag(const OdGiOrientationType orientationType)
Definition: GiGeometry.h:593
OdGiOrientationType orientationFlag() const
Definition: GiGeometry.h:644
const OdCmEntityColor * trueColors() const
Definition: GiGeometry.h:653
void setNormals(const OdGeVector3d *normals)
Definition: GiGeometry.h:573
const OdGePoint3d * mappingCoords(MapChannel channel) const
Definition: GiGeometry.h:664
void setTrueColors(const OdCmEntityColor *colors)
Definition: GiGeometry.h:605
const OdGeVector3d * normals() const
Definition: GiGeometry.h:629
GLint GLenum GLsizei width
Definition: gles2_ext.h:110
GLuint GLsizei GLsizei * length
Definition: gles2_ext.h:274
GLint GLenum GLsizei GLsizei height
Definition: gles2_ext.h:110