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

📄 sdrv_charoutrect_latin1.c

📁 炬力方案176*132软件源码,适用于AK1025
💻 C
字号:
/*
********************************************************************************
*                       ACTOS
*                  ui dirver show picture
*
*                (c) Copyright 2002-2003, Actions Co,Ld.
*                        All Right Reserved
*
* File   : sdrv_charOutrect.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)



////*******************************************************************************/
///*
//** FUNCTION:     Sdrv_CharOutRect
//**
//** Description:  在指定的区域上打出一个字符,超出区域部分不显示,没有超出屏幕的部分将正常显示。
//**
//**  input
//**     code: 字符的码值
//**     CRregion: 要求输出的区域
//**     colcnt:   要求从汉字的哪一列开始输出   
//**  output
//**     bool: 当指定列数超出该字的总列数时返回FALSE,否则返回TRUE
//********************************************************************************/

non_banked bool Sdrv_CharOutRect(int code, int nextcode, region_t *CRregion, BYTE colcnt)
{
    char charmode;
    bool putchar_result;
    char tmpwidth;

    if (CRregion->width == NULL)
    {    
        return FALSE;
    }
    PutCharErrFlag = RESULT_PUTCHAR_OK; //默认为OK
    Hdrv_SetDrawMode(DrawModeV_def);    //把显示模式设置成竖向显示模式(与旧字库兼容)
    Sdrv_GetFontPoint(code, CharPointBuffer);//取点阵

    //charmode = CharMode0608;
    charmode = CheckCharMode(code);
    switch(charmode)
    {
    case CharMode0608://06*08点阵模式(ascii小字体)     

        if (colcnt >= 6)
        {//计数值超出
            Hdrv_SetDrawMode(DrawModeH_def);    //把显示模式设置成横向显示模
            return FALSE;
        }
        //确定输出区域
        region.x = CRregion->x;
        region.y = CRregion->y;
        region.width = CRregion->width;
        region.height = ASCII_SMALL_HEIGHT_DEF;       
        
        Hdrv_SetWindow(&region);

        //取最小的值.
        tmpwidth = (CRregion->width < (6-colcnt))? (CRregion->width):(6-colcnt); 

        //把黑白字模转为彩色字模放在Buff中
        BlackCharToColor(ASCII_SMALL_WIDTH_DEF, CharPointBuffer);
        //把暂时显存区的数据送到LCM
        Hdrv_BuffDataTrans(DisplayBuffer+colcnt*ASCII_SMALL_HEIGHT_DEF*2, 
                                        ASCII_SMALL_HEIGHT_DEF*tmpwidth*2);

        //region.x += ASCII_SMALL_WIDTH_DEF;//坐标移到下一个字的左上角
        break;
        
    case CharMode0816://08*16点阵模式(ascii大字体)
        //设置字模输出的大小//上半个字
        //region.width = ASCII_LARGE_WIDTH_DEF;
        if (colcnt >= 8)
        {//计数值超出
            Hdrv_SetDrawMode(DrawModeH_def);    //把显示模式设置成横向显示模
            return FALSE;
        }
        //确定输出区域
        region.x = CRregion->x;
        region.y = CRregion->y;
        region.width = CRregion->width;
        region.height = ASCII_LARGE_HEIGHT_DEF/2;
        region.y += ASCII_LARGE_HEIGHT_DEF/2;//Y坐标加8准备输出下区(下半个字) 
        
        Hdrv_SetWindow(&region);

        //取最小的值.
        tmpwidth = (CRregion->width < (8-colcnt))? (CRregion->width):(8-colcnt);

        //把黑白字模转为彩色字模放在Buff中(上区)
        //BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer);
        BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer + ASCII_LARGE_WIDTH_DEF);
        //把暂时显存区的数据送到LCM
        Hdrv_BuffDataTrans(DisplayBuffer+colcnt*(ASCII_LARGE_HEIGHT_DEF/2)*2,
                                        (ASCII_LARGE_HEIGHT_DEF/2)*tmpwidth*2);

        region.y -= ASCII_LARGE_HEIGHT_DEF/2;//Y坐标加8准备输出下区(下半个字)
        
        Hdrv_SetWindow(&region);
        
        //BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer + ASCII_LARGE_WIDTH_DEF);
        BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer);
        //把暂时显存区的数据送到LCM
        Hdrv_BuffDataTrans(DisplayBuffer+colcnt*(ASCII_LARGE_HEIGHT_DEF/2)*2, 
                                        (ASCII_LARGE_HEIGHT_DEF/2)*tmpwidth*2);
        //坐标移到下一个字的左上角
        //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 + -