📄 shuttur.c
字号:
/* Copyright (C) 2006 ROCK-CHIPS FUZHOU . All Rights Reserved. */
/*
File : gui\dispspecial\shuttur.c
Desc : GUI 特效 之 百叶窗.
Author : huangsl
Date :
Notes :
$Log: shuttur.c,v $
Revision 1.4 2008/06/19 04:43:20 Administrator
代码整理!
Revision 1.3 2008/06/04 06:27:26 HSL
除去编译警告
Revision 1.2 2008/05/26 03:27:10 HSL
重新整理特效模块,已兼容 RGB和MCU屏.
Revision 1.1.1.1 2008/05/07 04:15:08 Administrator
no message
Revision 1.1 2008/03/10 01:57:44 Lingzhaojun
提交特效支持
Revision 1.9 2007/12/06 05:16:17 Huangshilin
增加 视频静态buffer和GUI 复用.修改窗口系统.
* 080125 huangsl FOR RGB PANEL.
*/
/***************************************************************************/
#ifndef DISP_INCLUDED
#error "CAN NOT COMPILE THIS FILE , USE disptask.c !!"
#endif
/***************************************************************************/
#define SHUTTER_CNT_X 16 //垂直 百叶窗个数 .
#define SHUTTER_CNT_Y 12 //水平 百叶窗的 个数.
//如果整除不尽 ,需要 +1 ,否则会出现 刷新不全的现象.
#define SHUTTER_TOTALPIXEL_X (LCD_W/SHUTTER_CNT_X) //垂直 百叶窗总的 象素 .
#define SHUTTER_TOTALPIXEL_Y (LCD_H/SHUTTER_CNT_Y+1) //垂直 百叶窗 总的 象素 .
/***************************************************************************/
#define SHUTTER_TIMES 10 // 百叶窗 显示 次数.
//最后 会 有 越界的 可能 .
#define SHUTTER_PIXEL_X (SHUTTER_TOTALPIXEL_X/SHUTTER_TIMES) // 垂直
#define SHUTTER_PIXEL_Y (SHUTTER_TOTALPIXEL_Y/SHUTTER_TIMES+1) // 水平
/***************************************************************************/
/************************************************************************/
//MOVE WIN
/************************************************************************/
//百叶窗 更新.
/*
1. TIMER 回调 函数,逐步 刷出效果.
*/
extern void LCD_FLUSH(void);
void IDspTskShutterUpdate(void)
{
INT32U i;
INT16U startXy = 0;
switch (gWMMoveStyle)
{
case SHUTTER_HORIC: // 水平 百叶窗.
{
gWinMoveIdxs += SHUTTER_PIXEL_Y;
for (i = 0 ; i < SHUTTER_CNT_Y ; i++)
{
if (startXy + gWinMoveIdxs > gLcdH)
startXy -= (startXy + gWinMoveIdxs - gLcdH);
IDspTskMoveRgbCopy(gpDspTskDestLcdLogic , gpDspTskNewLcdLogic ,
0 , startXy , gLcdW, (INT16U)(startXy + gWinMoveIdxs) ,
0 , startXy);
startXy += SHUTTER_TOTALPIXEL_Y;
}
}
break;
case SHUTTER_VERTC: // 垂直 百叶窗.
{
gWinMoveIdxs += SHUTTER_PIXEL_X;
for (i = 0 ; i < SHUTTER_CNT_X ; i++)
{
if (startXy + gWinMoveIdxs > gLcdW)
startXy -= (startXy + gWinMoveIdxs - gLcdW);
IDspTskMoveRgbCopy(gpDspTskDestLcdLogic , gpDspTskNewLcdLogic ,
startXy , 0 , (INT16U)(startXy + gWinMoveIdxs) , gLcdH,
startXy , 0);
startXy += SHUTTER_TOTALPIXEL_X;
}
}
break;
default:
break;
}
LCD_FLUSH();
}
void IDspTskShutterCallBack(void * param)
{
if ((gWMMoveStyle == SHUTTER_VERTC && gWinMoveIdxs <= SHUTTER_TOTALPIXEL_X)
|| (gWMMoveStyle == SHUTTER_HORIC && gWinMoveIdxs <= SHUTTER_TOTALPIXEL_Y)
)
{
RockOSSendMsg(MBDISP , MS_DIDI_LCDFrameInd , param);
}
else
{
gDspTskEffectStoped = 1;
}
}
//把逻辑屏和备份屏的数据组合送 LCD 。
BOOLEAN IDspTskShutterStart(void)
{
if (gWMMoveStyle == SHUTTER_VERTC || gWMMoveStyle == SHUTTER_HORIC)
{
gWinMoveIdxs = 0;
return TRUE;
}
return FALSE;
}
/*******************************************************************/
///////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -