m_data.c
来自「ucOS 模拟环境」· C语言 代码 · 共 220 行
C
220 行
//----------------------------------------------------------------------
// FileName : M_Data.c
// Project : SII_PHS
// Memo :
//----------------------------------------------------------------------
#include "string.h"
#include "draw.h"
#include "M_Data.h"
#include "p2gb_tbl.h"
extern struct PinYin_tbl tbl[337];
extern unsigned char font[];
extern unsigned char font_C[];
#define PINYINLINES 337
//=====================================================================================
// Function Name: uint MD_GetIndexDataCount(ucTEXT ut)
// Purpose : Get Index Data Count
// Parameter : ucTEXT ut
// Return : Index Data Count
// Remarks : 返回以某个字母开头的所有拼音组合的数量
// Change Log :
// Author Date Description
// John Wong 2004/2 SII-PHS
//=====================================================================================
uint MD_GetIndexDataCount(ucTEXT ut)
{
int i;
int count = 0;
if (!( ut.ucChar >= 'a' && ut.ucChar <= 'z' ) )
{
if (!( ut.ucChar >= 'A' && ut.ucChar <= 'Z' ) )
return -1;
ut.ucChar += 0X20;
}
for (i = 0; i < PINYINLINES; i++)
{
if (ut.ucChar == tbl[i].pinyin[0] )
{
count++;
}
}
return count;
}
//=====================================================================================
// Function Name: uint MD_GetIndexData(ucTEXT ut , uchar *ucDataBuf)
// Purpose : Get Index Data , fill in *ucDataBuf
// Parameter : ucTEXT ut , uchar *ucDataBuf
// Return : 1(Normal)或-1(Error)
// Remarks : 根据开头字母和索引号,查询对应的拼音组合
// Change Log :
// Author Date Description
// John Wong 2004/2 SII-PHS
//=====================================================================================
uint MD_GetIndexData(ucTEXT ut , uchar * ucDataBuf)
{
uint i;
uint count = 0;
ucDataBuf[0]='\0';
if (!( ut.ucChar >= 'a' && ut.ucChar <= 'z' ) )
{
if (!( ut.ucChar >= 'A' && ut.ucChar <= 'Z' ) )
return -1;
ut.ucChar += 0x20;
}
for (i = 0; i < PINYINLINES; i++)
{
if (ut.ucChar == tbl[i].pinyin[0])
{
if(ut.uiCount == count)
{
strcpy(ucDataBuf,(uchar *)tbl[i].pinyin);
break;
}
count++;
}
}
return 1;
}
//=====================================================================================
// Function Name: uchar MD_GetMTextData(ucTEXT ut,uchar *ucDataBuf)
// Purpose : Get Main Text Data, fill in *ucDataBuf
// Parameter : ucTEXT ut,uchar *ucDataBuf
// Return : 汉字个数,或-1(Error)
// Remarks : 根据开头字母和索引号,查询对应的所有汉字
// Change Log :
// Author Date Description
// John Wong 2004/2 SII-PHS
//=====================================================================================
uint MD_GetMTextData(ucTEXT ut, uchar *ucDataBuf)
{
uint i;
uint count = 0;
ucDataBuf[0] = '\0';
if (!( ut.ucChar >= 'a' && ut.ucChar <= 'z' ) )
{
if (!( ut.ucChar >= 'A' && ut.ucChar <= 'Z' ) )
return -1;
ut.ucChar += 0x20;
}
for (i = 0; i < PINYINLINES; i++)
{
if (ut.ucChar == tbl[i].pinyin[0])
{
if(ut.uiCount == count)
{
strcpy(ucDataBuf,(uchar *)tbl[i].gb);
break;
}
count++;
}
}
return strlen(ucDataBuf) / 2;
}
//=====================================================================================
// Function Name: uint MD_GetFontData(ulong ulCodeNo, uchar *DataBuf)
// Purpose : Get Font Data (of a Chinese Char),fill in *DataBuf
// Parameter : ulong ulCodeNo, uchar *DataBuf
// Return : 1(Normal)或-1(Error)
// Remarks : ulCodeNo是某个字符的编号(国标编码)*DataBuf存放该字符的字模信息
// Change Log :
// Author Date Description
// John Wong 2004/2 SII-PHS
//=====================================================================================
uint MD_GetFontData(uint ulCodeNo, uchar *DataBuf)
{
ulong addr;
addr = ( (ulCodeNo >> 8) - 0xA1) * ( 0xFE + 1 - 0xA1) + ulCodeNo % 256 - 0xA1;
addr *= 28;
addr += 0xA80;
memcpy (DataBuf, font_C + addr ,28);
return 1;
}
//=====================================================================================
// Function Name: uint MD_GetAscFontData(uchar AscCode, uchar *DataBuf)
// Purpose : Get Font Data (of a AscII Char),fill in *DataBuf
// Parameter : uchar AscCode, uchar *DataBuf
// Return : 1(Normal)或-1(Error)
// Remarks : AscCode是某个字符的Asc编码, *DataBuf存放该字符的字模信息
// Change Log :
// Author Date Description
// John Wong 2004/2 SII-PHS
//=====================================================================================
uint MD_GetAscFontData(uchar AscCode, uchar *DataBuf)
{
uint line;
uint addr;
if ( !( AscCode >= 'a' && AscCode <= 'z' || AscCode >= 'A' && AscCode <= 'Z' ) )
{
return -1;
}
line = AscCode - 0x20;
addr = line * 14 + 0x900;
memcpy (DataBuf, font + addr ,14);
return 1;
}
//=====================================================================================
// Function Name: uint MD_GetFontWidth(ulong ulCodeNo)
// Purpose : Get Font Width of a Char
// Parameter : ulong ulCodeNo
// Return : Font Width
// Remarks : 返回字模宽度
// Change Log :
// Author Date Description
// John Wong 2004/2 SII-PHS
//=====================================================================================
uint MD_GetFontWidth(uint ulCodeNo)
{
if (ulCodeNo > 0xff )
return 16;
else
return 8;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?