亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? marquee.c

?? ucgui源碼3.32
?? C
字號:
/*
*********************************************************************************************************
*                                                uC/GUI
*                        Universal graphic software for embedded applications
*
*                       (c) Copyright 2002, Micrium Inc., Weston, FL
*                       (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
*              礐/GUI is protected by international copyright laws. Knowledge of the
*              source code may not be used to write a similar product. This file may
*              only be used in accordance with a license and should not be redistributed
*              in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File        : MARQUEE.c
Purpose     : emWin GSC bitmap widget, which allows to show blinking
              bitmaps
----------------------------------------------------------------------
Version-Date---Author-Explanation
----------------------------------------------------------------------
1.02     001011 RS     a) Debug info (logging option) added.
                       b) Support for Zero-time (transparent)
                          bitmaps added.
1.00     000613 RS     Release.
0.50     000223 RS     First (Beta) release
0.00     000107 RS     Start of development
----------------------------------------------------------------------
Known problems or limitations with current version
----------------------------------------------------------------------
None.
----------------------------------------------------------------------
Open issues
----------------------------------------------------------------------
None
---------------------------END-OF-HEADER------------------------------
*/

#include "stdlib.h"
#include "string.h"
#include "MARQUEE.h"
#include "GUIDEBUG.h"
#include "GUI.h"

#if GUI_WINSUPPORT

/*
  *****************************************************************
  *                                                               *
  *              Config defaults                                  *
  *                                                               *
  *****************************************************************
*/
#ifndef MARQUEE_LOG_ENABLE
  #ifdef _DEBUG
    #define MARQUEE_LOG_ENABLE 0
  #else
    #define MARQUEE_LOG_ENABLE 0
  #endif
#endif

/*
  *****************************************************************
  *
  *              Internal macros
  *
  *****************************************************************
*/
#define Invalidate(h) WM_InvalidateWindow(h)

#if MARQUEE_LOG_ENABLE
  #define LOG(s) SIM_Log(s)
  #define LOG1(s,p1) SIM_Log(s,p1)
  #define LOG_TIME() SIM_LogTime()
#else
  #define LOG(s)
  #define LOG1(s)
  #define LOG_TIME()
#endif


/*
      *************************************************************
      *                                                           *
      *                 LIST ITEM  definition                     *
      *                                                           *
      *************************************************************
*/

/*
      *************************************************************
      *                                                           *
      *                 Object definition                         *
      *                                                           *
      *************************************************************
*/
typedef struct {
  WM_Obj WMObj;
  GUI_TIMER_Handle hTimer;
  WM_HMEM hpText;
  GUI_COLOR TextColor;
  GUI_COLOR BkColor;
  const GUI_FONT* pFont;
#ifdef _DEBUG
  int Id;
#endif  
} MARQUEE_Obj;

/*
  *****************************************************************
  *                                                               *
  *              Static data                                      *
  *                                                               *
  *****************************************************************
*/

/* None */
/*
  ********************************************************************
  *                                                                  *
  *                 Macros for internal use                          *
  *                                                                  *
  ********************************************************************
*/
#define MARQUEE_ID 0x4249544d


#define MARQUEE_H2P(h) (MARQUEE_Obj*) WM_HMEM2Ptr(h)
#define LI_H2P(h)     (LI_Obj*)     WM_HMEM2Ptr(h)

#ifdef _DEBUG
  #define MARQUEE_ASSERT_IS_VALID_PTR(p) WM_ASSERT(p->Id == MARQUEE_ID)
  #define MARQUEE_INIT_ID(p)   p->Id = MARQUEE_ID
  #define MARQUEE_DEINIT_ID(p) p->Id = MARQUEE_ID+1
#else
  #define MARQUEE_ASSERT_IS_VALID_PTR(p)
  #define MARQUEE_INIT_ID(p)
  #define MARQUEE_DEINIT_ID(p)
#endif
/*
  ********************************************************************
  *                                                                  *
  *                    Static routines                               *
  *                                                                  *
  ********************************************************************
*/

