133 lines
3.5 KiB
C++
133 lines
3.5 KiB
C++
#ifndef VECTORFONT_H
|
||
#define VECTORFONT_H
|
||
|
||
#include <QObject>
|
||
#include <QPoint>
|
||
#include "typedef.h"
|
||
|
||
class CChinese_char
|
||
{
|
||
public:
|
||
WORD m_wCharCode;
|
||
WORD m_wBytes;
|
||
DWORD m_dwPosition;
|
||
|
||
CChinese_char()
|
||
{
|
||
m_wCharCode=0;
|
||
m_wBytes=0;
|
||
m_dwPosition=0;
|
||
}
|
||
CChinese_char(const CChinese_char &a)
|
||
{
|
||
m_wCharCode=a.m_wCharCode;
|
||
m_wBytes=a.m_wBytes;
|
||
m_dwPosition=a.m_dwPosition;
|
||
}
|
||
CChinese_char(WORD wCharCode,WORD wBytes,DWORD dwPosition)
|
||
{
|
||
m_wCharCode=wCharCode;
|
||
m_wBytes=wBytes;
|
||
m_dwPosition=dwPosition;
|
||
}
|
||
~CChinese_char() {}
|
||
CChinese_char operator=(const CChinese_char &a)
|
||
{
|
||
m_wCharCode=a.m_wCharCode;
|
||
m_wBytes=a.m_wBytes;
|
||
m_dwPosition=a.m_dwPosition;
|
||
return *this;
|
||
}
|
||
};
|
||
|
||
class CEnglish_char
|
||
{
|
||
public:
|
||
WORD m_wCharCode;
|
||
WORD m_wBytes;
|
||
WORD m_wWidth;
|
||
DWORD m_dwPosition;
|
||
|
||
CEnglish_char()
|
||
{
|
||
m_wCharCode=0;
|
||
m_wBytes=0;
|
||
m_wWidth=0;
|
||
m_dwPosition=0;
|
||
}
|
||
CEnglish_char(const CEnglish_char &a)
|
||
{
|
||
m_wCharCode=a.m_wCharCode;
|
||
m_wBytes=a.m_wBytes;
|
||
m_wWidth=a.m_wWidth;
|
||
m_dwPosition=a.m_dwPosition;
|
||
}
|
||
CEnglish_char(WORD wCharCode,WORD wBytes,WORD wWidth,DWORD dwPosition)
|
||
{
|
||
m_wCharCode=wCharCode;
|
||
m_wBytes=wBytes;
|
||
m_wWidth=wWidth;
|
||
m_dwPosition=dwPosition;
|
||
}
|
||
~CEnglish_char() {}
|
||
CEnglish_char operator=(const CEnglish_char &a)
|
||
{
|
||
m_wCharCode=a.m_wCharCode;
|
||
m_wBytes=a.m_wBytes;
|
||
m_wWidth=a.m_wWidth;
|
||
m_dwPosition=a.m_dwPosition;
|
||
return *this;
|
||
}
|
||
};
|
||
class VectorFont : public QObject
|
||
{
|
||
Q_OBJECT
|
||
public:
|
||
explicit VectorFont(QObject *parent = 0);
|
||
~VectorFont();
|
||
void IniVectorFont();
|
||
|
||
|
||
signals:
|
||
void siLineTo(bool bl,QPoint point);
|
||
void siMoveTo(bool bl,QPoint point);
|
||
|
||
public slots:
|
||
protected:
|
||
|
||
double m_iDPMM; //长度数据单位:m_iDPMM(每毫米点)
|
||
double m_dRake; //倾斜角(第1个字符原点到最后1个字符原点的连线的角度),单位:弧度
|
||
|
||
QString m_workPath;
|
||
|
||
//QList <CChinese_char> m_aChinese_char;
|
||
//QList <CEnglish_char> m_aEnglish_char;
|
||
CChinese_char *m_pChinese_char;
|
||
CEnglish_char *m_pEnglish_char;
|
||
int m_nChinese_char_count;
|
||
int m_nEnglish_char_count;
|
||
int m_nInternalLeading_E,m_nHeight_E,m_nDescent_E; //m_nHeight_E是windows中字体的Ascent-InternalLeading
|
||
int m_nHeight_C,m_nWidth_C;
|
||
public:
|
||
|
||
void PlotChar(QPoint ptPointLU,BYTE*pbyData,WORD wBytes,int nLeft,int nDown,int nFontScale);
|
||
QPoint CPToLP(QPoint ptCP,int nHeight,QPoint ptPointLU,double dSin,double dCos,double dScale);
|
||
void TextOutString(int x, int y, const char* lpszString, int nCount);
|
||
void Arc(int nLeftRect,int nTopRect,int nRightRect,int nBottomRect,int nXStartArc,int nYStartArc,int nXEndArc,int nYEndArc);
|
||
QPoint GetNextCoodinate(WORD wDirection,WORD wLength,QPoint ptPoint);
|
||
void MoveTo(QPoint ptPoint);
|
||
void MoveTo(long x,long y);
|
||
void LineTo(QPoint ptPoint);
|
||
void LineTo(long x,long y);
|
||
double angle_2(int startx,int starty,int endx,int endy);
|
||
bool CircleCR(double x1,double y1,double x2,double y2,double x3,double y3,double& cx,double& cy,double& cr);
|
||
|
||
double m_dFontHeight; //字的高度
|
||
double m_dFontAngle;//指定每行文本输出时相对于设备x轴的角度,其单位为1/10度
|
||
|
||
|
||
|
||
};
|
||
|
||
#endif // VECTORFONT_H
|