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

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

?? wm.c

?? ucgui在ARM44B0目標板上的移植代碼支持16級灰度
?? C
?? 第 1 頁 / 共 3 頁
字號:
/***********************************************************************************************************                                                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        : WM.CPurpose     : Windows manager core----------------------------------------------------------------------Version-Date---Author-Explanation----------------------------------------------------------------------3.00a   010621 RS     a) module accelerated by skipping parameter                         to FindNext_IVR3.00    010502 RS     a) WM module split up for library applications                      b) Module dramatically accelerated (without                         changes in the routine structure)1.18    000909 RS     a) WM_CreateBWin does not activate the                         new window unless specified via create flags1.16a   000724 RS     a) Function WM_EnableMemdevRead added1.16    000614 RS     a) Cleanup                      b) Counter for invalid windows and                         WM_GetNumInvalidWindows() added1.14g   000522 RS     a) WM_ExecAll added1.14f   000316 RS     a) Internal Create routine created in order to                         handle creation of regular windows and                         objects seperately (and correctly) in all                         cases (by avoiding casts)1.14e   000307 RS     a) WM_MoveTo added1.14d   000224 RS     a) WM_CF_ACTIVATE flag now needed in order to                         automatically activate a created window1.14c   000209 RS     a) GUI_Clear eliminated in default callback for                         default background window1.14b   000125 RS     a) Bugfix for bug created in 1.14a1.14a   000122 RS     a) WM_CreateObj: Change in order to avoid                         compiler warning with IARs new frontend1.14    999109 RS     a) Bugfix: Deleted window could still receive                         up to 1 drawing message. Fixed. (->NextDrawWin)                      b) WM_Obj now uses memory handle                      c) WM_DefaultProc now handles WM_DELETE                      d) Drawing area reduction for callbacks                         to invalide area                      e) WM_SetCallback added                      f) Call to WM_Error if insufficient windows have                         been configured1.12h   000107 RS     a) WM_Sendmessage: unused local eliminated                      b) WMALLOC_Init call eliminated1.12g   991230 RS     a) Callback for background window defined1.12f   991228 RS     a) Locking macros moved -> WM.H1.12e   991208 RS     a) WM_DrawNext now saves the entire context, not                         just the active window1.12d   991204 RS     a) WM_GetBGndWin added1.12c   991203 RS     a) WM_Init now creates default window1.12b   991126 RS     a) Cleanup in order to avoid compiler warnings1.12a   991112 RS     a) Invalidate now also invalidates any                         transparent window on top of the invalidated                         area                      b) Internal changes in order to support                         dynamic memory (using WM_ALLOC)                      c) Additional ASSERTs inserted1.12    991110 RS     a) Invalidate now also invalidates a window                         below a transparent window1.10c   991018 RS     a) WM_DrawNext:                         NextDrawWin=WM_HWIN_NULL -> NextDrawWin==WM_HWIN_NULL1.10b   991015 RS     a) WM_ValidateBWin corrected (Invalid                         flag was never reset, leading to superfluos redraws)                      b) WM_SetDefault(void) implemented1.10a   991012 RS     a) Compile warnings eliminated1.10    990918 RS     a) Objects for windows manager added:                         WM_CreateObject, WM_DeleteObject                      b) "Magic number" -1 eliminated                      c) static routines put on top of file                      d) Locking added (WM_LOCK), ensuring thread                         safety of all routines                      e) Window marked as valid only if a callback                         exists, allowing mixed callback/non callback                         modes for different windows1.08.02 990827 RS     a) Optimization bug in WM_SetHasTrans                         fixed1.08.01 990826 RS     a) Transparent windows can no longer obstruct                      an area of a window below in Z-direction                      (in FindNext_IVR) for correct handling of                      transparent windows1.08.00 990823 RS     a) WM__GetOrgX -> WM_GetOrgX                         WM__GetOrgY -> WM_GetOrgY                      b) Clearing memory in WM_Init1.07.01 990730 RS     a) In WM_DrawNext() add. condition added to make                      sure that loop does not iterate using                      -1 (end-of-list) as index1.07    990720 RS     a) New switch: WM_SUPPORT_OBSTRUCT, def. 11.06    990504 BB     functions WM_GetWinSizeX() and WM_GetWinSizeY()                      added.1.05    990423 RS     a) Prototype for WM_CreateBWin changed,                      parameter WM_MESSAGE* is no longer const                      (Causing some other changes reg. const)                      b) WM_ShowBWin WM_HideBWin tested in simulator1.04    990417 RS     a) DrawNext bug fixed: It had passed the                      entire WIndow-Rectangle instead of just                      the InvalidRectangle with the WM_PAINT                      command1.03    990401 RS     a) Implemented the following functions                      WM_SetHasTrans()                      WM_ClrHasTrans()                      WM_GetHasTrans()                      WM_HideBWin()                      WM_ShowBWin()                      WM_ValidateBWin()                      WM_GetActiveBWin()1.02    990315 RS     a) Windows stack organisation routines cleaned                      up, resulting in more efficient code1.01    990314 RS     a) Invalidation and IVR calculation optimized                      b) Windows which are on top of a window causing                      invalidation are no longer affected1.00    990310 RS     Moving and resizing tested in simulation0.99    990309 RS     All routines implemented, moving & resizing                      need to be tested under different circumstances.0.50    990308 RS     Core of WM works (Calculation and iteration over                      IVRs). Side routines like moving windows and the                      corresponding message handling missing.                      There is now a clear seperation between the LCD                      and GL layers and WM.0.01    990301 RS     Incomplete version, for BB to check----------------------------------------------------------------------Known problems:None.----------------------------------------------------------------------Open issues:None.----------------------------------------------------------------------Todo:Nothing.*/#include <stddef.h>           /* needed for definition of NULL */#include <string.h>           /* required for memset */#define WM_C#include "WM_Intern.h"#if GUI_WINSUPPORT    /* If 0, WM will not generate any code *//********************************************************************              Config defaults*********************************************************************//* This is for tests only. It will fill the invalid area of a window.   Can be used for debugging. */#ifndef WM_SHOW_INVALID  #define WM_SHOW_INVALID 0#endif/*********************************************************************                 Macros for internal use**********************************************************************/#define ASSIGN_IF_LESS(v0,v1) if (v1<v0) v0=v1/********************************************************************              Local typedefs*********************************************************************/typedef struct {  GUI_RECT ClientRect;  GUI_RECT CurRect;  int Cnt;  int EntranceCnt;} WM_IVR_CONTEXT;/********************************************************************              WM_ global data*********************************************************************/U8                     WM_IsActive;U16                    WM__CreateFlags;WM_DELETE_WINDOW_HOOK* WM__pfDeleteWindowHook;GUI_COLOR              WM__BkColor = GUI_INVALID_COLOR;WM_HWIN                WM__hCapture, WM__hWinFocus;char                   WM__CaptureReleaseAuto;/********************************************************************              Static data*********************************************************************/static WM_HWIN        NextDrawWin;static U8             IsInCallback;static WM_IVR_CONTEXT ClipContext;static char           _IsInited;/*********************************************************************       Static routines**********************************************************************//*********************************************************************       _ClipAtParentBorders  Iterates over all its ancestors and intersects all rectangles to  find out which part is actually visible.  Reduces the rectangle to the visible area.*/void _ClipAtParentBorders(GUI_RECT* pRect, WM_Obj* pWin) {  WM_HWIN hWin;  hWin = pWin->hParent;  while (hWin) {    pWin = WM_H2P(hWin);    GUI__IntersectRect(pRect, &pWin->Rect);    hWin = pWin->hParent;  }}/*********************************************************************  When drawing, we have to start at the bottom window !*/static void ResetNextDrawWin(void) {  NextDrawWin = WM_HWIN_NULL;}/*********************************************************************       _AddChild*/void _AddChild(WM_HWIN hParent, WM_HWIN hChild, int OnTop) {  WM_Obj* pChild;  WM_Obj* pParent;  WM_Obj* pi;  WM_HWIN hi;  if (hParent) {    pParent = WM_H2P(hParent);    pChild  = WM_H2P(hChild);    hi = pParent->hFirstChild;    if (hi == 0) {   /* No child yet ... Makes things easy ! */      pParent->hFirstChild = hChild;        return;                         /* Early out ... We are done */    }    if (!OnTop) {      pi = WM_H2P(hi);      if (pi->Status & WM_SF_STAYONTOP) {        pChild->hNext = hi;        pParent->hFirstChild = hChild;        return;                         /* Early out ... We are done */      }    }    /* put if at the end of the list or after the last non "STAY-ON-TOP" child */    do {      WM_Obj* pNext;      WM_HWIN hNext;      pi = WM_H2P(hi);      if ((hNext = pi->hNext) == 0) {        pi->hNext = hChild;        break;      }      if (!OnTop) {        pNext = WM_H2P(hNext);        if (pNext->Status & WM_SF_STAYONTOP) {          pi->hNext = hChild;          pChild->hNext = hNext;          break;        }      }      hi = hNext;    }  while (1);  }}/**********************************************************************/static void _DeleteAllChildren(WM_HWIN hChild) {  while (hChild) {    WM_Obj* pChild = WM_H2P(hChild);    WM_HWIN hNext = pChild->hNext;    WM_DeleteWindow(hChild);    hChild = hNext;  }}/**********************************************************************/static void _DeleteInSiblingList(WM_HWIN hWin) {  WM_Obj* pWin;  WM_Obj* pParent;  WM_Obj* pi;  WM_HWIN hParent;  WM_HWIN hi;  pWin = WM_H2P(hWin);  if (pWin->hParent) {    hParent = pWin->hParent;    pParent = WM_H2P(hParent);    hi = pParent->hFirstChild;    if (hi == hWin) {      pi = WM_H2P(hi);      pParent->hFirstChild = pi->hNext;    } else {      while (hi) {        pi = WM_H2P(hi);        if (pi->hNext == hWin) {          pi->hNext = pWin->hNext;          return;        }        hi = pi->hNext;      }    }  }}/***********************************************************************             Module internal routines************************************************************************/void WM__Client2Screen(const WM_Obj* pWin, GUI_RECT *pRect) {  GUI_MoveRect(pRect, pWin->Rect.x0, pWin->Rect.y0);}int WM__IsWindow(WM_HWIN hWin) {  WM_HWIN iWin;  int r = 0;  for (iWin = WM__FirstWin; iWin; iWin = WM_H2P(iWin)->hNextLin) {    if (iWin == hWin) {      r = 1;      break;    }  }  return r;}/**********************************************************************/void WM__RemoveFromLinList(WM_HWIN hWin) {  WM_Obj* piWin;  WM_HWIN hiWin, hNext;  for (hiWin = WM__FirstWin; hiWin; ) {    piWin = WM_H2P(hiWin);    hNext = piWin->hNextLin;    if (hNext == hWin) {      piWin->hNextLin = WM_H2P(hWin)->hNextLin;      break;    }    hiWin = hNext;  }}/**********************************************************************/void _AddToLinList(WM_HWIN hNew) {  WM_Obj* pFirst;  WM_Obj* pNew;  if (WM__FirstWin) {    pFirst = WM_H2P(WM__FirstWin);    pNew   = WM_H2P(hNew);    pNew->hNextLin = pFirst->hNextLin;    pFirst->hNextLin = hNew;  } else {    WM__FirstWin = hNew;  }}/*********************************************************************   Check if the rectangle has some content (is non-zero)   Returns 0 if the Rectangle has no content, else 1.*/int WM__RectIsNZ(const GUI_RECT* pr) {  if (pr->x0 > pr->x1)    return 0;  if (pr->y0 > pr->y1)    return 0;  return 1;}/*  ********************************************************************  *                                                                  *  *                    Sending messages                              *  *                                                                  *  *********************************************************************/void WM_SendMessage(WM_HWIN hWin, WM_MESSAGE* pMsg) {  WM_Obj* pWin;  WM_LOCK();  if (hWin) {    pWin = WM_H2P(hWin);  /* Do some checking to avoid program crashes due to user     programming errors */    #if GUI_DEBUG_LEVEL > 0      if (!pWin->Status)        goto Done;    #endif    if (pWin->cb != NULL) {      pMsg->hWin = hWin;      IsInCallback = 1;      (*pWin->cb)(pMsg);      IsInCallback = 0;    }  }  #if GUI_DEBUG_LEVEL > 0Done:  #endif  WM_UNLOCK();}/**********************************************************************/void WM__SendMsgNoData(WM_HWIN hWin, U8 MsgId) {  WM_MESSAGE Msg;  Msg.hWin  = hWin;  Msg.MsgId = MsgId;  WM_SendMessage(hWin, &Msg);}/* Get client rectangle in windows coordinates. This means that the  upper left corner is always at (0,0). */void WM__GetClientRectWin(WM_Obj* pWin, GUI_RECT* pRect) {  pRect->x0 = pRect->y0 = 0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
极品美女销魂一区二区三区| 欧美日本国产一区| 在线免费观看一区| 欧美大片在线观看| 亚洲乱码中文字幕| 美国十次了思思久久精品导航| av激情综合网| 精品av综合导航| 天天影视涩香欲综合网| 成人自拍视频在线| 欧美变态凌虐bdsm| 五月婷婷色综合| 91玉足脚交白嫩脚丫在线播放| 日韩三级中文字幕| 午夜精品久久久久久| 91网站视频在线观看| 久久久精品黄色| 九色porny丨国产精品| 国产精品久久久久aaaa| 日韩电影一区二区三区| 欧美三区在线视频| 一区二区三区日本| 9l国产精品久久久久麻豆| 久久久久久久国产精品影院| 蜜臀av国产精品久久久久 | 成人免费福利片| 日韩一区二区不卡| 一区二区三区四区蜜桃| 91丨九色丨国产丨porny| 国产精品区一区二区三| 国产成人久久精品77777最新版本| 欧美大胆人体bbbb| 美国毛片一区二区| 欧美一区二区三区四区高清| 日韩成人伦理电影在线观看| 精品视频色一区| 亚洲国产wwwccc36天堂| 欧美精品久久天天躁| 午夜伦欧美伦电影理论片| 欧美日韩亚洲综合一区二区三区| 亚洲在线成人精品| 欧美日韩一区二区三区免费看| 一区二区三区精品视频| 欧美视频一区二区在线观看| 亚洲国产精品自拍| 欧美精品v日韩精品v韩国精品v| 亚洲成在线观看| 91.麻豆视频| 精品一区二区三区av| 久久―日本道色综合久久| 国产精品99久久久久久似苏梦涵| 国产视频在线观看一区二区三区| 国产成人亚洲综合色影视| 久久精品一区二区三区不卡| 成人一二三区视频| 一区二区三区加勒比av| 欧美精品一级二级三级| 精品亚洲成a人| 国产精品嫩草影院av蜜臀| 色噜噜久久综合| 美女视频黄久久| 中文字幕不卡一区| 欧美另类一区二区三区| 国产麻豆精品theporn| 亚洲日本韩国一区| 337p亚洲精品色噜噜| 国产精品一区二区在线观看不卡| 国产精品久久久久久福利一牛影视| 色噜噜狠狠色综合欧洲selulu| 亚洲mv大片欧洲mv大片精品| 亚洲精品一区二区三区福利| 成人福利视频网站| 视频在线观看一区二区三区| 亚洲精品在线免费播放| 色婷婷精品久久二区二区蜜臂av| 午夜精品福利久久久| 久久久www成人免费毛片麻豆| 一本在线高清不卡dvd| 九九精品一区二区| 亚洲美女免费视频| 久久久精品国产99久久精品芒果 | 成人h动漫精品一区二区| 亚洲第一av色| 中文字幕精品一区| 日韩欧美一卡二卡| 99国产精品久| 国产精品综合一区二区| 午夜精品久久久久久不卡8050| 中文字幕二三区不卡| 欧美一卡二卡三卡| 一本久久a久久精品亚洲| 国产精品一区二区不卡| 日日摸夜夜添夜夜添国产精品 | 26uuu国产日韩综合| 欧美在线免费视屏| 成人中文字幕合集| 精品在线免费视频| 亚洲大片在线观看| 一区二区三区免费网站| 国产精品久久综合| 久久久一区二区三区| 91精品欧美福利在线观看 | 国产又粗又猛又爽又黄91精品| 亚洲精品一卡二卡| 中文字幕亚洲欧美在线不卡| 久久久久久久久久久久电影| 欧美一区二区三区免费| 欧美日韩综合在线免费观看| 一本色道a无线码一区v| av在线免费不卡| av亚洲精华国产精华精华| 国产精品996| 国产九九视频一区二区三区| 久久99国产精品免费| 日本成人在线一区| 日本va欧美va精品| 免费观看30秒视频久久| 天天综合日日夜夜精品| 日本成人在线看| 免费日韩伦理电影| 久久精品国产精品亚洲红杏| 美女一区二区三区在线观看| 免费高清视频精品| 老司机精品视频在线| 久久国产乱子精品免费女| 九九视频精品免费| 国产一区亚洲一区| 成人深夜视频在线观看| 成人精品鲁一区一区二区| va亚洲va日韩不卡在线观看| 99久精品国产| 色8久久精品久久久久久蜜 | 亚洲欧洲日产国产综合网| 中文字幕精品三区| 亚洲欧美另类小说| 午夜精品久久久久久不卡8050| 午夜不卡在线视频| 久久99国产精品久久99| 福利一区二区在线观看| 99re亚洲国产精品| 欧美日本一道本在线视频| 欧美一级片免费看| 久久亚洲精品小早川怜子| 欧美极品少妇xxxxⅹ高跟鞋 | 丰满亚洲少妇av| 91在线porny国产在线看| 欧美老年两性高潮| 久久亚洲精华国产精华液| 中文字幕在线免费不卡| 婷婷夜色潮精品综合在线| 国模套图日韩精品一区二区| 99久久国产综合精品女不卡| 欧美三区在线视频| 国产网站一区二区| 亚洲综合一区在线| 国产伦精品一区二区三区视频青涩| 成人午夜视频在线观看| 欧美日韩中文精品| 国产免费成人在线视频| 亚洲国产日韩在线一区模特| 精品亚洲porn| 欧美日韩精品二区第二页| 久久亚洲欧美国产精品乐播| 亚洲一区二区三区小说| 国内精品嫩模私拍在线| 欧美调教femdomvk| 国产欧美视频一区二区| 日韩av成人高清| 99re视频这里只有精品| 精品国产伦一区二区三区观看体验 | 欧美日韩另类国产亚洲欧美一级| 久久九九国产精品| 日本欧美一区二区三区| 91丨porny丨在线| 久久影音资源网| 美女一区二区三区| 欧美性猛交xxxx乱大交退制版 | 色屁屁一区二区| 久久久91精品国产一区二区三区| 午夜在线成人av| 一本一本久久a久久精品综合麻豆| 日韩精品一区二区三区视频播放| 一区二区国产盗摄色噜噜| 成人小视频在线观看| 26uuu色噜噜精品一区二区| 肉肉av福利一精品导航| 在线观看国产91| 亚洲欧洲制服丝袜| aaa亚洲精品一二三区| 久久综合色8888| 九九九久久久精品| 日韩欧美综合在线| 日本成人在线网站| 正在播放一区二区| 日韩电影网1区2区| 欧美肥妇bbw| 日韩精品电影在线观看| 欧美日本一区二区| 无吗不卡中文字幕| 欧美日韩不卡一区|