📄 uiscrolltext.c
字号:
/******************************************************************/
/* Copyright (C) 2007 ROCK-CHIPS FUZHOU . All Rights Reserved. */
/*******************************************************************
File : uiscrolltext.c
Desc : 滚动字符串控件
Author : Eddie cf
Date : 2007-10-22
Notes :
$Log: uiscrolltext.c,v $
Revision 1.6 2008/07/08 02:38:54 HSL
修改设置颜色和字体存在的BUG.
Revision 1.5 2008/07/01 11:50:42 HSL
修改 滚动文本随机出现花屏的 BUG.
Revision 1.4 2008/06/19 04:43:21 Administrator
代码整理!
Revision 1.3 2008/06/02 08:09:57 HSL
在 DESTROY 里面增加指针非空判断.
Revision 1.2 2008/05/20 07:39:55 HSL
修改窗口系统和控件的 BUG.
Revision 1.1.1.1 2008/05/07 04:15:08 Administrator
no message
Revision 1.1.1.1 2008/03/06 13:29:09 Lingzhaojun
no message
Revision 1.13 2008/01/08 09:54:51 Lingzhaojun
合并蓝魔970代码
Revision 1.12 2008/01/07 12:52:14 Huangshilin
no message
Revision 1.11 2007/12/24 07:56:07 Lingzhaojun
同步蓝魔版本基本模块
Revision 1.10 2007/12/13 08:48:39 Caifeng
no message
Revision 1.9 2007/12/13 01:51:06 Caifeng
no message
Revision 1.8 2007/12/12 09:11:33 Caifeng
no message
Revision 1.7 2007/11/29 09:36:35 Caifeng
根据刷屏速度修改滚动速度
Revision 1.6 2007/11/27 01:54:09 Caifeng
no message
Revision 1.5 2007/11/23 07:32:05 Huangshilin
no message
Revision 1.4 2007/11/15 14:54:34 Caifeng
资源管理器支持滚动字符串
Revision 1.3 2007/11/15 06:42:47 Caifeng
no message
Revision 1.2 2007/11/07 13:27:26 Caifeng
no message
Revision 1.1 2007/10/25 08:24:18 Caifeng
no message
*********************************************************************/
#include "uiscrolltext.h"
/*----------------------------------------------------------------------
Name: ScrollTextDestroy
Desc: 画一行文本在一个窗口中,可以靠左,靠右,居中,靠顶,靠底
Params:
Author: Eddie CF
----------------------------------------------------------------------*/
UINT32 ScrollTextDestroy(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
SCORLLTEXT *ScrollText = (SCORLLTEXT*)win->Data;
// 080602,huangsl,fix lxs发现的BUG,增加指针非空判断.
if (ScrollText == NULL)
return FALSE;
if (ScrollText->pScrollPic)
{
FREE(ScrollText->pScrollPic);
//TR("ScroText Free OK,ptr=0X%x",ScrollText->pScrollPic );
ScrollText->pScrollPic = NULL;
}
ScrollText->pScrollTxt = NULL;
FreeClass(ScrollText);
win->Data = NULL;
if (ScrollText->ScrollTimer)
{
WinStopTimer(ScrollText->ScrollTimer);
ScrollText->ScrollTimer = 0;
}
return TRUE;
}
/*----------------------------------------------------------------------
Name: ScrollTextCreate
Desc: 建立滚动字符串
Params:
Author: Eddie CF
----------------------------------------------------------------------*/
UINT32 ScrollTextCreate(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
SCORLLTEXT *ScrollText = NULL;
ScrollText = (SCORLLTEXT*)MallocClass(SCORLLTEXT);
ScrollText->pScrollTxt = NULL;
ScrollText->pScrollPic = NULL;
ScrollText->Font = Font16X16;
ScrollText->color.backward = COLOR_BLUE;
ScrollText->color.forward = COLOR_BLACK;
ScrollText->color.mode = DSPM_Transp;
win->Data = ScrollText;
return TRUE;
}
/*----------------------------------------------------------------------
Name: ScrollStopScroll
Desc: 画一行文本在一个窗口中,可以靠左,靠右,居中,靠顶,靠底
Params:
Author: Eddie CF
----------------------------------------------------------------------*/
UINT32 ScrollStopScroll(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
SCORLLTEXT *ScrollText = (SCORLLTEXT*)win->Data;
if (ScrollText->ScrollTimer)
WinStopTimer(ScrollText->ScrollTimer);
ScrollText->ScrollTimer = 0;
return TRUE;
}
/*----------------------------------------------------------------------
Name: ScrollTextTimer
Desc: 画一行文本在一个窗口中,可以靠左,靠右,居中,靠顶,靠底
Params:
Author: Eddie CF
----------------------------------------------------------------------*/
UINT32 ScrollTextTimer(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
SCORLLTEXT *ScrollText = (SCORLLTEXT*)win->Data;
switch (ScrollText->ScrollTextStatus)
{
case ScrollBegin:
{
ScrollText->ScrollTextHoldTick++;
if (ScrollText->ScrollTextHoldTick == 10)
{
ScrollText->ScrollTextStatus = ScrollRun;
ScrollText->ScrollTextHoldTick = 0;
ScrollText->ScrollTextCnt = 0;
}
}
break;
case ScrollRun:
{
if ((ScrollText->ScrollRect.w - ScrollText->ScrollTextCnt) > (win->w))
{
ScrollText->ScrollTextCnt += 1;
if ((ScrollText->ScrollRect.w - ScrollText->ScrollTextCnt) > (win->w))
ScrollText->ScrollTextCnt += 1;
}
else
{
ScrollText->ScrollTextStatus = ScrollEnd;
ScrollText->ScrollTextHoldTick = 0;
}
}
break;
case ScrollEnd:
{
ScrollText->ScrollTextHoldTick++;
if (ScrollText->ScrollTextHoldTick == 30)
{
ScrollText->ScrollTextStatus = ScrollBegin;
ScrollText->ScrollTextHoldTick = 0;
ScrollText->ScrollTextCnt = 0;
if ((win->style&WES_ScrollLeftRight) || (win->style&WES_ScrollRightLeft))
{
if (ScrollText->ScrollTextFlag == 1)
ScrollText->ScrollTextFlag = 0;
else
ScrollText->ScrollTextFlag = 1;
}
}
}
break;
default:
break;
}
#if 0
if ((ScrollText->ScrollRect.w - ScrollText->ScrollTextCnt) > (win->w))
{
ScrollText->ScrollTextCnt += 2;
}
else
{
ScrollText->ScrollTextHoldTick++;
if (ScrollText->ScrollTextHoldTick == 30)
{
ScrollText->ScrollTextCnt = 0;
ScrollText->ScrollTextHoldTick = 0;
if ((win->style&WES_ScrollLeftRight) || (win->style&WES_ScrollRightLeft))
{
if (ScrollText->ScrollTextFlag == 1)
ScrollText->ScrollTextFlag = 0;
else
ScrollText->ScrollTextFlag = 1;
}
}
}
#endif
WindowInvalidateWindow(win);
//if(win->style&WS_CHILDS)
//WindowInvalidateWindow(win->Parent);
return TRUE;
}
/*----------------------------------------------------------------------
Name: ScrollTextPaint
Desc: 画一行文本在一个窗口中,可以靠左,靠右,居中,靠顶,靠底
Params: win:窗口
Author: Eddie CF
----------------------------------------------------------------------*/
UINT32 ScrollTextPaint(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
SCORLLTEXT *ScrollText = (SCORLLTEXT*)win->Data;
INT16U wtemp;
UHRECT rect;
UHRECT BkRect;
LCD_RGBDATA TranspColorTemp, *pSrc, *pDst;
//drawbmp
//memset(gGuiDspLcdLogic,0,LCD_W*LCD_H*sizeof(LCD_RGBDATA));
if (!(WIN_NEEDPAIT(win)))
return TRUE;
if (!ScrollText->pScrollPic)
return TRUE;
BkRect.x = win->x;
BkRect.y = win->y;
BkRect.h = win->h;
BkRect.w = win->w;
//gGuiDspBmpHead.reserverd = 0;
if (ScrollText->ScrollTextDispMode != 0)
{
if (ScrollText->ScrollTextBID)
DrawBmpIdEx(win->x, win->y, ScrollText->ScrollTextBID, &BkRect, DSPM_Transp);
else if (win->BmpID)
DrawBmpIdEx(win->x, win->y, win->BmpID, &BkRect, ScrollText->ScrollTextDispMode);
}
else
{
if (ScrollText->ScrollTextBID)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -