24#ifndef __ODGISECTIONGEOMETRYOUTPUT_H__
25#define __ODGISECTIONGEOMETRYOUTPUT_H__
98 kProcessingEnabled = 1,
99 kNonSectionableGeometryClip = 2,
101 kLastGenericFlag = kNonSectionableGeometryClip
213 m_overrideFlags = nFlags;
222 return m_overrideFlags;
259 if (!m_pDrawCallback.
isNull())
314 destGeometry().plineProc(polyline, pXfm, fromIndex, numSegs);
331 destGeometry().polylineProc(numPoints, vertexList, pNormal, pExtrusion, baseSubEntMarker);
346 destGeometry().polygonProc(numPoints, vertexList, pNormal, pExtrusion);
360 destGeometry().xlineProc(firstPoint, secondPoint);
374 destGeometry().rayProc(basePoint, throughPoint);
390 destGeometry().meshProc(numRows, numColumns, vertexList, pEdgeData, pFaceData, pVertexData);
407 destGeometry().shellProc(numVertices, vertexList, faceListSize, faceList, pEdgeData, pFaceData, pVertexData);
422 destGeometry().circleProc(center, radius, normal, pExtrusion);
438 destGeometry().circleProc2(center, radius, normal, startVector, pExtrusion);
454 destGeometry().circleProc(firstPoint, secondPoint, thirdPoint, pExtrusion);
483 destGeometry().circularArcProc(center, radius, normal, startVector, sweepAngle, arcType, pExtrusion);
502 destGeometry().circularArcProc(firstPoint, secondPoint, thirdPoint, arcType, pExtrusion);
526 destGeometry().ellipArcProc(ellipArc, endPointOverrides, arcType, pExtrusion);
535 destGeometry().nurbsProc(nurbsCurve);
556 destGeometry().textProc(position, direction, upVector, msg, numBytes, raw, pTextStyle, pExtrusion);
576 destGeometry().textProc2(position, direction, upVector, msg, numBytes, raw, pTextStyle, pExtrusion, extentsBox);
594 destGeometry().shapeProc(position, direction, upVector, shapeNumber, pTextStyle, pExtrusion);
612 const OdGePoint2d* uvBoundary,
OdUInt32 numBoundPts,
bool transparency =
false,
double brightness = 50.0,
613 double contrast = 50.0,
double fade = 0.0)
615 destGeometry().rasterImageProc(origin, u,
v, pImage, uvBoundary, numBoundPts, transparency, brightness, contrast, fade);
629 bool dcAligned =
true,
bool allowClipping =
false)
631 destGeometry().metafileProc(origin, u,
v, pMetafile, dcAligned, allowClipping);
645 destGeometry().xlineProc2(basePoint, direction);
659 destGeometry().rayProc2(basePoint, direction);
678 destGeometry().ttfPolyDrawProc(numVertices, vertexList, faceListSize, faceList, pBezierTypes, pFaceData);
696 destGeometry().polypointProc(numPoints, vertexList, pColors, pTransparency, pNormals, pExtrusions, pSubEntMarkers, nPointSize);
708 destGeometry().rowOfDotsProc(numPoints, startPoint, dirToNextPoint);
719 destGeometry().pointCloudProc(pCloud, pFilter);
730 destGeometry().edgeProc(edges, pXform);
751 kOutputClosedPrimitives = kLastGenericFlag << 1,
752 kOutputOpenedPrimitives = kLastGenericFlag << 2,
753 kClosedPrimitivesAsPolylines = kLastGenericFlag << 3,
754 kToleranceOverrideEnabled = kLastGenericFlag << 4
878 if (!isOutputOfClosedSectionsAsPolylinesEnabled())
879 destGeometry().shellProc(numVertices, vertexList, faceListSize, faceList, pEdgeData, pFaceData, pVertexData);
881 shellProcAsPolylineProc(numVertices, vertexList, faceListSize, faceList, pEdgeData, pFaceData, pVertexData);
887 OdInt32 nFace = 0, nFaceList = 0;
889 const bool bExtrusion =
OdNonZero(drawContext().subEntityTraits().thickness());
890 while (nFaceList < faceListSize)
894 if (pNormal && bExtrusion)
895 extrusion = *pNormal * drawContext().subEntityTraits().thickness();
896 m_tmpPoints.
resize(numVerts + 1);
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);
OdSmartPtr< OdGiSectionGeometryOutput > OdGiSectionGeometryOutputPtr
OdSmartPtr< OdGiClippedGeometryOutputCallback > OdGiClippedGeometryOutputCallbackPtr
OdSmartPtr< OdGiCuttedGeometryOutput > OdGiCuttedGeometryOutputPtr
OdSmartPtr< OdGiClippedGeometryOutput > OdGiClippedGeometryOutputPtr
bool OdNonZero(double x, double tol=1.e-10)
#define SETBIT(flags, bit, value)
#define SETBIT_0(flags, bit)
#define GETBIT(flags, bit)
#define SETBIT_1(flags, bit)
const T * asArrayPtr() const
void resize(size_type logicalLength, const T &value)
WrapTraitsProc(OdGiClippedGeometryOutput *pThis)
OdGiClippedGeometryOutputCallback()
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 setProcessingEnabled(bool bSet)
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 ¢er, 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)
OdUInt32 traitsOverrideFlags() const
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 ¢er, 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()
bool isProcessingEnabled() const
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)
virtual void setupDrawableProcessing()
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 ¢er, 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)
bool isNonSectionableGeometryClipping() const
void setNonSectionableGeometryClipping(bool bSet)
void setTraitsOverrides(const OdGiSubEntityTraitsData &pData)
OdGiClippedGeometryOutput()
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)
OdGiCuttedGeometryOutput()
const OdGeVector3d * normals() const
bool isOpenedSectionsOutputEnabled() const
void resetSectionToleranceOverride()
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
bool isClosedSectionsOutputEnabled() const
void enableClosedSectionsOutput(bool bSet)
OdGePoint3dArray m_tmpPoints
void setSectionToleranceOverride(double tolOverride)
void enableOutputOfClosedSectionsAsPolylines(bool bSet)
OdGiSectionGeometryOutput()
bool isSectionToleranceOverrideEnabled() const
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 *)
double sectionToleranceOverride() const
ODRX_DECLARE_MEMBERS(OdGiSectionGeometryOutput)
void enableOpenedSectionsOutput(bool bSet)
static void copyTraits(OdGiSubEntityTraits &pFrom, OdGiSubEntityTraits &pTo, OdUInt32 nFlags=kAllChanged)
void setTraits(TData &pTraits)
static OdRxObjectPtr cast(const OdRxObject *pointer)
virtual OdGiConveyorGeometry & destinationGeometry()=0
virtual OdGiConveyorContext & conveyorContext()=0