⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uiscrolltext.c

📁 瑞星微公司RK27XX系列芯片的SDK开发包
💻 C
📖 第 1 页 / 共 2 页
字号:
/******************************************************************/
/*  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 + -