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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? guicurs.c

?? 一種可移植系統(tǒng)
?? C
字號(hào):
/***********************************************************************************************************                                                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        : GUICurs.C
Purpose     : Cursor routines of the graphics library
---------------------------END-OF-HEADER------------------------------
*/

#include <stddef.h>           /* needed for definition of NULL */
#include "GUI_Private.h"

#if GUI_SUPPORT_CURSOR

/*******************************************************************
*
*       Types
*
********************************************************************
*/
void   (*_cbShowCursor)(void);
void   (*_cbHideCursor)(void);

/*******************************************************************
*
*       static data
*
********************************************************************
*/

static  GUI_HMEM _hBuffer;
static  GUI_RECT _Rect;
static  char _CursorOn;
static  const GUI_BITMAP* _pBM;
static  U8   _CursorDeActCnt;
static  int  _AllocSize;

/*******************************************************************
*
*                  static Show / Hide
*
********************************************************************

Purpose:
  Show / Hide cursor.
*/
static void Hide(void) {
  GUI_RECT r = GUI_Context.ClipRect;
  LCD_SetClipRectMax();
  if (_cbHideCursor)
    _cbHideCursor();
  GUI_Context.ClipRect = r;
}

static void Show(void) {
  GUI_RECT r = GUI_Context.ClipRect;
  LCD_SetClipRectMax();
  if (_cbShowCursor)
    _cbShowCursor();
  GUI_Context.ClipRect = r;
}

static void  _CalcRect(void) {
  if (_pBM) {
    _Rect.x1 = _Rect.x0 + _pBM->XSize - 1;
    _Rect.y1 = _Rect.y0 + _pBM->YSize - 1;
  }
}

/*******************************************************************
*
*                  Activate / Deactivate
*
********************************************************************

Purpose:
  Allows activation or deactivation of cursor. Can be used to make
  cursor flash.
*/
void GUI_CURSOR_Activate(void) {
  GUI_LOCK();
  if ((--_CursorDeActCnt) ==0) {
    Show();
  }
  GUI_UNLOCK();
}

void GUI_CURSOR_Deactivate(void) {
  GUI_LOCK();
  if (_CursorDeActCnt-- ==0)
    Hide();
  GUI_UNLOCK();
}



/*******************************************************************
*
*                  static: SetCursor
*
********************************************************************

Purpose:
  Show cursor.
*/
static void _SetCursor(const GUI_BITMAP* pBM, void (*cbShow)(void), void (*cbHide)(void)) {
  Hide();  /* Make sure the old cursor (if there was an old one) is history */
  _CursorOn = 1;
  _pBM = pBM;
  _cbShowCursor = cbShow;
  _cbHideCursor = cbHide;
  Show();
}

/*******************************************************************
*
*                  Cursor
*
********************************************************************
Purpose:
*/

static void _Draw(void) {
  int x, y, xSize, ySize;
  LCD_PIXELINDEX* pData;
  GUI_LOCK();
  /* Save bitmap data */
  pData = GUI_ALLOC_h2p(_hBuffer);
  xSize = _Rect.x1 - _Rect.x0 + 1;
  ySize = _Rect.y1 - _Rect.y0 + 1;
  for (y = 0; y < ySize; y++) {
    for (x = 0; x < xSize; x++) {
      *(pData + x) = LCD_GetPixelIndex(_Rect.x0 + x, _Rect.y0 + y);
    }
    pData += _pBM->XSize;
  }
  GUI_UNLOCK();
  /* Draw bitmap */
  GL_DrawBitmap(_pBM, _Rect.x0, _Rect.y0);
}

static void _Undraw(void) {
  int x, y, xSize, ySize;
  LCD_PIXELINDEX* pData;
  /* Save bitmap data */
  GUI_LOCK();
  pData = GUI_ALLOC_h2p(_hBuffer);
  xSize = _Rect.x1 - _Rect.x0 + 1;
  ySize = _Rect.y1 - _Rect.y0 + 1;
  for (y = 0; y < ySize; y++) {
    for (x = 0; x < xSize; x++) {
      LCD_SetPixelIndex(x + _Rect.x0, y + _Rect.y0, *(pData + x));
    }
    pData += _pBM->XSize;
  }
  GUI_UNLOCK();
}


void GUI_CURSOR_Select(const GUI_BITMAP* pBM) {
  int AllocSize;
  GUI_LOCK();
  if (pBM != _pBM) {
    AllocSize = pBM->XSize * pBM->YSize * sizeof(LCD_PIXELINDEX);
    if (AllocSize != _AllocSize) {
      GUI_ALLOC_FreePtr(&_hBuffer);
    }
    _hBuffer = GUI_ALLOC_Alloc(AllocSize);
    _SetCursor(pBM, _Draw, _Undraw);
    _pBM = pBM;
    _CalcRect();
  }
  GUI_UNLOCK();
}


/*******************************************************************
*
*                  GUI_CURSOR_TempHide
*
********************************************************************
Purpose:
  Hide cursor if a part of the given rectangle is located in the
  rectangle used for the cursor. This routine is called automatically
  by the window manager. This way the window manager can
  automatically make sure that the cursor is always displayed
  correctly.
Params:
  pRect   Rectangle under consideration

*/
void GUI_CURSOR_TempHide(const GUI_RECT* pRect) {
  if (_CursorOn) {
    if (_CursorDeActCnt==0) {
      if ((pRect == NULL) | GUI_RectsIntersect(pRect, &_Rect)) {
        Hide();
      }
    }
  }
}

void GUI_CURSOR_TempUnhide(const GUI_RECT* pRect) {
  if (_CursorOn) {
    if (_CursorDeActCnt==0) {
      if ((pRect == NULL) | GUI_RectsIntersect(pRect, &_Rect)) {
        Show();
      }
    }
  }
}


/*******************************************************************
*
*                  GUI_CURSOR_Clear
*
********************************************************************

Purpose:
  Clears cursor.
*/

void GUI_CURSOR_Clear(void) {
  GUI_LOCK();
  Hide();
  _CursorOn = 0;
  /* Set function pointer which window manager can use */
  GUI_CURSOR_pfTempHide   = NULL;
  GUI_CURSOR_pfTempUnhide = NULL;
  GUI_UNLOCK();
}

/*******************************************************************
*
*                  GUI_CURSOR_Show
*
********************************************************************

Purpose:
  Shows cursor.
*/

void GUI_CURSOR_Show(void) {
  GUI_LOCK();
  Hide();
  _CursorOn = 1;
  if (!_pBM) {
    GUI_CURSOR_Select(&GUI_MouseArrow);
  }
  /* Set function pointer which window manager can use */
  GUI_CURSOR_pfTempHide   = GUI_CURSOR_TempHide;
  GUI_CURSOR_pfTempUnhide = GUI_CURSOR_TempUnhide;
  GUI_UNLOCK();
}

/*******************************************************************
*
*                  GUI_CURSOR_SetPosition
*
********************************************************************

Purpose:
  Sets position of cursor.
*/

void GUI_CURSOR_SetPosition(int x, int y) {
  GUI_LOCK();
  if ((_Rect.x0 != x) | (_Rect.y0 != y)) {
    if (_CursorOn) {
      Hide();
    }
    _Rect.x0 = x;
    _Rect.y0 = y;
    _CalcRect();
    if (_CursorOn) {
      Show();
    }
  }
  GUI_UNLOCK();
}






#else

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

#endif   /* GUI_SUPPORT_CURSOR */








?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品亚洲精品国产欧美 | 欧洲在线/亚洲| 国产成人小视频| 秋霞影院一区二区| 图片区小说区国产精品视频| 一区二区三区波多野结衣在线观看| 久久亚洲综合色| 精品久久久三级丝袜| 欧美日韩免费观看一区二区三区| a在线欧美一区| 成人午夜电影久久影院| 国产精品自拍一区| 国内精品国产成人国产三级粉色 | 91在线视频观看| 不卡视频在线看| 成人网男人的天堂| 91污片在线观看| 色综合色综合色综合| 色综合一个色综合亚洲| 欧美亚洲国产怡红院影院| 欧美日韩一区精品| 51精品国自产在线| 日韩欧美精品在线| 久久综合狠狠综合久久综合88 | 91影院在线免费观看| 91国模大尺度私拍在线视频| 欧美在线观看18| 欧美精品久久天天躁| 欧美成人在线直播| 欧美国产欧美亚州国产日韩mv天天看完整| 国产精品萝li| 亚洲成人福利片| 激情文学综合插| 成人午夜在线播放| 欧美三级视频在线| 久久亚洲精品国产精品紫薇| 亚洲欧美一区二区三区孕妇| 亚洲成人精品影院| 国产一区福利在线| 91国在线观看| 欧美v日韩v国产v| 亚洲三级免费电影| 久久成人久久爱| 91福利视频久久久久| 日韩一区二区三区视频在线观看| 国产精品美女www爽爽爽| 午夜精品久久久久影视| 国产大片一区二区| 8x8x8国产精品| 亚洲日本欧美天堂| 国内欧美视频一区二区 | 亚洲午夜在线电影| 国产成人在线观看| 欧美一区二区播放| 亚洲精品福利视频网站| 风流少妇一区二区| 欧美一区日本一区韩国一区| 亚洲精品精品亚洲| 国产999精品久久久久久| 91精品国产91热久久久做人人| 国产精品高潮久久久久无| 久久精品久久综合| 欧美高清视频一二三区 | 日本久久电影网| 中文字幕在线观看不卡| 国产一区二区三区在线看麻豆| 欧美日韩激情一区二区| 日韩理论片在线| www.成人在线| 国产精品毛片a∨一区二区三区| 精品在线观看视频| 欧美电影免费提供在线观看| 免费不卡在线视频| 91精品国产综合久久久蜜臀粉嫩| 亚洲一区在线视频| 欧美系列在线观看| 亚洲午夜电影网| 欧美在线视频日韩| 亚洲mv大片欧洲mv大片精品| 色老头久久综合| 亚洲国产成人精品视频| 欧美日韩在线一区二区| 亚洲成人综合视频| 91麻豆精品国产自产在线| 午夜国产不卡在线观看视频| 欧美日韩国产在线播放网站| 午夜影院在线观看欧美| 91精品国产综合久久久久久| 日本va欧美va精品发布| 精品日韩一区二区三区免费视频| 久久69国产一区二区蜜臀| 精品综合免费视频观看| 日韩免费成人网| 国产成人亚洲综合a∨婷婷| 中文字幕一区在线| 色婷婷综合久色| 日韩中文字幕区一区有砖一区| 精品国产sm最大网站| 成人av网站大全| 亚洲网友自拍偷拍| 精品国产欧美一区二区| 成人激情黄色小说| 日日夜夜精品视频免费| 视频一区二区三区在线| 欧美mv和日韩mv国产网站| 国产精品12区| 亚洲成人免费影院| 久久影音资源网| 91福利在线观看| 国产成人啪免费观看软件| 亚洲综合区在线| 国产视频一区不卡| 欧美日韩高清影院| 99久久久久久| 韩国三级电影一区二区| 午夜不卡av在线| 中文字幕一区二区三区不卡 | 欧美哺乳videos| 国产精品99久久久久久似苏梦涵| 精品国产sm最大网站免费看| 水野朝阳av一区二区三区| 精品av久久707| 91精品国产综合久久久蜜臀图片| 欧美午夜免费电影| 欧美乱妇15p| 欧美一区二区高清| 精品国产乱码久久久久久浪潮 | 日韩亚洲欧美一区| 色婷婷精品大在线视频| 国产美女一区二区| 精品一区二区三区蜜桃| 亚洲图片自拍偷拍| 一区二区三区在线播| 国产精品视频看| 欧美国产激情二区三区| 精品免费一区二区三区| 宅男噜噜噜66一区二区66| 欧美三区在线观看| 色婷婷精品大在线视频| 色综合天天综合网国产成人综合天| 国产成人综合网站| 国产成人福利片| 国产在线精品国自产拍免费| 狠狠色狠狠色综合| 国产综合一区二区| 国产一区啦啦啦在线观看| 国内精品久久久久影院一蜜桃| 国模少妇一区二区三区| 狠狠色丁香久久婷婷综| 国产不卡免费视频| 91在线观看地址| 在线观看不卡视频| 在线观看www91| 欧美一级二级三级乱码| 久久综合久久综合九色| 国产精品久久夜| 天天综合网 天天综合色| 激情综合色综合久久| 国产成人激情av| 欧美日韩综合在线免费观看| 欧美大片顶级少妇| 综合婷婷亚洲小说| 久久国内精品自在自线400部| 成人性生交大片免费看在线播放| 欧美亚洲高清一区二区三区不卡| 日韩丝袜情趣美女图片| 中文在线一区二区| 蜜臀av一区二区在线免费观看| 国产精品亚洲第一区在线暖暖韩国| 97精品久久久久中文字幕| 欧美精品久久一区| 亚洲国产成人私人影院tom| 视频一区二区国产| 国产**成人网毛片九色| 欧美日韩一区久久| 中文字幕巨乱亚洲| 午夜av一区二区| 91在线免费视频观看| 久久久久久**毛片大全| 天堂在线亚洲视频| 一本色道久久加勒比精品 | 午夜激情综合网| 成人激情校园春色| 精品sm在线观看| 久久精品理论片| 国产乱码精品一区二区三| 蜜臀99久久精品久久久久久软件| 91在线你懂得| 国产精品美女一区二区| 麻豆国产精品777777在线| 欧美日本在线视频| 亚洲综合在线电影| 欧美在线|欧美| 亚洲午夜一区二区| 欧美久久高跟鞋激| 韩国精品主播一区二区在线观看| 韩国欧美国产1区| 7777精品伊人久久久大香线蕉| 香蕉成人啪国产精品视频综合网 | 日韩va欧美va亚洲va久久|