|
发表于 2017-9-4 19:01:14
|
显示全部楼层
回 eric2013 的帖子
- /*
- *********************************************************************************************************
- * 函 数 名: _GetData
- * 功能说明: 被函数GUI_BMP_DrawEx调用
- * 形 参:p U32指针类型数据
- * NumBytesReq 请求读取的字节数
- * ppData 数据指针
- * Off 如果Off = 1,那么将重新从起始位置读取
- * 返 回 值: 返回读取的字节数
- *********************************************************************************************************
- */
- int _GetData(void * p, const U8 ** ppData, unsigned NumBytesReq, U32 Off)
- {
- static int FileAddress = 0;
- U32 NumBytesRead;
- U32 phFile;
- phFile =*(U32*)p;
- /*
- * 检测缓存大小
- */
- if (NumBytesReq > sizeof(DispalyBuff)) {
- NumBytesReq = sizeof(DispalyBuff);
- }
- /*
- * 设置读取位置
- */
- if(Off == 1) FileAddress = phFile;
- else FileAddress = phFile + Off;
- /*
- * 读取数据到缓存
- */
- w25_ReadBuffer(DispalyBuff,FileAddress,NumBytesReq);
- /*
- * 让指针ppData指向读取的数据
- */
- *ppData = (const U8 *)DispalyBuff;
- /*
- * 返回读取的字节数
- */
- return NumBytesRead;
- }
- /*
- *********************************************************************************************************
- * 函 数 名: _ShowGIF1
- * 功能说明: 显示GIF片
- * 形 参: sFilename 要显示的图片名字
- * 返 回 值: 无
- *********************************************************************************************************
- */
- GUI_GIF_INFO InfoGif = {0}; /* Info structure of GIF file */
- GUI_GIF_IMAGE_INFO ImagInfoGif = {0}; /* Info structure of one particular GIF image of the GIF file */
- void _ShowGIF1(int FileAddress)
- {
- uint16_t i = 0;
- uint32_t t0, t1,FileAddressTmp;
- char buf[50];
- FileAddressTmp=FileAddress;
- /* 获取GIF图片信息 */
- GUI_GIF_GetInfoEx(_GetData, &FileAddressTmp,&InfoGif);
- while(1)
- {
- /* 变量用来设置当前播放的帧数,InfoGif.NumImages是GIF图片总的帧数 */
- if(i < InfoGif.NumImages)
- {
- /* 获取当前帧GIF图片信息,注意第4个参数是从0开始计数的 */
- GUI_GIF_GetImageInfoEx(_GetData, &FileAddressTmp, &ImagInfoGif, i);
-
- /* 如果此帧延迟时间是0,默认是延迟100ms */
- if(ImagInfoGif.Delay == 0)
- {
- GUI_Delay(100);
- }
- else
- {
- t0 = GUI_GetTime();
- /* 显示当前播放的帧数 */
- sprintf(buf, " Frame:%d/%d ", i+1, InfoGif.NumImages);
- GUI_DispStringHCenterAt(buf, LCD_GetXSize()/2, 0);
-
- /* 解码并显示此帧GIF图片,注意第5个参数是从0开始计数的 */
- GUI_GIF_DrawSubEx(_GetData,
- &FileAddressTmp,
- (LCD_GetXSize() - InfoGif.xSize)/2,
- (LCD_GetYSize() - InfoGif.ySize)/2,
- i++);
-
- /* 获取本次解码和显示消耗的时间 */
- t1 = GUI_GetTime() - t0;
-
- /* 如果GIF的解码和显示的时间超时就不做延迟 */
- if (t1 < ImagInfoGif.Delay * 10)
- {
- GUI_Delay(ImagInfoGif.Delay * 10 - t1);
- }
- }
- }
- else
- {
- i = 0;
- }
- }
- }
复制代码 调用了GUI_GIF_GetInfoEx,但打印出来并没有调用_GetData函数,这是什么原因?另外ucgui 3.98 好像没有Ex结尾的接口 |
|