24#ifndef __ODGIGEOMETRYSIMPLIFIER_H__ 
   25#define __ODGIGEOMETRYSIMPLIFIER_H__ 
   81    kSimplProcessingText   = (1 << 0), 
 
   82    kSimplFillModeDisabled = (1 << 1), 
 
   83    kSimplEyeSpaceSilhs    = (1 << 2), 
 
   84    kSimplEdgeVisible      = (1 << 3), 
 
   85    kSimplEdgeSilhouette   = (1 << 4), 
 
   86    kSimplNoFaceNormals    = (1 << 5), 
 
   87    kSimplGenTrgNormals    = (1 << 6), 
 
   88    kSimplLastFlag         = kSimplGenTrgNormals
 
   89   ,kZInverted             = (1 << 30) 
 
   90   ,kDiscardBackFaces      = (1 << 31) 
 
  282    return m_nVertexCount;
 
  293    return m_pVertexList;
 
  304    return m_pVertexData;
 
  315    return m_baseSubEntMarker;
 
  955    bool transparency = 
false,
 
  956    double brightness = 50.0,
 
  957    double contrast = 50.0,
 
 1000    bool dcAligned = 
true,        
 
 1001    bool allowClipping = 
false); 
 
 1189    polylineOut(numPoints, vertexIndexList);
 
 1191    SETBIT_0(m_simplFlags, kSimplEdgeSilhouette);
 
 1192    SETBIT_1(m_simplFlags, kSimplEdgeVisible);
 
#define SETBIT(flags, bit, value)
 
#define SETBIT_0(flags, bit)
 
#define GETBIT(flags, bit)
 
#define SETBIT_1(flags, bit)
 
virtual OdGiContext & giContext() const =0
 
const OdUInt8 * visibility() const
 
virtual void generateShellFacets(OdInt32 faceListSize, const OdInt32 *faceList, const OdGiFaceData *pFaceData=0, OdInt32 maxFacetSize=3)
 
bool shmFillMode(bool &drawEdges)
 
bool silhouettesProcessingInEyeSpace() const
 
OdGeDoubleArray m_deviations
 
OdGeEllipArc3d * m_pEllipArc3d
 
OdGeCircArc2d * m_pCircArc2d
 
const OdGePoint3d * vertexDataList() const
 
virtual bool generateShellFill(OdGiHatchPatternPtr pHatch, OdDouble &fillDensity, const OdGePoint3d *pVertexList, OdInt32 faceListSize, const OdInt32 *pFaceList, const OdGiFaceData *pFaceData=0, OdGiMapperItemEntry *pMapper=0)
 
virtual void nurbsProc(const OdGeNurbCurve3d &nurbsCurve)
 
virtual void facetOut(const OdInt32 *faceList, const OdInt32 *edgeIndices, const OdGeVector3d *pNormal)
 
OdGsMarker m_baseSubEntMarker
 
virtual void generateShellFaces(OdInt32 faceListSize, const OdInt32 *faceList, const OdGiEdgeData *pEdgeData=0, const OdGiFaceData *pFaceData=0)
 
virtual void shellFaceOut(OdInt32 faceListSize, const OdInt32 *faceList, const OdGeVector3d *pNormal)
 
virtual void textProc2(const OdGePoint3d &position, const OdGeVector3d &u, const OdGeVector3d &v, const OdChar *msg, OdInt32 length, bool raw, const OdGiTextStyle *pTextStyle, const OdGeVector3d *pExtrusion=0, const OdGeExtents3d *extentsBox=0)
 
bool isMeshRequireVertexNormals(const OdGiVertexData *pVertexData)
 
bool fillMode(bool &drawEdges, bool &secColor)
 
OdGsView::RenderMode m_renderMode
 
OdGePoint3dArray & tmpPoints3d(int nLevel)
 
void subdivideShellByVertexLimit(OdInt32 numVertices, const OdGePoint3d *vertexList, OdInt32 faceListSize, const OdInt32 *faceList, const OdGiEdgeData *pEdgeData, const OdGiFaceData *pFaceData, const OdGiVertexData *pVertexData, OdUInt32 nLimit)
 
virtual void generateShellWires(OdInt32 faceListSize, const OdInt32 *faceList, const OdGiEdgeData *pEdgeData=0, const OdGiFaceData *pFaceData=0)
 
virtual void circularArcProc(const OdGePoint3d ¢er, double radius, const OdGeVector3d &normal, const OdGeVector3d &startVector, double sweepAngle, OdGiArcType arcType=kOdGiArcSimple, const OdGeVector3d *pExtrusion=0)
 
