////////////////////////////////////////////////////////////////////////////// //文件 EpsWriter.h //主要功能: // 写EPS3.0格式类 // //程序编写: 2005-12-07 ///////////////////////////////////////////////////////////////////////////// #pragma once #include "DrawImage\ImageBase.h" namespace NFormatWriter { class CEpsWriter { public: typedef struct _EpsState { COLORREF curcol; //! current color COLORREF bkcurcol; double linewidth; //! current linewidth CString dash; //! current dash style LOGFONT m_font; //! current font } EpsState; public: CEpsWriter(void); virtual ~CEpsWriter(void); void WriteHeader(); void WriteFooter(); void WriteColorFill(void); void WriteColorString(); void PushState(); void PopState(); void SetFile(CFile* pFile); void SetCurrentColor(COLORREF col); void SetLineWidth(double width); void SetFont(long scale); void SetFont(const LOGFONT& logFont); void SetDefaultFontName(LPCTSTR lpszFontName); virtual void DrawArrow(double tailx, double taily, double tipx, double tipy, double tailthickness, double headthickness, double headlength, bool filled =true); virtual void DrawArrowAbs(double tailx, double taily, double dtipx, double dtipy, double tailthickness, double headthickness, double headlength, bool filled =true); void DrawImage(CImageBase* pImage, double x, double y, double cx, double cy); void DrawLine(double x1, double y1, double x2, double y2); void DrawRect(double llx, double lly, double urx, double ury, bool filled = false); void DrawLineStrip(int n, double* pX, double* pY, bool open = true, bool filled = false); void DrawStepStrip(int n, double* pX, double* pY, bool open = true, bool filled = false); void DrawBox(double llx, double lly, double dx, double dy, bool filled = false); void DrawCircle(double cx, double cy, double radius, bool filled = false); void DrawTriangle(double cx, double cy, double radius, bool filled = false); void DrawSquare(double cx, double cy, double radius, bool filled = false); void DrawTriangle(CPoint2D* pointThree, COLORREF* pColorThree, bool filled = false); void DrawBoxStrip(int n, double* pLlx, double* pLly, double dx, double dy, bool filed = false); void DrawCircleStrip(int n, double* pCx, double* pCy, double radius, bool filled = false); void DrawTriangleStrip(int n, double* pCx, double* pCy, double radius, bool filled = false); void DrawSquareStrip(int n, double* pCx, double* pCy, double radius, bool filled = false); void DrawGridHor(double llx, double urx, double lly, double ury,double dy); void DrawGridVer(double llx, double urx, double lly, double ury,double dx); void DrawText(double x, double y, const char* txt, DWORD dwAlignsH, double angle = 0); void DrawSurface(int nx, int ny, double llx, double lly, double dx, double dy, double* pColor); void DrawVectorField(int nx, int ny, double llx, double lly, double dx, double dy, double* pV, double lineWidth = 1); void WriteString(CString str); void AddComment(const char* str); CSize8 m_mapSize; protected: void InitState(); EpsState m_state; CList m_listState; CFile* m_pFile; CString m_strDefaultFontName; int dummycnt; double gouraudeps; }; }; using namespace NFormatWriter;