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

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

?? wm.c

?? 基于arm7內核的S3C44B0X的UCGUI應用程序
?? 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一区二区三区免费野_久草精品视频
久久一区二区视频| 一区二区国产视频| 亚洲精品日韩专区silk| 伦理电影国产精品| 色婷婷av一区二区三区gif| 精品久久久久久最新网址| 亚洲一区二区三区美女| 精品一区二区成人精品| 欧美视频完全免费看| 国产色婷婷亚洲99精品小说| 亚洲一区二三区| 成人av在线播放网站| 日韩一区二区三| 亚洲一二三四久久| 成人福利视频网站| 久久夜色精品一区| 久久精品99国产国产精| 欧美日本免费一区二区三区| 亚洲图片欧美激情| 成人国产精品免费| 国产亚洲va综合人人澡精品 | 欧美亚洲综合在线| 国产日韩欧美精品电影三级在线 | 日韩精品电影一区亚洲| 99这里都是精品| 久久久久久一二三区| 乱中年女人伦av一区二区| 欧美男人的天堂一二区| 亚洲精品一二三| 91在线porny国产在线看| www.亚洲国产| 欧美大尺度电影在线| 视频一区二区不卡| 欧美电影一区二区三区| 2023国产精品视频| 99久久精品免费| 91色视频在线| 国产精品全国免费观看高清 | 99re这里只有精品6| 国产制服丝袜一区| 色狠狠色噜噜噜综合网| 91精品国产综合久久香蕉的特点| 国产日韩av一区二区| 一区二区三区精密机械公司| 精品一区二区三区香蕉蜜桃| 91麻豆精品一区二区三区| 欧美日韩电影一区| 国产精品免费av| 老司机一区二区| 91激情五月电影| 久久久久久久久久久久电影| 亚洲夂夂婷婷色拍ww47| 国产风韵犹存在线视精品| 欧美日韩不卡在线| 国产精品久99| 国产精品一区二区视频| 欧美久久高跟鞋激| 亚洲精品五月天| 国产精品性做久久久久久| 91.xcao| 亚洲免费成人av| aa级大片欧美| 国产欧美一区二区三区沐欲| 免费精品视频在线| 欧美美女视频在线观看| 亚洲综合男人的天堂| 成a人片国产精品| 国产清纯美女被跳蛋高潮一区二区久久w| 亚洲精品日韩专区silk| 成人精品一区二区三区中文字幕| 亚洲精品一区二区三区蜜桃下载| 七七婷婷婷婷精品国产| 91麻豆精品国产91久久久久久| 亚洲三级电影网站| 91麻豆蜜桃一区二区三区| 亚洲欧洲另类国产综合| av成人免费在线观看| 国产精品久久久久一区二区三区 | 精品在线一区二区三区| 日韩欧美一区中文| 日本伊人午夜精品| 欧美一区二区久久久| 日韩福利电影在线观看| 欧美一级日韩一级| 人人狠狠综合久久亚洲| 日韩一区二区三区高清免费看看| 日本特黄久久久高潮| 91精品国产综合久久精品麻豆| 三级亚洲高清视频| 欧美一卡二卡三卡四卡| 美国毛片一区二区| 精品久久久久久最新网址| 国产成人一区二区精品非洲| 国产色产综合色产在线视频| 99视频一区二区| 亚洲一区影音先锋| 5858s免费视频成人| 精品在线免费视频| 国产精品色哟哟| 91高清视频在线| 蜜桃av一区二区三区电影| 久久久久国产成人精品亚洲午夜| 成人国产一区二区三区精品| 一区二区三区在线视频观看58| 欧美精品粉嫩高潮一区二区| 国产一二三精品| 亚洲日本丝袜连裤袜办公室| 精品视频一区二区三区免费| 精品一区中文字幕| 国产精品三级av在线播放| 欧美日韩一二三| 国产高清精品在线| 亚洲综合男人的天堂| 欧美岛国在线观看| 91视频在线观看| 久久精品国产**网站演员| 亚洲欧洲三级电影| 精品国产亚洲一区二区三区在线观看| 成人动漫一区二区三区| 亚洲123区在线观看| 国产精品视频一二三区 | 美美哒免费高清在线观看视频一区二区 | 7777精品伊人久久久大香线蕉的 | 欧美一级欧美三级| www.一区二区| 韩国理伦片一区二区三区在线播放 | 中文字幕免费不卡| 717成人午夜免费福利电影| 成人免费毛片高清视频| 蜜臀久久99精品久久久久宅男| 国产精品久久三| 精品精品欲导航| 欧美日韩国产在线播放网站| 成人丝袜高跟foot| 久久国产精品色| 亚洲第一狼人社区| 亚洲免费观看在线视频| 欧美激情中文字幕一区二区| 日韩欧美国产综合| 欧美日韩久久久| 91成人在线精品| 99久久er热在这里只有精品15 | 国产精品久久久久天堂| 精品国产免费一区二区三区四区| 51精品秘密在线观看| 欧美伊人精品成人久久综合97| 成人动漫一区二区| 成人免费福利片| 国产精品白丝av| 国产一区二区三区香蕉| 久久成人精品无人区| 久久精品久久综合| 久久爱另类一区二区小说| 美女脱光内衣内裤视频久久网站 | 国产精品不卡视频| 国产精品欧美一区喷水| 中文乱码免费一区二区| 久久精品视频网| 中文字幕精品—区二区四季| 国产午夜精品久久| 亚洲国产精品ⅴa在线观看| 国产日韩欧美精品电影三级在线| 国产欧美在线观看一区| 国产精品入口麻豆原神| 综合激情网...| 亚洲综合色视频| 午夜精品福利一区二区三区蜜桃| 亚洲成人av电影在线| 三级亚洲高清视频| 国产综合久久久久久久久久久久| 国产一区福利在线| www.成人网.com| 欧美午夜精品久久久久久超碰| 欧美探花视频资源| 日韩免费看网站| 欧美激情一区三区| 伊人夜夜躁av伊人久久| 日韩国产一区二| 国产高清不卡一区二区| 色综合久久综合中文综合网| 7777精品伊人久久久大香线蕉经典版下载 | 激情综合色播激情啊| 国产v综合v亚洲欧| 91激情五月电影| 欧美大胆人体bbbb| 中文字幕日韩一区二区| 亚洲一区二区免费视频| 久久电影网站中文字幕 | 亚洲午夜电影在线| 久久99精品国产.久久久久| 国产成a人亚洲精品| 91国产精品成人| 久久亚洲精品小早川怜子| 亚洲精品水蜜桃| 国产一区二区三区国产| 日本高清不卡视频| 久久精品亚洲麻豆av一区二区| 一区二区三区成人| 国产91精品一区二区麻豆网站 | 亚洲精品一二三四区|