loadbit.c
上传用户:zfj3589
上传日期:2022-07-13
资源大小:635k
文件大小:4k
源码类别:

微处理器开发

开发平台:

C/C++

  1. /****************************************************************************************
  2. * 文件名:LOADBIT.C
  3. * 功能:显示单色图形及汉字显示。先将图形转换为对应的点阵数组,然后即可调用此文件的函数输出驱动。
  4. * 作者:黄绍斌
  5. * 日期:2004.02.26
  6. * 备注:使用GUI_SetBackColor()函数设置显示颜色及背景色。
  7. ****************************************************************************************/
  8. #include  "config.h"
  9. #if  (GUI_LoadPic_EN==1)|(GUI_MenuIco_EN==1)|(GUI_PutHZ_EN==1)
  10. /****************************************************************************
  11. * 名称:GUI_LoadLine()
  12. * 功能:输出单色图形的一行数据。
  13. * 入口参数: x 指定显示位置,x坐标
  14. *           y 指定显示位置,y坐标
  15. *           dat 要输出显示的数据。
  16. *           no      要显示此行的点个数
  17. * 出口参数:返回值为1时表示操作成功,为0时表示操作失败。
  18. * 说明:操作失败原因是指定地址超出有效范围。
  19. ****************************************************************************/
  20. uint8  GUI_LoadLine(uint32 x, uint32 y, uint8 *dat, uint32 no)
  21. {  uint8   bit_dat;
  22.    uint8   i;
  23.    TCOLOR  bakc;
  24.    /* 参数过滤 */
  25.    if(x>=GUI_LCM_XMAX) return(0);
  26.    if(y>=GUI_LCM_YMAX) return(0);
  27.    
  28.    for(i=0; i<no; i++)
  29.    {  /* 判断是否要读取点阵数据 */
  30.       if( (i%8)==0 ) bit_dat = *dat++;
  31.      
  32.       /* 设置相应的点为color或为back_color */
  33.       if( (bit_dat&DCB2HEX_TAB[i&0x07])==0 ) GUI_CopyColor(&bakc, back_color); 
  34.          else  GUI_CopyColor(&bakc, disp_color);
  35.       GUI_Point(x, y, bakc);       
  36.      
  37.       if( (++x)>=GUI_LCM_XMAX ) return(0);
  38.    }
  39.    
  40.    return(1);
  41. }
  42. #endif
  43. #if  (GUI_LoadPic_EN==1)|(GUI_MenuIco_EN==1)
  44. /****************************************************************************
  45. * 名称:GUI_LoadPic()
  46. * 功能:输出单色图形数据。
  47. * 入口参数: x 指定显示位置,x坐标
  48. *           y 指定显示位置,y坐标
  49. *           dat 要输出显示的数据
  50. *           hno     要显示此行的点个数
  51. *           lno     要显示此列的点个数
  52. * 出口参数:无
  53. * 说明:操作失败原因是指定地址超出有效范围。
  54. ****************************************************************************/
  55. void  GUI_LoadPic(uint32 x, uint32 y, uint8 *dat, uint32 hno, uint32 lno)
  56. {  uint32  i;
  57.    for(i=0; i<lno; i++)
  58.    {  GUI_LoadLine(x, y, dat, hno); // 输出一行数据
  59.       y++; // 显示下一行
  60.       dat += (hno>>3); // 计算下一行的数据
  61.       if( (hno&0x07)!=0 ) dat++;
  62.    }
  63. }
  64. /****************************************************************************
  65. * 名称:GUI_LoadPic1()
  66. * 功能:输出单色图形数据,反相显示。
  67. * 入口参数: x 指定显示位置,x坐标
  68. *           y 指定显示位置,y坐标
  69. *           dat 要输出显示的数据。
  70. *           hno     要显示此行的点个数
  71. *           lno     要显示此列的点个数
  72. * 出口参数:无
  73. * 说明:操作失败原因是指定地址超出有效范围。
  74. ****************************************************************************/
  75. void  GUI_LoadPic1(uint32 x, uint32 y, uint8 *dat, uint32 hno, uint32 lno)
  76. {  uint32  i;
  77.    
  78.    GUI_ExchangeColor(); // 显示色与背景色交换
  79.    for(i=0; i<lno; i++)
  80.    {  GUI_LoadLine(x, y, dat, hno); // 输出一行数据
  81.       y++; // 显示下一行
  82.       dat += (hno>>3); // 计算下一行的数据
  83.       if( (hno&0x07)!=0 ) dat++;
  84.    }
  85.    GUI_ExchangeColor();
  86.    
  87. }
  88. #endif
  89. #if  GUI_PutHZ_EN==1
  90. /****************************************************************************
  91. * 名称:GUI_PutHZ()
  92. * 功能:显示汉字。
  93. * 入口参数: x 指定显示位置,x坐标
  94. *           y 指定显示位置,y坐标
  95. *           dat 要输出显示的汉字点阵数据。
  96. *           hno     要显示此行的点个数
  97. *           lno     要显示此列的点个数
  98. * 出口参数:无
  99. * 说明:操作失败原因是指定地址超出有效范围。
  100. ****************************************************************************/
  101. void  GUI_PutHZ(uint32 x, uint32 y, uint8 *dat, uint8 hno, uint8 lno)
  102. {  uint8  i;
  103.    for(i=0; i<lno; i++)
  104.    {  GUI_LoadLine(x, y, dat, hno); // 输出一行数据
  105.       y++; // 显示下一行
  106.       dat += (hno>>3); // 计算下一行的数据
  107.       if( (hno&0x07)!=0 ) dat++;
  108.    }
  109. }
  110. #endif