You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

94 lines
3.2 KiB
C++

//////////////////////////////////////////////////////////////////////////////
//文件 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<EpsState,EpsState> m_listState;
CFile* m_pFile;
CString m_strDefaultFontName;
int dummycnt;
double gouraudeps;
};
};
using namespace NFormatWriter;