📄 sdrv_putchar.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)
#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
//********************************************************************************/
non_banked bool Sdrv_PutChar(int code)
{
char charmode;
bool putchar_result;
PutCharErrFlag = RESULT_PUTCHAR_OK; //默认为OK
Hdrv_SetDrawMode(DrawModeV_def); //把显示模式设置成竖向显示模式(与旧字库兼容)设置作图模式(横向还是纵向)
Sdrv_GetFontPoint(code, CharPointBuffer);//取点阵
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;
//Jerry Xie Add
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准备输出下区(下半个字)
//Jerry Xie Modify
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);
//坐标移到下一个字的左上角
region.x += ASCII_LARGE_WIDTH_DEF;
//region.y -= ASCII_LARGE_HEIGHT_DEF/2;
break;
case CharMode1616://16*16点阵模式(汉字)
//上面代码,更新下半个字
//设置字模输出的大小(上半个汉字)
region.width = CHINESE_WIDTH_DEF1; //16
region.height = CHINESE_HEIGHT_DEF1-8; //16-8=8
//Jerry Xie Add
region.y += CHINESE_HEIGHT_DEF1-8;//Y坐标加8准备输出下区(下半个汉字)
Hdrv_SetWindow(®ion);
//region.y-=4;
//把黑白字模转为彩色字模放在Buff中
//BlackCharToColor(CHINESE_WIDTH_DEF, CharPointBuffer);
putCharChFlag=8;//4
BlackCharToColor(CHINESE_WIDTH_DEF1, CharPointBuffer + CHINESE_WIDTH_DEF1); //change by ybfu 4 +8
putCharChFlag=8;
//把暂时显存区的数据送到LCM
Hdrv_BuffDataTrans(DisplayBuffer, (CHINESE_HEIGHT_DEF1-8)*CHINESE_WIDTH_DEF1*2);
//region.y += CHINESE_HEIGHT_DEF1-8;//Y坐标加8准备输出下区(下半个汉字) 8
//Jerry Xie Modify
region.y -= CHINESE_HEIGHT_DEF1-8;//Y坐标加8准备输出下区(下半个汉字)
region.height = CHINESE_HEIGHT_DEF1-8;//4
Hdrv_SetWindow(®ion);
//BlackCharToColor(CHINESE_WIDTH_DEF, CharPointBuffer + CHINESE_WIDTH_DEF);
BlackCharToColor(CHINESE_WIDTH_DEF1, CharPointBuffer);
//把暂时显存区的数据送到LCM
Hdrv_BuffDataTrans(DisplayBuffer, (CHINESE_HEIGHT_DEF1-8)*CHINESE_WIDTH_DEF1*2);
//坐标移到下一个字的左上角
region.x += CHINESE_WIDTH_DEF1;
//region.y -= CHINESE_HEIGHT_DEF1/2;
break;
default:
break;
}
Hdrv_SetDrawMode(DrawModeH_def); //把显示模式设置成横向显示模
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -