j_font.c

来自「基于μCGUI的嵌入式图形界面设计」· C语言 代码 · 共 96 行

C
96 行
字号
/******************************************************************************
									J_GUI
						The JJJ's Graphics Interface Library
								
					 	COPYRIGHT (c) JJJSTUDIO, 2006 BY JJJ.
                       		--  ALL RIGHTS RESERVED  --
  
   	Filename:	J_Font.c
   	Author	:   Jianjun Jiang 	
   	Created	:   2006/02/3
   	Website	:	http://www.jjjbbs.com
   	Modified:	NO
   	Revision: 	1.00
   	Readme	:	Font...........
******************************************************************************/

extern J_FONT J_Font;

void J_TextOut(UINT16 x,UINT16 y,UINT8 *Str)
{
	UINT32 h,n,i,j,k=0;
   	UINT32 Offset;
   	
	while(*Str!='\0')
   	{
		if(*Str < 0x80)
		{
			n = (J_Font.ASCIICodePixelW/8+((J_Font.ASCIICodePixelW%8)?1:0));
			Offset = (*Str) * J_Font.ASCIICodePixelH*n;
         	for(j=0;j<J_Font.ASCIICodePixelH;j++)
         	{
         		for(i=0;i<J_Font.ASCIICodePixelW;i++)
         		{
              		if(J_Font.ASCIICode[Offset+j*n+i/8]&(0x80>>(i%8)))
                  		J_LCDSetPixel(x*J_Font.ASCIICodePixelW+k+i,(J_Font.ASCIICodePixelH+J_Font.LineSpacing)*y+j,J_Font.FrontColor);
               		else
               			J_LCDSetPixel(x*J_Font.ASCIICodePixelW+k+i,(J_Font.ASCIICodePixelH+J_Font.LineSpacing)*y+j,J_Font.BackColor);
         		}
         		for(h=0;h<J_Font.RowSpacing;h++)
         			J_LCDSetPixel(x*J_Font.ASCIICodePixelW+k+i+h,(J_Font.ASCIICodePixelH+J_Font.LineSpacing)*y+j,J_Font.BackColor);	
         	}
         	Str++;
         	k += (J_Font.ASCIICodePixelW + J_Font.RowSpacing);
        }
		else
		{
			n = (J_Font.HZKCodePixelW/8+((J_Font.HZKCodePixelW%8)?1:0));
			Offset = (94*(*Str-0xA0-1) + (*(Str+1)-0xA0-1))*J_Font.HZKCodePixelH*n;
         	for(j=0;j<J_Font.HZKCodePixelH;j++)
       		{
         		for(i=0;i<J_Font.HZKCodePixelW;i++)
         		{
        			if(J_Font.HZKCode[Offset+j*n+i/8]&(0x80>>(i%8)))
	            		J_LCDSetPixel(x*J_Font.HZKCodePixelW+k+i,(J_Font.HZKCodePixelH+J_Font.LineSpacing)*y+j,J_Font.FrontColor);
               		else
                  		J_LCDSetPixel(x*J_Font.HZKCodePixelW+k+i,(J_Font.HZKCodePixelH+J_Font.LineSpacing)*y+j,J_Font.BackColor);
         		}
    			for(h=0;h<J_Font.RowSpacing;h++)
         			J_LCDSetPixel(x*J_Font.HZKCodePixelW+k+i+h,(J_Font.HZKCodePixelH+J_Font.LineSpacing)*y+j,J_Font.BackColor);	
         	}
        	Str+=2;
         	k += (J_Font.HZKCodePixelW + J_Font.RowSpacing);
		}
	}
}

void J_SetASCIIFont(UINT8 * Font,UINT8 PixelH,UINT8 PixelW)
{
	J_Font.ASCIICodePixelH = PixelH;
	J_Font.ASCIICodePixelW = PixelW;
	J_Font.ASCIICode = Font;
}

void J_SetHZKFont(UINT8 * Font,UINT8 PixelH,UINT8 PixelW)
{
	J_Font.HZKCodePixelH = PixelH;
	J_Font.HZKCodePixelW = PixelW;
	J_Font.HZKCode = Font;
}

void J_SetFontColor(TCOLOR Color)
{
	J_Font.FrontColor = Color;
}

void J_SetFontBkColor(TCOLOR Color)
{
	J_Font.BackColor = Color;
}

void J_SetFontSpacing(UINT8 LineSpacing,UINT8 RowSpacing)
{
	J_Font.LineSpacing = LineSpacing;	
	J_Font.RowSpacing = RowSpacing;
}

⌨️ 快捷键说明

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