virtual void plineProc(const OdGiPolyline &polyline, const OdGeMatrix3d *pXfm=0, OdUInt32 fromIndex=0, OdUInt32 numSegs=0)
 
virtual void generateMeshWires(OdInt32 numRows, OdInt32 numColumns, const OdGiEdgeData *pEdgeData, const OdGiFaceData *pFaceData)
 
bool processingText() const
 
void drawTypedArc(OdGiArcType arcType, const OdGePoint3d ¢er, OdGePoint3dArray &points, const OdGeVector3d *pNormal, const OdGeVector3d *pExtrusion)
 
bool jointLineWithArc(const OdGiPolyline &lwBuf, OdInt32 LineSegNo, OdInt32 ArcSegNo, OdGePoint3dArray &points)
 
virtual void pointCloudProc(const OdGiPointCloud &pCloud, const OdGiPointCloudFilter *pFilter=NULL)
 
virtual void polygonOut(OdInt32 numPoints, const OdGePoint3d *vertexList, const OdGeVector3d *pNormal=0)
 
void enableSilhouettesProcessingInEyeSpace(bool bEnable)
 
OdGsView::RenderMode renderMode()
 
virtual void triangleOut(const OdInt32 *vertices, const OdGeVector3d *pNormal)
 
virtual void rowOfDotsProc(OdInt32 numPoints, const OdGePoint3d &startPoint, const OdGeVector3d &dirToNextPoint)
 
virtual void meshFaceOut(const OdInt32 *faceList, const OdGeVector3d *pNormal)
 
virtual void circularArcProc(const OdGePoint3d &firstPoint, const OdGePoint3d &secondPoint, const OdGePoint3d &thirdPoint, OdGiArcType arcType=kOdGiArcSimple, const OdGeVector3d *pExtrusion=0)
 
const OdGiConveyorContext * drawContext() const
 
virtual void metafileProc(const OdGePoint3d &origin, const OdGeVector3d &u, const OdGeVector3d &v, const OdGiMetafile *pMetafile, bool dcAligned=true, bool allowClipping=false)
 
const OdGiDeviation * m_pDeviation
 
OdGiConveyorContext * m_pDrawCtx
 
virtual void xlineProc(const OdGePoint3d &firstPoint, const OdGePoint3d &secondPoint)
 
virtual 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 polylineOut(OdInt32 numPoints, const OdGePoint3d *vertexList)
 
bool shmFillMode(bool &drawEdges, bool &secColor)
 
virtual void filledShellProc(const OdGePoint3d *vertexList, OdInt32 faceListSize, const OdInt32 *faceList, const OdGiEdgeData *pEdgeData=0, const OdGiFaceData *pFaceData=0)
 
OdGsMarker baseSubEntMarker() const
 
virtual void shellProc(OdInt32 numVertices, const OdGePoint3d *vertexList, OdInt32 faceListSize, const OdInt32 *faceList, const OdGiEdgeData *pEdgeData=0, const OdGiFaceData *pFaceData=0, const OdGiVertexData *pVertexData=0)
 
OdInt32 vertexDataCount() const
 
virtual 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)
 
virtual void rayProc(const OdGePoint3d &basePoint, const OdGePoint3d &throughPoint)
 
OdGiSubEntityTraits * m_pTraits
 
OdGiContext & giCtx() const
 
virtual void meshProc(OdInt32 numRows, OdInt32 numColumns, const OdGePoint3d *vertexList, const OdGiEdgeData *pEdgeData=0, const OdGiFaceData *pFaceData=0, const OdGiVertexData *pVertexData=0)
 
void polylineOut(OdInt32 numPoints, const OdInt32 *vertexIndexList, const OdGiEdgeData *pEdgeData, OdInt32 nEdgeIndex)
 
virtual bool plineArcSegmentsAsArcProc(OdUInt32 drawContextFlags) const
 
virtual void textProc(const OdGePoint3d &position, const OdGeVector3d &u, const OdGeVector3d &v, const OdChar *msg, OdInt32 length, bool raw, const OdGiTextStyle *pTextStyle, const OdGeVector3d *pExtrusion=0)
 
void setDeviation(const OdGiDeviation *pDeviation)
 
OdGeCircArc3d * m_pCircArc3d
 
virtual bool ellipArcProc(const OdGeEllipArc3d &ellipArc, double width)
 
