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

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

?? widget.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        : BUTTON.cPurpose     : emWin GSC button widget---------------------------END-OF-HEADER------------------------------*/#include <stdlib.h>#include <string.h>#include "WIDGET.h"#include "GUIDebug.h"#include "GUI.h"#include "GUI_Protected.h"#include "WM_Intern.h"#if GUI_WINSUPPORT/***********************************************************************       Private config defaults************************************************************************//***********************************************************************       Object definition************************************************************************//***********************************************************************       Static data************************************************************************/const WIDGET_EFFECT* _pEffectDefault = &WIDGET_Effect_3D;/***********************************************************************       Macros for internal use************************************************************************/#define WIDGET_H2P(hWin)        ((WIDGET*)WM_HMEM2Ptr(hWin))/***********************************************************************       Static routines************************************************************************/static void _RotateRect90(WIDGET* pWidget, GUI_RECT* pDest, const GUI_RECT* pRect) {  int XSize;  XSize = pWidget->Win.Rect.x1 - pWidget->Win.Rect.x0;  pDest->x0 = XSize - pRect->y1;  pDest->x1 = XSize - pRect->y0;  pDest->y0 = pRect->x0;  pDest->y1 = pRect->x1;}/***********************************************************************       Public routines************************************************************************//***********************************************************************       WIDGET__GetClientRect  Returns the logical client rectangle, which means the normal  client rectangle for widgets with their standard orientation  and the rotated one for rotated widgets.*/void WIDGET__GetClientRect(WIDGET* pWidget, GUI_RECT* pRect) {  if (pWidget->State & WIDGET_STATE_VERTICAL) {    GUI_RECT Rect;    WM_GetClientRect(&Rect);    pRect->x0 = Rect.y0;    pRect->x1 = Rect.y1;    pRect->y0 = Rect.x0;    pRect->y1 = Rect.x1;  } else {    WM_GetClientRect(pRect);  }}GUI_COLOR WIDGET__GetBkColor(WM_HWIN hObj) {  GUI_COLOR BkColor = WM_GetBkColor(WM_GetParent(hObj));  if (BkColor == GUI_INVALID_COLOR) {    BkColor = DIALOG_GetBkColor();  }  return BkColor;}/***********************************************************************       WIDGET__GetInsideRect*/void WIDGET__GetInsideRect(WIDGET* pWidget, GUI_RECT* pRect) {  WM__GetClientRectWin(&pWidget->Win, pRect);  GUI__ReduceRect(pRect, pRect, pWidget->pEffect->EffectSize);}int WIDGET__GetXSize(const WIDGET* pWidget) {  int r;  if (pWidget->State & WIDGET_STATE_VERTICAL) {    r = pWidget->Win.Rect.y1 - pWidget->Win.Rect.y0;  } else {    r = pWidget->Win.Rect.x1 - pWidget->Win.Rect.x0;  }  return r + 1;}int WIDGET__GetYSize(const WIDGET* pWidget) {  int r;  if (pWidget->State & WIDGET_STATE_VERTICAL) {    r = pWidget->Win.Rect.x1 - pWidget->Win.Rect.x0;  } else {    r = pWidget->Win.Rect.y1 - pWidget->Win.Rect.y0;  }  return r + 1;}/*********************************************************************       WIDGET__GetWindowSizeX  Return width (or height in case of rotation) of window in pixels*/int WIDGET__GetWindowSizeX(WM_HWIN hWin) {  WIDGET* pWidget = WIDGET_H2P(hWin);  if (pWidget->State & WIDGET_STATE_VERTICAL) {    return WM_GetWindowSizeY(hWin);  } else {    return WM_GetWindowSizeX(hWin);  }}/***********************************************************************       WIDGET_SetState*/void WIDGET_SetState(WM_HWIN hObj, int State) {  WIDGET* pWidget = WIDGET_H2P(hObj);  if (State != pWidget->State) {    pWidget->State = State;    WM_Invalidate(hObj);  }}/***********************************************************************       WIDGET__IsEnabled  Returns:    1 if Widget is enabled    0 else*/int WIDGET__IsEnabled(WIDGET* pWidget) {  return pWidget->State & WIDGET_STATE_ENABLED ? 1 : 0;}/***********************************************************************       WIDGET_OrState*/void WIDGET_OrState(WM_HWIN hObj, int State) {  WIDGET* pWidget = WIDGET_H2P(hObj);  if (State != (pWidget->State & State)) {    pWidget->State |= State;    WM_Invalidate(hObj);  }}/***********************************************************************       WIDGET_AndState  Purpose:    Clear flags in the State element of the widget.    The bits to be cleared are set.  Example:    ...(..., 3);   // Clears bit 0, 1 int the state member */void WIDGET_AndState(WM_HWIN hObj, int Mask) {  U16 StateNew;  WIDGET* pWidget = WIDGET_H2P(hObj);  StateNew = pWidget->State & (~Mask);  if (pWidget->State != StateNew) {    pWidget->State = StateNew;    WM_Invalidate(hObj);  }}/***********************************************************************       WIDGET_SetInactive*/void WIDGET_Disable(WM_HWIN hObj) {  WIDGET* pWidget;  if (hObj) {    WM_LOCK();    pWidget = WIDGET_H2P(hObj);    if (pWidget->State & WIDGET_STATE_ENABLED) {      pWidget->State &= ~WIDGET_STATE_ENABLED;      WM_Invalidate(hObj);    }    WM_UNLOCK();  }}/***********************************************************************       WIDGET_Enable*/void WIDGET_Enable(WM_HWIN hObj) {  WIDGET* pWidget;  if (hObj) {    WM_LOCK();    pWidget = WIDGET_H2P(hObj);    if ((pWidget->State & WIDGET_STATE_ENABLED) == 0) {      pWidget->State |= WIDGET_STATE_ENABLED;      WM_Invalidate(hObj);    }    WM_UNLOCK();  }}void WIDGET__Init(WIDGET* pWidget, U16 State) {  pWidget->pEffect       = _pEffectDefault;  pWidget->State         = State;}/***********************************************************************       WIDGET_HandleActive*/int WIDGET_HandleActive(WM_HWIN hObj, WM_MESSAGE* pMsg) {  WM_MESSAGE Msg;  WIDGET* pWidget = WIDGET_H2P(hObj);  switch (pMsg->MsgId) {    case WM_GET_ID:      pMsg->Data.v = pWidget->Id;      return 0;                        /* Message handled -> Return */    case WM_SET_FOCUS:      if (pMsg->Data.v == 1) {        WIDGET_SetState(hObj, pWidget->State |  WIDGET_STATE_FOCUS);      } else {        WIDGET_SetState(hObj, pWidget->State & ~WIDGET_STATE_FOCUS);      }      Msg.MsgId = WM_NOTIFY_CHILD_HAS_FOCUS;      Msg.Data.v = pMsg->Data.v;      WM_SendToParent(hObj, &Msg);      return 0;    case WM_GET_HAS_FOCUS:      pMsg->Data.v = pWidget->State & WIDGET_STATE_FOCUS;      return 0;                         /* Message handled */    case WM_SET_ENABLE:      if (pMsg->Data.v) {        WIDGET_OrState(hObj, WIDGET_STATE_ENABLED);      } else {        WIDGET_AndState(hObj, WIDGET_STATE_ENABLED);      }    case WM_GET_ACCEPT_FOCUS:      pMsg->Data.v = (pWidget->State & WIDGET_STATE_FOCUSSABLE) ? 1 : 0;               /* Can handle focus */      return 0;                         /* Message handled */     case WM_GET_INSIDE_RECT:      WIDGET__GetInsideRect(pWidget, (GUI_RECT*)pMsg->Data.p);      return 0;                         /* Message handled */  }  return 1;                           /* Message NOT handled */}void WIDGET__SetScrollState(WM_HWIN hWin, const WM_SCROLL_STATE* pVState, const WM_SCROLL_STATE* pHState) {  WM_HWIN hScroll;  /* vertical scrollbar */  hScroll = WM_GetDialogItem(hWin, GUI_ID_VSCROLL);    WM_SetScrollState(hScroll, pVState);  /* horizontal scrollbar */  hScroll = WM_GetDialogItem(hWin, GUI_ID_HSCROLL);    WM_SetScrollState(hScroll, pHState);}void WIDGET__DrawFocusRect(WIDGET* pWidget, const GUI_RECT* pRect, int Dist) {  GUI_RECT Rect;  if (pWidget->State & WIDGET_STATE_VERTICAL) {    _RotateRect90(pWidget, &Rect, pRect);    pRect = &Rect;  }  GUI_DrawFocusRect(pRect, Dist);}void WIDGET__DrawVLine(WIDGET* pWidget, int x, int y0, int y1) {  if (pWidget->State & WIDGET_STATE_VERTICAL) {    GUI_RECT r0, r1;    r0.x0 = x;    r0.x1 = x;    r0.y0 = y0;    r0.y1 = y1;    _RotateRect90(pWidget, &r1, &r0);    GUI_DrawHLine(r1.y0, r1.x0, r1.x1);  } else {    GUI_DrawVLine(x, y0, y1);  }}/***********************************************************************       WIDGET_FillRectEx*/void WIDGET__FillRectEx(WIDGET* pWidget, const GUI_RECT* pRect) {  if (pWidget->State & WIDGET_STATE_VERTICAL) {    GUI_RECT r;    _RotateRect90(pWidget, &r, pRect);    pRect = &r;  }  GUI_FillRectEx(pRect);}/***********************************************************************       WIDGET__EFFECT_ ...*/void WIDGET__EFFECT_DrawDownRect(WIDGET* pWidget, GUI_RECT* pRect) {  GUI_RECT Rect;  if (pRect == NULL) {    WM_GetClientRect(&Rect);    pRect = &Rect;  }  if (pWidget->State & WIDGET_STATE_VERTICAL) {    _RotateRect90(pWidget, &Rect, pRect);    pRect = &Rect;  }  pWidget->pEffect->pfDrawDownRect(pRect);}void WIDGET__EFFECT_DrawDown(WIDGET* pWidget) {  WIDGET__EFFECT_DrawDownRect(pWidget, NULL);}void WIDGET__EFFECT_DrawUpRect(WIDGET* pWidget, GUI_RECT* pRect) {  GUI_RECT Rect;  if (pWidget->State & WIDGET_STATE_VERTICAL) {    _RotateRect90(pWidget, &Rect, pRect);    pRect = &Rect;  }  pWidget->pEffect->pfDrawUpRect(pRect);}void WIDGET_SetDefaultEffect(const WIDGET_EFFECT* pEffect) {  _pEffectDefault = pEffect;}#else                            /* Avoid problems with empty object modules */  void WIDGET_C(void) {}#endif /* GUI_WINSUPPORT */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美另类在线| 久久久影院官网| 午夜精品久久久久久久 | 99久久久久久| 亚洲女子a中天字幕| 在线欧美日韩精品| 日日噜噜夜夜狠狠视频欧美人| 欧美美女直播网站| 精品一区二区三区视频在线观看| 久久伊99综合婷婷久久伊| 国产成人精品亚洲777人妖| 专区另类欧美日韩| 91精品国产黑色紧身裤美女| 精品在线一区二区| 亚洲欧洲制服丝袜| 欧美一区三区二区| 国产电影精品久久禁18| 亚洲另类春色校园小说| 911国产精品| 成人永久看片免费视频天堂| 亚洲激情图片一区| 精品国产91乱码一区二区三区| 高潮精品一区videoshd| 亚洲电影在线免费观看| 久久女同互慰一区二区三区| 91在线小视频| 九九视频精品免费| 一区二区三区在线视频免费| 欧美不卡视频一区| 欧美自拍偷拍一区| 国产成人精品亚洲777人妖| 亚洲国产成人porn| 国产偷国产偷亚洲高清人白洁| 欧美三级韩国三级日本一级| 国产91精品露脸国语对白| 五月天精品一区二区三区| 久久久久国产一区二区三区四区| 欧美综合色免费| 成人精品视频一区二区三区| 美国毛片一区二区三区| 亚洲精品国产精品乱码不99 | 日本精品视频一区二区| 久久99精品国产麻豆不卡| 亚洲综合图片区| 久久久久久久久久久久久女国产乱| 欧美又粗又大又爽| 成人不卡免费av| 国产一区二区三区视频在线播放| 午夜伊人狠狠久久| 亚洲精品高清在线观看| 国产精品大尺度| 精品美女一区二区三区| 在线不卡中文字幕播放| 欧洲日韩一区二区三区| 成人激情免费视频| 国产精品影视网| 精品一区二区三区久久久| 亚洲h精品动漫在线观看| 最新日韩在线视频| 国产精品免费视频网站| 久久久久久夜精品精品免费| 日韩一区二区在线看| 欧美三级电影在线观看| 在线视频一区二区三区| 色88888久久久久久影院野外| 99re亚洲国产精品| jizz一区二区| 成人爱爱电影网址| 不卡一区二区三区四区| av中文字幕一区| eeuss鲁片一区二区三区| av中文字幕不卡| 91丨九色丨尤物| 色哟哟一区二区在线观看| 91免费版在线| 色狠狠av一区二区三区| 色8久久人人97超碰香蕉987| 91福利社在线观看| 欧美日韩国产片| 日韩欧美一区在线| 日韩免费观看高清完整版在线观看| 正在播放亚洲一区| 欧美tickling挠脚心丨vk| 欧美电影免费观看高清完整版在线观看| 欧美一区二区三区四区视频| 欧美一级高清大全免费观看| 精品久久久久久最新网址| 国产视频亚洲色图| 国产精品女主播在线观看| 国产精品午夜久久| 亚洲狠狠丁香婷婷综合久久久| 亚洲一区二区av电影| 蜜臀av一区二区| 国产成人免费视频精品含羞草妖精 | 亚洲欧洲中文日韩久久av乱码| 亚洲欧洲制服丝袜| 日韩精品一级中文字幕精品视频免费观看| 婷婷国产在线综合| 国产精品白丝av| 色综合久久精品| 日韩欧美国产综合一区 | 欧美在线色视频| 678五月天丁香亚洲综合网| 欧美成人在线直播| 国产精品毛片大码女人| 亚洲一区二区三区三| 看国产成人h片视频| 粉嫩av亚洲一区二区图片| 在线观看日韩电影| 精品嫩草影院久久| 亚洲特黄一级片| 久久99国产精品久久99| 99国产欧美另类久久久精品| 91精品国产综合久久国产大片| 久久久久综合网| 亚洲二区视频在线| 粉嫩一区二区三区性色av| 欧美三级日本三级少妇99| 国产日韩欧美一区二区三区乱码 | 91在线你懂得| 欧美一区二区美女| 国产精品久久久久一区二区三区共| 亚洲国产精品久久久男人的天堂| 国产一二三精品| 欧美美女bb生活片| 中文字幕亚洲成人| 国产在线看一区| 欧美三级韩国三级日本一级| 国产精品午夜免费| 麻豆精品视频在线观看免费| 色婷婷精品久久二区二区蜜臂av | 亚洲精品一区二区三区精华液| 亚洲三级在线免费| 国产精品77777| 91精品在线麻豆| 亚洲制服丝袜在线| fc2成人免费人成在线观看播放| 精品久久久久香蕉网| 婷婷中文字幕综合| 欧美在线免费播放| 亚洲视频免费在线观看| 国产成人午夜视频| 2022国产精品视频| 三级久久三级久久久| 在线精品视频免费播放| 国产精品毛片大码女人| 国产69精品久久久久777| 欧美成人精品福利| 美女在线视频一区| 337p亚洲精品色噜噜狠狠| 亚洲中国最大av网站| 色综合天天视频在线观看| 国产精品网站在线播放| 国产黄色91视频| 久久久无码精品亚洲日韩按摩| 美女网站一区二区| 制服丝袜在线91| 婷婷丁香激情综合| 欧美高清dvd| 丝袜美腿亚洲色图| 91.com视频| 男人操女人的视频在线观看欧美| 欧美日韩一二三区| 亚洲午夜免费电影| 欧美日韩亚州综合| 婷婷中文字幕一区三区| 7777精品伊人久久久大香线蕉超级流畅 | 欧美精彩视频一区二区三区| 久久不见久久见免费视频1| 欧美久久久久久久久久| 天天av天天翘天天综合网| 欧美日韩在线免费视频| 婷婷夜色潮精品综合在线| 91精品国产综合久久精品app| 日韩在线a电影| 精品久久久久av影院| 国产成人高清视频| 国产精品麻豆一区二区| 一本大道av伊人久久综合| 洋洋成人永久网站入口| 欧美精品自拍偷拍动漫精品| 美女视频黄 久久| 久久久久久久久久久黄色| 不卡一区在线观看| 亚洲gay无套男同| 精品精品欲导航| 波多野结衣中文一区| 亚洲一区精品在线| 日韩欧美一区中文| 波多野结衣中文一区| 亚洲成人免费观看| 精品国产露脸精彩对白| 成人性生交大合| 亚洲成人精品一区二区| 精品1区2区在线观看| 99精品视频在线播放观看| 丝袜国产日韩另类美女| 国产亚洲一区字幕| 欧洲精品视频在线观看| 国产在线精品一区二区夜色 |