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

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

?? marquee.c

?? 一個在44b0上移植成功的ucgui
?? 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一区二区三区免费野_久草精品视频
日韩精品亚洲一区二区三区免费| 久久精品视频免费观看| 亚洲女厕所小便bbb| 91香蕉视频污在线| 亚洲一区二区黄色| 日韩欧美亚洲另类制服综合在线| 狠狠色狠狠色综合日日91app| 精品美女被调教视频大全网站| 精品一区二区三区免费毛片爱| 国产日韩欧美麻豆| 91天堂素人约啪| 偷窥国产亚洲免费视频| 久久久.com| 在线观看成人小视频| 美美哒免费高清在线观看视频一区二区| 日韩你懂的在线播放| 成人高清视频在线| 亚洲成人一二三| 久久综合九色欧美综合狠狠| 99精品视频一区| 日韩一区精品字幕| 欧美国产精品v| 欧美日韩免费电影| 国产福利91精品一区| 亚洲图片一区二区| 中文字幕欧美日本乱码一线二线 | 亚洲欧美综合另类在线卡通| 91亚洲精品久久久蜜桃网站| 奇米精品一区二区三区在线观看 | 亚洲国产欧美另类丝袜| 91精品综合久久久久久| 国产精品1区2区3区在线观看| 亚洲三级电影全部在线观看高清| 91精品国产综合久久国产大片| 国产一区二区三区精品欧美日韩一区二区三区 | 午夜免费欧美电影| 亚洲国产精品二十页| 欧美精三区欧美精三区| 丁香桃色午夜亚洲一区二区三区| 亚洲图片欧美一区| 国产亚洲欧洲997久久综合| 91免费国产在线| 免费看欧美女人艹b| 又紧又大又爽精品一区二区| 久久久国产精华| 制服丝袜中文字幕亚洲| 91一区二区在线观看| 国产乱码精品一区二区三区忘忧草| 亚洲一区二区三区视频在线| 国产精品久久久久久久第一福利| 日韩视频123| 精品1区2区3区| 日韩精品一区二区三区老鸭窝| 成人午夜视频福利| 美日韩一区二区| 亚洲bt欧美bt精品| 亚洲永久免费av| 亚洲欧洲性图库| 久久久精品国产99久久精品芒果| 欧美人与z0zoxxxx视频| 色呦呦网站一区| 99在线精品观看| 国产成人av电影在线播放| 激情综合色丁香一区二区| 亚洲成人免费视频| 亚洲小说春色综合另类电影| 亚洲色图在线播放| 中文字幕视频一区二区三区久| 久久免费的精品国产v∧| 日韩欧美成人一区| 日韩欧美中文字幕精品| 欧美区一区二区三区| 欧美无砖砖区免费| 欧美性三三影院| 欧美在线视频不卡| 欧美性大战xxxxx久久久| 欧日韩精品视频| 欧美色手机在线观看| 欧美三级午夜理伦三级中视频| 色先锋资源久久综合| 91福利区一区二区三区| 欧洲亚洲国产日韩| 欧美视频三区在线播放| 9191精品国产综合久久久久久| 在线不卡免费av| 日韩精品一区二区三区swag | 亚洲日本乱码在线观看| 国产精品乱码一区二区三区软件| 欧美国产精品专区| 亚洲欧美视频在线观看| 亚洲一区二区三区视频在线播放| 亚洲成人www| 国产在线不卡一区| av电影在线观看完整版一区二区| 91丨九色丨蝌蚪丨老版| 欧美久久久久久蜜桃| 日韩欧美视频在线| 国产精品全国免费观看高清| 亚洲另类一区二区| 视频一区二区中文字幕| 国产一区二区按摩在线观看| 成人美女在线视频| 欧美亚一区二区| 精品久久久久久久久久久久久久久 | 精品一区二区影视| 成人一区二区三区视频| 欧美视频一区在线观看| 久久综合给合久久狠狠狠97色69| 1024亚洲合集| 免费在线视频一区| 成人av在线一区二区| 欧美妇女性影城| 国产亚洲欧美日韩俺去了| 亚洲猫色日本管| 极品美女销魂一区二区三区| jizz一区二区| 欧美一区二区免费| 亚洲视频一二区| 久久国产麻豆精品| 色婷婷综合在线| 久久青草国产手机看片福利盒子 | 中文字幕一区二区5566日韩| 亚洲国产精品自拍| 丁香天五香天堂综合| 91麻豆精品国产91久久久更新时间| 久久久久久久网| 日韩和欧美的一区| 一道本成人在线| 久久久久久久久久久久久女国产乱| 亚洲午夜久久久| 99视频精品全部免费在线| 精品国产一区久久| 午夜欧美在线一二页| 91在线国产观看| 久久久久久久久久美女| 日韩福利视频网| 欧美亚洲免费在线一区| 国产精品久久午夜夜伦鲁鲁| 国模无码大尺度一区二区三区| 欧美日韩国产免费| 亚洲欧美福利一区二区| 国产成人av在线影院| 精品黑人一区二区三区久久| 视频一区二区三区在线| 欧美伊人久久久久久久久影院 | 成人午夜免费电影| 欧美一区永久视频免费观看| 亚洲精品成a人| 成人不卡免费av| 国产免费观看久久| 国产在线精品免费av| 精品日韩99亚洲| 国内精品在线播放| 欧美成人a∨高清免费观看| 日日摸夜夜添夜夜添国产精品 | 97se亚洲国产综合在线| 亚洲国产精品国自产拍av| 国产精品影视在线| 久久夜色精品国产噜噜av| 久久精工是国产品牌吗| 日韩欧美一区二区视频| 麻豆精品视频在线观看| 欧美xxxx在线观看| 久久精品国产精品亚洲红杏| 日韩一级欧美一级| 麻豆精品视频在线| 欧美精品一区二区蜜臀亚洲| 九一久久久久久| 久久久美女毛片| 成人亚洲精品久久久久软件| 亚洲欧美综合另类在线卡通| 99re在线视频这里只有精品| 亚洲日本一区二区| 欧美午夜精品一区二区蜜桃| 亚洲va韩国va欧美va精品| 日韩一级免费观看| 国产在线视频不卡二| 国产视频一区二区在线观看| 成人免费毛片片v| 亚洲激情中文1区| 欧美色精品天天在线观看视频| 日韩精品一区第一页| 精品久久五月天| 成人一道本在线| 亚洲高清三级视频| 日韩女优视频免费观看| 国产精品66部| 亚洲综合免费观看高清在线观看| 欧美日韩国产一二三| 精品一区二区三区免费观看| 国产精品久久久久aaaa樱花| 欧美性videosxxxxx| 精品无人区卡一卡二卡三乱码免费卡| 国产亚洲人成网站| 欧美视频一区二区三区在线观看| 精品一区二区三区日韩| 1000精品久久久久久久久| 色综合视频一区二区三区高清| 香蕉加勒比综合久久| 26uuu国产在线精品一区二区|