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

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

?? wm.c

?? 基于arm7內核的S3C44B0X的UCGUI應用程序
?? C
?? 第 1 頁 / 共 3 頁
字號:
  pRect->x1 = pWin->Rect.x1 - pWin->Rect.x0;  pRect->y1 = pWin->Rect.y1 - pWin->Rect.y0;}static void WM__GetInvalidRectAbs(WM_Obj* pWin, GUI_RECT* pRect) {  *pRect = pWin->InvalidRect;  GUI_MoveRect (pRect, pWin->Rect.x0, pWin->Rect.y0);}/*          *****************************************************************          *                                                               *          *              Invalidation functions                           *          *                                                               *          ******************************************************************//* Invalidate, using window coordinates */static void WM_InvalidateBWin1(WM_HWIN hWin, const GUI_RECT*pRect) {  GUI_RECT r;  WM_Obj* pWin = WM_H2P(hWin);  WM__GetClientRectWin(pWin, &r);  if (pRect)    GUI__IntersectRect(&r, pRect);  if (WM__RectIsNZ(&r)) {    if (pWin->Status & WM_SF_INVALID) {      GUI_MergeRect(&pWin->InvalidRect, &pWin->InvalidRect, &r);    } else {      pWin->InvalidRect = r;      pWin->Status |= WM_SF_INVALID;      WM__NumInvalidWindows++;      /* Debug code: shows invalid areas */      #if (WM_SHOW_INVALID)      {        GUI_CONTEXT Context = GUI_Context;        WM_SelectWindow(hWin);        GUI_SetBkColor(GUI_GREEN);        GUI_ClearRect(r.x0, r.y0, r.x1, r.y1);        GUI_Context = Context;      }      #endif    }  }}/* Invalidate, using desktop coordinates (only this window,   not the ones below !!!)*/static void WM_InvalidateBWin1Abs(WM_HWIN hWin, const GUI_RECT*pRect) {  GUI_RECT r = *pRect;  WM_LOCK();  GUI_MoveRect(&r, -WM_H2P(hWin)->Rect.x0, -WM_H2P(hWin)->Rect.y0);  WM_InvalidateBWin1(hWin, &r);  WM_UNLOCK();}/*  Invalidate a certain section of the display. One main reason for this is  that a window has been moved or destroyed.  The following windows are affected:  * windows below the window creating the invalidation.  * transparent windows located above  The coordinates given are absolute coordinates (desktop coordinates)*/void WM__InvalidateAreaBelow(const GUI_RECT* pRect, WM_HWIN StopWin) {  WM_HWIN   iWin, iNext;  /* Iterate over windows below StopWin */  for (iWin = WM__FirstWin; iWin!=StopWin; iWin = iNext) {    GUI_RECT r = *pRect;    WM_Obj* pWin = WM_H2P(iWin);    iNext = pWin->hNextLin;    if (GUI__IntersectRects(&r, &r, &pWin->Rect)) {      WM_InvalidateBWin1Abs (iWin, &r);    }  };}/*  Invalidate any transparent window above the given area*/void WM__InvalidateTransAreaAbove(const GUI_RECT* pRect, WM_HWIN StopWin) {  GUI_USE_PARA(pRect);  GUI_USE_PARA(StopWin);#if 0  WM_HWIN   iWin;  /* Iterate over windows below StopWin */  for (iWin = StopWin; iWin!=WM_HWIN_NULL; iWin = WM_H2P(iWin)->Next) {    WM_Obj *pWin = WM_H2P(iWin);    if (pWin->Status & WM_SF_HASTRANS) {      GUI_RECT r = *pRect;      if (GUI__IntersectRects(&r, &r, &WM_H2P(iWin)->Rect)) {        WM_InvalidateBWin1Abs (iWin, &r);      }    }  }#endif}/*          *****************************************************************          *                                                               *          *              Invalidation functions                           *          *                                                               *          ******************************************************************//* Invalidate a section of the window. The optional rectangle   contains client coordinates, which are independent of the   position of the window on the logical desktop area.*/void WM_InvalidateRect(WM_HWIN hWin, const GUI_RECT*pRect) {  GUI_RECT r;  WM_Obj* pWin;  WM_LOCK();  pWin = WM_H2P(hWin);  WM__GetClientRectWin(pWin, &r);  if (pRect) {    GUI__IntersectRect(&r, pRect);  }  WM_InvalidateBWin1(hWin, &r);/* Convert into absolute coordinates ... */  GUI_MoveRect (&r, pWin->Rect.x0, pWin->Rect.y0);/* Make sure windows below are invalidated if this one is transparent */  if (pWin->Status & WM_SF_HASTRANS) {    ResetNextDrawWin();    WM__InvalidateAreaBelow(&r, hWin);  }/* Invalidate the transparent ones above */  WM__InvalidateTransAreaAbove(&r,hWin);  WM_UNLOCK();}void WM_InvalidateWindow(WM_HWIN hWin) {  WM_InvalidateRect(hWin, NULL);}/* Invalidate, using desktop coordinates */void WM_InvalidateBWinAbs(WM_HWIN hWin, const GUI_RECT*pRect) {  GUI_RECT r = *pRect;  WM_LOCK();  GUI_MoveRect(&r, -WM_H2P(hWin)->Rect.x0, -WM_H2P(hWin)->Rect.y0);  WM_InvalidateRect(hWin, &r);  WM_UNLOCK();}/*  Invalidate a certain section of the display. One main reason for this is  that the top window has been moved or destroyed.  The coordinates given are absolute coordinates (desktop coordinates)*/void WM_InvalidateArea(GUI_RECT* pRect) {  WM_HWIN   iWin;  WM_LOCK();  /* Iterate over all windows */  for (iWin=WM__FirstWin; iWin !=0; ) {    WM_Obj* pWin = WM_H2P(iWin);    GUI_RECT r = *pRect;    GUI__IntersectRect(&r, &pWin->Rect);    /* Calculate which area is actually visible by subtracting the       windows which are on top of this one */    WM_InvalidateBWinAbs (iWin, &r);    iWin = pWin->hNextLin;  }  WM_UNLOCK();}/*  ********************************************************************  *                                                                  *  *              manage windows stack                                *  *                                                                  *  *********************************************************************//* Return index (handle) of the window which is bottom of stack.   Note that in the current implementation, this is always   window 0.*/WM_HWIN WM_GetDesktopWindow(void) {  return WM__FirstWin;}/*  ********************************************************************  *  *              Create window (as child)  *  *********************************************************************/WM_HWIN WM_CreateWindowAsChild(                    int x0, int y0, int width, int height                   ,WM_HWIN hWinParent                   ,U16 Style                   ,WM_CALLBACK* cb                   ,int NumExtraBytes){  WM_Obj* pWin;  WM_HWIN hWin;  WM_LOCK();  Style |= WM__CreateFlags;  /* Get Parent info */  if (!hWinParent) {    if (WM__NumWindows) {      hWinParent = WM_HBKWIN;    }  }  if (hWinParent) {    GUI_RECT Rect;    WM_MESSAGE Msg;    Msg.MsgId = WM_GETCLIENTRECT_ABS;    Msg.Data.p = &Rect;    WM_SendMessage(hWinParent, &Msg);    x0 += Rect.x0;    y0 += Rect.y0;    if (width==0)      width = Rect.x1-Rect.x0+1;    if (height==0)      height = Rect.y1-Rect.y0+1;  }  if ((hWin = (WM_HWIN) WM_ALLOC(NumExtraBytes+sizeof(WM_Obj))) == 0) {    GUI_DEBUG_ERROROUT("WM_CreateWindow: No memory to create window");  } else {    WM__NumWindows++;    pWin = WM_H2P(hWin);    memset (pWin,   0, sizeof(WM_Obj));        /* erase this data structure           The explicit zero-init is no longer needed since the entire data structure           is already zeroed. The advantage is that it reduces program size.           */    pWin->Rect.x0 = x0;    pWin->Rect.y0 = y0;    pWin->Rect.x1 = x0+width-1;    pWin->Rect.y1 = y0+height-1;    pWin->Status = WM_SF_INUSE;     /* Mark window as in use */    pWin->cb = cb;    /* Add to linked lists */    pWin->hParent = hWinParent;    _AddChild(hWinParent, hWin, Style & WM_CF_STAYONTOP);    _AddToLinList(hWin);  /* Put Window on top (or bottom) of windows stack */    if (Style & WM_CF_ACTIVATE /*| (cb==NULL)*/) {      WM_SelectWindow(hWin);  /* This is not needed                                 if callbacks are being used, but it                                 does not cost a lot and makes life                                 easier ... */    }  /* Mark client area as invalid */    WM__SendMsgNoData(hWin, WM_CREATE);  /* Handle the Style flags, one at a time */    if (Style & WM_CF_SHOW) {      WM_ShowWindow(hWin);    }  /* Hide if parent is not visible */    if (hWinParent) {      WM_Obj* pWinParent = WM_H2P(hWinParent);      if (!(pWinParent->Status & WM_SF_ISVIS)) {        WM_HideWindow(hWin);      }    }    /* Copy the flags which can simply be accepted */    pWin->Status |= (Style & (WM_SF_MEMDEV|WM_SF_STAYONTOP|WM_SF_HASTRANS));  }  WM_UNLOCK();  return hWin;}WM_HWIN WM_CreateWindow(int x0, int y0, int width, int height, U16 Style, WM_CALLBACK* cb, int NumExtraBytes) {  return WM_CreateWindowAsChild(x0,y0,width,height, 0 /* No parent */,  Style, cb, NumExtraBytes);}/******************************************************************          Delete window*******************************************************************/void WM_DeleteWindow (WM_HWIN Win) {  WM_Obj* pWin;  if (!Win)    return;  WM_LOCK();  if (WM__IsWindow(Win)) {    pWin = WM_H2P(Win);    ResetNextDrawWin();              /* Make sure the window will no longer receive drawing messages */  /* Make sure that focus is set to an existing window */    if (WM__hWinFocus == Win) {      WM__hWinFocus = 0;    }    if (Win == WM__hCapture) {      WM__hCapture = 0;    }  /* Delete all children */    _DeleteAllChildren(pWin->hFirstChild);    _DeleteInSiblingList(Win);  /* Send WM_DELETE message to window in order to inform window itself */    WM__SendMsgNoData(Win, WM_DELETE);     /* tell window about it */    /* Inform other modules if necessary */    if (WM__pfDeleteWindowHook) {      (*WM__pfDeleteWindowHook)(Win);    }  /* Remove window from window stack */    if (pWin->Status & WM_SF_INVALID) {      WM__NumInvalidWindows--;    }    WM__RemoveFromLinList(Win);  /* Clear area used by this window */    WM_InvalidateArea(&pWin->Rect);  /* Free window memory */    WM__NumWindows--;    WM_FREE(Win);  /* Select a valid window */    WM_SelectWindow(WM__FirstWin);  } else {    GUI_DEBUG_WARN("WM_DeleteWindow: Invalid handle");  }  WM_UNLOCK();}void WM__SetMaxClipRect(const WM_Obj* pWin) {  WM_LOCK();  LCD_SetClipRectEx(&pWin->Rect);  WM_UNLOCK();}/******************************************************************              WM_SelectWindow******************************************************************Sets the active Window. The active Window is the one that is used for alldrawing (and text) operations.*/WM_HWIN WM_SelectWindow(WM_HWIN  hWin) {  WM_HWIN hWinPrev;  WM_LOCK();  hWinPrev = GUI_Context.hAWin;  if (hWin == 0) {    hWin = WM__FirstWin;  }  if (!(WM_H2P(hWin)->Status & WM_SF_INUSE)) {    GUI_DEBUG_ERROROUT1("Selecting invalid window", hWin);    hWin=0;  }  /* Select new window */  GUI_Context.hAWin = hWin;  WM__SetMaxClipRect(WM_H2P(hWin));  WM_UNLOCK();  return hWinPrev;}WM_HWIN WM_GetActiveWindow(void) {  return GUI_Context.hAWin;}/*  ********************************************************************  *                                                                  *  *                 Show / hide window                               *  *                                                                  *  *********************************************************************/void WM_ShowWindow   (WM_HWIN hWin) {  WM_Obj *pWin;  WM_LOCK();  pWin = WM_H2P(hWin);    /* First check if this is necessary at all */  if ((pWin->Status&WM_SF_ISVIS)) {    WM_UNLOCK();    return;  }  /* Set Visibility flag */  pWin->Status |= WM_SF_ISVIS;  /* Mark content as invalid */  WM_InvalidateWindow(hWin);  WM_UNLOCK();}/*          *****************************************************************          *                                                               *          *                    GetOrg                                     *          *                                                               *          *****************************************************************These routines return the offset of the client area in absolute coordinates.They are used to convert window coordinates into absolute coordinates and areused in the clipping libraries (CL_).*/int WM__GetOrgX(void) {  return WM_H2P(GUI_Context.hAWin)->Rect.x0;}int WM__GetOrgY(void) {  return WM_H2P(GUI_Context.hAWin)->Rect.y0;}/***********************************************************************           IVR calculationIVRs are invalid rectangles. When redrawing, only the portion of thewindow which is  a) within the window-rectangle  b) not covered by an other window  c) marked as invalid  is actually redrawn. Unfortunately, this section is not always  rectangular. If the window is partially covered by an other window,  it consists of the sum of multiple rectangles. In all drawing  operations, we have to iterate over every one of these rectangles in  order to make sure the window is drawn completly.Function works as follows:  STEP 1: - Set upper left coordinates to next pixel. If end of line (right border), goto next line -> (r.x0, r.y0)  STEP 2: - Check if we are done, return if we are.  STEP 3: - If we are at the left border, find max. heigtht (r.y1) by iterating over windows above  STEP 4: - Find x0 for the given y0, y1 by iterating over windows above  STEP 5: - If r.x0 out of right border, this stripe is done. Set next stripe and goto STEP 2  STEP 6: - Find r.x1. We have to Iterate over all windows which are above*/#if WM_SUPPORT_OBSTRUCTstatic int FindNext_IVR(void) {  int hParent;  int iWin;  GUI_RECT r;  U8 Status;  WM_Obj* pWin;  WM_Obj* pAWin;  WM_Obj* pParent;  r = ClipContext.CurRect;  /* temps  so we do not have to work with pointers too much */  /*     STEP 1:       Set the next position which could be part of the next IVR       This will be the first unhandle pixel in reading order, i.e. next one to the right       or next one down if we are at the right border.  */  if (ClipContext.Cnt == 0) {       /* First IVR starts in upper left */    r.x0 = ClipContext.ClientRect.x0;    r.y0 = ClipContext.ClientRect.y0;  } else {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频中文字幕| 亚洲私人黄色宅男| 欧美区在线观看| 日本久久一区二区三区| 99re视频精品| 色悠久久久久综合欧美99| 久久99国产精品免费| 亚洲午夜精品网| 同产精品九九九| 精品写真视频在线观看| 丁香桃色午夜亚洲一区二区三区| 国产精品一区三区| 懂色av中文一区二区三区| 国产一区二区三区免费看| 国产精品一卡二卡| 色综合色综合色综合| 欧美日韩免费视频| 日韩三级在线观看| 国产亚洲污的网站| 一区二区三区欧美| 青草av.久久免费一区| 国产麻豆91精品| 欧美亚洲图片小说| 精品久久国产字幕高潮| 国产精品久久久久久久浪潮网站 | 色婷婷综合久久久中文一区二区| 91视频一区二区| 日韩一区二区三区在线观看| 国产偷国产偷精品高清尤物 | 欧美一区永久视频免费观看| 日韩三级视频在线观看| 亚洲色图丝袜美腿| 老司机精品视频一区二区三区| 成人免费看的视频| 337p亚洲精品色噜噜狠狠| 国产精品久久久久久久久久久免费看| 欧美国产日韩亚洲一区| 亚洲国产精品尤物yw在线观看| 麻豆成人av在线| 在线观看欧美黄色| 国产日产欧美精品一区二区三区| 亚洲成人免费电影| 白白色亚洲国产精品| 日韩一区二区在线播放| 亚洲综合免费观看高清完整版在线 | 亚洲在线视频网站| 国产麻豆日韩欧美久久| 欧美日本一区二区| 亚洲视频电影在线| 成人丝袜高跟foot| 亚洲精品一区二区三区精华液 | 日韩一级片网站| 亚洲精品免费一二三区| 国产一区二区三区av电影| 欧美女孩性生活视频| 亚洲精品视频一区| av爱爱亚洲一区| 久久精品夜夜夜夜久久| 捆绑紧缚一区二区三区视频 | 久久久久久免费| 久久精品国产99国产| 欧美日韩一区 二区 三区 久久精品| 国产精品美女久久久久aⅴ国产馆| 麻豆成人av在线| 精品日韩av一区二区| 日韩av网站在线观看| 欧美区在线观看| 三级影片在线观看欧美日韩一区二区| 色综合天天综合狠狠| **性色生活片久久毛片| 99国产精品久久久久久久久久| 国产女主播在线一区二区| 国产suv精品一区二区6| 国产精品日韩成人| 91在线视频免费91| 亚洲男人天堂av网| 在线观看不卡视频| 亚洲一区二区成人在线观看| 在线视频一区二区三区| 亚洲一二三区在线观看| 欧美日韩国产综合视频在线观看| 亚洲一区二区欧美日韩 | 精品欧美黑人一区二区三区| 视频一区国产视频| 精品美女在线观看| 成人一级黄色片| 亚洲精品国久久99热| 欧美日韩国产综合久久| 欧美aⅴ一区二区三区视频| 精品国产免费人成在线观看| 国产一区二区剧情av在线| 国产精品久久久久久久久免费相片| 99久久综合99久久综合网站| 亚洲免费在线观看| 56国语精品自产拍在线观看| 国产一区二区调教| 亚洲欧美日韩国产综合在线| 欧美人狂配大交3d怪物一区| 国产综合色精品一区二区三区| 国产精品午夜久久| 欧美三级资源在线| 国内不卡的二区三区中文字幕 | 欧美日韩一区国产| 免费人成在线不卡| 国产精品视频麻豆| 欧美一区日韩一区| 丁香激情综合五月| 男人的天堂亚洲一区| 国产精品白丝在线| 日韩一区二区视频在线观看| av成人免费在线观看| 蜜臀精品一区二区三区在线观看| 中文无字幕一区二区三区| 欧美精品xxxxbbbb| www.爱久久.com| 麻豆精品国产91久久久久久| ...av二区三区久久精品| 欧美va亚洲va香蕉在线| 日本韩国精品一区二区在线观看| 精品午夜一区二区三区在线观看| 亚洲一区中文日韩| 国产精品视频你懂的| 精品福利一区二区三区免费视频| 91久久精品一区二区| 丁香亚洲综合激情啪啪综合| 久久99热这里只有精品| 一区二区三区日本| 国产精品久久久久影院| wwwwxxxxx欧美| 91精品在线一区二区| 在线视频欧美区| 色综合天天综合网国产成人综合天 | 亚洲一区二区精品视频| 中文字幕一区二区三区精华液| 欧美一区二区三区四区久久| 欧美午夜精品久久久久久孕妇 | 久久av老司机精品网站导航| 亚洲影视资源网| 亚洲欧美一区二区三区孕妇| 欧美激情在线免费观看| 久久午夜国产精品| 久久免费精品国产久精品久久久久| 欧美另类久久久品| 欧美日韩黄色一区二区| 欧美日韩久久久一区| 欧美优质美女网站| 欧美日韩国产免费| 欧美撒尿777hd撒尿| 欧美精品久久99| 欧美在线三级电影| 欧美三区在线视频| 欧美日韩色综合| 9191成人精品久久| 91精品视频网| 日韩欧美中文一区二区| 日韩欧美一区二区视频| 日韩女优电影在线观看| 欧美大片国产精品| 久久这里都是精品| 国产日韩欧美不卡| 亚洲欧洲精品一区二区精品久久久 | 处破女av一区二区| 99国产欧美另类久久久精品| 91麻豆文化传媒在线观看| 日本韩国视频一区二区| 一本到三区不卡视频| 欧美日本免费一区二区三区| 911精品产国品一二三产区| 亚洲精品在线一区二区| 国产精品乱人伦一区二区| 亚洲精品乱码久久久久久黑人| 亚洲国产精品麻豆| 视频一区二区中文字幕| 久久精品国产久精国产爱| 国产传媒一区在线| 91成人免费在线视频| 日韩视频中午一区| 国产亚洲一本大道中文在线| 亚洲免费视频成人| 热久久一区二区| 成人免费毛片a| 日韩午夜激情电影| 亚洲日本韩国一区| 久久国产精品区| 色婷婷av一区二区| 欧美电视剧在线看免费| 国产精品丝袜在线| 日本aⅴ免费视频一区二区三区 | 色综合久久综合网| 日韩一级免费观看| 亚洲三级视频在线观看| 蜜臀av性久久久久蜜臀aⅴ四虎 | 亚洲视频综合在线| 蜜臀av国产精品久久久久| 99精品视频在线播放观看| 欧美v日韩v国产v| 亚洲电影视频在线| 不卡一卡二卡三乱码免费网站| 欧美一二三区在线| 亚洲成人先锋电影|