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

📄 sdrv_puts_latin1.c

📁 炬力方案176*132软件源码,适用于AK1025
💻 C
字号:
/*
********************************************************************************
*                       ACTOS
*                  ui dirver show picture
*
*                (c) Copyright 2002-2003, Actions Co,Ld.
*                        All Right Reserved
*
* File   : Sdrv_PutS.c
* By     : Rcmai
* Version: 1> v1.00     first version     10/17/2003 10:46PM
********************************************************************************
*/                  
#include "display.h"   
#include "Drv_S6B33B0A.h"

#pragma memory=constseg(BBS_PUTS)
#pragma memory=default

#pragma memory=dataseg(BBD_PUTS)
#pragma memory=default

#pragma codeseg(BBC_PUTS)

//BYTE lineNum_sav;//行号记录

//如果一行都是small ascii则高度为8(默认),如有一行中有一个是汉字或是 large 模式 ascii
// 则高度都为 16 
BYTE StrHeight = ASCII_SMALL_HEIGHT_DEF;//一行字的高度

////*******************************************************************************/
///*
//** FUNCTION:     Sdrv_PutS
//**
//** Description:  在屏幕上输出一个字符串,如串的长度超过屏幕,则多出部分不显示
//**                   指针停在最后一个能显示的字的下一个字符左上角,碰到回车或
//**                   串尾时退出,碰到换行时从下一行开始显示
//**  input
//**     str: 字符串首址 ; 
//**     strlen: 字符串的长度
//**
//**  output
//**     none
//********************************************************************************/
non_banked char *Sdrv_PutS(const char *str, signed char strlen)
{
    int code;
    char result;
    char *lastcharpt;//记录上一个字符的指针        
    BYTE lineNum_sav,rowNum_sav;//行号记录

    lineNum_sav = region.y;
    rowNum_sav = region.x;

    //判断要输出的行的高度    
    if (AsciiSelect == FONT_TYPE_SMALL)
    {
        StrHeight = CHINESE_HEIGHT_DEF;//一行字符的高度 
    }
    else
    {
       StrHeight = CHINESE_HEIGHT_DEF;//一行字符的高度
    }


//炬力 更新为下面的
/*
    //判断要输出的行的高度    
    if (AsciiSelect == FONT_TYPE_SMALL)
    {
        StrHeight = CHINESE_HEIGHT_DEF+2;//一行字符的高度
    }
    else
    {
        StrHeight = CHINESE_HEIGHT_DEF+2;//一行字符的高度
    }
*/


    while ( (*str != '\r')      //碰到回车时退出
            && (*str != '\0')   //碰到结束符时退出
            && (strlen != NULL) )  //碰到字符长度为0时退出      
    {
        lastcharpt = str;
        //下面是碰到换行符时要作换行处理
        if (*str == '\n')
        {
                str++;
                //region.x = 0;
                region.x = rowNum_sav;          
        	region.y += StrHeight;
        	lineNum_sav = region.y;//保存当前行顶的y轴坐标
            	if (AsciiSelect == FONT_TYPE_SMALL)
            	{
                	StrHeight = CHINESE_HEIGHT_DEF;//一行字符的高度
            	}
            	else
            	{
                	StrHeight = CHINESE_HEIGHT_DEF;//一行字符的高度
            	}
        }

       
        code = *str;
        str++;
        result = Sdrv_PutChar(code);
        if (!result) //输出字符
        {
            //当输出区域超出范围时退出
            return lastcharpt;//返回上一个字符的指针,因为当前指针已加一了
        }
        (unsigned char)strlen--;//不理负号直接减(因为0xff时表示显示全部)
        region.y = lineNum_sav;//恢复当前行顶y的轴坐标
        //暂时不让某些地方显示过长
        ///if ( ((unsigned char)strlen > 200) && (region.x > 188) )
        //if ( ((unsigned char)strlen > 128) && (region.x > 120) )
        //{
        //    break;
        //}
    }
    return str;
}

⌨️ 快捷键说明

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