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

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

?? marquee.c

?? 一種可移植系統(tǒng)
?? 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一区二区三区免费野_久草精品视频
国产欧美中文在线| 亚洲精品日韩专区silk| 又紧又大又爽精品一区二区| 欧美日韩国产小视频| 综合电影一区二区三区 | 欧美久久久久中文字幕| 亚洲高清视频中文字幕| 91免费观看国产| 国产精品人妖ts系列视频| 国产一区在线精品| 日韩免费一区二区| 激情五月婷婷综合网| www国产精品av| 国产制服丝袜一区| 视频一区二区中文字幕| 制服丝袜国产精品| 国产自产v一区二区三区c| 亚洲va在线va天堂| 精品人在线二区三区| 99re这里只有精品6| 无吗不卡中文字幕| 精品国产123| 91麻豆免费视频| 成人视屏免费看| 亚洲午夜久久久久久久久电影网 | 欧美一区二区三区四区久久| 免费看日韩精品| 久久久久国产精品免费免费搜索| 国产91精品在线观看| 亚洲日本乱码在线观看| 亚洲国产精品激情在线观看| 欧美日精品一区视频| 免费高清在线一区| 日本成人中文字幕| 国产精品成人在线观看| 在线观看日韩电影| 蜜桃视频一区二区| 国产午夜精品福利| 欧美日韩国产免费| 欧美日韩高清在线| 9191成人精品久久| 欧美精品久久99| 欧美一区二区视频在线观看2022 | 日韩avvvv在线播放| 亚洲va欧美va人人爽午夜| 午夜精品久久久久久不卡8050| 亚洲国产一区二区视频| 亚洲午夜羞羞片| 日韩成人免费电影| 激情小说亚洲一区| 成人久久久精品乱码一区二区三区| 成人污污视频在线观看| 99精品国产热久久91蜜凸| 91亚洲国产成人精品一区二区三 | 91精品国产一区二区三区蜜臀| 欧美精品在欧美一区二区少妇| 欧美麻豆精品久久久久久| 欧美一级xxx| 欧美在线视频全部完| 欧美日韩一区二区不卡| 欧美一区二区视频在线观看2022| 久久午夜老司机| 国产精品久久久久久户外露出| 亚洲美女偷拍久久| 国产精品久久久久久久第一福利 | 日韩精品一二三四| 激情综合网最新| 天堂va蜜桃一区二区三区漫画版| 日本伊人色综合网| 国产精品夜夜嗨| 久久99精品国产.久久久久 | av不卡免费电影| 国产精品66部| 91亚洲午夜精品久久久久久| 欧美另类高清zo欧美| 欧美精品一区二区三| 亚洲人成网站在线| 麻豆精品一区二区三区| av一区二区三区黑人| 555www色欧美视频| 中文字幕精品在线不卡| 午夜成人免费视频| 国产69精品久久777的优势| 欧美在线|欧美| 国产日韩一级二级三级| 亚洲国产精品麻豆| 粉嫩高潮美女一区二区三区| 欧美日本在线看| 综合色中文字幕| 国产一级精品在线| 51午夜精品国产| 有码一区二区三区| 成人丝袜高跟foot| 精品欧美乱码久久久久久| 一区二区三区四区不卡视频| 亚洲欧美日韩综合aⅴ视频| 日本va欧美va欧美va精品| zzijzzij亚洲日本少妇熟睡| 欧美一卡二卡三卡| 亚洲欧美另类久久久精品2019| 老汉av免费一区二区三区| 九色porny丨国产精品| 91成人国产精品| 欧美日韩精品综合在线| 中文乱码免费一区二区| 久久99精品国产.久久久久| 欧美日本在线看| 亚洲女厕所小便bbb| 国产乱子轮精品视频| 欧美一区二区视频观看视频 | 亚洲一区二区三区中文字幕| 亚洲午夜一二三区视频| www.av亚洲| 国产日韩欧美精品电影三级在线 | 91福利精品第一导航| 欧美国产日本视频| 国产麻豆成人传媒免费观看| 91麻豆精品国产自产在线观看一区| 亚洲精品老司机| 色综合天天狠狠| 91.xcao| 亚洲色图欧美在线| av中文一区二区三区| 国产精品私人影院| 高清不卡一区二区| 久久伊99综合婷婷久久伊| 久久国产欧美日韩精品| 欧美日韩国产色站一区二区三区| 亚洲精品成人悠悠色影视| bt7086福利一区国产| 国产亚洲成aⅴ人片在线观看 | 欧美日韩激情在线| 亚洲曰韩产成在线| 欧美体内she精高潮| 久久久精品人体av艺术| 狠狠v欧美v日韩v亚洲ⅴ| 日韩精品一区二区三区三区免费| 视频精品一区二区| 欧美人妇做爰xxxⅹ性高电影| 亚洲成人一区在线| 欧美一个色资源| 国产一区二区网址| 国产精品美女久久久久久久久久久 | 精品欧美一区二区三区精品久久 | 国产精品进线69影院| 成人午夜av在线| 亚洲激情五月婷婷| 欧美日韩小视频| 日本成人超碰在线观看| 精品粉嫩超白一线天av| 国产黄人亚洲片| 7777女厕盗摄久久久| 麻豆精品在线看| 国产欧美视频一区二区三区| av电影在线观看不卡| 亚洲午夜视频在线观看| 日韩欧美一区在线| 国产成a人亚洲精品| 一区二区三区精品在线观看| 91精品在线免费观看| 精品一二三四区| 中文字幕在线观看不卡| 激情成人综合网| 国产精品丝袜久久久久久app| 91蜜桃免费观看视频| 五月婷婷欧美视频| 久久天天做天天爱综合色| gogogo免费视频观看亚洲一| 亚洲自拍与偷拍| 精品精品国产高清a毛片牛牛| 成人综合婷婷国产精品久久免费| 亚洲欧美福利一区二区| 日韩美女天天操| 99热国产精品| 日韩成人午夜精品| 亚洲欧洲性图库| 91精品免费观看| 不卡的av网站| 一区二区中文字幕在线| 欧美久久婷婷综合色| 成人午夜短视频| 美腿丝袜亚洲一区| 亚洲人成网站色在线观看| 日韩欧美中文一区二区| 色综合激情久久| 精品一区二区免费看| 一区二区三区欧美亚洲| 久久久噜噜噜久久人人看 | 亚洲一区二区三区国产| www国产成人| 欧美三区在线观看| 成人亚洲一区二区一| 奇米影视在线99精品| 亚洲三级在线看| 久久午夜免费电影| 91精品国产一区二区三区 | 久久久久国色av免费看影院| 欧美日韩在线精品一区二区三区激情| 国产一区二区三区在线看麻豆| 亚洲电影第三页|