static void FreeAttached(MARQUEE_Handle hObj) {
  MARQUEE_Obj* pObj = MARQUEE_H2P(hObj);
  WM_FREEPTR(&pObj->hpText);
}


static void Paint(MARQUEE_Obj* pObj/*, GUI_RECT*pRect*/) {
  const char*s = (const char*) WM_HMEM2Ptr(pObj->hpText);
  GUI_SetFont    (pObj->pFont);
  GUI_SetBkColor (pObj->BkColor);
  GUI_SetColor   (pObj->TextColor);
  GUI_DispStringAt(s,0,0);
  LOG_TIME(); LOG("MARQUEE: Paint(..)\n");
}


static void Delete(MARQUEE_Obj* pObj) {
  if (pObj->hTimer) {
    GUI_TIMER_Delete(pObj->hTimer);
    pObj->hTimer =0;
	}
  if (pObj->hpText) {
//    GUI_ALLOC_Free(hLI);
    LOG_TIME(); LOG("MARQUEE: Delete: Deleting attached string\n");
  }
}

static void _Callback (WM_MESSAGE * pMsg) {
  MARQUEE_Handle hObj = (MARQUEE_Handle)pMsg->hWin;
  MARQUEE_Obj* pObj = MARQUEE_H2P(hObj);
  switch (pMsg->MsgId) {
  case WM_PAINT:
    LOG_TIME(); LOG("MARQUEE: _Callback(WM_PAINT)\n");
    Paint(pObj/*, (GUI_RECT*)pMsg->Data.p*/);
    return;
  case WM_DELETE:
    LOG_TIME(); LOG("MARQUEE: _Callback(WM_DELETE)\n");
    Delete(pObj);
    break;       /* No return here ... WM_DefaultProc needs to be called */
#if MARQUEE_LOG_ENABLE  /* Debug code ... normally not compiled */
  case WM_CREATE:
    LOG_TIME(); LOG("MARQUEE: _Callback(WM_CREATE)\n");
    break;       /* No return here ... WM_DefaultProc needs to be called */
  default:
    LOG_TIME(); LOG("MARQUEE: _Callback(unhandle message)\n");
#endif
  }
  WM_DefaultProc(pMsg);
}

static void cbTimer (GUI_TIMER_MESSAGE *pMsg) {
  MARQUEE_Handle hObj = pMsg->Context;
  MARQUEE_Obj*   pObj = MARQUEE_H2P(hObj);
  MARQUEE_ASSERT_IS_VALID_PTR(pObj);
  LOG_TIME(); LOG("MARQUEE: cbTimer\n");
//  ShowNext(pObj);
}


/*
  ********************************************************************
  *                                                                  *
  *        Exported routines:  Create                                *
  *                                                                  *
  ********************************************************************
*/

/* Note: the parameters to a create function may vary.
         Some widgets may have multiple create functions */


MARQUEE_Handle MARQUEE_Create      (
                                    int x0, int y0, int xsize, int ysize,
                                    int Flags)
{
  /* Alloc memory for obj */
  MARQUEE_Handle hObj =  WM_CreateWindow(x0, y0, xsize, ysize,
                  WM_CF_SHOW |Flags, _Callback,
                  sizeof(MARQUEE_Obj)-sizeof(WM_Obj));
  if (hObj) {
    MARQUEE_Obj* pObj = MARQUEE_H2P(hObj);
    /* init widget specific variables */
    /* init member variables */
    MARQUEE_INIT_ID(pObj);
    pObj->pFont =GUI_DEFAULT_FONT;
    pObj->BkColor   = GUI_BLACK;
    pObj->TextColor = GUI_WHITE;
/* Create Timer */
    pObj->hTimer = GUI_TIMER_Create(cbTimer,
		                            0,    /* Time, 0 means not yet active */
                                hObj, /* Instance handle */
																0);
  }
  return hObj;
}


/*
  ********************************************************************
  *                                                                  *
  *        Exported routines:  Various methods                       *
  *                                                                  *
  ********************************************************************
*/

