⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 charset.cpp

📁 一个更为先进的嵌入式操作系统.采用RMS线程调度算法,具有信号量等同步对象.亦包括GUI. 通过该系统您可以极大知道Windows的内部秘密.
💻 CPP
字号:
#include "gos.h"
#include "charset.h"

static const BYTE m_fntEngDat[][16]={
	{0x00,0x00,0x00,0x18,0x3C,0x3C,0x3C,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00},//! 21
	{0x00,0x00,0x00,0x66,0x66,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//" 22
	{0x00,0x00,0x00,0x6C,0x6C,0xFE,0x6C,0x6C,0x6C,0xFE,0x6C,0x6C,0x00,0x00,0x00,0x00},//# 23
	{0x00,0x18,0x18,0x3C,0x66,0x06,0x0C,0x18,0x30,0x60,0x66,0x3C,0x18,0x18,0x00,0x00},//$ 24
	{0x00,0x00,0x0E,0x1B,0x5B,0x6E,0x30,0x18,0x0C,0x76,0xDA,0xD8,0x70,0x00,0x00,0x00},//% 25
	{0x00,0x00,0x00,0x1C,0x36,0x36,0x1C,0x06,0xF6,0x66,0x66,0xDC,0x00,0x00,0x00,0x00},//& 26
	{0x00,0x00,0x00,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//' 27
	{0x00,0x00,0x00,0x30,0x18,0x18,0x0C,0x0C,0x0C,0x0C,0x0C,0x18,0x18,0x30,0x00,0x00},//( 28
	{0x00,0x00,0x00,0x0C,0x18,0x18,0x30,0x30,0x30,0x30,0x30,0x18,0x18,0x0C,0x00,0x00},//) 29
	{0x00,0x00,0x00,0x00,0x00,0x6C,0x38,0xFE,0x38,0x6C,0x00,0x00,0x00,0x00,0x00,0x00},//* 2A
	{0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x7E,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00},//+ 2B
	{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x38,0x30,0x18,0x00,0x00},//, 2C
	{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//- 2D
	{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x38,0x00,0x00,0x00,0x00},//. 2E
	{0x00,0x00,0x00,0x60,0x60,0x30,0x30,0x18,0x18,0x0C,0x0C,0x06,0x06,0x00,0x00,0x00},/// 2F
	{0x00,0x00,0x00,0x78,0xCC,0xEC,0xEC,0xCC,0xDC,0xDC,0xCC,0x78,0x00,0x00,0x00,0x00},//0 30
	{0x00,0x00,0x00,0x30,0x38,0x3E,0x30,0x30,0x30,0x30,0x30,0x30,0x00,0x00,0x00,0x00},//1 31
	{0x00,0x00,0x00,0x3C,0x66,0x66,0x60,0x30,0x18,0x0C,0x06,0x7E,0x00,0x00,0x00,0x00},//2 32
	{0x00,0x00,0x00,0x3C,0x66,0x66,0x60,0x38,0x60,0x66,0x66,0x3C,0x00,0x00,0x00,0x00},//3 33
	{0x00,0x00,0x00,0x0C,0x0C,0x6C,0x6C,0x6C,0x66,0xFE,0x60,0x60,0x00,0x00,0x00,0x00},//4 34
	{0x00,0x00,0x00,0x7E,0x06,0x06,0x06,0x3E,0x60,0x60,0x30,0x1E,0x00,0x00,0x00,0x00},//5 35
	{0x00,0x00,0x00,0x38,0x18,0x0C,0x3E,0x66,0x66,0x66,0x66,0x3C,0x00,0x00,0x00,0x00},//6 36
	{0x00,0x00,0x00,0x7E,0x60,0x30,0x30,0x18,0x18,0x0C,0x0C,0x0C,0x00,0x00,0x00,0x00},//7 37
	{0x00,0x00,0x00,0x3C,0x66,0x66,0x6E,0x3C,0x76,0x66,0x66,0x3C,0x00,0x00,0x00,0x00},//8 38
	{0x00,0x00,0x00,0x3C,0x66,0x66,0x66,0x66,0x7C,0x30,0x18,0x1C,0x00,0x00,0x00,0x00},//9 39
	{0x00,0x00,0x00,0x00,0x00,0x38,0x38,0x00,0x00,0x00,0x38,0x38,0x00,0x00,0x00,0x00},//: 3A
	{0x00,0x00,0x00,0x00,0x00,0x38,0x38,0x00,0x00,0x00,0x38,0x38,0x30,0x18,0x00,0x00},//; 3B
	{0x00,0x00,0x00,0x60,0x30,0x18,0x0C,0x06,0x0C,0x18,0x30,0x60,0x00,0x00,0x00,0x00},//< 3C
	{0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//= 3D
	{0x00,0x00,0x00,0x06,0x0C,0x18,0x30,0x60,0x30,0x18,0x0C,0x06,0x00,0x00,0x00,0x00},//> 3E
	{0x00,0x00,0x00,0x3C,0x66,0x66,0x30,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00},//? 3F
	{0x00,0x00,0x00,0x7E,0xC3,0xC3,0xF3,0xDB,0xDB,0xF3,0x03,0xFE,0x00,0x00,0x00,0x00},//@ 40
	{0x00,0x00,0x00,0x18,0x3C,0x66,0x66,0x66,0x7E,0x66,0x66,0x66,0x00,0x00,0x00,0x00},//A 41
	{0x00,0x00,0x00,0x3E,0x66,0x66,0x66,0x3E,0x66,0x66,0x66,0x3E,0x00,0x00,0x00,0x00},//B 42
	{0x00,0x00,0x00,0x3C,0x66,0x66,0x06,0x06,0x06,0x66,0x66,0x3C,0x00,0x00,0x00,0x00},//C 43
	{0x00,0x00,0x00,0x1E,0x36,0x66,0x66,0x66,0x66,0x66,0x36,0x1E,0x00,0x00,0x00,0x00},//D 44
	{0x00,0x00,0x00,0x7E,0x06,0x06,0x06,0x3E,0x06,0x06,0x06,0x7E,0x00,0x00,0x00,0x00},//E 45
	{0x00,0x00,0x00,0x7E,0x06,0x06,0x06,0x3E,0x06,0x06,0x06,0x06,0x00,0x00,0x00,0x00},//F 46
	{0x00,0x00,0x00,0x3C,0x66,0x66,0x06,0x06,0x76,0x66,0x66,0x7C,0x00,0x00,0x00,0x00},//G 47
	{0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x7E,0x66,0x66,0x66,0x66,0x00,0x00,0x00,0x00},//H 48
	{0x00,0x00,0x00,0x3C,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00},//I 49
	{0x00,0x00,0x00,0x60,0x60,0x60,0x60,0x60,0x60,0x66,0x66,0x3C,0x00,0x00,0x00,0x00},//J 4A
	{0x00,0x00,0x00,0x66,0x66,0x36,0x36,0x1E,0x36,0x36,0x66,0x66,0x00,0x00,0x00,0x00},//K 4B
	{0x00,0x00,0x00,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x7E,0x00,0x00,0x00,0x00},//L 4C
	{0x00,0x00,0x00,0xC6,0xC6,0xEE,0xD6,0xD6,0xD6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00},//M 4D
	{0x00,0x00,0x00,0xC6,0xC6,0xCE,0xDE,0xF6,0xE6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00},//N 4E
	{0x00,0x00,0x00,0x3C,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x3C,0x00,0x00,0x00,0x00},//O 4F
	{0x00,0x00,0x00,0x3E,0x66,0x66,0x66,0x3E,0x06,0x06,0x06,0x06,0x00,0x00,0x00,0x00},//P 50
	{0x00,0x00,0x00,0x3C,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x3C,0x30,0x60,0x00,0x00},//Q 51
	{0x00,0x00,0x00,0x3E,0x66,0x66,0x66,0x3E,0x36,0x66,0x66,0x66,0x00,0x00,0x00,0x00},//R 52
	{0x00,0x00,0x00,0x3C,0x66,0x06,0x0C,0x18,0x30,0x60,0x66,0x3C,0x00,0x00,0x00,0x00},//S 53
	{0x00,0x00,0x00,0x7E,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00},//T 54
	{0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x3C,0x00,0x00,0x00,0x00},//U 55
	{0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x3C,0x18,0x00,0x00,0x00,0x00},//V 56
	{0x00,0x00,0x00,0xC6,0xC6,0xC6,0xD6,0xD6,0xD6,0x6C,0x6C,0x6C,0x00,0x00,0x00,0x00},//W 57
	{0x00,0x00,0x00,0x66,0x66,0x2C,0x18,0x18,0x34,0x66,0x66,0x66,0x00,0x00,0x00,0x00},//X 58
	{0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x3C,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00},//Y 59
	{0x00,0x00,0x00,0x7E,0x60,0x60,0x30,0x18,0x0C,0x06,0x06,0x7E,0x00,0x00,0x00,0x00},//Z 5A
	{0x00,0x00,0x00,0x3C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x3C,0x00},//[ 5B
	{0x00,0x00,0x00,0x06,0x06,0x0C,0x0C,0x18,0x18,0x30,0x30,0x60,0x60,0x00,0x00,0x00},//\ 5C
	{0x00,0x00,0x00,0x3C,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x3C,0x00},//] 5D
	{0x00,0x18,0x3C,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//^ 5E
	{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00},//_ 5F
	{0x00,0x1C,0x18,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//` 60
	{0x00,0x00,0x00,0x00,0x00,0x3C,0x60,0x60,0x7C,0x66,0x66,0x7C,0x00,0x00,0x00,0x00},//a 61
	{0x00,0x00,0x00,0x06,0x06,0x3E,0x66,0x66,0x66,0x66,0x66,0x3E,0x00,0x00,0x00,0x00},//b 62
	{0x00,0x00,0x00,0x00,0x00,0x3C,0x66,0x06,0x06,0x06,0x66,0x3C,0x00,0x00,0x00,0x00},//c 63
	{0x00,0x00,0x00,0x60,0x60,0x7C,0x66,0x66,0x66,0x66,0x66,0x7C,0x00,0x00,0x00,0x00},//d 64
	{0x00,0x00,0x00,0x00,0x00,0x3C,0x66,0x66,0x7E,0x06,0x06,0x3C,0x00,0x00,0x00,0x00},//e 65
	{0x00,0x00,0x00,0x78,0x0C,0x0C,0x0C,0x7E,0x0C,0x0C,0x0C,0x0C,0x00,0x00,0x00,0x00},//f 66
	{0x00,0x00,0x00,0x00,0x00,0x7C,0x66,0x66,0x66,0x66,0x66,0x7C,0x60,0x60,0x3E,0x00},//g 67
	{0x00,0x00,0x00,0x06,0x06,0x3E,0x66,0x66,0x66,0x66,0x66,0x66,0x00,0x00,0x00,0x00},//h 68
	{0x00,0x00,0x18,0x18,0x00,0x1E,0x18,0x18,0x18,0x18,0x18,0x7E,0x00,0x00,0x00,0x00},//i 69
	{0x00,0x00,0x30,0x30,0x00,0x3C,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x1E,0x00},//j 6A
	{0x00,0x00,0x00,0x06,0x06,0x66,0x66,0x36,0x1E,0x36,0x66,0x66,0x00,0x00,0x00,0x00},//k 6B
	{0x00,0x00,0x00,0x1E,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x7E,0x00,0x00,0x00,0x00},//l 6C
	{0x00,0x00,0x00,0x00,0x00,0x7E,0xD6,0xD6,0xD6,0xD6,0xD6,0xC6,0x00,0x00,0x00,0x00},//m 6D
	{0x00,0x00,0x00,0x00,0x00,0x3E,0x66,0x66,0x66,0x66,0x66,0x66,0x00,0x00,0x00,0x00},//n 6E
	{0x00,0x00,0x00,0x00,0x00,0x3C,0x66,0x66,0x66,0x66,0x66,0x3C,0x00,0x00,0x00,0x00},//o 6F
	{0x00,0x00,0x00,0x00,0x00,0x3E,0x66,0x66,0x66,0x66,0x66,0x3E,0x06,0x06,0x06,0x00},//p 70
	{0x00,0x00,0x00,0x00,0x00,0x7C,0x66,0x66,0x66,0x66,0x66,0x7C,0x60,0x60,0x60,0x00},//q 71
	{0x00,0x00,0x00,0x00,0x00,0x66,0x76,0x0E,0x06,0x06,0x06,0x06,0x00,0x00,0x00,0x00},//r 72
	{0x00,0x00,0x00,0x00,0x00,0x7C,0x06,0x06,0x3C,0x60,0x60,0x3E,0x00,0x00,0x00,0x00},//s 73
	{0x00,0x00,0x00,0x0C,0x0C,0x7E,0x0C,0x0C,0x0C,0x0C,0x0C,0x78,0x00,0x00,0x00,0x00},//t 74
	{0x00,0x00,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x7C,0x00,0x00,0x00,0x00},//u 75
	{0x00,0x00,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x3C,0x18,0x00,0x00,0x00,0x00},//v 76
	{0x00,0x00,0x00,0x00,0x00,0xC6,0xD6,0xD6,0xD6,0xD6,0x6C,0x6C,0x00,0x00,0x00,0x00},//w 77
	{0x00,0x00,0x00,0x00,0x00,0x66,0x66,0x3C,0x18,0x3C,0x66,0x66,0x00,0x00,0x00,0x00},//x 78
	{0x00,0x00,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x3C,0x30,0x18,0x0F,0x00},//y 79
	{0x00,0x00,0x00,0x00,0x00,0x7E,0x60,0x30,0x18,0x0C,0x06,0x7E,0x00,0x00,0x00,0x00},//z 7A
	{0x00,0x00,0x00,0x30,0x18,0x18,0x18,0x0C,0x06,0x0C,0x18,0x18,0x18,0x30,0x00,0x00},//{ 7B
	{0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00},//| 7C
	{0x00,0x00,0x00,0x0C,0x18,0x18,0x18,0x30,0x60,0x30,0x18,0x18,0x18,0x0C,0x00,0x00},//} 7D
	{0x00,0x00,0x00,0x8E,0xDB,0x71,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//~ 7E
};
static const CHARSECT m_fntEngInd[]={{'!','~',m_fntEngDat}};
const FONTFACE g_fntEng={'en'|FONTTYPE_MONOSPACED,m_fntEngInd,1,8,16,16};


DWORD CCharSet::GetCharType(DWORD nCode)
{
	if(nCode>='a' && nCode<='z')
		return 0; 
	if(nCode>='A' && nCode<='Z')
		return 0;
	return CHARTYPE_WORDBREAK;
}

DWORD CCharSet::ParseText(LPCTSTR& pText)
{
	return *pText++;
}

DWORD CCharSet::Translate(DWORD nCode,BOOL bToSystem)
{
	return nCode;
}

int CCharSet::GetTextLength(LPCTSTR pText)
{
	if(pText)
	{
		int i=0;
		while(ParseText(pText))i++;
	}
	return 0;
}

CFontFace::CFontFace()
{
	m_ff=g_fntEng;
}

int CFontFace::GetCharWidth(DWORD nCharCode,int nFontSize)
{
	CSize size;
	size.cx=m_ff.nWidth;
	size.cy=m_ff.nHeight;
	if(nFontSize!=size.cy)
	{
		size.cx*=nFontSize;
		size.cx+=size.cy>>1;
		size.cx/=size.cy;
	}
	return size.cx;
}

PBYTE CFontFace::FindChar(DWORD nCharCode)
{
	int nOffset,i=m_ff.nSectSize;
	while(i--)
	{
		if(nCharCode>=m_ff.pSect[i].nMinChar && 
			nCharCode<=m_ff.pSect[i].nMaxChar)
		{
			nOffset=nCharCode-m_ff.pSect[i].nMinChar;
			nOffset*=m_ff.nFontBytes;
			return PBYTE(m_ff.pSect[i].pData)+nOffset;
		}
	}
	return NULL;
}

void CFontFace::DrawFont(FFDRAWARG& pv)
{
	CROP* pBkRop=pv.pBkRop;
	int x,w,nBit,nData,dx;

	pv.y*=m_ff.nWidth;

	if(pv.sd.cx==pv.sfd.cx && pv.sd.cy==pv.sfd.cy)
	{
		while(--pv.h>=0)
		{
			for(x=pv.y+pv.x,w=pv.w;w>0;x++,w--)
			{
				nData=x>>3;
				nBit=1<<(x&7);
				nData=*(pv.pData+nData);
				if(nData & nBit)
					pv.rp.ROP(pv.rp);
				else if(pBkRop)
				{
					pBkRop->MoveTo(pv.rp.GetPosition());
					pBkRop->ROP(*pBkRop);
				}
				pv.rp.StepCol();
			}
			pv.nPos=pv.rp.StepRow(pv.nPos);
			pv.y+=m_ff.nWidth;
		}
	}
	else
	{
		while(--pv.h>=0)
		{
			for(dx=pv.nDxSum,x=pv.y+pv.x,w=pv.w;w>0;w--)
			{
				nData=x>>3;
				nBit=1<<(x&7);
				nData=*(pv.pData+nData);
				if(nData & nBit)
					pv.rp.ROP(pv.rp);
				else if(pBkRop)
				{
					pBkRop->MoveTo(pv.rp.GetPosition());
					pBkRop->ROP(*pBkRop);
				}
				pv.rp.StepCol();
				dx+=pv.sfd.cx;
				while(dx>=0)
				{
					x++;
					dx-=pv.sd.cx;
				}
			}
			pv.nPos=pv.rp.StepRow(pv.nPos);
			pv.nDySum+=pv.sfd.cy;
			while(pv.nDySum>=0)
			{
				pv.y+=m_ff.nWidth;
				pv.nDySum-=pv.sd.cy;
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -