📄 fgdc.c
字号:
#include "fgdc.h"
/*Display Context-----------------------*/
UINT16 BackColor = 0, FrontColor = 3;
UINT16 DotBtwn = 4;
UINT16 kx=1, ky=1;
FFONT *pFontCur;
/*-------------------------------------*/
/*ASCII to GB Code*/
BYTE AscIdx[]="!″#$%&'()×+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[、]↑_`abcdefghijklmnopqrstuvwxyz{|}~";
BYTE Asc1 = '!';
/*Inner Use Function */
VOID Asc2Cchar ( BYTE *p, CCHAR *pcch );
/*Implement -------------------------------*/
VOID GdcInit ( void )
{
FontInit();
}
VOID GdcSelectFont ( UINT32 aFontID )
{
pFontCur = FontSelect ( aFontID );
}
VOID GdcEnlarge ( REGINT aKx, REGINT aKy )
{
kx = aKx;
ky = aKy;
}
VOID GdcRectangle ( REGINT x1, REGINT y1, REGINT x2, REGINT y2, REGINT color )
{
REGINT i;
for ( i= x1; i< x2; i++ ) GraphPutPixel (i, y1, color );
for ( i= x1; i< x2; i++ ) GraphPutPixel (i, y2, color );
for ( i= y1; i< y2; i++ ) GraphPutPixel (x1, i, color );
for ( i= y1; i< y2; i++ ) GraphPutPixel (x2, i, color );
}
VOID GdcClearBlock( REGINT x1, REGINT y1, REGINT x2, REGINT y2 )
{
REGINT i,j;
for ( i= y1; i< y2; i++ )
for ( j= x1; j< x2; j++ )
GraphPutPixel (j, i, BackColor );
}
VOID GdcDrawMatrix (BYTE *mat, int matsize, int x, int y, int color)
/* 依次:字模指针、 点阵大小、 起始坐标(x,y)、颜色*/
{
int i,j,k,n;
n = ( matsize - 1 ) / 8 + 1;
for(j=0; j<matsize; j++)
for(i=0; i<n; i++)
for(k=0; k<8; k++)
if(mat[j*n+i]&(0x80>>k)) /*测试为1的位则显示*/
GdcDrawDot(x+(i*8+k)*kx,y+j*ky,color);
else
GdcDrawDot(x+(i*8+k)*kx,y+j*ky,BackColor);
}
VOID GdcDrawDot ( REGINT x, REGINT y, REGINT aColor )
{
REGINT i,j;
for ( i=0; i < ky; i++ )
for ( j=0; j< kx; j++ )
GraphPutPixel(x+j,y+i,aColor);
}
VOID GdcDrawText (int ax, int ay, int color, const BYTE *pStr )
{
BYTE *p;
BYTE *pMatrix;
CCHAR cch;
int x,y;
p =(BYTE*) pStr;
x = ax;
y = ay;
while ( *p != '\0' )
{
if ( *p < ' ' )
{
p++;
}
else if ( *p == ' ' )
{
GdcClearBlock( x, y,
x+(pFontCur->MatSize*kx),
y+(pFontCur->MatSize*ky)
);
p++;
x += (pFontCur->MatSize*kx + DotBtwn);
}
else
{
if ( *p < 160 )
{
Asc2Cchar ( p, &cch );
p++;
}
else
{
cch.b[0] = *p++;
cch.b[1] = *p++;
}
pMatrix = FontGetMatrix (pFontCur, &cch);
GdcDrawMatrix ( pMatrix, pFontCur->MatSize, x, y, FrontColor );
x += (pFontCur->MatSize*kx + DotBtwn);
}
}
}
VOID Asc2Cchar ( BYTE *p, CCHAR *pcch )
{
BYTE * pa;
pa = AscIdx + ( *p - Asc1 ) * 2;
pcch->b[0] = *pa++;
pcch->b[1] = *pa;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -