CFx SDK Documentation 2024 SP0
Loading...
Searching...
No Matches
GiSectionGeometryOutput.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 __ODGISECTIONGEOMETRYOUTPUT_H__
25#define __ODGISECTIONGEOMETRYOUTPUT_H__
26
28#include "Gi/GiDummyGeometry.h"
29
30#include "TD_PackPush.h"
31
32// Forward declarations
34
43{
44 public:
49
57 virtual bool clippedGeometryOutputCallbackProc(OdGiClippedGeometryOutput &pGeomOutput, const OdGiConveyorContext &pDrawContext) = 0;
58};
59
64
72class ODGI_EXPORT OdGiClippedGeometryOutput : public OdRxObject, public OdGiConveyorPassingImpl<OdGiClippedGeometryOutput>
73{
74 public:
81 {
94 };
95 protected:
96 enum Flags
97 {
98 kProcessingEnabled = 1,
99 kNonSectionableGeometryClip = 2,
100
101 kLastGenericFlag = kNonSectionableGeometryClip
102 };
103 protected:
104 ClippedGeometryOutputInterface *m_pIface; // Conveyor geometry output interface.
106 OdUInt32 m_flags; // Generic flags storage.
107 OdUInt32 m_overrideFlags; // Traits override flags storage.
108 OdGiSubEntityTraitsData m_overrides; // Traits override values.
109 OdGiSubEntityTraitsData m_traits; // Actual traits storage.
110 public:
116 OdGiConveyorGeometry& destGeometry() { if (!m_pIface) throw OdError(eInvalidContext); return m_pIface->destinationGeometry(); }
117
123 OdGiConveyorContext& drawContext() { if (!m_pIface) throw OdError(eInvalidContext); return m_pIface->conveyorContext(); }
124 protected:
126 { OdGiClippedGeometryOutput &m_this; OdGiConveyorContext &m_drawContext;
127 public: WrapTraitsProc(OdGiClippedGeometryOutput *pThis) : m_this(*pThis), m_drawContext(pThis->drawContext())
128 { m_this.setupTraits(m_drawContext); }
129 ~WrapTraitsProc() { m_this.releaseTraits(m_drawContext); }
130 };
131 public:
136 OdGiClippedGeometryOutput() : m_pIface(NULL), m_flags(kProcessingEnabled | kNonSectionableGeometryClip), m_overrideFlags(0) {}
137
145 virtual void copyFrom(const OdRxObject* pSource)
146 {
147 const OdGiClippedGeometryOutput *pFrom = static_cast<const OdGiClippedGeometryOutput*>(pSource);
148 if (!pFrom)
149 throw OdError(eInvalidInput);
150 m_pDrawCallback = pFrom->m_pDrawCallback;
151 m_flags = pFrom->m_flags;
152 m_overrideFlags = pFrom->m_overrideFlags;
153 m_overrides = pFrom->m_overrides;
154 }
155
168 void setInterface(ClippedGeometryOutputInterface *pInterface) { m_pIface = pInterface; }
169
182 void setGeometryProcessingCallback(OdGiClippedGeometryOutputCallback *pCallback) { m_pDrawCallback = pCallback; }
183
188 bool isProcessingEnabled() const { return GETBIT(m_flags, kProcessingEnabled); }
193 void setProcessingEnabled(bool bSet) { SETBIT(m_flags, kProcessingEnabled, bSet); }
194
200 bool isNonSectionableGeometryClipping() const { return GETBIT(m_flags, kNonSectionableGeometryClip); }
205 void setNonSectionableGeometryClipping(bool bSet) { SETBIT(m_flags, kNonSectionableGeometryClip, bSet); }
206
212 {
213 m_overrideFlags = nFlags;
214 }
221 {
222 return m_overrideFlags;
223 }
224
230 {
231 m_overrides = pData;
232 }
239 {
240 return m_overrides;
241 }
248 {
249 return m_overrides;
250 }
251
258 {
259 if (!m_pDrawCallback.isNull())
260 setProcessingEnabled(m_pDrawCallback->clippedGeometryOutputCallbackProc(*this, drawContext()));
261 }
262
269 virtual void setupTraits(OdGiConveyorContext &context)
270 {
271 if (m_overrideFlags)
272 {
273 // Copy traits settings from current state
274 OdGiSubEntityTraitsToData dataAdaptor(m_traits);
275 OdGiSubEntityTraitsToData::copyTraits(context.subEntityTraits(), dataAdaptor, m_overrideFlags);
276 // Setup traits overrides
277 dataAdaptor.setTraits(m_overrides);
278 OdGiSubEntityTraitsToData::copyTraits(dataAdaptor, context.subEntityTraits(), m_overrideFlags);
279 context.onTraitsModified();
280 }
281 }
282
289 virtual void releaseTraits(OdGiConveyorContext &context)
290 {
291 if (m_overrideFlags)
292 {
293 // Copy modified traits back to current state
294 OdGiSubEntityTraitsToData dataAdaptor(m_traits);
295 OdGiSubEntityTraitsToData::copyTraits(dataAdaptor, context.subEntityTraits(), m_overrideFlags);
296 //context.onTraitsModified(); // Don't need since we completed with section geometry
297 }
298 }
299
300 // Conveyor geometry primitives implementation
301
312 void plineProc(const OdGiPolyline& polyline, const OdGeMatrix3d* pXfm = 0, OdUInt32 fromIndex = 0, OdUInt32 numSegs = 0)
313 { WrapTraitsProc _wtp(this);
314 destGeometry().plineProc(polyline, pXfm, fromIndex, numSegs);
315 }
316
328 void polylineProc(OdInt32 numPoints, const OdGePoint3d* vertexList, const OdGeVector3d* pNormal = 0,
329 const OdGeVector3d* pExtrusion = 0, OdGsMarker baseSubEntMarker = -1)
330 { WrapTraitsProc _wtp(this);
331 destGeometry().polylineProc(numPoints, vertexList, pNormal, pExtrusion, baseSubEntMarker);
332 }
333
344 void polygonProc(OdInt32 numPoints, const OdGePoint3d* vertexList, const OdGeVector3d* pNormal = 0, const OdGeVector3d* pExtrusion = 0)
345 { WrapTraitsProc _wtp(this);
346 destGeometry().polygonProc(numPoints, vertexList, pNormal, pExtrusion);
347 }
348
358 void xlineProc(const OdGePoint3d& firstPoint, const OdGePoint3d& secondPoint)
359 { WrapTraitsProc _wtp(this);
360 destGeometry().xlineProc(firstPoint, secondPoint);
361 }
362
372 void rayProc(const OdGePoint3d& basePoint, const OdGePoint3d& throughPoint)
373 { WrapTraitsProc _wtp(this);
374 destGeometry().rayProc(basePoint, throughPoint);
375 }
376
387 void meshProc(OdInt32 numRows, OdInt32 numColumns, const OdGePoint3d* vertexList, const OdGiEdgeData* pEdgeData = 0, const OdGiFaceData* pFaceData = 0,
388 const OdGiVertexData* pVertexData = 0)
389 { WrapTraitsProc _wtp(this);
390 destGeometry().meshProc(numRows, numColumns, vertexList, pEdgeData, pFaceData, pVertexData);
391 }
392
404 void shellProc(OdInt32 numVertices, const OdGePoint3d* vertexList, OdInt32 faceListSize, const OdInt32* faceList, const OdGiEdgeData* pEdgeData = 0,
405 const OdGiFaceData* pFaceData = 0, const OdGiVertexData* pVertexData = 0)
406 { WrapTraitsProc _wtp(this);
407 destGeometry().shellProc(numVertices, vertexList, faceListSize, faceList, pEdgeData, pFaceData, pVertexData);
408 }
409
420 void circleProc(const OdGePoint3d& center, double radius, const OdGeVector3d& normal, const OdGeVector3d* pExtrusion = 0)
421 { WrapTraitsProc _wtp(this);
422 destGeometry().circleProc(center, radius, normal, pExtrusion);
423 }
424
436 void circleProc2(const OdGePoint3d& center, double radius, const OdGeVector3d& normal, const OdGeVector3d& startVector, const OdGeVector3d* pExtrusion = 0)
437 { WrapTraitsProc _wtp(this);
438 destGeometry().circleProc2(center, radius, normal, startVector, pExtrusion);
439 }
440
452 void circleProc(const OdGePoint3d& firstPoint, const OdGePoint3d& secondPoint, const OdGePoint3d& thirdPoint, const OdGeVector3d* pExtrusion = 0)
453 { WrapTraitsProc _wtp(this);
454 destGeometry().circleProc(firstPoint, secondPoint, thirdPoint, pExtrusion);
455 }
456
480 void circularArcProc(const OdGePoint3d& center, double radius, const OdGeVector3d& normal, const OdGeVector3d& startVector,
481 double sweepAngle, OdGiArcType arcType = kOdGiArcSimple, const OdGeVector3d* pExtrusion = 0)
482 { WrapTraitsProc _wtp(this);
483 destGeometry().circularArcProc(center, radius, normal, startVector, sweepAngle, arcType, pExtrusion);
484 }
485
499 void circularArcProc(const OdGePoint3d& firstPoint, const OdGePoint3d& secondPoint, const OdGePoint3d& thirdPoint, OdGiArcType arcType = kOdGiArcSimple,
500 const OdGeVector3d* pExtrusion = 0)
501 { WrapTraitsProc _wtp(this);
502 destGeometry().circularArcProc(firstPoint, secondPoint, thirdPoint, arcType, pExtrusion);
503 }
504
523 void ellipArcProc(const OdGeEllipArc3d& ellipArc, const OdGePoint3d* endPointOverrides = 0, OdGiArcType arcType = kOdGiArcSimple,
524 const OdGeVector3d* pExtrusion = 0)
525 { WrapTraitsProc _wtp(this);
526 destGeometry().ellipArcProc(ellipArc, endPointOverrides, arcType, pExtrusion);
527 }
528
533 void nurbsProc(const OdGeNurbCurve3d& nurbsCurve)
534 { WrapTraitsProc _wtp(this);
535 destGeometry().nurbsProc(nurbsCurve);
536 }
537
553 void textProc(const OdGePoint3d& position, const OdGeVector3d& direction, const OdGeVector3d& upVector, const OdChar* msg,
554 OdInt32 numBytes, bool raw, const OdGiTextStyle* pTextStyle, const OdGeVector3d* pExtrusion = 0)
555 { WrapTraitsProc _wtp(this);
556 destGeometry().textProc(position, direction, upVector, msg, numBytes, raw, pTextStyle, pExtrusion);
557 }
558
573 void textProc2(const OdGePoint3d& position, const OdGeVector3d& direction, const OdGeVector3d& upVector, const OdChar* msg,
574 OdInt32 numBytes, bool raw, const OdGiTextStyle* pTextStyle, const OdGeVector3d* pExtrusion = 0, const OdGeExtents3d* extentsBox = 0)
575 { WrapTraitsProc _wtp(this);
576 destGeometry().textProc2(position, direction, upVector, msg, numBytes, raw, pTextStyle, pExtrusion, extentsBox);
577 }
578
591 void shapeProc(const OdGePoint3d& position, const OdGeVector3d& direction, const OdGeVector3d& upVector, int shapeNumber,
592 const OdGiTextStyle* pTextStyle, const OdGeVector3d* pExtrusion = 0)
593 { WrapTraitsProc _wtp(this);
594 destGeometry().shapeProc(position, direction, upVector, shapeNumber, pTextStyle, pExtrusion);
595 }
596
611 void rasterImageProc(const OdGePoint3d& origin, const OdGeVector3d& u, const OdGeVector3d& v, const OdGiRasterImage* pImage,
612 const OdGePoint2d* uvBoundary, OdUInt32 numBoundPts, bool transparency = false, double brightness = 50.0,
613 double contrast = 50.0, double fade = 0.0)
614 { WrapTraitsProc _wtp(this);
615 destGeometry().rasterImageProc(origin, u, v, pImage, uvBoundary, numBoundPts, transparency, brightness, contrast, fade);
616 }
617
628 void metafileProc(const OdGePoint3d& origin, const OdGeVector3d& u, const OdGeVector3d& v, const OdGiMetafile* pMetafile,
629 bool dcAligned = true, bool allowClipping = false)
630 { WrapTraitsProc _wtp(this);
631 destGeometry().metafileProc(origin, u, v, pMetafile, dcAligned, allowClipping);
632 }
633
643 void xlineProc2(const OdGePoint3d& basePoint, const OdGeVector3d& direction)
644 { WrapTraitsProc _wtp(this);
645 destGeometry().xlineProc2(basePoint, direction);
646 }
647
657 void rayProc2(const OdGePoint3d& basePoint, const OdGeVector3d& direction)
658 { WrapTraitsProc _wtp(this);
659 destGeometry().rayProc2(basePoint, direction);
660 }
661
675 void ttfPolyDrawProc(OdInt32 numVertices, const OdGePoint3d* vertexList, OdInt32 faceListSize, const OdInt32* faceList,
676 const OdUInt8* pBezierTypes, const OdGiFaceData* pFaceData = 0)
677 { WrapTraitsProc _wtp(this);
678 destGeometry().ttfPolyDrawProc(numVertices, vertexList, faceListSize, faceList, pBezierTypes, pFaceData);
679 }
680
693 void polypointProc(OdInt32 numPoints, const OdGePoint3d* vertexList, const OdCmEntityColor* pColors, const OdCmTransparency* pTransparency = 0,
694 const OdGeVector3d* pNormals = 0, const OdGeVector3d* pExtrusions = 0, const OdGsMarker* pSubEntMarkers = 0, OdInt32 nPointSize = 0)
695 { WrapTraitsProc _wtp(this);
696 destGeometry().polypointProc(numPoints, vertexList, pColors, pTransparency, pNormals, pExtrusions, pSubEntMarkers, nPointSize);
697 }
698
706 void rowOfDotsProc(OdInt32 numPoints, const OdGePoint3d& startPoint, const OdGeVector3d& dirToNextPoint)
707 { WrapTraitsProc _wtp(this);
708 destGeometry().rowOfDotsProc(numPoints, startPoint, dirToNextPoint);
709 }
710
717 void pointCloudProc(const OdGiPointCloud &pCloud, const OdGiPointCloudFilter *pFilter)
718 { WrapTraitsProc _wtp(this);
719 destGeometry().pointCloudProc(pCloud, pFilter);
720 }
721
728 void edgeProc(const OdGiEdge2dArray& edges, const OdGeMatrix3d* pXform = 0)
729 { WrapTraitsProc _wtp(this);
730 destGeometry().edgeProc(edges, pXform);
731 }
732};
733
738
747{
748 protected:
749 enum Flags
750 {
751 kOutputClosedPrimitives = kLastGenericFlag << 1,
752 kOutputOpenedPrimitives = kLastGenericFlag << 2,
753 kClosedPrimitivesAsPolylines = kLastGenericFlag << 3,
754 kToleranceOverrideEnabled = kLastGenericFlag << 4
755 };
756 protected:
757 double m_tolOverride; // Section tolerance override.
758 OdGePoint3dArray m_tmpPoints; // Temporary vertexes array
759 public:
764 OdGiSectionGeometryOutput() : m_tolOverride(1.e-10) { SETBIT_1(m_flags, kOutputClosedPrimitives); }
765
767
776 virtual void copyFrom(const OdRxObject* pSource)
777 {
779 if (!pFrom)
780 throw OdError(eInvalidInput);
782 m_tolOverride = pFrom->m_tolOverride;
783 }
784
790 bool isClosedSectionsOutputEnabled() const { return GETBIT(m_flags, kOutputClosedPrimitives); }
795 void enableClosedSectionsOutput(bool bSet) { SETBIT(m_flags, kOutputClosedPrimitives, bSet); }
796
802 bool isOpenedSectionsOutputEnabled() const { return GETBIT(m_flags, kOutputOpenedPrimitives); }
807 void enableOpenedSectionsOutput(bool bSet) { SETBIT(m_flags, kOutputOpenedPrimitives, bSet); }
808
814 bool isOutputOfClosedSectionsAsPolylinesEnabled() const { return GETBIT(m_flags, kClosedPrimitivesAsPolylines); }
819 void enableOutputOfClosedSectionsAsPolylines(bool bSet) { SETBIT(m_flags, kClosedPrimitivesAsPolylines, bSet); }
820
826 bool isSectionToleranceOverrideEnabled() const { return GETBIT(m_flags, kToleranceOverrideEnabled); }
827
831 double sectionToleranceOverride() const { return m_tolOverride; }
832
837 void setSectionToleranceOverride(double tolOverride) { SETBIT_1(m_flags, kToleranceOverrideEnabled); m_tolOverride = tolOverride; }
838
842 void resetSectionToleranceOverride() { SETBIT_0(m_flags, kToleranceOverrideEnabled); }
843
856 void polylineProc(OdInt32 numPoints, const OdGePoint3d* vertexList, const OdGeVector3d* pNormal = 0,
857 const OdGeVector3d* pExtrusion = 0, OdGsMarker baseSubEntMarker = -1)
858 {
859 OdGiClippedGeometryOutput::polylineProc(numPoints, vertexList, pNormal, pExtrusion, baseSubEntMarker);
860 }
861
875 void shellProc(OdInt32 numVertices, const OdGePoint3d* vertexList, OdInt32 faceListSize, const OdInt32* faceList,
876 const OdGiEdgeData* pEdgeData = 0, const OdGiFaceData* pFaceData = 0, const OdGiVertexData* pVertexData = 0)
877 { WrapTraitsProc _wtp(this);
878 if (!isOutputOfClosedSectionsAsPolylinesEnabled())
879 destGeometry().shellProc(numVertices, vertexList, faceListSize, faceList, pEdgeData, pFaceData, pVertexData);
880 else
881 shellProcAsPolylineProc(numVertices, vertexList, faceListSize, faceList, pEdgeData, pFaceData, pVertexData);
882 }
883 protected:
884 void shellProcAsPolylineProc(OdInt32 /*numVertices*/, const OdGePoint3d* vertexList, OdInt32 faceListSize, const OdInt32* faceList,
885 const OdGiEdgeData* /*pEdgeData*/, const OdGiFaceData* pFaceData, const OdGiVertexData* /*pVertexData*/)
886 {
887 OdInt32 nFace = 0, nFaceList = 0;
888 OdGeVector3d extrusion;
889 const bool bExtrusion = OdNonZero(drawContext().subEntityTraits().thickness());
890 while (nFaceList < faceListSize)
891 {
892 const OdInt32 numVerts = Od_abs(faceList[nFaceList++]);
893 const OdGeVector3d *pNormal = (pFaceData && pFaceData->normals()) ? (pFaceData->normals() + nFace) : NULL;
894 if (pNormal && bExtrusion)
895 extrusion = *pNormal * drawContext().subEntityTraits().thickness();
896 m_tmpPoints.resize(numVerts + 1);
897 OdGePoint3d *tmpPoints = m_tmpPoints.asArrayPtr();
898 for (OdInt32 nVert = 0; nVert < numVerts; nVert++)
899 tmpPoints[nVert] = vertexList[faceList[nFaceList++]];
900 tmpPoints[numVerts] = tmpPoints[0];
901 destGeometry().polylineProc(numVerts + 1, tmpPoints, pNormal, (pNormal && bExtrusion) ? &extrusion : NULL);
902 nFace++;
903 }
904 }
905};
906
911
920{
921 public:
926
928
937 virtual void copyFrom(const OdRxObject* pSource)
938 {
940 if (!pFrom)
941 throw OdError(eInvalidInput);
943 }
944};
945
950
951#include "TD_PackPop.h"
952
953#endif //#ifndef __ODGISECTIONGEOMETRYOUTPUT_H__
#define ODGI_EXPORT
Definition: GiExport.h:35
OdGiArcType
Definition: GiGeometry.h:787
@ kOdGiArcSimple
Definition: GiGeometry.h:788
OdSmartPtr< OdGiSectionGeometryOutput > OdGiSectionGeometryOutputPtr
OdSmartPtr< OdGiClippedGeometryOutputCallback > OdGiClippedGeometryOutputCallbackPtr
OdSmartPtr< OdGiCuttedGeometryOutput > OdGiCuttedGeometryOutputPtr
OdSmartPtr< OdGiClippedGeometryOutput > OdGiClippedGeometryOutputPtr
#define Od_abs
Definition: OdPlatform.h:141
ptrdiff_t OdGsMarker
unsigned int OdUInt32
int OdInt32
unsigned char OdUInt8
wchar_t OdChar
bool OdNonZero(double x, double tol=1.e-10)
Definition: OdaDefs.h:537
#define SETBIT(flags, bit, value)
Definition: OdaDefs.h:516
#define SETBIT_0(flags, bit)
Definition: OdaDefs.h:519
#define GETBIT(flags, bit)
Definition: OdaDefs.h:517
#define SETBIT_1(flags, bit)
Definition: OdaDefs.h:520
const T * asArrayPtr() const
Definition: OdArray.h:1590
void resize(size_type logicalLength, const T &value)
Definition: OdArray.h:1185
bool isNull() const
Definition: BaseObjectPtr.h:86
WrapTraitsProc(OdGiClippedGeometryOutput *pThis)
virtual bool clippedGeometryOutputCallbackProc(OdGiClippedGeometryOutput &pGeomOutput, const OdGiConveyorContext &pDrawContext)=0
void textProc(const OdGePoint3d &position, const OdGeVector3d &direction, const OdGeVector3d &upVector, const OdChar *msg, OdInt32 numBytes, bool raw, const OdGiTextStyle *pTextStyle, const OdGeVector3d *pExtrusion=0)
virtual void setupTraits(OdGiConveyorContext &context)
void pointCloudProc(const OdGiPointCloud &pCloud, const OdGiPointCloudFilter *pFilter)
OdGiSubEntityTraitsData & traitsOverrides()
virtual void releaseTraits(OdGiConveyorContext &context)
void xlineProc2(const OdGePoint3d &basePoint, const OdGeVector3d &direction)
void polylineProc(OdInt32 numPoints, const OdGePoint3d *vertexList, const OdGeVector3d *pNormal=0, const OdGeVector3d *pExtrusion=0, OdGsMarker baseSubEntMarker=-1)
void edgeProc(const OdGiEdge2dArray &edges, const OdGeMatrix3d *pXform=0)
void setTraitsOverrideFlags(OdUInt32 nFlags)
void shellProc(OdInt32 numVertices, const OdGePoint3d *vertexList, OdInt32 faceListSize, const OdInt32 *faceList, const OdGiEdgeData *pEdgeData=0, const OdGiFaceData *pFaceData=0, const OdGiVertexData *pVertexData=0)
void textProc2(const OdGePoint3d &position, const OdGeVector3d &direction, const OdGeVector3d &upVector, const OdChar *msg, OdInt32 numBytes, bool raw, const OdGiTextStyle *pTextStyle, const OdGeVector3d *pExtrusion=0, const OdGeExtents3d *extentsBox=0)
ClippedGeometryOutputInterface * getInterface()
void polypointProc(OdInt32 numPoints, const OdGePoint3d *vertexList, const OdCmEntityColor *pColors, const OdCmTransparency *pTransparency=0, const OdGeVector3d *pNormals=0, const OdGeVector3d *pExtrusions=0, const OdGsMarker *pSubEntMarkers=0, OdInt32 nPointSize=0)
void circularArcProc(const OdGePoint3d &center, double radius, const OdGeVector3d &normal, const OdGeVector3d &startVector, double sweepAngle, OdGiArcType arcType=kOdGiArcSimple, const OdGeVector3d *pExtrusion=0)
OdGiSubEntityTraitsData m_traits
void ttfPolyDrawProc(OdInt32 numVertices, const OdGePoint3d *vertexList, OdInt32 faceListSize, const OdInt32 *faceList, const OdUInt8 *pBezierTypes, const OdGiFaceData *pFaceData=0)
void plineProc(const OdGiPolyline &polyline, const OdGeMatrix3d *pXfm=0, OdUInt32 fromIndex=0, OdUInt32 numSegs=0)
void rowOfDotsProc(OdInt32 numPoints, const OdGePoint3d &startPoint, const OdGeVector3d &dirToNextPoint)
void setGeometryProcessingCallback(OdGiClippedGeometryOutputCallback *pCallback)
void rayProc(const OdGePoint3d &basePoint, const OdGePoint3d &throughPoint)
void circleProc(const OdGePoint3d &firstPoint, const OdGePoint3d &secondPoint, const OdGePoint3d &thirdPoint, const OdGeVector3d *pExtrusion=0)
OdGiSubEntityTraitsData m_overrides
void ellipArcProc(const OdGeEllipArc3d &ellipArc, const OdGePoint3d *endPointOverrides=0, OdGiArcType arcType=kOdGiArcSimple, const OdGeVector3d *pExtrusion=0)
void circleProc2(const OdGePoint3d &center, double radius, const OdGeVector3d &normal, const OdGeVector3d &startVector, const OdGeVector3d *pExtrusion=0)
void shapeProc(const OdGePoint3d &position, const OdGeVector3d &direction, const OdGeVector3d &upVector, int shapeNumber, const OdGiTextStyle *pTextStyle, const OdGeVector3d *pExtrusion=0)
OdGiClippedGeometryOutputCallbackPtr m_pDrawCallback
OdGiClippedGeometryOutputCallback * geometryProcessingCallback()
void polygonProc(OdInt32 numPoints, const OdGePoint3d *vertexList, const OdGeVector3d *pNormal=0, const OdGeVector3d *pExtrusion=0)
const OdGiSubEntityTraitsData & traitsOverrides() const
ClippedGeometryOutputInterface * m_pIface
void rasterImageProc(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 copyFrom(const OdRxObject *pSource)
OdGiConveyorGeometry & destGeometry()
void metafileProc(const OdGePoint3d &origin, const OdGeVector3d &u, const OdGeVector3d &v, const OdGiMetafile *pMetafile, bool dcAligned=true, bool allowClipping=false)
void setInterface(ClippedGeometryOutputInterface *pInterface)
void rayProc2(const OdGePoint3d &basePoint, const OdGeVector3d &direction)
void nurbsProc(const OdGeNurbCurve3d &nurbsCurve)
OdGiConveyorContext & drawContext()
void circleProc(const OdGePoint3d &center, double radius, const OdGeVector3d &normal, const OdGeVector3d *pExtrusion=0)
void meshProc(OdInt32 numRows, OdInt32 numColumns, const OdGePoint3d *vertexList, const OdGiEdgeData *pEdgeData=0, const OdGiFaceData *pFaceData=0, const OdGiVertexData *pVertexData=0)
void circularArcProc(const OdGePoint3d &firstPoint, const OdGePoint3d &secondPoint, const OdGePoint3d &thirdPoint, OdGiArcType arcType=kOdGiArcSimple, const OdGeVector3d *pExtrusion=0)
void setNonSectionableGeometryClipping(bool bSet)
void setTraitsOverrides(const OdGiSubEntityTraitsData &pData)
void xlineProc(const OdGePoint3d &firstPoint, const OdGePoint3d &secondPoint)
virtual OdGiSubEntityTraits & subEntityTraits() const =0
virtual void onTraitsModified()=0
ODRX_DECLARE_MEMBERS(OdGiCuttedGeometryOutput)
virtual void copyFrom(const OdRxObject *pSource)
const OdGeVector3d * normals() const
Definition: GiGeometry.h:517
void polylineProc(OdInt32 numPoints, const OdGePoint3d *vertexList, const OdGeVector3d *pNormal=0, const OdGeVector3d *pExtrusion=0, OdGsMarker baseSubEntMarker=-1)
virtual void copyFrom(const OdRxObject *pSource)
bool isOutputOfClosedSectionsAsPolylinesEnabled() const
void setSectionToleranceOverride(double tolOverride)
void enableOutputOfClosedSectionsAsPolylines(bool bSet)
void shellProc(OdInt32 numVertices, const OdGePoint3d *vertexList, OdInt32 faceListSize, const OdInt32 *faceList, const OdGiEdgeData *pEdgeData=0, const OdGiFaceData *pFaceData=0, const OdGiVertexData *pVertexData=0)
void shellProcAsPolylineProc(OdInt32, const OdGePoint3d *vertexList, OdInt32 faceListSize, const OdInt32 *faceList, const OdGiEdgeData *, const OdGiFaceData *pFaceData, const OdGiVertexData *)
ODRX_DECLARE_MEMBERS(OdGiSectionGeometryOutput)
static void copyTraits(OdGiSubEntityTraits &pFrom, OdGiSubEntityTraits &pTo, OdUInt32 nFlags=kAllChanged)
static OdRxObjectPtr cast(const OdRxObject *pointer)
Definition: RxObject.h:640
const GLfloat * v
Definition: gles2_ext.h:315
virtual OdGiConveyorGeometry & destinationGeometry()=0