CFx SDK Documentation 2024 SP0
Loading...
Searching...
No Matches
GiDummyGeometry.h
Go to the documentation of this file.
1
2// Copyright (C) 2002-2022, 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-2022 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 _ODGIDUMMYGEOM_INCLUDED_
25#define _ODGIDUMMYGEOM_INCLUDED_
26
27#include "Gi/Gi.h"
28#include "Gi/GiWorldDraw.h"
29#include "Gi/GiViewportDraw.h"
31#include "OdStack.h"
32#include "StaticRxObject.h"
33
34#include "TD_PackPush.h"
35
41template <class T> class OdGiWrapperGeometry : public T
42{
43 OdGiGeometry *m_Geom;
44protected:
45 void setGeom(OdGiGeometry &Geom) { m_Geom = &Geom; }
46 OdGiGeometry &getGeom() { return *m_Geom; }
47public:
48
63 virtual void pline(const OdGiPolyline& p, OdUInt32 i, OdUInt32 n)
64 {
65 m_Geom->pline(p, i, n);
66 }
67
79 {
80 return m_Geom->getModelToWorldTransform();
81 }
82
92 {
93 return m_Geom->getWorldToModelTransform();
94 }
95
106 virtual void pushModelTransform(const OdGeVector3d& vNormal)
107 {
108 m_Geom->pushModelTransform(vNormal);
109 }
110
119 virtual void pushModelTransform(const OdGeMatrix3d& xMat)
120 {
121 m_Geom->pushModelTransform(xMat);
122 }
123
127 virtual void popModelTransform()
128 {
129 m_Geom->popModelTransform();
130 }
131
132 // For drawing various primitives.
133 //
134
146 virtual void circle(const OdGePoint3d& center, double radius, const OdGeVector3d& normal)
147 {
148 m_Geom->circle(center, radius, normal);
149 }
150
162 virtual void circle(const OdGePoint3d& p1, const OdGePoint3d& p2, const OdGePoint3d& p3)
163 {
164 m_Geom->circle(p1, p2, p3);
165 }
166
192 virtual void circularArc(const OdGePoint3d& center,
193 double radius,
194 const OdGeVector3d& normal,
195 const OdGeVector3d& startVector,
196 double sweepAngle,
197 OdGiArcType arcType = kOdGiArcSimple)
198 {
199 m_Geom->circularArc(center, radius, normal, startVector, sweepAngle, arcType);
200 }
201
212 virtual void circularArc(const OdGePoint3d& start,
213 const OdGePoint3d& point,
214 const OdGePoint3d& end,
215 OdGiArcType arcType = kOdGiArcSimple)
216 {
217 m_Geom->circularArc(start, point, end, arcType);
218 }
219
236 virtual void polyline(OdInt32 nbPoints,
237 const OdGePoint3d* pVertexList,
238 const OdGeVector3d* pNormal = NULL,
239 OdGsMarker lBaseSubEntMarker = -1)
240 {
241 m_Geom->polyline(nbPoints, pVertexList, pNormal, lBaseSubEntMarker);
242 }
243
256 virtual void polygon(OdInt32 nbPoints, const OdGePoint3d* pVertexList)
257 {
258 m_Geom->polygon(nbPoints, pVertexList);
259 }
260
274 virtual void polygon(OdInt32 nbPoints, const OdGePoint3d* pVertexList, const OdGeVector3d* pNormal)
275 {
276 m_Geom->polygon(nbPoints, pVertexList, pNormal);
277 }
278
301 virtual void mesh(OdInt32 rows,
302 OdInt32 columns,
303 const OdGePoint3d* pVertexList,
304 const OdGiEdgeData* pEdgeData = NULL,
305 const OdGiFaceData* pFaceData = NULL,
306 const OdGiVertexData* pVertexData = NULL)
307 {
308 m_Geom->mesh(rows, columns, pVertexList, pEdgeData, pFaceData, pVertexData);
309 }
310
330 virtual void shell(OdInt32 nbVertex,
331 const OdGePoint3d* pVertexList,
332 OdInt32 faceListSize,
333 const OdInt32* pFaceList,
334 const OdGiEdgeData* pEdgeData = NULL,
335 const OdGiFaceData* pFaceData = NULL,
336 const OdGiVertexData* pVertexData = NULL)
337 {
338 m_Geom->shell(nbVertex, pVertexList, faceListSize, pFaceList, pEdgeData, pFaceData, pVertexData);
339 }
340
357 virtual void text(const OdGePoint3d& position,
358 const OdGeVector3d& normal, const OdGeVector3d& direction,
359 double height, double width, double oblique, const OdString& msg)
360 {
361 m_Geom->text(position, normal, direction, height, width, oblique, msg);
362 }
363
377 virtual void text(const OdGePoint3d& position,
378 const OdGeVector3d& normal, const OdGeVector3d& direction,
379 const OdChar* msg, OdInt32 length, bool raw, const OdGiTextStyle* pTextStyle)
380 {
381 m_Geom->text(position, normal, direction, msg, length, raw, pTextStyle);
382 }
383
392 void ray(const OdGePoint3d& first, const OdGePoint3d& second)
393 {
394 m_Geom->ray(first, second);
395 }
396
404 virtual void nurbs(const OdGeNurbCurve3d& nurbs)
405 {
406 m_Geom->nurbs(nurbs);
407 }
408
417 virtual void xline(const OdGePoint3d& p1, const OdGePoint3d& p2)
418 {
419 m_Geom->xline(p1, p2);
420 }
421
440 virtual void ellipArc(const OdGeEllipArc3d& arc,
441 const OdGePoint3d* pEndPointsOverrides = 0,
442 OdGiArcType arcType = kOdGiArcSimple)
443 {
444 m_Geom->ellipArc(arc, pEndPointsOverrides, arcType);
445 }
446
458 virtual void draw(const OdGiDrawable* pD)
459 {
460 m_Geom->draw(pD);
461 }
462
472 virtual void pushClipBoundary(OdGiClipBoundary* pBoundary)
473 {
474 m_Geom->pushClipBoundary(pBoundary);
475 }
476
482 virtual void popClipBoundary()
483 {
484 m_Geom->popClipBoundary();
485 }
486
497 virtual void worldLine(const OdGePoint3d pnts[2])
498 {
499 m_Geom->worldLine(pnts);
500 }
501
513 virtual void image(const OdGiImageBGRA32& img,
514 const OdGePoint3d& origin,
515 const OdGeVector3d& uVec,
516 const OdGeVector3d& vVec,
518 {
519 m_Geom->image(img, origin, uVec, vVec, trpMode);
520 }
521
527 virtual void edge(const OdGiEdge2dArray& edges)
528 {
529 m_Geom->edge(edges);
530 }
531
543 virtual void polypoint(OdInt32 numPoints, const OdGePoint3d* vertexList, const OdCmEntityColor* pColors, const OdCmTransparency* pTransparency,
544 const OdGeVector3d* pNormals, const OdGsMarker* pSubEntMarkers, OdInt32 nPointSize)
545 {
546 m_Geom->polypoint(numPoints, vertexList, pColors, pTransparency, pNormals, pSubEntMarkers, nPointSize);
547 }
548
562 virtual void polyPolygon(OdUInt32 numIndices, const OdUInt32 *pNumPositions, const OdGePoint3d *pPositions,
563 const OdUInt32 *pNumPoints, const OdGePoint3d *pPoints,
564 const OdCmEntityColor *pOutlineColors = NULL, const OdUInt32 *pOutlinePsLinetypes = NULL,
565 const OdCmEntityColor *pFillColors = NULL, const OdCmTransparency *pFillTransparencies = NULL)
566 {
567 m_Geom->polyPolygon(numIndices, pNumPositions, pPositions, pNumPoints, pPoints,
568 pOutlineColors, pOutlinePsLinetypes, pFillColors, pFillTransparencies);
569 }
570
578 virtual void rowOfDots(OdInt32 numPoints, const OdGePoint3d& startPoint, const OdGeVector3d& dirToNextPoint)
579 {
580 m_Geom->rowOfDots(numPoints, startPoint, dirToNextPoint);
581 }
582
588 virtual void pointCloud(const OdGiPointCloud &pCloud)
589 {
590 m_Geom->pointCloud(pCloud);
591 }
592
599 virtual bool brep( const OdGiBrep& giBrep )
600 {
601 return m_Geom->brep( giBrep );
602 }
603};
604
610template <class T> class OdGiWrapperWorldGeometry : public OdGiWrapperGeometry< T >
611{
612public:
613
619 virtual void setExtents(const OdGePoint3d *newExtents) { ((OdGiWorldGeometry&)(OdGiWrapperGeometry< T >::getGeom())).setExtents(newExtents); }
620
624 virtual void startAttributesSegment() { ((OdGiWorldGeometry&)(OdGiWrapperGeometry< T >::getGeom())).startAttributesSegment(); }
625};
626
632template <class T> class OdGiWrapperViewportGeometry : public OdGiWrapperGeometry< T >
633{
634public:
641 virtual void polylineEye(
642 OdUInt32 numVertices,
643 const OdGePoint3d* vertexList) { ((OdGiViewportGeometry&)(OdGiWrapperGeometry< T >::getGeom())).polylineEye(numVertices, vertexList); }
644
651 virtual void polygonEye(
652 OdUInt32 numVertices,
653 const OdGePoint3d* vertexList) { ((OdGiViewportGeometry&)(OdGiWrapperGeometry< T >::getGeom())).polygonEye(numVertices, vertexList); }
654
661 virtual void polylineDc(
662 OdUInt32 numVertices,
663 const OdGePoint3d* vertexList) { ((OdGiViewportGeometry&)(OdGiWrapperGeometry< T >::getGeom())).polylineDc(numVertices, vertexList); }
664
671 virtual void polygonDc(
672 OdUInt32 numVertices,
673 const OdGePoint3d* vertexList) { ((OdGiViewportGeometry&)(OdGiWrapperGeometry< T >::getGeom())).polygonDc(numVertices, vertexList); }
674
691 virtual void rasterImageDc(
692 const OdGePoint3d& origin,
693 const OdGeVector3d& u,
694 const OdGeVector3d& v,
695 const OdGiRasterImage* pImage,
696 const OdGePoint2d* uvBoundary,
697 OdUInt32 numBoundPts,
698 bool transparency = false,
699 double brightness = 50.0,
700 double contrast = 50.0,
701 double fade = 0.0) { ((OdGiViewportGeometry&)(OdGiWrapperGeometry< T >::getGeom())).rasterImageDc(origin,u,v,pImage, uvBoundary, numBoundPts,transparency,brightness,contrast,fade); }
702
713 virtual void metafileDc(
714 const OdGePoint3d& origin,
715 const OdGeVector3d& u,
716 const OdGeVector3d& v,
717 const OdGiMetafile* pMetafile,
718 bool dcAligned = true,
719 bool allowClipping = false) { ((OdGiViewportGeometry&)(OdGiWrapperGeometry< T >::getGeom())).metafileDc(origin,u,v,pMetafile,dcAligned,allowClipping); }
720
738 virtual void ownerDrawDc(
739 const OdGePoint3d& origin,
740 const OdGeVector3d& u,
741 const OdGeVector3d& v,
742 const OdGiSelfGdiDrawable* pDrawable,
743 bool dcAligned = true,
744 bool allowClipping = false) { ((OdGiViewportGeometry&)(OdGiWrapperGeometry< T >::getGeom())).ownerDrawDc(origin,u,v,pDrawable,dcAligned,allowClipping); }
745};
746
752template <class TInterface, class TData>
753class OdGiSubEntityTraitsToDataWrapper : public TInterface
754{
755 protected:
756 TData *m_pTraits;
757 public:
758
763
767 void setTraits(TData &pTraits) { m_pTraits = &pTraits; }
768
772 TData &getTraits() const { return *m_pTraits; }
773
797 void setColor(OdUInt16 n) { m_pTraits->setColor(n); }
798
806 void setTrueColor(const OdCmEntityColor& n) { m_pTraits->setTrueColor(n); }
807
814 void setLayer(OdDbStub* n) { m_pTraits->setLayer(n); }
815
822 void setLineType(OdDbStub* n) { m_pTraits->setLineType(n); }
823
827 void setSelectionMarker(OdGsMarker /*n*/) { } // Stub
828
849 void setFillType(OdGiFillType n) { m_pTraits->setFillType(n); }
850
854 void setFillPlane(const OdGeVector3d* /*n*/ = 0) { } // Stub
855
863 void setLineWeight(OdDb::LineWeight n) { m_pTraits->setLineWeight(n); }
864
871 void setLineTypeScale(double n = 1.0) { m_pTraits->setLineTypeScale(n); }
872
877 void setThickness(double n) { m_pTraits->setThickness(n); }
878
896 void setPlotStyleName(OdDb::PlotStyleNameType n, OdDbStub* m = 0) { m_pTraits->setPlotStyleName(n, m); }
897
904 void setMaterial(OdDbStub* n) { m_pTraits->setMaterial(n); }
905
912 void setMapper(const OdGiMapper * n) { m_pTraits->setMapper(n); }
913
920 void setVisualStyle(const OdDbStub* n) { m_pTraits->setVisualStyle(const_cast<OdDbStub*>(n)); }
921
928
935
942
950 void setSelectionGeom(bool bSelectionFlag) { m_pTraits->setSelectionGeom(bSelectionFlag); }
951
960
968 void setSectionable(bool bSectionableFlag) { m_pTraits->setSectionable(bSectionableFlag); }
969
976
982 void setSecondaryTrueColor(const OdCmEntityColor& n) { m_pTraits->setSecondaryTrueColor(n); }
983
989 void setLineStyleModifiers(const OdGiDgLinetypeModifiers* pLSMod) { m_pTraits->setLineStyleModifiers(pLSMod); }
990
996 void setFill(const OdGiFill* pFill) { m_pTraits->setFill(pFill); }
997
1003 void setAuxData(const OdGiAuxiliaryDataPtr& pAuxData) { m_pTraits->setAuxData(pAuxData); }
1004
1013 OdUInt16 color() const { return m_pTraits->color(); }
1014
1023 OdCmEntityColor trueColor() const { return m_pTraits->trueColor(); }
1024
1033 OdDbStub* layer() const { return m_pTraits->layer(); }
1034
1043 OdDbStub* lineType() const { return m_pTraits->lineType(); }
1044
1057 OdGiFillType fillType() const { return m_pTraits->fillType(); }
1058
1065 bool fillPlane(OdGeVector3d& /*n*/) { return false; } // Stub
1066
1075 OdDb::LineWeight lineWeight() const { return m_pTraits->lineWeight(); }
1076
1085 double lineTypeScale() const { return m_pTraits->lineTypeScale(); }
1086
1093 double thickness() const { return m_pTraits->thickness(); }
1094
1109 OdDb::PlotStyleNameType plotStyleNameType() const { return m_pTraits->plotStyleNameType(); }
1110
1117 OdDbStub* plotStyleNameId() const { return m_pTraits->plotStyleNameId(); }
1118
1127 OdDbStub* material() const { return m_pTraits->material(); }
1128
1137 const OdGiMapper* mapper() const { return m_pTraits->mapper(); }
1138
1147 OdDbStub* visualStyle() const { return m_pTraits->visualStyle(); }
1148
1159 OdCmTransparency transparency() const { return m_pTraits->transparency(); }
1160
1167 OdUInt32 drawFlags() const { return m_pTraits->drawFlags(); }
1168
1175 OdUInt32 lockFlags() const { return m_pTraits->lockFlags(); }
1176
1185 bool selectionGeom() const { return m_pTraits->selectionGeom(); }
1186
1195 OdGiSubEntityTraits::ShadowFlags shadowFlags() const { return m_pTraits->shadowFlags(); }
1196
1205 bool sectionable() const { return m_pTraits->sectionable(); }
1206
1214
1221 OdCmEntityColor secondaryTrueColor() const { return m_pTraits->secondaryTrueColor(); }
1222
1229 const OdGiDgLinetypeModifiers* lineStyleModifiers() const { return m_pTraits->lineStyleModifiers(); }
1230
1237 const OdGiFill* fill() const { return m_pTraits->fill(); }
1238
1245 OdGiAuxiliaryDataPtr auxData() const { return m_pTraits->auxData(); }
1246};
1247
1253class OdGiSubEntityTraitsToData : public OdGiSubEntityTraitsToDataWrapper<OdStaticRxObject<OdGiSubEntityTraits>, OdGiSubEntityTraitsData>
1255{
1256 public:
1261
1268
1269
1278 {
1279 if (GETBIT(nFlags, kColorChanged)) pTo.setTrueColor(pFrom.trueColor());
1280 if (GETBIT(nFlags, kLayerChanged)) pTo.setLayer(pFrom.layer());
1281 if (GETBIT(nFlags, kLineTypeChanged)) pTo.setLineType(pFrom.lineType());
1282 if (GETBIT(nFlags, kFillTypeChanged)) pTo.setFillType(pFrom.fillType());
1283 if (GETBIT(nFlags, kLineWeightChanged)) pTo.setLineWeight(pFrom.lineWeight());
1285 if (GETBIT(nFlags, kThicknessChanged)) pTo.setThickness(pFrom.thickness());
1287 if (GETBIT(nFlags, kMaterialChanged)) pTo.setMaterial(pFrom.material());
1288 if (GETBIT(nFlags, kMapperChanged)) pTo.setMapper(pFrom.mapper());
1289 if (GETBIT(nFlags, kVisualStyleChanged)) pTo.setVisualStyle(pFrom.visualStyle());
1290 if (GETBIT(nFlags, kTransparencyChanged)) pTo.setTransparency(pFrom.transparency());
1291 if (GETBIT(nFlags, kDrawFlagsChanged)) pTo.setDrawFlags(pFrom.drawFlags());
1292 if (GETBIT(nFlags, kLockFlagsChanged)) pTo.setLockFlags(pFrom.lockFlags());
1294 if (GETBIT(nFlags, kShadowFlagsChanged)) pTo.setShadowFlags(pFrom.shadowFlags());
1295 if (GETBIT(nFlags, kSectionableChanged)) pTo.setSectionable(pFrom.sectionable());
1299 if (GETBIT(nFlags, kFillChanged)) pTo.setFill(pFrom.fill());
1300 if (GETBIT(nFlags, kAuxDataChanged)) pTo.setAuxData(pFrom.auxData());
1301 }
1302};
1303
1309template<class T> class OdGiSubEntityTraitsWrapper : public OdGiSubEntityTraitsToDataWrapper<T, OdGiSubEntityTraits>
1310{
1311private:
1313protected:
1314 void setTraits(OdGiSubEntityTraits &pTraits) { baseTraits() = &pTraits; }
1315 OdGiSubEntityTraits &getTraits() { return *baseTraits(); }
1316public:
1321
1322 //DOM-IGNORE-BEGIN
1323 // no refcounting
1324 void addRef() { baseTraits()->addRef(); }
1325 // no refcounting
1326 void release() { baseTraits()->release(); }
1327 //DOM-IGNORE-END
1328
1334
1340 void setFillPlane(const OdGeVector3d* n = 0) { baseTraits()->setFillPlane(n); }
1341
1350 bool fillPlane(OdGeVector3d& n) { return baseTraits()->fillPlane(n); }
1351};
1352
1358template<class T> class OdGiWrapperCommonDraw : public T
1359{
1360 OdGiCommonDraw *m_pD;
1361protected:
1362 void setDraw(OdGiCommonDraw &pD) { m_pD = &pD; }
1363 OdGiCommonDraw *getDraw() const { return m_pD; }
1364public:
1369
1376 virtual OdGiGeometry& rawGeometry() const { return m_pD->rawGeometry(); }
1377
1395 virtual OdGiRegenType regenType() const { return m_pD->regenType(); }
1396
1403 virtual bool regenAbort() const { return m_pD->regenAbort(); }
1404
1414 virtual OdGiSubEntityTraits& subEntityTraits() const { return m_pD->subEntityTraits(); }
1415
1422 virtual bool isDragging() const { return m_pD->isDragging(); }
1423
1430 virtual OdGiContext* context() const { return m_pD->context(); }
1431
1443 virtual OdUInt32 numberOfIsolines() const { return m_pD->numberOfIsolines(); }
1444
1451 virtual const OdGiPathNode* currentGiPath() const { return m_pD->currentGiPath(); }
1452
1459 virtual bool displayModelerSilhouettes() const { return m_pD->displayModelerSilhouettes(); }
1460
1487 virtual double deviation(const OdGiDeviationType t, const OdGePoint3d& p) const { return m_pD->deviation(t, p); }
1488};
1489
1495template<class T> class OdGiWrapperViewportDraw : public OdGiWrapperCommonDraw< T >
1496{
1497public:
1504 virtual OdGiViewport& viewport() const { return ((OdGiViewportDraw*)(OdGiWrapperCommonDraw< T >::getDraw()))->viewport(); }
1505
1513
1520 virtual OdUInt32 sequenceNumber() const { return ((OdGiViewportDraw*)(OdGiWrapperCommonDraw< T >::getDraw()))->sequenceNumber(); }
1521
1530 virtual bool isValidId(const OdUInt32 viewportId) const { return ((OdGiViewportDraw*)(OdGiWrapperCommonDraw< T >::getDraw()))->isValidId(viewportId); }
1531
1538 virtual OdDbStub* viewportObjectId() const { return ((OdGiViewportDraw*)(OdGiWrapperCommonDraw< T >::getDraw()))->viewportObjectId(); }
1539};
1540
1546template<class T> class OdGiWrapperWorldDraw : public OdGiWrapperCommonDraw< T >
1547{
1548public:
1555 virtual OdGiWorldGeometry& geometry() const { return ((OdGiWorldDraw*)(OdGiWrapperCommonDraw< T >::getDraw()))->geometry(); }
1556};
1557
1563class OdGiViewportDraw_Stub : public OdGiWrapperViewportDraw<OdGiViewportDraw>
1564 , public OdGiWrapperViewportGeometry<OdGiViewportGeometry>
1565 , public OdGiSubEntityTraitsWrapper<OdGiSubEntityTraits>
1566{
1567public:
1569
1578 {
1579 setDraw(pVD);
1580 setGeom(pVG);
1581 setTraits(pST);
1582 }
1583
1592 virtual OdGiGeometry& rawGeometry() const { return *static_cast<OdGiGeometry*>(const_cast<OdGiViewportDraw_Stub*>(this)); }
1593
1602 virtual OdGiSubEntityTraits& subEntityTraits() const { return *static_cast<OdGiSubEntityTraits*>(const_cast<OdGiViewportDraw_Stub*>(this)); }
1603
1610 virtual OdGiViewportGeometry& geometry() const { return *static_cast<OdGiViewportGeometry*>(const_cast<OdGiViewportDraw_Stub*>(this)); }
1611
1615 void addRef() { }
1616
1620 void release() { }
1621};
1622
1628class OdGiWorldDraw_Stub : public OdGiWrapperWorldDraw<OdGiWorldDraw>
1629 , public OdGiWrapperWorldGeometry<OdGiWorldGeometry>
1630 , public OdGiSubEntityTraitsWrapper<OdGiSubEntityTraits>
1631{
1632public:
1634
1643 {
1644 setDraw(pVD);
1645 setGeom(pVG);
1646 setTraits(pST);
1647 }
1648
1657 virtual OdGiGeometry& rawGeometry() const { return *static_cast<OdGiGeometry*>(const_cast<OdGiWorldDraw_Stub*>(this)); }
1658
1667 virtual OdGiSubEntityTraits& subEntityTraits() const { return *static_cast<OdGiSubEntityTraits*>(const_cast<OdGiWorldDraw_Stub*>(this)); }
1668
1675 virtual OdGiWorldGeometry& geometry() const { return *static_cast<OdGiWorldGeometry*>(const_cast<OdGiWorldDraw_Stub*>(this)); }
1676
1680 void addRef() { }
1681
1685 void release() { }
1686};
1687
1693template <class T> class OdGiDummyGeometry : public T
1694{
1695public:
1707 void circle(const OdGePoint3d& center, double radius, const OdGeVector3d& normal) {}
1708
1720 void circle(const OdGePoint3d& firstPoint, const OdGePoint3d& secondPoint, const OdGePoint3d& thirdPoint) {}
1721
1747 void circularArc(const OdGePoint3d& center,
1748 double radius,
1749 const OdGeVector3d& normal,
1750 const OdGeVector3d& startVector,
1751 double sweepAngle,
1752 OdGiArcType arcType = kOdGiArcSimple) {}
1753
1764 void circularArc(const OdGePoint3d& firstPoint,
1765 const OdGePoint3d& secondPoint,
1766 const OdGePoint3d& thirdPoint,
1767 OdGiArcType arcType = kOdGiArcSimple) {}
1768
1784 void polyline(OdInt32 numVertices,
1785 const OdGePoint3d* vertexList,
1786 const OdGeVector3d* pNormal = 0,
1787 OdGsMarker baseSubEntMarker = -1) {}
1788
1801 void polygon(OdInt32 numVertices, const OdGePoint3d* vertexList) {}
1802
1816 void polygon(OdInt32 numVertices, const OdGePoint3d* vertexList, const OdGeVector3d* pNormal) {}
1817
1832 void pline(const OdGiPolyline& polylPine, OdUInt32 fromIndex = 0, OdUInt32 numSegs = 0) {}
1833
1843 void shape(const OdGePoint3d& position,
1844 const OdGeVector3d& normal, const OdGeVector3d& direction,
1845 int shapeNumber, const OdGiTextStyle* pTextStyle) {}
1846
1860 void text(const OdGePoint3d& position,
1861 const OdGeVector3d& normal, const OdGeVector3d& direction,
1862 double height, double width, double oblique, const OdString& msg) {}
1863
1877 void text(const OdGePoint3d& position,
1878 const OdGeVector3d& normal, const OdGeVector3d& direction,
1879 const OdChar* msg, OdInt32 length, bool raw, const OdGiTextStyle* pTextStyle) {}
1880
1887 void xline(const OdGePoint3d& firstPoint, const OdGePoint3d& secondPoint) {}
1888
1897 void ray(const OdGePoint3d& basePoint, const OdGePoint3d& throughPoint ) {}
1898
1906 void nurbs(const OdGeNurbCurve3d& nurbsCurve) {}
1907
1927 const OdGePoint3d* endPointsOverrides = 0,
1928 OdGiArcType arcType = kOdGiArcSimple) {}
1929
1942 void mesh(OdInt32 numRows,
1943 OdInt32 numColumns,
1944 const OdGePoint3d* vertexList,
1945 const OdGiEdgeData* pEdgeData = 0,
1946 const OdGiFaceData* pFaceData = 0,
1947 const OdGiVertexData* pVertexData = 0) {}
1948
1962 void shell(OdInt32 numVertices,
1963 const OdGePoint3d* vertexList,
1964 OdInt32 faceListSize,
1965 const OdInt32* faceList,
1966 const OdGiEdgeData* pEdgeData = 0,
1967 const OdGiFaceData* pFaceData = 0,
1968 const OdGiVertexData* pVertexData = 0) {}
1969
1977 void worldLine(const OdGePoint3d points[2]) {}
1978
1990 void image(const OdGiImageBGRA32& img,
1991 const OdGePoint3d& origin,
1992 const OdGeVector3d& uVec,
1993 const OdGeVector3d& vVec,
1995
2001 virtual void edge(const OdGiEdge2dArray& edges) {}
2002
2014 void polypoint(OdInt32 numPoints, const OdGePoint3d* vertexList, const OdCmEntityColor* pColors, const OdCmTransparency* pTransparency,
2015 const OdGeVector3d* pNormals, const OdGsMarker* pSubEntMarkers, OdInt32 nPointSize) {}
2016
2030 virtual void polyPolygon(OdUInt32 numIndices, const OdUInt32 *pNumPositions, const OdGePoint3d *pPositions,
2031 const OdUInt32 *pNumPoints, const OdGePoint3d *pPoints,
2032 const OdCmEntityColor *pOutlineColors = NULL, const OdUInt32 *pOutlinePsLinetypes = NULL,
2033 const OdCmEntityColor *pFillColors = NULL, const OdCmTransparency *pFillTransparencies = NULL) {}
2034
2042 void rowOfDots(OdInt32 numPoints, const OdGePoint3d& startPoint, const OdGeVector3d& dirToNextPoint) {}
2043
2049 void pointCloud(const OdGiPointCloud &pCloud) {}
2050
2056 void setExtents(const OdGePoint3d *newExtents) {}
2057
2067
2075
2081 void draw(const OdGiDrawable* pDrawable) {}
2082
2089 void pushModelTransform(const OdGeMatrix3d& xMat) { }
2090
2097 void pushModelTransform(const OdGeVector3d& normal) { }
2098
2103
2111
2120
2127 bool brep(const OdGiBrep&) { return false; }
2128};
2129
2135template <class T> class OdGiDummyWorldGeometry : public OdGiDummyGeometry< T >
2136{
2137public:
2143 virtual void setExtents(
2144 const OdGePoint3d * newExtents) { }
2145
2149 virtual void startAttributesSegment() {}
2150};
2151
2157template <class T> class OdGiDummyViewportGeometry : public OdGiDummyGeometry< T >
2158{
2159public:
2160
2167 virtual void polylineEye(
2168 OdUInt32 numVertices,
2169 const OdGePoint3d* vertexList) { }
2170
2177 virtual void polygonEye(
2178 OdUInt32 numVertices,
2179 const OdGePoint3d* vertexList) { }
2180
2187 virtual void polylineDc(
2188 OdUInt32 numVertices,
2189 const OdGePoint3d* vertexList) { }
2190
2197 virtual void polygonDc(
2198 OdUInt32 numVertices,
2199 const OdGePoint3d* vertexList) { }
2200
2215 virtual void rasterImageDc(
2216 const OdGePoint3d& origin,
2217 const OdGeVector3d& u,
2218 const OdGeVector3d& v,
2219 const OdGiRasterImage* pImage,
2220 const OdGePoint2d* uvBoundary,
2221 OdUInt32 numBoundPts,
2222 bool transparency = false,
2223 double brightness = 50.0,
2224 double contrast = 50.0,
2225 double fade = 0.0) { }
2226
2237 virtual void metafileDc(
2238 const OdGePoint3d& origin,
2239 const OdGeVector3d& u,
2240 const OdGeVector3d& v,
2241 const OdGiMetafile* pMetafile,
2242 bool bDcAligned = true,
2243 bool bAllowClipping = false) { }
2244
2263 virtual void ownerDrawDc(
2264 const OdGePoint3d& origin,
2265 const OdGeVector3d& u,
2266 const OdGeVector3d& v,
2267 const OdGiSelfGdiDrawable* pDrawable,
2268 bool dcAligned = true,
2269 bool allowClipping = false) { }
2270};
2271
2272// OdGiSubEntityTraits dummy template
2273
2279template <class T> class OdGiDummySubEntityTraits : public T
2280{
2281public:
2306
2315
2322 void setLayer(OdDbStub* layerId) { }
2323
2330 void setLineType(OdDbStub* lineTypeId) { }
2331
2336 void setSelectionMarker(OdGsMarker selectionMarker) { }
2337
2352
2358 void setFillPlane(const OdGeVector3d* pNormal = 0) {}
2359
2368
2375 void setLineTypeScale(double lineTypeScale = 1.0) { }
2376
2381 void setThickness(double thickness) { }
2382
2402 void setPlotStyleName(OdDb::PlotStyleNameType plotStyleNameType, OdDbStub* pPlotStyleNameId = 0) { }
2403
2410 void setMaterial(OdDbStub* materialId) { }
2411
2418 void setMapper(const OdGiMapper * pMapper) { }
2419
2426 void setVisualStyle(const OdDbStub* visualStyleId) { }
2427
2438
2445
2452
2460 void setSelectionGeom(bool bSelectionFlag) { }
2461
2470
2478 void setSectionable(bool bSectionableFlag) { }
2479
2486
2495 OdUInt16 color() const { return 0; }
2496
2506
2515 OdDbStub* layer() const { return NULL; }
2516
2525 OdDbStub* lineType() const { return NULL; }
2526
2534
2543 bool fillPlane(OdGeVector3d& normal) { return false; }
2544
2554
2563 double lineTypeScale() const { return 0.0; }
2564
2571 double thickness() const { return 0.0; }
2572
2580
2587 OdDbStub* plotStyleNameId() const { return NULL; }
2588
2597 OdDbStub* material() const { return NULL; }
2598
2607 const OdGiMapper* mapper() const { return NULL; }
2608
2614 void addLight(const OdDbStub* /*lightId*/) { }
2615
2627
2634 OdUInt32 drawFlags() const { return 0; }
2635
2642 OdUInt32 lockFlags() const { return 0; }
2643
2652 bool selectionGeom() const { return false; }
2653
2663
2672 bool sectionable() const { return false; }
2673
2681};
2682
2690template <class T> class OdGiDummyViewport : public T
2691{
2692public:
2700
2708
2716
2724
2731 virtual bool isPerspective() const { return false; }
2732
2744 virtual bool doPerspective(OdGePoint3d& p) const { return false; }
2745
2756 virtual bool doInversePerspective(OdGePoint3d& p) const { return false; }
2757
2768 virtual void getNumPixelsInUnitSquare(const OdGePoint3d& givenWorldpt, OdGePoint2d& pixelArea, bool includePerspective = true) const { }
2769
2777
2785
2793
2800 virtual OdGeVector3d viewDir() const { return getCameraTarget() - getCameraLocation(); }
2801
2808 virtual OdUInt32 viewportId() const { return 0xFFFFFFFF; }
2809
2816 virtual OdInt16 acadWindowId() const { return -1; }
2817
2825 virtual void getViewportDcCorners(OdGePoint2d& lower_left, OdGePoint2d& upper_right) const { lower_left.set(0,0); upper_right.set(100,100); }
2826
2836 virtual bool getFrontAndBackClipValues(bool& clip_front, bool& clip_back, double& /*front*/, double& /*back*/) const { clip_front = clip_back = false; return false; }
2837
2844 virtual double linetypeScaleMultiplier() const { return 1.0; }
2845
2852 virtual double linetypeGenerationCriteria() const { return 1.0; }
2853
2862 virtual bool layerVisible(OdDbStub* idLayer) const { return true; }
2863};
2864
2870template <class T> class OdGiWrapperViewport : public T
2871{
2872 const OdGiViewport* m_ref;
2873protected:
2874 void set(const OdGiViewport& ref) { m_ref = &ref; }
2875 const OdGiViewport &get() const { return *m_ref; }
2876public:
2877
2885
2893
2901
2909
2916 virtual bool isPerspective() const { return get().isPerspective(); }
2917
2930 virtual bool doPerspective(OdGePoint3d& p) const { return get().doPerspective(p); }
2931
2946 virtual bool doInversePerspective(OdGePoint3d& p) const { return get().doInversePerspective(p); }
2947
2961 virtual void getNumPixelsInUnitSquare(const OdGePoint3d& givenWorldpt,
2962 OdGePoint2d& pixelArea, bool includePerspective = true) const
2963 {
2964 get().getNumPixelsInUnitSquare(givenWorldpt, pixelArea, includePerspective);
2965 }
2966
2973 virtual OdGePoint3d getCameraLocation() const { return get().getCameraLocation(); }
2974
2981 virtual OdGePoint3d getCameraTarget() const { return get().getCameraTarget(); }
2982
2989 virtual OdGeVector3d getCameraUpVector() const { return get().getCameraUpVector(); }
2990
2997 virtual OdGeVector3d viewDir() const { return get().viewDir(); }
2998
3008 virtual OdUInt32 viewportId() const { return get().viewportId(); }
3009
3019 virtual OdInt16 acadWindowId() const { return get().acadWindowId(); }
3020
3035 virtual void getViewportDcCorners(OdGePoint2d& lower_left, OdGePoint2d& upper_right) const
3036 { get().getViewportDcCorners(lower_left, upper_right); }
3037
3058 virtual bool getFrontAndBackClipValues(bool& clip_front, bool& clip_back, double& front, double& back) const
3059 { return get().getFrontAndBackClipValues(clip_front, clip_back, front, back); }
3060
3067 virtual double linetypeScaleMultiplier() const { return get().linetypeScaleMultiplier(); }
3068
3079 virtual double linetypeGenerationCriteria() const { return get().linetypeGenerationCriteria(); }
3080
3089 virtual bool layerVisible(OdDbStub* idLayer) const { return get().layerVisible(idLayer); }
3090};
3091
3097template<class T1, class T2> class OdGiJoinCommonDraw : public T1, public T2
3098{
3099public:
3101
3108 virtual OdGiGeometry& rawGeometry() const { return T1::rawGeometry(); }
3109
3127 virtual OdGiRegenType regenType() const { return T1::regenType(); } // dont change from kOdGiStandardDisplay
3128
3135 virtual bool regenAbort() const { return T1::regenAbort(); }
3136
3146 virtual OdGiSubEntityTraits& subEntityTraits() const { return T1::subEntityTraits(); }
3147
3154 virtual bool isDragging() const { return T1::isDragging(); }
3155
3162 virtual OdGiContext* context() const { return T1::context(); }
3163
3175 virtual OdUInt32 numberOfIsolines() const { return T1::numberOfIsolines(); }
3176
3183 virtual const OdGiPathNode* currentGiPath() const { return T1::currentGiPath(); }
3184
3191 virtual bool displayModelerSilhouettes() const { return T1::displayModelerSilhouettes(); }
3192
3219 virtual double deviation(const OdGiDeviationType t, const OdGePoint3d& p) const { return T1::deviation(t, p); }
3220};
3221
3227template<class T> class OdGiDummyCommonDraw : public T
3228{
3229public:
3230
3237 virtual OdGiRegenType regenType() const { return kOdGiStandardDisplay; } // dont change from kOdGiStandardDisplay
3238
3245 virtual bool regenAbort() const { return false; }
3246
3253 virtual bool isDragging() const { return false; }
3254
3267 virtual OdUInt32 numberOfIsolines() const { return 4; }
3268
3282 virtual double deviation(const OdGiDeviationType t, const OdGePoint3d& p) const { return 0.; }
3283};
3284
3290template <class T, class TVp = OdGiViewport> class OdGiDummyViewportDraw : public OdGiDummyCommonDraw< T >
3291{
3292private:
3293 // This class was moved from multiple inheritance to member, since it is crash VS2010 IntelliSense
3294 mutable OdGiDummyViewport< OdStaticRxObject<TVp> > m_dummyViewport;
3295public:
3296
3303 virtual OdGiViewport& viewport() const { return m_dummyViewport; }
3304
3311 virtual OdUInt32 sequenceNumber() const { return 0; }
3312
3321 virtual bool isValidId(const OdUInt32 viewportId) const { return false; }
3322
3329 virtual OdDbStub* viewportObjectId() const { return 0; }
3330};
3331
3337template <class T> class OdGiDummyWorldDraw : public OdGiDummyCommonDraw< T >
3338{
3339public:
3340};
3341
3347template <class T> class OdGiDummyContext : public T
3348{
3349public:
3350
3357 virtual OdDbBaseDatabase* database() const { return 0;}
3358
3367 virtual OdGiDrawablePtr openDrawable(OdDbStub* pDrawable) { return OdGiDrawablePtr(); }
3368};
3369
3375class OdGiViewportDraw_Dummy : public OdGiDummySubEntityTraits< OdGiSubEntityTraits >
3376 , public OdGiDummyViewportDraw< OdGiViewportDraw >
3377 , public OdGiDummyViewportGeometry< OdGiViewportGeometry >
3378 , public OdGiDummyContext< OdGiContext >
3379{
3380 OdDbBaseDatabase *m_pDb;
3381public:
3383
3389 OdGiViewportDraw_Dummy(OdDbBaseDatabase *pDb = 0) : m_pDb(pDb) { }
3390
3397 virtual OdDbBaseDatabase* database() const { return m_pDb; }
3398
3405 virtual OdGiGeometry& rawGeometry() const { return *static_cast<OdGiGeometry*>(const_cast<OdGiViewportDraw_Dummy*>(this)); }
3406
3416 virtual OdGiSubEntityTraits& subEntityTraits() const { return *static_cast<OdGiSubEntityTraits*>(const_cast<OdGiViewportDraw_Dummy*>(this)); }
3417
3424 virtual OdGiViewportGeometry& geometry() const { return *static_cast<OdGiViewportGeometry*>(const_cast<OdGiViewportDraw_Dummy*>(this)); }
3425
3432 virtual OdGiContext* context() const { return static_cast<OdGiContext*>(const_cast<OdGiViewportDraw_Dummy*>(this)); }
3433
3437 void addRef() { }
3438
3442 void release() { }
3443};
3444
3450class OdGiWorldDraw_Dummy : public OdGiDummySubEntityTraits< OdGiSubEntityTraits >
3451 , public OdGiDummyWorldDraw< OdGiWorldDraw >
3452 , public OdGiDummyWorldGeometry< OdGiWorldGeometry >
3453 , public OdGiDummyContext< OdGiContext >
3454{
3455 OdDbBaseDatabase *m_pDb;
3456public:
3458
3464 OdGiWorldDraw_Dummy(OdDbBaseDatabase *pDb = 0) : m_pDb(pDb) { }
3465
3472 virtual OdDbBaseDatabase* database() const { return m_pDb; }
3473
3480 virtual OdGiGeometry& rawGeometry() const { return *static_cast<OdGiGeometry*>(const_cast<OdGiWorldDraw_Dummy*>(this)); }
3481
3491 virtual OdGiSubEntityTraits& subEntityTraits() const { return *static_cast<OdGiSubEntityTraits*>(const_cast<OdGiWorldDraw_Dummy*>(this)); }
3492
3499 virtual OdGiWorldGeometry& geometry() const { return *static_cast<OdGiWorldGeometry*>(const_cast<OdGiWorldDraw_Dummy*>(this)); }
3500
3507 virtual OdGiContext* context() const { return static_cast<OdGiContext*>(const_cast<OdGiWorldDraw_Dummy*>(this)); }
3508
3512 void addRef() { }
3513
3517 void release() { }
3518};
3519
3526
3527#include "TD_PackPop.h"
3528
3529#endif // #ifndef _ODGIDUMMYGEOM_INCLUDED_
OdGiFillType
Definition: Gi.h:42
@ kOdGiFillNever
Definition: Gi.h:44
OdSmartPtr< OdGiDrawable > OdGiDrawablePtr
Definition: GiCommonDraw.h:45
OdGiRegenType
Definition: GiCommonDraw.h:51
@ kOdGiStandardDisplay
Definition: GiCommonDraw.h:53
OdGiDeviationType
Definition: GiCommonDraw.h:65
OdStaticRxObject< OdGiDummySubEntityTraits< OdGiSubEntityTraits > > OdGiSubEntityTraits_Stub
OdGiArcType
Definition: GiGeometry.h:787
@ kOdGiArcSimple
Definition: GiGeometry.h:788
ptrdiff_t OdGsMarker
unsigned int OdUInt32
short OdInt16
unsigned short OdUInt16
int OdInt32
wchar_t OdChar
#define GETBIT(flags, bit)
Definition: OdaDefs.h:517
static GE_STATIC_EXPORT const OdGeMatrix3d kIdentity
Definition: GeMatrix3d.h:97
OdGePoint2d & set(double xx, double yy)
Definition: GePoint2d.h:400
static GE_STATIC_EXPORT const OdGePoint3d kOrigin
Definition: GePoint3d.h:106
static GE_STATIC_EXPORT const OdGeVector3d kZAxis
Definition: GeVector3d.h:103
static GE_STATIC_EXPORT const OdGeVector3d kYAxis
Definition: GeVector3d.h:102
virtual OdGiGeometry & rawGeometry() const =0
virtual double deviation(const OdGiDeviationType deviationType, const OdGePoint3d &pointOnCurve) const =0
virtual bool isDragging() const =0
virtual bool regenAbort() const =0
virtual const OdGiPathNode * currentGiPath() const
virtual bool displayModelerSilhouettes() const
virtual OdGiSubEntityTraits & subEntityTraits() const =0
virtual OdUInt32 numberOfIsolines() const =0
virtual OdGiRegenType regenType() const =0
virtual OdGiContext * context() const =0
virtual double deviation(const OdGiDeviationType t, const OdGePoint3d &p) const
virtual OdUInt32 numberOfIsolines() const
virtual OdGiRegenType regenType() const
virtual bool regenAbort() const
virtual bool isDragging() const
virtual OdGiDrawablePtr openDrawable(OdDbStub *pDrawable)
virtual OdDbBaseDatabase * database() const
void xline(const OdGePoint3d &firstPoint, const OdGePoint3d &secondPoint)
void polygon(OdInt32 numVertices, const OdGePoint3d *vertexList)
void pushClipBoundary(OdGiClipBoundary *pBoundary)
void pushModelTransform(const OdGeVector3d &normal)
void polyline(OdInt32 numVertices, const OdGePoint3d *vertexList, const OdGeVector3d *pNormal=0, OdGsMarker baseSubEntMarker=-1)
void text(const OdGePoint3d &position, const OdGeVector3d &normal, const OdGeVector3d &direction, double height, double width, double oblique, const OdString &msg)
void worldLine(const OdGePoint3d points[2])
OdGeMatrix3d getWorldToModelTransform() const
void ellipArc(const OdGeEllipArc3d &ellipArc, const OdGePoint3d *endPointsOverrides=0, OdGiArcType arcType=kOdGiArcSimple)
void draw(const OdGiDrawable *pDrawable)
void shape(const OdGePoint3d &position, const OdGeVector3d &normal, const OdGeVector3d &direction, int shapeNumber, const OdGiTextStyle *pTextStyle)
void rowOfDots(OdInt32 numPoints, const OdGePoint3d &startPoint, const OdGeVector3d &dirToNextPoint)
void text(const OdGePoint3d &position, const OdGeVector3d &normal, const OdGeVector3d &direction, const OdChar *msg, OdInt32 length, bool raw, const OdGiTextStyle *pTextStyle)
void mesh(OdInt32 numRows, OdInt32 numColumns, const OdGePoint3d *vertexList, const OdGiEdgeData *pEdgeData=0, const OdGiFaceData *pFaceData=0, const OdGiVertexData *pVertexData=0)
void circularArc(const OdGePoint3d &center, double radius, const OdGeVector3d &normal, const OdGeVector3d &startVector, double sweepAngle, OdGiArcType arcType=kOdGiArcSimple)
void polygon(OdInt32 numVertices, const OdGePoint3d *vertexList, const OdGeVector3d *pNormal)
void pushModelTransform(const OdGeMatrix3d &xMat)
bool brep(const OdGiBrep &)
void nurbs(const OdGeNurbCurve3d &nurbsCurve)
void polypoint(OdInt32 numPoints, const OdGePoint3d *vertexList, const OdCmEntityColor *pColors, const OdCmTransparency *pTransparency, const OdGeVector3d *pNormals, const OdGsMarker *pSubEntMarkers, OdInt32 nPointSize)
void circle(const OdGePoint3d &center, double radius, const OdGeVector3d &normal)
void pointCloud(const OdGiPointCloud &pCloud)
OdGeMatrix3d getModelToWorldTransform() const
virtual void polyPolygon(OdUInt32 numIndices, const OdUInt32 *pNumPositions, const OdGePoint3d *pPositions, const OdUInt32 *pNumPoints, const OdGePoint3d *pPoints, const OdCmEntityColor *pOutlineColors=NULL, const OdUInt32 *pOutlinePsLinetypes=NULL, const OdCmEntityColor *pFillColors=NULL, const OdCmTransparency *pFillTransparencies=NULL)
void circle(const OdGePoint3d &firstPoint, const OdGePoint3d &secondPoint, const OdGePoint3d &thirdPoint)
void setExtents(const OdGePoint3d *newExtents)
void pline(const OdGiPolyline &polylPine, OdUInt32 fromIndex=0, OdUInt32 numSegs=0)
virtual void edge(const OdGiEdge2dArray &edges)
void circularArc(const OdGePoint3d &firstPoint, const OdGePoint3d &secondPoint, const OdGePoint3d &thirdPoint, OdGiArcType arcType=kOdGiArcSimple)
void image(const OdGiImageBGRA32 &img, const OdGePoint3d &origin, const OdGeVector3d &uVec, const OdGeVector3d &vVec, OdGiRasterImage::TransparencyMode trpMode=OdGiRasterImage::kTransparency8Bit)
void ray(const OdGePoint3d &basePoint, const OdGePoint3d &throughPoint)
void shell(OdInt32 numVertices, const OdGePoint3d *vertexList, OdInt32 faceListSize, const OdInt32 *faceList, const OdGiEdgeData *pEdgeData=0, const OdGiFaceData *pFaceData=0, const OdGiVertexData *pVertexData=0)
bool fillPlane(OdGeVector3d &normal)
void setSelectionFlags(OdGiSubEntityTraits::SelectionFlags selectionFlags)
void setTrueColor(const OdCmEntityColor &color)
void setVisualStyle(const OdDbStub *visualStyleId)
void setPlotStyleName(OdDb::PlotStyleNameType plotStyleNameType, OdDbStub *pPlotStyleNameId=0)
void setShadowFlags(OdGiSubEntityTraits::ShadowFlags shadowFlags)
OdDbStub * plotStyleNameId() const
OdUInt32 lockFlags() const
void setMapper(const OdGiMapper *pMapper)
OdDb::LineWeight lineWeight() const
void setLineType(OdDbStub *lineTypeId)
OdGiSubEntityTraits::SelectionFlags selectionFlags() const
OdDbStub * layer() const
void setSectionable(bool bSectionableFlag)
void setFillPlane(const OdGeVector3d *pNormal=0)
void setLineTypeScale(double lineTypeScale=1.0)
void setFillType(OdGiFillType fillType)
OdGiSubEntityTraits::ShadowFlags shadowFlags() const
void setThickness(double thickness)
const OdGiMapper * mapper() const
void setSelectionGeom(bool bSelectionFlag)
void setColor(OdUInt16 color)
OdGiFillType fillType() const
OdDbStub * lineType() const
OdCmTransparency transparency() const
void addLight(const OdDbStub *)
OdUInt32 drawFlags() const
OdDbStub * material() const
void setLockFlags(OdUInt32 lockFlags)
OdCmEntityColor trueColor() const
OdDb::PlotStyleNameType plotStyleNameType() const
void setDrawFlags(OdUInt32 drawFlags)
void setMaterial(OdDbStub *materialId)
void setSelectionMarker(OdGsMarker selectionMarker)
void setLineWeight(OdDb::LineWeight lineWeight)
void setTransparency(const OdCmTransparency &transparency)
void setLayer(OdDbStub *layerId)
virtual OdGiViewport & viewport() const
virtual bool isValidId(const OdUInt32 viewportId) const
virtual OdDbStub * viewportObjectId() const
virtual OdUInt32 sequenceNumber() const
virtual void polylineDc(OdUInt32 numVertices, const OdGePoint3d *vertexList)
virtual void metafileDc(const OdGePoint3d &origin, const OdGeVector3d &u, const OdGeVector3d &v, const OdGiMetafile *pMetafile, bool bDcAligned=true, bool bAllowClipping=false)
virtual void rasterImageDc(const OdGePoint3d &origin, const OdGeVector3d &u, const OdGeVector3d &v, const OdGiRasterImage *pImage, const OdGePoint2d *uvBoundary, OdUInt32 numBoundPts, bool transparency=false, double brightness=50.0, double contrast=50.0, double fade=0.0)
virtual void polylineEye(OdUInt32 numVertices, const OdGePoint3d *vertexList)
virtual void polygonDc(OdUInt32 numVertices, const OdGePoint3d *vertexList)
virtual void polygonEye(OdUInt32 numVertices, const OdGePoint3d *vertexList)
virtual void ownerDrawDc(const OdGePoint3d &origin, const OdGeVector3d &u, const OdGeVector3d &v, const OdGiSelfGdiDrawable *pDrawable, bool dcAligned=true, bool allowClipping=false)
virtual OdGePoint3d getCameraLocation() const
virtual bool doPerspective(OdGePoint3d &p) const
virtual OdGeVector3d getCameraUpVector() const
virtual OdGePoint3d getCameraTarget() const
virtual OdGeMatrix3d getEyeToModelTransform() const
virtual bool getFrontAndBackClipValues(bool &clip_front, bool &clip_back, double &, double &) const
virtual double linetypeGenerationCriteria() const
virtual bool doInversePerspective(OdGePoint3d &p) const
virtual OdGeMatrix3d getWorldToEyeTransform() const
virtual void getViewportDcCorners(OdGePoint2d &lower_left, OdGePoint2d &upper_right) const
virtual void getNumPixelsInUnitSquare(const OdGePoint3d &givenWorldpt, OdGePoint2d &pixelArea, bool includePerspective=true) const
virtual OdGeMatrix3d getModelToEyeTransform() const
virtual bool isPerspective() const
virtual OdGeVector3d viewDir() const
virtual double linetypeScaleMultiplier() const
virtual bool layerVisible(OdDbStub *idLayer) const
virtual OdInt16 acadWindowId() const
virtual OdGeMatrix3d getEyeToWorldTransform() const
virtual OdUInt32 viewportId() const
virtual void startAttributesSegment()
virtual void setExtents(const OdGePoint3d *newExtents)
virtual void circle(const OdGePoint3d &center, double radius, const OdGeVector3d &normal)=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 pointCloud(const OdGiPointCloud &pCloud)
virtual void ray(const OdGePoint3d &basePoint, const OdGePoint3d &throughPoint)=0
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 OdGeMatrix3d getWorldToModelTransform() const =0
virtual void rowOfDots(OdInt32 numPoints, const OdGePoint3d &startPoint, const OdGeVector3d &dirToNextPoint)
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 polypoint(OdInt32 numPoints, const OdGePoint3d *vertexList, const OdCmEntityColor *pColors, const OdCmTransparency *pTransparency, const OdGeVector3d *pNormals=NULL, const OdGsMarker *pSubEntMarkers=NULL, OdInt32 nPointSize=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 ellipArc(const OdGeEllipArc3d &ellipArc, const OdGePoint3d *endPointsOverrides=0, OdGiArcType arcType=kOdGiArcSimple)=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 bool brep(const OdGiBrep &giBrep)
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 polyPolygon(OdUInt32 numIndices, const OdUInt32 *pNumPositions, const OdGePoint3d *pPositions, const OdUInt32 *pNumPoints, const OdGePoint3d *pPoints, const OdCmEntityColor *pOutlineColors=NULL, const OdUInt32 *pOutlinePsLinetypes=NULL, const OdCmEntityColor *pFillColors=NULL, const OdCmTransparency *pFillTransparencies=NULL)
virtual OdUInt32 numberOfIsolines() const
virtual OdGiRegenType regenType() const
virtual bool regenAbort() const
virtual bool displayModelerSilhouettes() const
virtual OdGiContext * context() const
virtual bool isDragging() const
virtual const OdGiPathNode * currentGiPath() const
virtual OdGiGeometry & rawGeometry() const
virtual OdGiSubEntityTraits & subEntityTraits() const
virtual double deviation(const OdGiDeviationType t, const OdGePoint3d &p) const
virtual void setAuxData(const OdGiAuxiliaryDataPtr &pAuxData)
virtual void setLayer(OdDbStub *layerId)=0
virtual OdDbStub * material() const =0
virtual void setFillPlane(const OdGeVector3d *pNormal=0)
virtual OdDb::PlotStyleNameType plotStyleNameType() const =0
virtual void setFill(const OdGiFill *pFill)
virtual void setLineType(OdDbStub *lineTypeId)=0
virtual const OdGiFill * fill() const
virtual OdGiFillType fillType() const =0
virtual void setSectionable(bool bSectionableFlag)
virtual void setLockFlags(OdUInt32 lockFlags)
virtual void setLineTypeScale(double lineTypeScale=1.0)=0
virtual bool sectionable() const
virtual void setShadowFlags(ShadowFlags shadowFlags)
virtual OdGiAuxiliaryDataPtr auxData() const
virtual void setMapper(const OdGiMapper *pMapper)=0
virtual const OdGiDgLinetypeModifiers * lineStyleModifiers() const
virtual SelectionFlags selectionFlags() const
virtual void setLineWeight(OdDb::LineWeight lineWeight)=0
virtual void setVisualStyle(const OdDbStub *visualStyleId)
virtual void setSelectionFlags(SelectionFlags selectionFlags)
virtual void setLineStyleModifiers(const OdGiDgLinetypeModifiers *pLSMod)
virtual void setSelectionMarker(OdGsMarker selectionMarker)=0
virtual double lineTypeScale() const =0
virtual void setPlotStyleName(OdDb::PlotStyleNameType plotStyleNameType, OdDbStub *plotStyleNameId=0)=0
virtual OdUInt32 drawFlags() const
virtual OdCmTransparency transparency() const
virtual void setTrueColor(const OdCmEntityColor &color)=0
virtual const OdGiMapper * mapper() const =0
virtual OdCmEntityColor trueColor() const =0
@ kNoSelectionFlags
Definition: Gi.h:188
virtual ShadowFlags shadowFlags() const
virtual bool fillPlane(OdGeVector3d &normal)
virtual OdDbStub * plotStyleNameId() const =0
virtual void setDrawFlags(OdUInt32 drawFlags)
@ kShadowsCastAndReceive
Definition: Gi.h:177
virtual void setSelectionGeom(bool bSelectionFlag)
virtual OdDbStub * visualStyle() const
virtual void setThickness(double thickness)=0
virtual OdDbStub * layer() const =0
virtual OdDbStub * lineType() const =0
virtual OdCmEntityColor secondaryTrueColor() const
virtual void setSecondaryTrueColor(const OdCmEntityColor &color)
virtual void setFillType(OdGiFillType fillType)=0
virtual OdUInt32 lockFlags() const
virtual void setMaterial(OdDbStub *materialId)=0
virtual bool selectionGeom() const
virtual OdDb::LineWeight lineWeight() const =0
virtual double thickness() const =0
virtual void setTransparency(const OdCmTransparency &transparency)
static void copyTraits(OdGiSubEntityTraits &pFrom, OdGiSubEntityTraits &pTo, OdUInt32 nFlags=kAllChanged)
OdGiSubEntityTraitsToData(OdGiSubEntityTraitsData &pData)
OdCmEntityColor secondaryTrueColor() const
OdDb::LineWeight lineWeight() const
void setDrawFlags(OdUInt32 drawFlags)
void setSectionable(bool bSectionableFlag)
void setFill(const OdGiFill *pFill)
void setTransparency(const OdCmTransparency &transparency)
void setAuxData(const OdGiAuxiliaryDataPtr &pAuxData)
void setMapper(const OdGiMapper *n)
OdGiSubEntityTraits::SelectionFlags selectionFlags() const
void setShadowFlags(OdGiSubEntityTraits::ShadowFlags shadowFlags)
void setSelectionFlags(OdGiSubEntityTraits::SelectionFlags selectionFlags)
void setSecondaryTrueColor(const OdCmEntityColor &n)
OdCmEntityColor trueColor() const
void setLineWeight(OdDb::LineWeight n)
const OdGiMapper * mapper() const
const OdGiDgLinetypeModifiers * lineStyleModifiers() const
void setLineStyleModifiers(const OdGiDgLinetypeModifiers *pLSMod)
void setSelectionGeom(bool bSelectionFlag)
void setPlotStyleName(OdDb::PlotStyleNameType n, OdDbStub *m=0)
OdGiAuxiliaryDataPtr auxData() const
void setLockFlags(OdUInt32 lockFlags)
OdGiSubEntityTraits::ShadowFlags shadowFlags() const
void setVisualStyle(const OdDbStub *n)
OdCmTransparency transparency() const
void setFillType(OdGiFillType n)
void setFillPlane(const OdGeVector3d *=0)
void setTrueColor(const OdCmEntityColor &n)
OdDb::PlotStyleNameType plotStyleNameType() const
const OdGiFill * fill() const
OdGiSubEntityTraits & getTraits()
void setSelectionMarker(OdGsMarker n)
bool fillPlane(OdGeVector3d &n)
void setTraits(OdGiSubEntityTraits &pTraits)
void setFillPlane(const OdGeVector3d *n=0)
virtual OdGiGeometry & rawGeometry() const
virtual OdDbBaseDatabase * database() const
virtual OdGiContext * context() const
virtual OdGiViewportGeometry & geometry() const
OdGiViewportDraw_Dummy(OdDbBaseDatabase *pDb=0)
ODRX_USING_HEAP_OPERATORS(OdGiDummySubEntityTraits< OdGiSubEntityTraits >)
virtual OdGiSubEntityTraits & subEntityTraits() const
virtual OdGiGeometry & rawGeometry() const
OdGiViewportDraw_Stub(OdGiViewportDraw &pVD, OdGiViewportGeometry &pVG, OdGiSubEntityTraits &pST)
virtual OdGiSubEntityTraits & subEntityTraits() const
virtual OdGiViewportGeometry & geometry() const
ODRX_USING_HEAP_OPERATORS(OdGiWrapperViewportDraw< OdGiViewportDraw >)
virtual OdGeMatrix3d getEyeToModelTransform() const =0
virtual bool isPerspective() const =0
virtual void getViewportDcCorners(OdGePoint2d &lowerLeft, OdGePoint2d &upperRight) const =0
virtual bool doPerspective(OdGePoint3d &point) const =0
virtual OdUInt32 viewportId() const =0
virtual OdGePoint3d getCameraTarget() const =0
virtual OdGeMatrix3d getModelToEyeTransform() const =0
virtual double linetypeScaleMultiplier() const =0
virtual double linetypeGenerationCriteria() const =0
virtual bool getFrontAndBackClipValues(bool &clipFront, bool &clipBack, double &front, double &back) const =0
virtual OdInt16 acadWindowId() const =0
virtual OdGePoint3d getCameraLocation() const =0
virtual OdGeVector3d viewDir() const =0
virtual bool layerVisible(OdDbStub *layerId) const =0
virtual OdGeMatrix3d getWorldToEyeTransform() const =0
virtual OdGeMatrix3d getEyeToWorldTransform() const =0
virtual OdGeVector3d getCameraUpVector() const =0
virtual void getNumPixelsInUnitSquare(const OdGePoint3d &point, OdGePoint2d &pixelDensity, bool bUsePerspective=true) const =0
virtual bool doInversePerspective(OdGePoint3d &point) const =0
virtual OdGiGeometry & rawGeometry() const
virtual OdDbBaseDatabase * database() const
virtual OdGiContext * context() const
virtual OdGiWorldGeometry & geometry() const
virtual OdGiSubEntityTraits & subEntityTraits() const
OdGiWorldDraw_Dummy(OdDbBaseDatabase *pDb=0)
ODRX_USING_HEAP_OPERATORS(OdGiDummySubEntityTraits< OdGiSubEntityTraits >)
virtual OdGiWorldGeometry & geometry() const
virtual OdGiSubEntityTraits & subEntityTraits() const
OdGiWorldDraw_Stub(OdGiWorldDraw &pVD, OdGiWorldGeometry &pVG, OdGiSubEntityTraits &pST)
virtual OdGiGeometry & rawGeometry() const
ODRX_USING_HEAP_OPERATORS(OdGiWrapperWorldDraw< OdGiWorldDraw >)
virtual bool isDragging() const
virtual OdGiContext * context() const
virtual OdGiGeometry & rawGeometry() const
virtual OdGiRegenType regenType() const
virtual const OdGiPathNode * currentGiPath() const
virtual OdUInt32 numberOfIsolines() const
virtual double deviation(const OdGiDeviationType t, const OdGePoint3d &p) const
OdGiCommonDraw * getDraw() const
virtual OdGiSubEntityTraits & subEntityTraits() const
virtual bool regenAbort() const
void setDraw(OdGiCommonDraw &pD)
virtual bool displayModelerSilhouettes() const
virtual void text(const OdGePoint3d &position, const OdGeVector3d &normal, const OdGeVector3d &direction, double height, double width, double oblique, const OdString &msg)
virtual OdGeMatrix3d getWorldToModelTransform() const
virtual void circularArc(const OdGePoint3d &center, double radius, const OdGeVector3d &normal, const OdGeVector3d &startVector, double sweepAngle, OdGiArcType arcType=kOdGiArcSimple)
virtual void image(const OdGiImageBGRA32 &img, const OdGePoint3d &origin, const OdGeVector3d &uVec, const OdGeVector3d &vVec, OdGiRasterImage::TransparencyMode trpMode=OdGiRasterImage::kTransparency8Bit)
virtual void popClipBoundary()
void ray(const OdGePoint3d &first, const OdGePoint3d &second)
virtual void popModelTransform()
virtual void circle(const OdGePoint3d &center, double radius, const OdGeVector3d &normal)
virtual void worldLine(const OdGePoint3d pnts[2])
virtual void polygon(OdInt32 nbPoints, const OdGePoint3d *pVertexList)
virtual void nurbs(const OdGeNurbCurve3d &nurbs)
virtual void mesh(OdInt32 rows, OdInt32 columns, const OdGePoint3d *pVertexList, const OdGiEdgeData *pEdgeData=NULL, const OdGiFaceData *pFaceData=NULL, const OdGiVertexData *pVertexData=NULL)
virtual void pushClipBoundary(OdGiClipBoundary *pBoundary)
OdGiGeometry & getGeom()
virtual void ellipArc(const OdGeEllipArc3d &arc, const OdGePoint3d *pEndPointsOverrides=0, OdGiArcType arcType=kOdGiArcSimple)
virtual void polygon(OdInt32 nbPoints, const OdGePoint3d *pVertexList, const OdGeVector3d *pNormal)
virtual void rowOfDots(OdInt32 numPoints, const OdGePoint3d &startPoint, const OdGeVector3d &dirToNextPoint)
virtual void shell(OdInt32 nbVertex, const OdGePoint3d *pVertexList, OdInt32 faceListSize, const OdInt32 *pFaceList, const OdGiEdgeData *pEdgeData=NULL, const OdGiFaceData *pFaceData=NULL, const OdGiVertexData *pVertexData=NULL)
virtual OdGeMatrix3d getModelToWorldTransform() const
virtual void circularArc(const OdGePoint3d &start, const OdGePoint3d &point, const OdGePoint3d &end, OdGiArcType arcType=kOdGiArcSimple)
virtual void pushModelTransform(const OdGeVector3d &vNormal)
virtual void circle(const OdGePoint3d &p1, const OdGePoint3d &p2, const OdGePoint3d &p3)
virtual void pushModelTransform(const OdGeMatrix3d &xMat)
virtual void pline(const OdGiPolyline &p, OdUInt32 i, OdUInt32 n)
virtual void edge(const OdGiEdge2dArray &edges)
virtual void polypoint(OdInt32 numPoints, const OdGePoint3d *vertexList, const OdCmEntityColor *pColors, const OdCmTransparency *pTransparency, const OdGeVector3d *pNormals, const OdGsMarker *pSubEntMarkers, OdInt32 nPointSize)
virtual void xline(const OdGePoint3d &p1, const OdGePoint3d &p2)
virtual void text(const OdGePoint3d &position, const OdGeVector3d &normal, const OdGeVector3d &direction, const OdChar *msg, OdInt32 length, bool raw, const OdGiTextStyle *pTextStyle)
virtual void pointCloud(const OdGiPointCloud &pCloud)
void setGeom(OdGiGeometry &Geom)
virtual bool brep(const OdGiBrep &giBrep)
virtual void draw(const OdGiDrawable *pD)
virtual void polyline(OdInt32 nbPoints, const OdGePoint3d *pVertexList, const OdGeVector3d *pNormal=NULL, OdGsMarker lBaseSubEntMarker=-1)
virtual void polyPolygon(OdUInt32 numIndices, const OdUInt32 *pNumPositions, const OdGePoint3d *pPositions, const OdUInt32 *pNumPoints, const OdGePoint3d *pPoints, const OdCmEntityColor *pOutlineColors=NULL, const OdUInt32 *pOutlinePsLinetypes=NULL, const OdCmEntityColor *pFillColors=NULL, const OdCmTransparency *pFillTransparencies=NULL)
virtual OdUInt32 sequenceNumber() const
virtual bool isValidId(const OdUInt32 viewportId) const
virtual OdDbStub * viewportObjectId() const
virtual OdGiViewportGeometry & geometry() const
virtual OdGiViewport & viewport() const
virtual void polygonDc(OdUInt32 numVertices, const OdGePoint3d *vertexList)
virtual void polylineEye(OdUInt32 numVertices, const OdGePoint3d *vertexList)
virtual void polygonEye(OdUInt32 numVertices, const OdGePoint3d *vertexList)
virtual void metafileDc(const OdGePoint3d &origin, const OdGeVector3d &u, const OdGeVector3d &v, const OdGiMetafile *pMetafile, bool dcAligned=true, bool allowClipping=false)
virtual void polylineDc(OdUInt32 numVertices, const OdGePoint3d *vertexList)
virtual void rasterImageDc(const OdGePoint3d &origin, const OdGeVector3d &u, const OdGeVector3d &v, const OdGiRasterImage *pImage, const OdGePoint2d *uvBoundary, OdUInt32 numBoundPts, bool transparency=false, double brightness=50.0, double contrast=50.0, double fade=0.0)
virtual void ownerDrawDc(const OdGePoint3d &origin, const OdGeVector3d &u, const OdGeVector3d &v, const OdGiSelfGdiDrawable *pDrawable, bool dcAligned=true, bool allowClipping=false)
virtual bool getFrontAndBackClipValues(bool &clip_front, bool &clip_back, double &front, double &back) const
virtual OdGePoint3d getCameraLocation() const
virtual OdGeMatrix3d getEyeToWorldTransform() const
virtual bool isPerspective() const
virtual OdInt16 acadWindowId() const
virtual OdGeVector3d viewDir() const
virtual OdGePoint3d getCameraTarget() const
virtual OdGeMatrix3d getWorldToEyeTransform() const
virtual OdUInt32 viewportId() const
virtual void getViewportDcCorners(OdGePoint2d &lower_left, OdGePoint2d &upper_right) const
virtual void getNumPixelsInUnitSquare(const OdGePoint3d &givenWorldpt, OdGePoint2d &pixelArea, bool includePerspective=true) const
virtual OdGeVector3d getCameraUpVector() const
virtual OdGeMatrix3d getEyeToModelTransform() const
void set(const OdGiViewport &ref)
const OdGiViewport & get() const
virtual bool doInversePerspective(OdGePoint3d &p) const
virtual OdGeMatrix3d getModelToEyeTransform() const
virtual double linetypeScaleMultiplier() const
virtual bool layerVisible(OdDbStub *idLayer) const
virtual bool doPerspective(OdGePoint3d &p) const
virtual double linetypeGenerationCriteria() const
virtual OdGiWorldGeometry & geometry() const
virtual void startAttributesSegment()
virtual void setExtents(const OdGePoint3d *newExtents)
virtual void release()=0
virtual void addRef()=0
GLenum GLint ref
Definition: gles2_ext.h:262
GLint GLenum GLsizei width
Definition: gles2_ext.h:110
const GLfloat * v
Definition: gles2_ext.h:315
GLuint GLsizei GLsizei * length
Definition: gles2_ext.h:274
GLint GLenum GLsizei GLsizei height
Definition: gles2_ext.h:110
PlotStyleNameType
Definition: OdaDefs.h:417
@ kPlotStyleNameByBlock
Definition: OdaDefs.h:419
LineWeight
Definition: OdaDefs.h:386
@ kLnWt000
Definition: OdaDefs.h:387