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

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

?? marquee.c

?? uCGUI
?? C
字號:
/*************************************************************************************************************
                                                   uC/GUI
                                               嵌入式通用圖形軟件
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
************************************************************************************************************/
#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一区二区三区免费野_久草精品视频
最新久久zyz资源站| 日本不卡免费在线视频| 久久日一线二线三线suv| 91久久线看在观草草青青| 黄色成人免费在线| 日本亚洲欧美天堂免费| 国产欧美精品在线观看| 久久一区二区三区国产精品| 欧美高清www午色夜在线视频| 国产成人福利片| 激情综合一区二区三区| 青青草原综合久久大伊人精品| 亚洲精品成人a在线观看| 亚洲精品日韩专区silk| 亚洲欧洲精品一区二区三区不卡| 久久久影院官网| 日韩欧美成人激情| 日韩欧美专区在线| 欧美一区二区精品在线| 欧美三级韩国三级日本三斤| 国产成人在线视频网站| 青娱乐精品视频在线| 亚洲成a人v欧美综合天堂| 亚洲蜜臀av乱码久久精品蜜桃| 26uuu成人网一区二区三区| 欧美大片顶级少妇| 日韩免费观看高清完整版| 欧美日韩黄色影视| 精品sm捆绑视频| 精品久久久久久久人人人人传媒 | 日本美女一区二区三区视频| 伊人性伊人情综合网| 一区二区三区蜜桃| 中文字幕亚洲精品在线观看| 中文子幕无线码一区tr| 国产欧美久久久精品影院 | 亚洲免费在线视频| 久久久亚洲精华液精华液精华液| 久久久久久久久久美女| 欧美激情综合在线| 国产精品久久看| 亚洲免费观看高清在线观看| 亚洲二区在线观看| 日韩影院精彩在线| 青娱乐精品视频在线| 国产精品原创巨作av| 成人精品免费视频| 成人国产精品免费| 91久久精品日日躁夜夜躁欧美| 精品视频123区在线观看| 91精品国产综合久久精品app| 欧美不卡一区二区三区四区| 中文字幕乱码久久午夜不卡| 亚洲女同一区二区| 一区二区欧美在线观看| 午夜影院久久久| 国产在线一区二区综合免费视频| 国产精品伊人色| 91久久久免费一区二区| 日韩欧美国产精品| 久久综合狠狠综合久久综合88 | 精品一区中文字幕| 成人免费电影视频| 不卡av在线网| 在线播放/欧美激情| 国产欧美精品一区aⅴ影院| 国产精品国产自产拍高清av| 亚洲电影一级黄| 国产精品一区在线观看乱码| 欧美影院精品一区| 2023国产精品| 一区二区三区精品视频在线| 在线日韩国产精品| 精品美女在线播放| 亚洲精选视频在线| 国产一区二区三区蝌蚪| 国产高清精品网站| 欧美日韩高清一区二区三区| 欧美韩国日本不卡| 婷婷国产在线综合| zzijzzij亚洲日本少妇熟睡| 欧美久久久一区| 国产精品视频一区二区三区不卡| 亚洲一区二区成人在线观看| 国产激情视频一区二区在线观看 | 欧美久久久久久蜜桃| 中文字幕成人在线观看| 日韩中文字幕区一区有砖一区| 国产精品91xxx| 在线综合+亚洲+欧美中文字幕| www精品美女久久久tv| 亚洲人成精品久久久久| 粉嫩av一区二区三区在线播放| 欧美精品亚洲二区| 亚洲美女少妇撒尿| 美女爽到高潮91| 欧美午夜不卡视频| 国产精品福利一区二区| 免费的成人av| 欧美视频在线一区| 亚洲欧美日韩国产中文在线| 精品亚洲免费视频| 石原莉奈在线亚洲二区| 国产999精品久久| 日韩免费性生活视频播放| 一区二区三区四区蜜桃| 国产一区二区0| 欧美视频精品在线观看| 日韩一区欧美一区| 成人综合婷婷国产精品久久免费| 精品理论电影在线| 日日噜噜夜夜狠狠视频欧美人| 在线亚洲+欧美+日本专区| 日韩精品影音先锋| 日韩影院免费视频| 99久久99久久精品免费看蜜桃| 国产亚洲欧美日韩在线一区| 韩国理伦片一区二区三区在线播放 | 中文字幕一区二区三区不卡在线| 国产一区二区在线电影| 精品99久久久久久| 韩日精品视频一区| 777a∨成人精品桃花网| 午夜精品久久久久久久99樱桃 | 欧美精品v日韩精品v韩国精品v| 一区二区三区在线观看国产| 日韩成人免费电影| 欧美探花视频资源| 亚洲成人av一区| 欧美精品电影在线播放| 日欧美一区二区| 91精品在线一区二区| 亚洲自拍欧美精品| 欧美日韩国产免费一区二区| 亚洲福利视频一区| 5858s免费视频成人| 男人操女人的视频在线观看欧美| 欧美一区二区成人| 久久爱另类一区二区小说| 欧美精品久久天天躁| 天堂资源在线中文精品| 在线成人av网站| 毛片av中文字幕一区二区| 久久综合色婷婷| 成人黄色在线视频| 亚洲婷婷在线视频| 欧美性欧美巨大黑白大战| 日本人妖一区二区| 久久久久久久久久久电影| 成人av电影在线| 亚洲国产中文字幕| 日韩欧美国产午夜精品| 国产xxx精品视频大全| 欧美精品一区二区三区视频| 激情小说亚洲一区| 久久久青草青青国产亚洲免观| 精品在线一区二区| 久久精品欧美日韩精品| 天堂精品中文字幕在线| 欧美日韩亚洲综合一区二区三区| 99久久久久久99| 亚洲欧美国产三级| 欧美精品色一区二区三区| 久久成人羞羞网站| 欧美激情一区不卡| 欧美在线免费播放| 久久99蜜桃精品| 国产精品久久国产精麻豆99网站| 日本久久一区二区| 精品一区二区三区免费| 亚洲天堂成人网| 精品日韩成人av| 一本大道久久a久久综合婷婷| 蜜桃视频一区二区三区在线观看| 久久精品人人做人人爽97| 欧美图片一区二区三区| 婷婷久久综合九色综合绿巨人| 欧美成人一区二区三区片免费| 国产精品一级在线| 亚洲欧美乱综合| 国产清纯白嫩初高生在线观看91 | 久久人人97超碰com| 成人av在线网站| 亚洲午夜国产一区99re久久| 久久久久久亚洲综合| 欧美日韩精品一区二区三区 | 欧美一区二视频| www.日韩在线| 看片网站欧美日韩| 亚洲欧美一区二区三区国产精品| 精品久久久三级丝袜| 欧美在线观看一区二区| 国产精品一区二区x88av| 午夜电影网一区| 国产欧美精品国产国产专区| 正在播放一区二区| 色婷婷国产精品| 福利91精品一区二区三区| 毛片一区二区三区| 亚洲bt欧美bt精品777|