virtual void shapeProc(const OdGePoint3d &position, const OdGeVector3d &direction, const OdGeVector3d &upVector, int shapeNumber, const OdGiTextStyle *pTextStyle, const OdGeVector3d *pExtrusion=0)
 
const OdGiVertexData * vertexData() const
 
virtual void polygonProc(OdInt32 numPoints, const OdGePoint3d *vertexList, const OdGeVector3d *pNormal=0, const OdGeVector3d *pExtrusion=0)
 
void setVertexData(OdInt32 numVertices, const OdGePoint3d *vertexList, const OdGiVertexData *pVertexData=0)
 
OdGiConveyorContext * drawContext()
 
virtual void circleProc(const OdGePoint3d &firstPoint, const OdGePoint3d &secondPoint, const OdGePoint3d &thirdPoint, const OdGeVector3d *pExtrusion=0)
 
double deviation(const OdGiDeviationType deviationType, const OdGePoint3d &pointOnCurve) const
 
void generateMeshVertexNormals(OdInt32 numRows, OdInt32 numCols, const OdGePoint3d *pVertexList, const OdGiVertexData *pVertexData, OdGiVertexData &vertexData, OdGeVector3dArray &normals)
 
void setDrawContext(OdGiConveyorContext *pDrawCtx)
 
bool jointArcWithLine(const OdGiPolyline &lwBuf, OdGeCircArc2d &arc, OdInt32 arcSegNo, OdInt32 lineSegNo, OdGePoint3d &point1, OdGePoint3d &point2)
 
void circleProc2(const OdGePoint3d ¢er, double radius, const OdGeVector3d &normal, const OdGeVector3d &startVector, const OdGeVector3d *pExtrusion=0)
 
void setDeviation(const OdGeDoubleArray &deviations)
 
virtual void polylineProc(OdInt32 numPoints, const OdGePoint3d *vertexList, const OdGeVector3d *pNormal=0, const OdGeVector3d *pExtrusion=0, OdGsMarker baseSubEntMarker=-1)
 
OdGiVisibility polylineOutEdgeVisibility() const
 
virtual void circleProc(const OdGePoint3d ¢er, double radius, const OdGeVector3d &normal, const OdGeVector3d *pExtrusion=0)
 
virtual void edgeProc(const OdGiEdge2dArray &edges, const OdGeMatrix3d *pXform=0)
 
virtual void initTexture(const OdGePoint3d &origin, const OdGeVector3d &u, const OdGeVector3d &v, const OdGiRasterImage *pImage, bool transparency, double brightness, double contrast, double fade)
 
virtual void generateMeshFaces(OdInt32 numRows, OdInt32 numColumns, const OdGiFaceData *pFaceData)
 
virtual void polylineOut(OdInt32 numPoints, const OdInt32 *vertexIndexList)
 
OdGeLineSeg2d * m_pLineSeg2d
 
virtual void ellipArcProc(const OdGeEllipArc3d &ellipArc, const OdGePoint3d *endPointOverrides=0, OdGiArcType arcType=kOdGiArcSimple, const OdGeVector3d *pExtrusion=0)
 
bool jointLineWithLine(const OdGiPolyline &lwBuf, OdInt32 LineSegNo1, OdInt32 LineSegNo2, OdGePoint3dArray &points)
 
virtual void uninitTexture()
 
void convertMeshToShell(OdInt32 rows, OdInt32 columns, const OdGePoint3d *pVertexList, const OdGiEdgeData *pEdgeData, const OdGiFaceData *pFaceData, const OdGiVertexData *pVertexData)
 
virtual void ttfPolyDrawProc(OdInt32 numVertices, const OdGePoint3d *vertexList, OdInt32 faceListSize, const OdInt32 *faceList, const OdUInt8 *pBezierTypes, const OdGiFaceData *pFaceData=0)
 
~OdGiGeometrySimplifier()
 
bool fillMode(bool &drawEdges)
 
GLint GLenum GLsizei width
 
GLuint GLsizei GLsizei * length
 
OdGeVector3d * m_pFillNormal
 
OdGiSubEntityTraits * m_pTraits
 
void set(OdDb::LineWeight lweight, OdGiFillType fillType, const OdGeVector3d *fillNormal)
 
OdGeVector3d m_fillNormal
 
OdDb::LineWeight m_lweight
 
OdGiConveyorContext * m_pDrawCtx
 
OdGiFillData(OdGiConveyorContext *pDrawCtx, OdGiSubEntityTraits *pTraits, OdDb::LineWeight lweight=OdDb::kLnWt000, OdGiFillType fillType=kOdGiFillNever)