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

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

?? wm.c

?? ucgui源碼3.32
?? C
?? 第 1 頁 / 共 4 頁
字號:
/*
*********************************************************************************************************
*                                                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.C
Purpose     : Windows manager core
----------------------------------------------------------------------
Version-Date---Author-Explanation
----------------------------------------------------------------------

3.00a   010621 RS     a) module accelerated by skipping parameter
                         to FindNext_IVR
3.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 flags
1.16a   000724 RS     a) Function WM_EnableMemdevRead added
1.16    000614 RS     a) Cleanup
                      b) Counter for invalid windows and
                         WM_GetNumInvalidWindows() added
1.14g   000522 RS     a) WM_ExecAll added
1.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 added
1.14d   000224 RS     a) WM_CF_ACTIVATE flag now needed in order to
                         automatically activate a created window
1.14c   000209 RS     a) GUI_Clear eliminated in default callback for
                         default background window
1.14b   000125 RS     a) Bugfix for bug created in 1.14a
1.14a   000122 RS     a) WM_CreateObj: Change in order to avoid
                         compiler warning with IARs new frontend
1.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 configured
1.12h   000107 RS     a) WM_Sendmessage: unused local eliminated
                      b) WMALLOC_Init call eliminated
1.12g   991230 RS     a) Callback for background window defined
1.12f   991228 RS     a) Locking macros moved -> WM.h
1.12e   991208 RS     a) WM_DrawNext now saves the entire context, not
                         just the active window
1.12d   991204 RS     a) WM_GetBGndWin added
1.12c   991203 RS     a) WM_Init now creates default window
1.12b   991126 RS     a) Cleanup in order to avoid compiler warnings
1.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 inserted
1.12    991110 RS     a) Invalidate now also invalidates a window
                         below a transparent window
1.10c   991018 RS     a) WM_DrawNext:
                         NextDrawWin=WM_HWIN_NULL -> NextDrawWin==WM_HWIN_NULL
1.10b   991015 RS     a) WM_ValidateBWin corrected (Invalid
                         flag was never reset, leading to superfluos redraws)
                      b) WM_SetDefault(void) implemented
1.10a   991012 RS     a) Compile warnings eliminated
1.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 windows
1.08.02 990827 RS     a) Optimization bug in WM_SetHasTrans
                         fixed
1.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 windows
1.08.00 990823 RS     a) WM__GetOrgX -> WM_GetOrgX
                         WM__GetOrgY -> WM_GetOrgY
                      b) Clearing memory in WM_Init
1.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 index
1.07    990720 RS     a) New switch: WM_SUPPORT_OBSTRUCT, def. 1
1.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 simulator
1.04    990417 RS     a) DrawNext bug fixed: It had passed the
                      entire WIndow-Rectangle instead of just
                      the InvalidRectangle with the WM_PAINT
                      command
1.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 code
1.01    990314 RS     a) Invalidation and IVR calculation optimized
                      b) Windows which are on top of a window causing
                      invalidation are no longer affected
1.00    990310 RS     Moving and resizing tested in simulation
0.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;
WM_tfPollPID*          WM_pfPollPID;

/******************************************************************
*
*              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
*
**********************************************************************
*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本在线不卡一区| 久久久久久久精| 粉嫩高潮美女一区二区三区| 日韩avvvv在线播放| 视频一区二区三区中文字幕| 一个色在线综合| 一区二区三区鲁丝不卡| 亚洲免费视频中文字幕| 亚洲视频免费观看| 亚洲日本在线a| 亚洲蜜桃精久久久久久久| 亚洲乱码国产乱码精品精可以看 | 亚洲欧美另类久久久精品2019| 久久九九影视网| 欧美高清在线精品一区| 成人免费小视频| 亚洲图片激情小说| 亚洲高清免费视频| 免费在线看成人av| 激情综合五月婷婷| 国产成人精品一区二区三区四区| 国产精品白丝jk黑袜喷水| 丁香天五香天堂综合| 99精品偷自拍| 在线观看www91| 日韩一区二区视频在线观看| 日韩欧美国产小视频| 国产亚洲一区二区三区| 国产精品久久久久一区| 一区二区三区久久久| 视频一区国产视频| 粉嫩av一区二区三区在线播放 | 欧美在线你懂的| 欧美精品一级二级三级| 欧美r级电影在线观看| 欧美国产欧美综合| 亚洲综合一二三区| 国内国产精品久久| 日本久久电影网| 日韩亚洲欧美在线| ㊣最新国产の精品bt伙计久久| 亚洲在线视频免费观看| 久久激情综合网| 91年精品国产| 欧美成人a∨高清免费观看| 中文字幕在线一区免费| 强制捆绑调教一区二区| 99在线视频精品| 日韩午夜电影av| 亚洲精品国产一区二区精华液| 毛片不卡一区二区| 欧美在线看片a免费观看| 337p日本欧洲亚洲大胆色噜噜| 伊人一区二区三区| 国产成人精品午夜视频免费| 欧美午夜精品久久久久久超碰| 欧美mv和日韩mv的网站| 亚洲一区二区三区四区不卡| 国产成人啪免费观看软件| 5858s免费视频成人| 亚洲美腿欧美偷拍| 国产精品一二二区| 欧美一二三区精品| 亚洲一区二区3| 不卡电影免费在线播放一区| 精品少妇一区二区三区| 亚州成人在线电影| 欧美无砖专区一中文字| 亚洲欧美一区二区三区久本道91| 国产精一区二区三区| 欧美电视剧在线看免费| 蜜臀av一区二区| 欧美二区在线观看| 午夜精品免费在线| 欧美日韩一区久久| 一区二区三区欧美在线观看| 91小宝寻花一区二区三区| 亚洲欧洲精品一区二区三区 | 亚洲国产精品一区二区www在线 | 日韩电影在线一区二区三区| 色综合视频一区二区三区高清| 国产精品全国免费观看高清 | 热久久一区二区| 欧美私人免费视频| 亚洲一二三四久久| 色欧美日韩亚洲| 伊人性伊人情综合网| 91在线国产观看| 亚洲三级电影网站| 色天天综合色天天久久| 亚洲精品高清在线| 欧美色网一区二区| 三级不卡在线观看| 日韩免费一区二区| 国产精品一品二品| 亚洲欧美在线视频观看| 97精品国产露脸对白| 亚洲精品高清在线观看| 欧美日韩和欧美的一区二区| 午夜欧美在线一二页| 日韩一区二区三区免费看| 韩国理伦片一区二区三区在线播放 | 国产一区二区不卡在线| 国产精品美女久久久久aⅴ| av影院午夜一区| 一区二区三区视频在线观看| 欧美一区二区三区日韩视频| 精品午夜一区二区三区在线观看| 久久久青草青青国产亚洲免观| 成人高清在线视频| 亚洲h在线观看| 国产人成亚洲第一网站在线播放| 色天天综合色天天久久| 国产综合成人久久大片91| 中文字幕在线不卡一区| 91精品啪在线观看国产60岁| 国产91对白在线观看九色| 午夜成人免费视频| 久久精品亚洲乱码伦伦中文| 欧美午夜精品理论片a级按摩| 韩日精品视频一区| 五月综合激情婷婷六月色窝| 久久精品视频在线免费观看| 在线观看一区二区视频| 国产精品自在欧美一区| 亚洲v精品v日韩v欧美v专区| 国产婷婷一区二区| 欧美久久久久久久久久| 成人一二三区视频| 日韩和欧美一区二区| 国产精品精品国产色婷婷| 日韩一级片网站| 色综合天天综合狠狠| 狠狠色综合播放一区二区| 夜夜精品浪潮av一区二区三区| 精品国产免费一区二区三区香蕉| 一本色道久久综合精品竹菊| 国产美女视频91| 日韩电影免费一区| 亚洲香蕉伊在人在线观| 亚洲欧美一区二区三区国产精品| 精品99一区二区| 91精品一区二区三区在线观看| 91老司机福利 在线| 国产精品一区二区男女羞羞无遮挡 | 欧美日韩国产欧美日美国产精品| 国产不卡一区视频| 国产乱子伦一区二区三区国色天香 | 99久久99精品久久久久久| 国产精品自拍网站| 秋霞电影网一区二区| 丝袜亚洲另类欧美| 日韩和的一区二区| 亚洲成人1区2区| 亚洲国产中文字幕在线视频综合| 最新日韩在线视频| 亚洲视频一区二区在线| 国产精品国产三级国产专播品爱网 | 亚洲日本va午夜在线电影| 国产精品久久久久久户外露出 | 国产成a人亚洲| 国产成人免费xxxxxxxx| 成人黄色a**站在线观看| 成人美女视频在线观看18| 国产传媒一区在线| proumb性欧美在线观看| 99精品久久99久久久久| 99视频超级精品| 色婷婷香蕉在线一区二区| 欧美亚洲另类激情小说| 欧美日韩在线电影| 欧美美女一区二区三区| 91精品国产91久久久久久一区二区| 欧美日韩国产系列| 精品久久国产字幕高潮| 欧美精品一区二区精品网| 国产欧美一区二区三区在线看蜜臀| 国产无一区二区| 亚洲综合男人的天堂| 三级一区在线视频先锋| 国产九色精品成人porny| 91色在线porny| 欧美日韩久久一区| 26uuu国产电影一区二区| 国产免费观看久久| 亚洲美女一区二区三区| 婷婷夜色潮精品综合在线| 激情文学综合丁香| 97精品电影院| 日韩欧美国产一区在线观看| 国产喂奶挤奶一区二区三区| 亚洲激情综合网| 九九国产精品视频| 国产xxx精品视频大全| 欧洲国内综合视频| 国产女人18水真多18精品一级做| 亚洲成人免费av| 波多野结衣亚洲一区| 欧美成人aa大片| 亚洲一级二级在线|