void MARQUEE_SetText(MARQUEE_Handle hObj, const char* s) {
  MARQUEE_Obj* pObj = MARQUEE_H2P(hObj);
  FreeAttached(hObj);
  {
    WM_HMEM hMem = WM_ALLOC(strlen(s)+1);
    strcpy((char *) WM_HMEM2Ptr(hMem), s);
    pObj->hpText = hMem;
  }
  Invalidate(hObj);
}

void MARQUEE_SetFont(MARQUEE_Handle hObj, const GUI_FONT* pfont) {
  MARQUEE_Obj* pObj = MARQUEE_H2P(hObj);
  pObj->pFont = pfont;
  Invalidate(hObj);
}

void MARQUEE_SetBkColor(MARQUEE_Handle hObj, GUI_COLOR color) {
  MARQUEE_Obj* pObj = MARQUEE_H2P(hObj);
  pObj->BkColor = color;
  Invalidate(hObj);
}

void MARQUEE_SetTextColor(MARQUEE_Handle hObj, GUI_COLOR color) {
  MARQUEE_Obj* pObj = MARQUEE_H2P(hObj);
  pObj->TextColor = color;
  Invalidate(hObj);
}

#else

void WIDGET_Marquee(void) {} /* avoid empty object files */

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一级专区免费大片| 日韩一级视频免费观看在线| 欧美三级中文字幕在线观看| 日韩欧美在线不卡| 亚洲一区中文在线| 波多野结衣中文一区| 日韩一二三区不卡| 亚洲一区二区在线免费看| 国产一区二区三区最好精华液| 日本二三区不卡| 国产亚洲一区二区三区| 午夜精品一区二区三区免费视频| 成+人+亚洲+综合天堂| 欧美电影免费观看高清完整版在线 | 91麻豆.com| 久久色在线视频| 日本大胆欧美人术艺术动态| 91久久免费观看| 中文字幕亚洲欧美在线不卡| 激情久久五月天| 7777精品伊人久久久大香线蕉 | 视频一区二区三区中文字幕| 99视频一区二区三区| 久久综合久久久久88| 麻豆久久一区二区| 欧美一区二区三区在线看| 亚洲一级二级三级| 在线免费观看视频一区| 国产精品色哟哟网站| 国产成人精品一区二区三区网站观看| 91精品国产入口| 日产欧产美韩系列久久99| 在线视频中文字幕一区二区| 亚洲女同女同女同女同女同69| 国产a精品视频| 中文字幕免费观看一区| 国产成人高清在线| 久久久综合视频| 国产成人无遮挡在线视频| 国产视频一区二区在线观看| 国产精选一区二区三区| 国产日韩精品一区二区浪潮av| 韩国av一区二区三区在线观看| 2020国产精品| 成人免费电影视频| 中文字幕中文在线不卡住| 99久久综合精品| 一区二区三区在线免费观看| 欧美性色aⅴ视频一区日韩精品| 一区二区三区不卡视频在线观看 | 亚洲午夜在线观看视频在线| 欧美日韩午夜在线视频| 午夜影视日本亚洲欧洲精品| 欧美一区二视频| 国内精品第一页| 亚洲欧美综合色| 欧美天堂一区二区三区| 精品亚洲国内自在自线福利| 久久久精品一品道一区| 91蜜桃在线免费视频| 亚洲成人综合在线| 欧美成人video| av资源站一区| 图片区日韩欧美亚洲| 2021国产精品久久精品| 日本高清成人免费播放| 久久不见久久见免费视频1| 国产午夜亚洲精品午夜鲁丝片| k8久久久一区二区三区 | 欧美日韩美少妇| 国产久卡久卡久卡久卡视频精品| 亚洲色图色小说| 日韩欧美高清dvd碟片| 99精品国产热久久91蜜凸| 日韩精品视频网| 中文字幕亚洲综合久久菠萝蜜| 欧美年轻男男videosbes| 粉嫩av一区二区三区| 日韩av中文字幕一区二区三区| 久久久国产一区二区三区四区小说 | 51精品视频一区二区三区| 国产一区二区主播在线| 一区二区三区 在线观看视频| 精品国产91乱码一区二区三区| 99re这里只有精品6| 久久精品国产久精国产| 一区二区三区四区高清精品免费观看| 9191成人精品久久| 欧美在线一二三四区| 国产大片一区二区| 男男gaygay亚洲| 亚洲一区二区三区四区不卡| 日本一区二区成人在线| 欧美一区二区三区免费在线看| 99久久精品国产导航| 国产成人在线电影| 激情另类小说区图片区视频区| 一区二区三区在线高清| 国产精品美女一区二区| 2021国产精品久久精品| 欧美一级午夜免费电影| 欧美天堂亚洲电影院在线播放| 成人av电影免费在线播放| 精品一区二区久久| 久久99精品一区二区三区| 天堂在线亚洲视频| 亚洲尤物视频在线| 亚洲综合久久久久| 一区二区三区久久久| 久久久91精品国产一区二区三区| 日韩欧美色电影| 日韩免费观看高清完整版在线观看 | 日韩丝袜情趣美女图片| 91精品国产综合久久精品| 欧美高清激情brazzers| 精品婷婷伊人一区三区三| 欧美视频一区在线| 欧美日韩国产精品自在自线| 欧美性videosxxxxx| 欧美午夜理伦三级在线观看| 欧美视频你懂的| 欧美女孩性生活视频| 欧美精品粉嫩高潮一区二区| 欧美日韩一二三区| 日韩视频中午一区| www激情久久| 欧美激情一区在线| 亚洲欧洲99久久| 亚洲一区二区三区小说| 五月天婷婷综合| 麻豆免费看一区二区三区| 国产一区二区三区免费播放| 高清不卡一区二区| 91麻豆精东视频| 欧美日韩在线免费视频| 7777精品伊人久久久大香线蕉的| 日韩精品一区二区三区四区视频 | 欧美高清hd18日本| 日韩欧美国产精品| 久久久国产精品麻豆| 最新不卡av在线| 五月婷婷激情综合网| 国内外成人在线视频| 99国产一区二区三精品乱码| 色就色 综合激情| 91精品国产入口| 国产精品美女久久久久久| 伊人色综合久久天天人手人婷| 天堂av在线一区| 成人激情开心网| 欧美福利电影网| 欧美国产97人人爽人人喊| 亚洲超碰精品一区二区| 国产精品自拍av| 欧美日韩精品专区| 日本一区二区不卡视频| 日韩制服丝袜先锋影音| 成人av网站大全| 欧美tickle裸体挠脚心vk| 中文字幕一区二区三| 免费久久99精品国产| gogogo免费视频观看亚洲一| 日韩一区二区影院| 一区二区三区日韩精品视频| 久久99久久久久| 在线观看一区二区精品视频| 日韩欧美卡一卡二| 亚洲一区二区三区四区五区黄| 国产成人免费av在线| 欧美剧在线免费观看网站| 国产精品高清亚洲| 久久99国产精品久久99果冻传媒| 91网站在线观看视频| 久久久噜噜噜久噜久久综合| 亚洲123区在线观看| 99re成人精品视频| 久久久久久久综合狠狠综合| 午夜精品视频在线观看| 色悠久久久久综合欧美99| 欧美激情资源网| 国产成人亚洲综合色影视| 欧美成人aa大片| 人人狠狠综合久久亚洲| 91传媒视频在线播放| 中文字幕一区二区在线观看 | aa级大片欧美| 久久久电影一区二区三区| 蜜桃精品视频在线观看| 精品1区2区3区| 一区二区三区在线影院| 99久久精品久久久久久清纯| 日本一区二区三区高清不卡| 国产呦萝稀缺另类资源| 精品国产亚洲在线| 天天操天天综合网| 欧美老肥妇做.爰bbww视频| 亚洲成人自拍网| 欧美日韩精品一区二区三区四区 | 久久99久久99小草精品免视看| 欧美一区二区三区在线视频|