📄 sdrv_putchar_thai.c
字号:
/*
********************************************************************************
* ACTOS
* ui dirver show picture
*
* (c) Copyright 2002-2003, Actions Co,Ld.
* All Right Reserved
*
* File : PutChar.c
* By : Rcmai
* Version: 1> v1.00 first version 10/17/2003 10:46PM
********************************************************************************
*/
#include "display.h"
#include "Drv_S6B33B0A.h"
//#pragma codeseg(UI_RCODE)
extern char next_thai_flag;
char thai_flag=0;
#pragma memory=constseg(BBS_PUTS)
#pragma memory=default
#pragma memory=dataseg(BBD_PUTS)
#pragma memory=default
#pragma codeseg(BBC_PUTS)
//non_banked char CheckCharMode(int code);
//bool CheckDisplaySpace(char codemod);
////*******************************************************************************/
///*
//** FUNCTION: PutChar
//**
//** Description: 在屏幕上打出一个字符,并打完后当前指针自动跳到下一个汉字的左上角
//**
//** input
//** code: 字符的码值
//**
//** output
//** none
//********************************************************************************/
//extern non_banked char chech_symple(unsigned char code);
non_banked bool Sdrv_PutChar(int code)
{
char charmode;
bool putchar_result;
///-int i;
///-char *p1,*p2;
PutCharErrFlag = RESULT_PUTCHAR_OK; //默认为OK
Hdrv_SetDrawMode(DrawModeV_def); //把显示模式设置成竖向显示模式(与旧字库兼容)
Sdrv_GetFontPoint(code, CharPointBuffer);//取点阵
/*
if(code == 0xd1 || (code >=0xd4 && code<0xdb) ||(code >=0xe7 && code<0xef))
thai_flag = 0;
else
thai_flag = 1;
p1 = back_CharPointBuffer;
p2 = CharPointBuffer;
if(thai_flag == 1)
{
for(i=0;i<32;i++)
{
*p1++ = *p2++;
}
if(next_thai_flag==0)
return TRUE;
}
else
{
for(i=0;i<32;i++)
*p2++ |= *p1++;
}
*/
Sdrv_check_symble(code);
Sdrv_add_image();
charmode = CheckCharMode(code);
putchar_result = CheckDisplaySpace(charmode);
if (!putchar_result)
{
Hdrv_SetDrawMode(DrawModeH_def); //把显示模式设置成横向显示模式
return putchar_result;//如显示范围不对,则不做显示动作而直接退出
}
switch(charmode)
{
case CharMode0608://06*08点阵模式(ascii小字体)
//设置字模输出的大小
region.width = ASCII_SMALL_WIDTH_DEF;
region.height = ASCII_SMALL_HEIGHT_DEF;
Hdrv_SetWindow(®ion);
//把黑白字模转为彩色字模放在Buff中
BlackCharToColor(ASCII_SMALL_WIDTH_DEF, CharPointBuffer);
//把暂时显存区的数据送到LCM
Hdrv_BuffDataTrans(DisplayBuffer, ASCII_SMALL_HEIGHT_DEF*ASCII_SMALL_WIDTH_DEF*2);
region.x += ASCII_SMALL_WIDTH_DEF;//坐标移到下一个字的左上角
break;
case CharMode0816://08*16点阵模式(ascii大字体)
//设置字模输出的大小//上半个字
region.width = ASCII_LARGE_WIDTH_DEF;
region.height = ASCII_LARGE_HEIGHT_DEF/2;
region.y += ASCII_LARGE_HEIGHT_DEF/2;//Y坐标加8准备输出下区(下半个字)
Hdrv_SetWindow(®ion);
//把黑白字模转为彩色字模放在Buff中(上区)
//BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer);
BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer + ASCII_LARGE_WIDTH_DEF); //change by ybfu
//把暂时显存区的数据送到LCM
Hdrv_BuffDataTrans(DisplayBuffer, ASCII_LARGE_WIDTH_DEF*(ASCII_LARGE_HEIGHT_DEF/2)*2);
region.y -= ASCII_LARGE_HEIGHT_DEF/2;//Y坐标加8准备输出下区(下半个字)
Hdrv_SetWindow(®ion);
//BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer + ASCII_LARGE_WIDTH_DEF);
BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer);
//把暂时显存区的数据送到LCM
Hdrv_BuffDataTrans(DisplayBuffer, ASCII_LARGE_WIDTH_DEF*(ASCII_LARGE_HEIGHT_DEF/2)*2);
//坐标移到下一个字的左上角
if(next_thai_flag)
{
region.x += ASCII_LARGE_WIDTH_DEF;
//region.y -= ASCII_LARGE_HEIGHT_DEF/2;
}
break;
default:
break;
}
Hdrv_SetDrawMode(DrawModeH_def); //把显示模式设置成横向显示模
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -