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

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

?? wm.c

?? uCOS/uCGUI在2440上的移植
?? 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;  pRect->x1 = pWin->Rect.x1 - pWin->Rect.x0;  pRect->y1 = pWin->Rect.y1 - pWin->Rect.y0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合色狠狠天天综合色| 成人免费观看男女羞羞视频| 欧美日韩免费高清一区色橹橹| 中文天堂在线一区| 欧美日韩精品电影| 欧美视频完全免费看| 国产一区在线精品| 亚洲二区在线观看| 国产三级精品在线| 欧美精品第1页| 不卡在线观看av| 国内精品在线播放| 视频一区欧美精品| 亚洲蜜臀av乱码久久精品| 精品久久人人做人人爰| 欧美午夜精品一区| 欧美片网站yy| 久久人人97超碰com| 在线播放/欧美激情| 一本到不卡免费一区二区| 日本韩国欧美三级| 99久久久无码国产精品| 国产精品一级黄| 精品一区二区三区免费观看| 午夜视频在线观看一区二区三区| 中文字幕一区二区三区视频| 久久精品视频在线看| 欧美变态tickle挠乳网站| 久久久亚洲综合| 亚洲日本一区二区| 亚洲男同性视频| 麻豆精品一二三| 另类人妖一区二区av| 三级在线观看一区二区| 国产又粗又猛又爽又黄91精品| 粉嫩一区二区三区性色av| 国产iv一区二区三区| 日本久久一区二区| 337p日本欧洲亚洲大胆精品| 久久亚洲二区三区| 亚洲一区二区三区四区五区黄| 亚洲最新视频在线观看| 亚洲国产欧美在线人成| 精品一区二区三区久久| 91黄视频在线| 欧美激情资源网| 亚洲视频一区二区免费在线观看| 日本伊人色综合网| 激情综合色播激情啊| 91精品福利视频| 国产精品网曝门| 狠狠色丁香婷婷综合久久片| 欧美亚洲综合另类| 亚洲欧美另类图片小说| 国产精品一区在线| 欧美一级欧美三级| 国产日韩成人精品| 精品一区二区成人精品| 91麻豆精品国产91久久久资源速度 | 色综合色综合色综合| 欧美精品一区二区三区视频| 国产成人精品免费一区二区| 亚洲老妇xxxxxx| 亚洲小少妇裸体bbw| 国产盗摄视频一区二区三区| 欧美一区二区三区白人| 五月天中文字幕一区二区| 色悠悠久久综合| 中文字幕一区二区三区四区 | 不卡的av在线播放| 国产亚洲制服色| 精品一区二区三区欧美| 日韩午夜在线影院| 日韩毛片视频在线看| 国产精品一品二品| 国产女人水真多18毛片18精品视频| 另类综合日韩欧美亚洲| 日韩欧美亚洲国产另类 | 99riav久久精品riav| 国产午夜亚洲精品羞羞网站| 国内精品免费**视频| 久久久久成人黄色影片| 成人高清伦理免费影院在线观看| 中文字幕av不卡| 色综合久久综合网欧美综合网| 一区二区三区在线免费观看| 欧美日韩激情在线| 韩国av一区二区三区四区| 久久精品视频一区二区三区| 成人精品国产免费网站| 综合久久久久久久| 欧美日韩一区高清| 韩日av一区二区| 国产精品灌醉下药二区| 蜜桃视频一区二区三区在线观看| 日韩欧美美女一区二区三区| 国产一级精品在线| 亚洲欧美日韩国产一区二区三区| 91蝌蚪porny| 国产欧美日韩麻豆91| 99久久久久久| 秋霞影院一区二区| 欧美午夜精品一区二区三区| 三级久久三级久久| 国产日韩av一区| 欧美性做爰猛烈叫床潮| 精品系列免费在线观看| 亚洲日穴在线视频| 精品成人私密视频| 一本在线高清不卡dvd| 日本一区中文字幕| 国产精品国产精品国产专区不蜜| 911精品国产一区二区在线| 国产成人综合网站| 性感美女久久精品| 欧美精品久久99| 99久久精品免费| 毛片av一区二区三区| 亚洲视频在线观看一区| 在线播放91灌醉迷j高跟美女 | 国产精品无遮挡| 欧美一区二区三区四区视频| gogogo免费视频观看亚洲一| 国产精品欧美久久久久一区二区| 欧美日韩小视频| av网站一区二区三区| 日本91福利区| 亚洲综合久久av| 国产精品夫妻自拍| 久久午夜老司机| 日韩欧美国产麻豆| 欧美日韩国产一区二区三区地区| 成人福利视频在线看| 韩国v欧美v日本v亚洲v| 日本不卡高清视频| 日韩精品国产精品| 亚洲综合偷拍欧美一区色| 国产精品久久久久久久久图文区| 久久一区二区三区四区| 欧美一级xxx| 在线成人av网站| 在线观看91视频| 精品一区二区三区免费| 午夜精品久久久久久久久| 亚洲欧洲精品成人久久奇米网| 国产日产精品一区| 久久亚洲一区二区三区明星换脸| 337p亚洲精品色噜噜| 欧美久久久久久久久久| 日本久久精品电影| 精品视频资源站| 欧美人伦禁忌dvd放荡欲情| 日本黄色一区二区| 欧美日韩精品一区二区天天拍小说| 色婷婷激情久久| 在线免费观看不卡av| 97精品视频在线观看自产线路二| 99久久99精品久久久久久| av在线这里只有精品| av成人老司机| 欧美在线你懂得| 9191成人精品久久| 久久亚洲春色中文字幕久久久| 国产日韩欧美麻豆| 亚洲卡通动漫在线| 亚洲一区二区三区在线播放| 日日夜夜精品视频天天综合网| 久久国产免费看| 成人成人成人在线视频| 在线观看亚洲专区| 欧美www视频| 国产精品日韩成人| 亚洲韩国一区二区三区| 另类欧美日韩国产在线| 成人国产精品免费观看动漫| 欧美系列亚洲系列| 欧美大片国产精品| 136国产福利精品导航| 亚洲电影欧美电影有声小说| 美女脱光内衣内裤视频久久影院| 国产激情偷乱视频一区二区三区 | 日本亚洲欧美天堂免费| 韩国女主播成人在线| 一本到不卡精品视频在线观看| 欧美日韩国产成人在线免费| 精品国产乱码久久久久久蜜臀| 国产精品每日更新| 日韩va亚洲va欧美va久久| 国产99精品在线观看| 欧美午夜电影网| 日本一区二区在线不卡| 夜夜爽夜夜爽精品视频| 美国十次了思思久久精品导航| 99久久er热在这里只有精品15| 欧美一区二视频| 亚洲精品视频自拍| 国产在线日韩欧美| 91精品欧美久久久久久动漫 | 91精品国产91综合久久蜜臀| 中文一区一区三区高中清不卡|