📄 sdrv_putsdimage.c
字号:
/*
********************************************************************************
* ACTOS
* ui dirver show picture
*
* (c) Copyright 2002-2003, Actions Co,Ld.
* All Right Reserved
*
* File : UI_PutSDImage.msa
* By : Rcmai
* Version: 1> v1.00 first version 10/17/2003 10:46PM
********************************************************************************
*/
#include "display.h"
#include "Intrz80.h" //用到input8();
#include "Drv_S6B33B0A.h"
//SD_RW sdrw;
//#pragma codeseg(UI_RCODE)
#pragma memory=constseg(BAS_PSDI)
#pragma memory=default
#pragma memory=dataseg(BAD_PSDI)
SD_RW sdrw;
//extern unsigned char BufPage;
#pragma memory=default
#pragma codeseg(BAC_PSDI)
void Sdrv_PutSDImage(region_t *pic,long int imgddr)
{
unsigned long cnt;
WORD cnt1;
//坐标出了屏幕,则退出
if(pic->x>Displaylength-1 || pic->y >Displayhight-1 )
{
return;
}
//显示出屏幕的处理
if ((pic->height + pic->y) > Displayhight)
{
return;
}
if (pic->width > Displaylength-pic->x)
{
return;
}
Hdrv_SetDrawMode(DrawModeH_def);
Hdrv_SetWindow(pic); //设定要填入 的 图片的 行、列起始地址,就从这里开始填数据
cnt = (unsigned long)pic->width * (unsigned long)pic->height * 2;
cnt1 = 512 - (imgddr%512);//如不是页的开始,先读前面的不整页部分
sdrw.faddr=imgddr;
sdrw.srampage=input8(0x05)&0x0f;//(byte)BufPage; //FRAME BUFFER PAGE
sdrw.sramaddr = (WORD)DisplayBuffer;
if (cnt > (unsigned long)cnt1)
{
SD_Read((int)&sdrw, cnt1);//把图片数据读出 放到 DisplayBuffer 中
Hdrv_BuffDataTrans(DisplayBuffer, cnt1);//把显存中的数据搬到LCM中
cnt -= cnt1;
sdrw.faddr += cnt1;
}
if (cnt == 0)
{
return;
}
while (cnt > (unsigned long)DisplayBufLen)// 一个显示暂存区的大小
{
SD_Read((int)&sdrw, DisplayBufLen);//把图片数据读出
Hdrv_BuffDataTrans(DisplayBuffer, DisplayBufLen);//把显存中的数据搬到LCM中
cnt = cnt - (unsigned long)DisplayBufLen;
sdrw.faddr += DisplayBufLen;
}
sdrw.sramaddr = (WORD)DisplayBuffer;
SD_Read((int)&sdrw, cnt);//把图片数据读出
Hdrv_BuffDataTrans(DisplayBuffer, cnt);//把显存中的数据搬到LCM中
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -