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

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

?? guicurs.c

?? uCGUI
?? C
字號(hào):
/*************************************************************************************************************
                                                   uC/GUI
                                               嵌入式通用圖形軟件
File        : GUICurs.C
Purpose     : Cursor routines of the graphics library
************************************************************************************************************/
#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;
  r = GUI_Context.ClipRect;
  LCD_SetClipRectMax();
  if (_cbHideCursor)
    _cbHideCursor();
  GUI_Context.ClipRect = r;
}

static void Show(void) 
{
  GUI_RECT r;
  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();
}


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 */








?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一级生活片| 国产91在线看| 99久久久久久99| 日韩手机在线导航| 亚洲另类春色校园小说| 久久精品国产秦先生| 91浏览器在线视频| 国产偷国产偷精品高清尤物| 丝袜a∨在线一区二区三区不卡| 成人精品小蝌蚪| 2021国产精品久久精品| 人人爽香蕉精品| 欧美色窝79yyyycom| 国产精品美女久久久久高潮| 久久精品国产99国产精品| 欧美日韩一级二级| 亚洲啪啪综合av一区二区三区| 国产美女一区二区三区| 日韩一区二区麻豆国产| 91久久香蕉国产日韩欧美9色| 男女男精品视频| 国产婷婷色一区二区三区四区| 五月天亚洲婷婷| 欧美综合天天夜夜久久| 日韩伦理免费电影| 国产成人福利片| 久久久久久久性| 国产一区二区在线免费观看| 日韩天堂在线观看| 日本在线不卡一区| 欧美日韩成人高清| 亚洲大片免费看| 成人av在线一区二区三区| 国产三级精品视频| 国产一区二区剧情av在线| 日韩欧美一区二区在线视频| 免费成人美女在线观看| 91精品国产综合久久香蕉的特点| 亚洲午夜在线观看视频在线| 在线区一区二视频| 亚洲精品菠萝久久久久久久| 9色porny自拍视频一区二区| 国产精品久久网站| 99久久国产综合精品色伊| 国产精品成人免费在线| a级精品国产片在线观看| 中文字幕va一区二区三区| 成人午夜av在线| 国产精品对白交换视频| 91伊人久久大香线蕉| 亚洲免费在线视频| 91黄色免费看| 亚洲18影院在线观看| 91精品免费在线观看| 免费观看一级欧美片| 精品国产亚洲在线| 国产精品一卡二卡在线观看| 国产精品毛片无遮挡高清| 9久草视频在线视频精品| 亚洲宅男天堂在线观看无病毒| 欧美在线制服丝袜| 日韩1区2区3区| 久久综合成人精品亚洲另类欧美| 国产成人午夜视频| 中文字幕亚洲区| 欧美亚洲丝袜传媒另类| 奇米四色…亚洲| 国产亚洲精品bt天堂精选| 9l国产精品久久久久麻豆| 亚洲一区二区三区自拍| 欧美一级理论性理论a| 国产一区二区福利| 亚洲男人的天堂av| 日韩一区二区三区视频在线| 国产美女精品在线| 亚洲人成影院在线观看| 欧美日韩不卡在线| 国产一区二区三区在线看麻豆| 亚洲欧洲在线观看av| 欧美日韩三级一区| 国产一区二区三区观看| 亚洲人一二三区| 欧美一区二区三区在线电影| 国产成人一级电影| 亚洲不卡一区二区三区| 2020国产精品自拍| 97精品国产97久久久久久久久久久久| 亚洲成人www| 久久综合久色欧美综合狠狠| 色综合久久久久| 久久av资源网| 亚洲美女在线国产| 日韩欧美成人一区| 91美女在线视频| 毛片一区二区三区| 亚洲欧美日本在线| 日韩欧美一二区| 色综合久久中文字幕| 裸体健美xxxx欧美裸体表演| 亚洲欧美综合另类在线卡通| 69久久夜色精品国产69蝌蚪网| 懂色av一区二区三区免费观看| 丝袜亚洲精品中文字幕一区| 国产精品你懂的| 日韩欧美精品在线| 日本高清不卡在线观看| 国产高清亚洲一区| 日韩电影一区二区三区| 亚洲日本va午夜在线电影| xvideos.蜜桃一区二区| 欧美少妇一区二区| 不卡的看片网站| 狠狠色丁香久久婷婷综| 亚洲福利一区二区三区| 国产精品视频一二三区| 日韩女同互慰一区二区| 欧洲日韩一区二区三区| 成人免费毛片高清视频| 久久er精品视频| 三级久久三级久久| 亚洲欧美福利一区二区| 国产亚洲欧美激情| 日韩一级黄色大片| 91麻豆精东视频| 丰满少妇久久久久久久| 久久精品国产亚洲5555| 天堂一区二区在线免费观看| 亚洲欧美国产77777| 中文字幕免费不卡在线| www国产精品av| 91精品免费观看| 欧美亚洲动漫精品| 成人av在线影院| 国产成人精品午夜视频免费| 麻豆高清免费国产一区| 午夜欧美在线一二页| 一区二区三区色| 亚洲人一二三区| 亚洲欧洲美洲综合色网| 国产精品系列在线| 久久久久成人黄色影片| 2019国产精品| 久久综合给合久久狠狠狠97色69| 日韩欧美激情在线| 日韩一区二区三免费高清| 欧美日韩成人一区二区| 欧美色网站导航| 欧美日韩免费视频| 欧美性三三影院| 色狠狠av一区二区三区| 91女厕偷拍女厕偷拍高清| av亚洲精华国产精华精华| 成人黄色在线网站| bt欧美亚洲午夜电影天堂| 99在线精品观看| av亚洲精华国产精华精| 97国产精品videossex| 99久久婷婷国产| 色综合欧美在线| 欧美综合视频在线观看| 欧美日韩一区二区欧美激情| 欧美日韩久久一区| 欧美精选午夜久久久乱码6080| 欧美日本韩国一区二区三区视频| 欧美日韩小视频| 日韩亚洲欧美综合| 一区二区三区国产精品| 欧美一区二区播放| 色94色欧美sute亚洲线路一久| 欧美日韩国产高清一区二区三区 | 国产不卡在线视频| 国产精品一区不卡| av一区二区三区在线| 色婷婷久久综合| 欧美日韩综合一区| 91精品国产一区二区| 欧美电影免费提供在线观看| 久久精品人人做人人爽人人| 国产精品人妖ts系列视频 | 91精品国产综合久久婷婷香蕉| 91精品国产91久久久久久最新毛片 | 蜜桃免费网站一区二区三区| 久久99国内精品| 高清久久久久久| 一本在线高清不卡dvd| 欧美情侣在线播放| 欧美r级电影在线观看| 国产欧美一区视频| 亚洲人成伊人成综合网小说| 天天影视色香欲综合网老头| 蜜臀91精品一区二区三区 | 午夜精品一区在线观看| 毛片av一区二区三区| 国产91丝袜在线观看| 色婷婷av久久久久久久| 欧美一区二区成人6969| 国产免费成人在线视频| 亚洲影院久久精品| 玖玖九九国产精品| 91麻豆.com|