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

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

?? wm.c

?? Samsung ARM7 s3c44b0 + uC-OSii + uC-GUI 完美的綜合到了一起
?? 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;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美一区二区不卡| 岛国精品在线观看| 亚洲三级在线免费| 国产精品网友自拍| 中文字幕亚洲精品在线观看 | 亚洲一区二区av在线| 中文字幕一区不卡| 亚洲黄色av一区| 亚洲香肠在线观看| 免费观看日韩av| 黑人巨大精品欧美黑白配亚洲| 精品一区二区在线视频| 国产中文一区二区三区| 丁香婷婷综合网| 色综合网站在线| 91麻豆精品91久久久久同性| 91精品国产高清一区二区三区 | 亚洲日本在线视频观看| 一区二区视频在线| 日韩av高清在线观看| 精品亚洲国内自在自线福利| 狠狠色丁香婷婷综合久久片| 国产福利一区二区三区视频在线| 欧洲另类一二三四区| 中文字幕在线一区免费| 一区二区不卡在线播放| 免费成人在线视频观看| 高清国产一区二区三区| 色综合久久中文综合久久牛| 国产一区二区调教| 免费观看一级特黄欧美大片| 国产制服丝袜一区| 在线观看亚洲精品视频| 日韩欧美成人午夜| 中文字幕一区二区三区四区不卡 | 色一情一乱一乱一91av| 91精品国产综合久久蜜臀| 国产日韩欧美一区二区三区综合 | 91超碰这里只有精品国产| 日韩三级高清在线| 亚洲老司机在线| 国产激情精品久久久第一区二区| 在线欧美日韩精品| 国产三级一区二区| 秋霞av亚洲一区二区三| 色av综合在线| www国产成人| 亚洲午夜激情网页| www.亚洲人| 久久蜜桃av一区精品变态类天堂 | 国产**成人网毛片九色| 欧美精品xxxxbbbb| 亚洲精品免费看| 国产91精品免费| 精品免费一区二区三区| 天天色 色综合| 91老师国产黑色丝袜在线| 久久综合精品国产一区二区三区| 亚洲一区二区偷拍精品| 色婷婷av一区二区三区大白胸| 久久久av毛片精品| 蜜桃视频在线一区| 制服丝袜中文字幕一区| 一区二区三区在线视频播放| 成人精品高清在线| 国产日韩视频一区二区三区| 国产一区美女在线| 欧美变态tickle挠乳网站| 日韩精品一级二级| 9191久久久久久久久久久| 水野朝阳av一区二区三区| 欧美性videosxxxxx| 亚洲综合激情小说| 欧美最新大片在线看| 一区二区三区四区中文字幕| 91麻豆国产自产在线观看| 自拍偷拍国产精品| 91麻豆文化传媒在线观看| 亚洲色图一区二区三区| 91免费观看国产| 一区二区三区在线观看视频| 在线亚洲高清视频| 亚洲第一精品在线| 日韩一区二区三区三四区视频在线观看| 亚洲在线视频免费观看| 欧美日韩国产一二三| 蜜臀av性久久久久蜜臀aⅴ四虎| 91精品国产色综合久久不卡蜜臀| 日韩制服丝袜av| 欧美刺激午夜性久久久久久久| 精品在线观看视频| 中文字幕中文在线不卡住| 亚洲国产精品成人久久综合一区| 中文一区二区在线观看| 99久久精品国产精品久久| 一区二区三区欧美| 91精品国产aⅴ一区二区| 极品少妇xxxx偷拍精品少妇| 久久精品视频在线免费观看| 色综合天天天天做夜夜夜夜做| 亚洲国产精品一区二区www在线| 制服丝袜亚洲色图| 成人亚洲精品久久久久软件| 一区二区三区在线不卡| 日韩欧美在线影院| 99视频精品全部免费在线| 亚洲成人av电影| 久久久久国产精品厨房| 欧美日韩在线免费视频| 国产一区在线视频| 一区二区三区日本| 欧美国产欧美综合| 4438成人网| 成人激情开心网| 美女国产一区二区三区| 亚洲三级久久久| www日韩大片| 欧美精品乱人伦久久久久久| 国产成人免费xxxxxxxx| 午夜久久福利影院| 国产精品久久久久9999吃药| 日韩一区二区在线看| 91欧美激情一区二区三区成人| 美女一区二区三区| 一区二区三区丝袜| 国产精品免费人成网站| 欧美一区日本一区韩国一区| 91丝袜呻吟高潮美腿白嫩在线观看| 美国三级日本三级久久99 | 色一情一伦一子一伦一区| 韩国v欧美v亚洲v日本v| 男人操女人的视频在线观看欧美| 国产精品灌醉下药二区| 精品国产91久久久久久久妲己 | 欧美精品一区二区三区在线播放 | 色欧美片视频在线观看在线视频| 麻豆成人综合网| 日韩福利电影在线| 亚洲激情一二三区| 中文字幕在线免费不卡| 国产亚洲精久久久久久| 久久影音资源网| 日韩欧美中文字幕制服| 欧美一区二区美女| 日韩欧美高清在线| 91麻豆精品国产自产在线观看一区| 欧美性欧美巨大黑白大战| 色综合久久综合网97色综合| 99国产精品视频免费观看| 成人伦理片在线| 成人av中文字幕| 成人黄色综合网站| va亚洲va日韩不卡在线观看| 粉嫩13p一区二区三区| 国产成人精品亚洲777人妖| 国产成人在线视频播放| 高清免费成人av| 97精品国产97久久久久久久久久久久| 成人性色生活片| 91社区在线播放| 欧美亚洲免费在线一区| 欧美日韩亚洲高清一区二区| 91精品国产综合久久久久久| 日韩一区二区麻豆国产| 亚洲精品一区二区三区精华液 | 亚洲三级小视频| 香蕉成人啪国产精品视频综合网| 欧美xxxxxxxx| 中文在线免费一区三区高中清不卡| 国产精品第一页第二页第三页| 国产精品传媒视频| 亚洲一二三级电影| 久久国产日韩欧美精品| 中文字幕在线不卡一区二区三区| 精品国产99国产精品| 国产精品久久久爽爽爽麻豆色哟哟 | www国产精品av| 亚洲丝袜自拍清纯另类| 亚洲福利视频一区二区| 麻豆精品一区二区三区| 成人精品国产一区二区4080| 欧美在线视频不卡| 欧美sm美女调教| 中文字幕一区二区5566日韩| 午夜精品久久久久久| 国产激情视频一区二区在线观看 | 亚洲蜜桃精久久久久久久| 天天av天天翘天天综合网| 国产精品综合一区二区| 一本久久综合亚洲鲁鲁五月天| 欧美一区二区三区视频| 国产精品久久久久影院亚瑟| 日韩高清不卡在线| www.欧美日韩| 精品裸体舞一区二区三区| 亚洲色图欧洲色图婷婷| 国产成人午夜电影网| 91精品国产手机| 亚洲精品va在线观看| 成人免费视频视频在线观看免费|