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

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

?? wm.c

?? ucgui在ARM44B0目標(biāo)板上的移植代碼支持16級(jí)灰度
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
    r.x0 = ClipContext.CurRect.x1+1;    r.y0 = ClipContext.CurRect.y0;    if (r.x0 > ClipContext.ClientRect.x1) {NextStripe:  /* go down to next stripe */      r.x0 = ClipContext.ClientRect.x0;      r.y0 = ClipContext.CurRect.y1+1;    }  }  /*     STEP 2:       Check if we are done completely.  */  if (r.y0 >ClipContext.ClientRect.y1)    return 0;  /* STEP 3:       Find out the max. height (r.y1) if we are at the left border.       Since we are using the same height for all IVRs at the same y0,       we do this only for the leftmost one.  */  pAWin = WM_H2P(GUI_Context.hAWin);  if (r.x0 == ClipContext.ClientRect.x0) {    r.y1 = ClipContext.ClientRect.y1;    r.x1 = ClipContext.ClientRect.x1;    /* Iterate over all windows which are above */    /* Check all siblings above (Iterate over Parents and top siblings (hNext) */    for (hParent = GUI_Context.hAWin; hParent; hParent = pParent->hParent) {      pParent = WM_H2P(hParent);      for (iWin= pParent->hNext; iWin !=0; iWin = pWin->hNext) {         Status = (pWin = WM_H2P(iWin))->Status;        /* Check if this window affects us at all */            if ((Status & WM_SF_ISVIS)  && (!(Status & WM_SF_HASTRANS)) && GUI_RectsIntersect(&r, &pWin->Rect)) {          if (pWin->Rect.y0 > r.y0) {            ASSIGN_IF_LESS(r.y1, pWin->Rect.y0-1);      /* Check upper border of window */          } else {            ASSIGN_IF_LESS(r.y1, pWin->Rect.y1);        /* Check lower border of window */          }        }      }    }    /* Check all children */    for (iWin= pAWin->hFirstChild; iWin !=0; iWin = pWin->hNext) {       Status = (pWin = WM_H2P(iWin))->Status;      /* Check if this window affects us at all */          if ((Status & WM_SF_ISVIS)  && (!(Status & WM_SF_HASTRANS)) && GUI_RectsIntersect(&r, &pWin->Rect)) {        if (pWin->Rect.y0 > r.y0) {          ASSIGN_IF_LESS(r.y1, pWin->Rect.y0-1);      /* Check upper border of window */        } else {          ASSIGN_IF_LESS(r.y1, pWin->Rect.y1);        /* Check lower border of window */        }      }    }  }  /*     STEP 4      Find out x0 for the given y0, y1 by iterating over windows above.      if we find one that intersects, adjust x0 to the right.  */Find_x0:  r.x1 = r.x0;  /* Iterate over all windows which are above */  /* Check all siblings above */    for (hParent = GUI_Context.hAWin; hParent; hParent = pParent->hParent) {    pParent = WM_H2P(hParent);    for (iWin= pParent->hNext; iWin !=0; iWin = pWin->hNext) {       Status = (pWin = WM_H2P(iWin))->Status;      if ( (Status & WM_SF_ISVIS) && (!(Status & WM_SF_HASTRANS)) && GUI_RectsIntersect(&r, &pWin->Rect)) {     /* Check if this window affects us at all */        r.x0 = pWin->Rect.x1+1;        goto Find_x0;      }    }  }  /* Check all children */  for (iWin= pAWin->hFirstChild; iWin !=0; iWin = pWin->hNext) {     Status = (pWin = WM_H2P(iWin))->Status;    if ( (Status & WM_SF_ISVIS) && (!(Status & WM_SF_HASTRANS)) && GUI_RectsIntersect(&r, &pWin->Rect)) {     /* Check if this window affects us at all */      r.x0 = pWin->Rect.x1+1;      goto Find_x0;    }  }  /*    STEP 5:     If r.x0 out of right border, this stripe is done. Set next stripe and goto STEP 2     Find out x1 for the given x0, y0, y1  */  r.x1 = ClipContext.ClientRect.x1;  if (r.x1 < r.x0) {/* horizontal border reached ? */    ClipContext.CurRect = r;    goto NextStripe;  }      /*    STEP 6:     Find r.x1. We have to Iterate over all windows which are above  */  /* Check all siblings above (Iterate over Parents and top siblings (hNext) */  for (hParent = GUI_Context.hAWin; hParent; hParent = pParent->hParent) {    pParent = WM_H2P(hParent);    for (iWin= pParent->hNext; iWin !=0; iWin = pWin->hNext) {       Status = (pWin = WM_H2P(iWin))->Status;      if (    (Status & WM_SF_ISVIS) && (!(Status & WM_SF_HASTRANS)) && GUI_RectsIntersect(&r, &pWin->Rect)) {     /* Check if this window affects us at all */        r.x1 = pWin->Rect.x0-1;          }    }  }  /* Check all children */  for (iWin= pAWin->hFirstChild; iWin !=0; iWin = pWin->hNext) {     Status = (pWin = WM_H2P(iWin))->Status;    if (    (Status & WM_SF_ISVIS) && (!(Status & WM_SF_HASTRANS)) && GUI_RectsIntersect(&r, &pWin->Rect)) {     /* Check if this window affects us at all */      r.x1 = pWin->Rect.x0-1;        }  }  /* We are done. Return the rectangle we found in the ClipContext. */  if (ClipContext.Cnt >200) {    return 0;  /* error !!! This should not happen !*/  }  ClipContext.CurRect = r;  return 1;  /* IVR is valid ! */}#elsestatic int FindNext_IVR(void) {  if (ClipContext.Cnt ==0) {    ClipContext.CurRect = GUI_Context.pAWin->Rect;    return 1;  /* IVR is valid ! */  }  return 0;  /* Nothing left to draw */}#endif/***********************************************************************              Get next IVR  Sets the next clipping rectangle. If a valid one has  been found (and set), 1 is returned in order to indicate  that the drawing operation needs to be executed.  Returning 0 signals that we have iterated over all  rectangles.  Returns: 0 if no valid rectangle is found           1 if rectangle has been found*/int  WM__GetNextIVR   (void) {  #if GUI_SUPPORT_CURSOR    static char _CursorHidden;  #endif  /* If WM is not active, we have no rectangles to return */  if (WM_IsActive==0)    return 0;  if (ClipContext.EntranceCnt > 1) {    ClipContext.EntranceCnt--;    return 0;  }  #if GUI_SUPPORT_CURSOR    if (_CursorHidden) {      _CursorHidden = 0;      (*GUI_CURSOR_pfTempUnhide) ( &ClipContext.CurRect);    }  #endif  ++ClipContext.Cnt;  /* Find next rectangle and use it as ClipRect */  if (!FindNext_IVR()) {    ClipContext.EntranceCnt--;  /* This search is over ! */    return 0;        /* Could not find an other one ! */  }  /* Hide cursor if necessary */  LCD_SetClipRectEx(&ClipContext.CurRect);  #if GUI_SUPPORT_CURSOR    if (GUI_CURSOR_pfTempHide) {      _CursorHidden = 1;      (*GUI_CURSOR_pfTempHide) ( &ClipContext.CurRect);    }  #endif  return 1;}/***********************************************************************              Init IVR  search  This routine is called from the clipping level  (the WM_ITERATE_START macro) when starting an iteration over the  visible rectangles.  Return value:    0 : There is no valid rectangle (nothing to do ...)    1 : There is a valid rectangle*/int WM__InitIVRSearch(const GUI_RECT* pMaxRect) {  GUI_RECT r;  WM_Obj* pAWin;   /* If WM is not active -> nothing to do, leave cliprect alone */  if (WM_IsActive==0)    return 1;              /* If we entered multiple times, leave Cliprect alone */  if (++ClipContext.EntranceCnt > 1)    return 1;  pAWin = WM_H2P(GUI_Context.hAWin);  ClipContext.Cnt        = -1; /* When using callback mechanism, it is legal to reduce drawing    area to the invalid area ! */  if (IsInCallback) {    WM__GetInvalidRectAbs(pAWin, &r);  } else {  /* Not using callback mechanism, therefor allow entire rectangle */    if (pAWin->Status & WM_SF_ISVIS) {      r = pAWin->Rect;    } else {      --ClipContext.EntranceCnt;      return 0;  /* window is not even visible ! */    }  }  /* If the drawing routine has specified a rectangle, use it to reduce the rectangle */  if (pMaxRect) {    GUI__IntersectRect(&r, pMaxRect);  }  /* If user has reduced the cliprect size, reduce the rectangle */  if (GUI_Context.WM__pUserClipRect) {    GUI_RECT rUser = *(GUI_Context.WM__pUserClipRect);    WM__Client2Screen(pAWin, &rUser);    GUI__IntersectRect(&r, &rUser);  }  /* Iterate over all ancestors and clip at their borders */  _ClipAtParentBorders(&r, pAWin);  /* Store the rectangle and find the first rectangle of the area */  ClipContext.ClientRect = r;  return WM__GetNextIVR();}/*          ********************************************          *                                          *          *       Set default                        *          *                                          *          ********************************************  This routine sets the defaults for WM and the layers below.  It is used before a drawing routine is called in order to  make sure that defaults are set (in case the default settings  had been altered before by the application)*/void WM_SetDefault(void) {  GL_SetDefault();  GUI_Context.WM__pUserClipRect = NULL;   /* No add. clipping */}/*  ********************************************  *  *        Callback for Paint message  *  ********************************************  This callback is used by the window manger in conjunction with banding  memory devices. A pointer to this routine is given to the banding memory device.  This callback in turn will send the paint message to the window.*/#if GUI_SUPPORT_MEMDEVstatic void cbPaint(void* pMsg) {  WM_SendMessage(((WM_MESSAGE*)pMsg)->hWin, (WM_MESSAGE*) pMsg);}#endif/*          ********************************************          *                                          *          *       Draw next window                   *          *                                          *          *********************************************/static void _DrawNext(void) {  int UpdateRem = 1;  WM_HWIN iWin = (NextDrawWin == WM_HWIN_NULL) ? WM__FirstWin : NextDrawWin;  GUI_CONTEXT ContextOld;  GUI_SaveContext(&ContextOld);  /* Make sure the next window to redraw is valid */  for (; (iWin!=WM_HWIN_NULL) && UpdateRem; ) {    WM_Obj* pWin = WM_H2P(iWin);    if (pWin->Status & WM_SF_INVALID) {      U8 Status = (pWin->Status &=  ~WM_SF_INVALID); /* Clear invalid flag */      WM__NumInvalidWindows--;      /* Send WM_PAINT if window is visible and a callback is defined */      if ((pWin->cb != NULL)  && (Status & WM_SF_ISVIS)) {        WM_MESSAGE Msg;        Msg.hWin   = iWin;        Msg.MsgId  = WM_PAINT;        Msg.Data.p = (GUI_RECT*)&pWin->InvalidRect;        WM_SelectWindow(iWin);        WM_SetDefault();        #if GUI_SUPPORT_MEMDEV          if (Status & WM_SF_MEMDEV) {            GUI_RECT r = pWin->InvalidRect;            GUI_MoveRect (&r, pWin->Rect.x0, pWin->Rect.y0);            GUI_MEMDEV_Draw(&r, cbPaint, &Msg, 0, (Status & WM_SF_HASTRANS) ? GUI_MEMDEV_HASTRANS : 0);          } else        #endif        WM_SendMessage(iWin, &Msg);        UpdateRem--;  /* Only the given number of windows at a time ... */      }    }    iWin = pWin->hNextLin;  }    NextDrawWin = iWin;   /* Remember the window */  GUI_RestoreContext(&ContextOld);}/*          *****************************************************************          *                                                               *          *                 Idle loop                                     *          *                                                               *          ******************************************************************/int WM_Exec1(void) {  if (WM_pfHandleHID) {    if (WM_pfHandleHID())      return 1;               /* We have done something ... */  }  if (GUI_PollKeyMsg()) {    return 1;               /* We have done something ... */  }  if (WM_IsActive && WM__NumInvalidWindows) {    WM_LOCK();    _DrawNext();    WM_UNLOCK();    return 1;               /* We have done something ... */  }  return 0;                  /* There was nothing to do ... */}int WM_Exec(void) {  int r = 0;  while (WM_Exec1()) {    r = 1;                  /* We have done something */  }  return r;}/*****************************************************************                                                               **              Callback for background window                   **                                                               *******************************************************************/static WM_RESULT cbBackWin( WM_MESSAGE* pMsg) {  WM_KEY_INFO* pKeyInfo;  switch (pMsg->MsgId) {  case WM_KEY:    pKeyInfo = (WM_KEY_INFO*)pMsg->Data.p;    if (pKeyInfo->PressedCnt == 0) {      GUI_StoreKey(pKeyInfo->Key);    }    break;  case WM_PAINT:    if (WM__BkColor != GUI_INVALID_COLOR) {      GUI_SetBkColor(WM__BkColor);      GUI_Clear();    }  default:    WM_DefaultProc(pMsg);  }}/******************************************************************                    WM_Activate  / WM_Deactivate*******************************************************************/void WM_Activate(void) {  WM_IsActive = 1;       /* Running */}void WM_Deactivate(void) {  WM_IsActive = 0;       /* No clipping performed by WM */  WM__SetMaxClipRect(WM_H2P(WM_HBKWIN));}/*          *****************************************************************          *                                                               *          *              WM_Init                                         *          *                                                               *          ******************************************************************/void WM_Init(void) {	if (!_IsInited) {	  WM_HWIN hWin;	  NextDrawWin = WM__FirstWin = WM_HWIN_NULL;	  GUI_Context.WM__pUserClipRect = NULL;	  WM__NumWindows = WM__NumInvalidWindows =0;	  /* Make sure we have at least one window. This greatly simplifies the		  drawing routines as they do not have to check if the window is valid.	  */	  hWin = WM_CreateWindow(0, 0, GUI_XMAX, GUI_YMAX, WM_CF_SHOW, cbBackWin, 0);	  WM_SelectWindow(hWin);	  WM_Activate();    _IsInited =1;	}}/*          ******************************************************          *                                                    *          *              Default procedure                     *          *                                                    *          *******************************************************/WM_RESULT WM_DefaultProc(WM_MESSAGE* pMsg) {  WM_HWIN hWin = pMsg->hWin;  void *p = pMsg->Data.p;  WM_Obj* pWin = WM_H2P(hWin);  /* Exec message */  switch (pMsg->MsgId) {  case WM_GETORG:    ((GUI_POINT*)p)->x = pWin->Rect.x0;    ((GUI_POINT*)p)->y = pWin->Rect.y0;    break;  case WM_GETCLIENTRECT:     /* return client window in window coordinates */    WM__GetClientRectWin(pWin, (GUI_RECT*)p);    break;  case WM_GETCLIENTRECT_ABS:      /* return client window in absolute (screen) coordinates */    WM__GetClientRectWin(pWin, (GUI_RECT*)p);    GUI_MoveRect((GUI_RECT*)p, pWin->Rect.x0, pWin->Rect.y0);    break;  case WM_GET_CLIENT_WINDOW:      /* return handle to client window. For most windows, there is no seperate client window, so it is the same handle */    pMsg->Data.v = hWin;    return;                       /* Message handled */  case WM_KEY:    WM_SendToParent(hWin, pMsg);    return;                       /* Message handled */   case WM_GET_BKCOLOR:    pMsg->Data.Color = GUI_INVALID_COLOR;    return;                       /* Message handled */  }  /* Message not handled. If it queries something, we return 0 to be on the safe side. */  pMsg->Data.v = 0;  pMsg->Data.p = 0;}#elsevoid WM(void) {} /* avoid empty object files */#endif /* WM_MAX_WINDOW */

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久伊人蜜桃av一区二区| 日韩欧美久久一区| 日本视频一区二区| 欧美精彩视频一区二区三区| 欧美午夜精品一区| 国产传媒欧美日韩成人| 亚洲午夜久久久久久久久电影网 | 国产在线不卡一区| 一区二区在线观看免费| 国产三区在线成人av| 5566中文字幕一区二区电影| 91亚洲永久精品| 国产一区二区三区综合| 日本aⅴ精品一区二区三区| 亚洲男人的天堂网| 中文字幕欧美日本乱码一线二线| 欧美一级高清大全免费观看| 一本大道久久a久久精品综合| 国产综合色在线| 日韩精品亚洲专区| 亚洲一区二区三区不卡国产欧美| 亚洲国产精品ⅴa在线观看| 日韩欧美激情四射| 欧美精选一区二区| 欧美性xxxxxxxx| 在线观看一区二区视频| 97久久精品人人做人人爽50路| 国产乱码精品一区二区三区av| 日本成人在线电影网| 图片区小说区区亚洲影院| 亚洲精品一卡二卡| 亚洲天堂中文字幕| 亚洲欧美自拍偷拍色图| 国产精品国产馆在线真实露脸| 久久蜜桃一区二区| 国产视频一区不卡| 国产欧美日韩另类一区| 国产日韩精品一区二区三区在线| 精品免费日韩av| 精品欧美一区二区久久| 精品久久久久99| 欧美变态tickling挠脚心| 日韩一级二级三级| 欧美不卡一区二区三区四区| 欧美www视频| 精品国产髙清在线看国产毛片| 日韩三级电影网址| 精品嫩草影院久久| 国产调教视频一区| ...xxx性欧美| 亚洲一区电影777| 亚洲1区2区3区视频| 日韩不卡免费视频| 国产中文字幕精品| 国产成人精品三级| 99精品欧美一区二区三区综合在线| 色婷婷综合五月| 欧美乱妇15p| 欧美videossexotv100| 久久蜜臀精品av| 一区免费观看视频| 亚洲一卡二卡三卡四卡无卡久久| 日韩主播视频在线| 国产精品亚洲成人| jvid福利写真一区二区三区| 91官网在线观看| 91精品久久久久久久91蜜桃| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 婷婷国产在线综合| 国产真实精品久久二三区| 成人午夜碰碰视频| 欧美日韩久久一区| 久久久久久久电影| 一区二区成人在线| 久久激情五月婷婷| 99久久婷婷国产综合精品| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 成人国产亚洲欧美成人综合网| 一本一本大道香蕉久在线精品| 欧美日韩一区中文字幕| 国产亚洲va综合人人澡精品| 亚洲精品日韩一| 久久精品国产秦先生| 99久久久无码国产精品| 欧美一区日韩一区| 国产精品家庭影院| 秋霞国产午夜精品免费视频| 成人久久久精品乱码一区二区三区| 日本久久一区二区三区| 精品国一区二区三区| 一区二区在线观看av| 国产美女精品人人做人人爽| 欧美伊人久久大香线蕉综合69 | 一区二区三区四区在线播放| 久久66热偷产精品| 91成人网在线| 欧美—级在线免费片| 日韩精品免费视频人成| 97久久精品人人爽人人爽蜜臀| 日韩三级免费观看| 亚洲一区二区三区三| 不卡的电视剧免费网站有什么| 欧美一区二区三区播放老司机| 综合精品久久久| 福利电影一区二区| 日韩欧美国产综合一区| 亚洲在线免费播放| 91一区二区在线观看| 国产视频在线观看一区二区三区| 日韩av高清在线观看| 欧洲精品在线观看| 成人欧美一区二区三区视频网页| 国产福利91精品| 精品福利一二区| 免费高清在线视频一区·| 欧美三级中文字幕在线观看| 中文字幕日本乱码精品影院| 国产成人av网站| www精品美女久久久tv| 轻轻草成人在线| 欧美精品免费视频| 亚洲国产欧美日韩另类综合| 色综合天天综合网天天看片| 天堂在线亚洲视频| 欧美无砖砖区免费| 亚洲乱码中文字幕综合| 99久久99久久精品国产片果冻| 久久婷婷综合激情| 国产尤物一区二区| 精品粉嫩aⅴ一区二区三区四区| 免费欧美在线视频| 91精品国产乱码久久蜜臀| 三级成人在线视频| 欧美一区二区三区影视| 免费成人小视频| 欧美大片一区二区| 久久99久久久欧美国产| 欧美大片国产精品| 极品少妇一区二区三区精品视频 | 2欧美一区二区三区在线观看视频| 免费三级欧美电影| 欧美大片国产精品| 精品系列免费在线观看| 国产亚洲精品aa| 成人免费毛片高清视频| 中文字幕视频一区| 在线观看一区二区视频| 午夜免费久久看| 欧美一区在线视频| 经典一区二区三区| 久久精品亚洲麻豆av一区二区 | 另类小说色综合网站| 欧美成人高清电影在线| 国产成人亚洲综合a∨猫咪| 中文字幕不卡在线| 91女厕偷拍女厕偷拍高清| 亚洲乱码国产乱码精品精小说 | 日韩欧美激情在线| 国产毛片精品视频| 国产精品久久久久影院亚瑟| 一本色道a无线码一区v| 三级久久三级久久| 久久久亚洲精品石原莉奈| 成人av动漫在线| 亚洲最大的成人av| 精品久久免费看| 99热在这里有精品免费| 亚洲成人av在线电影| 精品国产免费一区二区三区四区 | 亚洲欧洲日产国码二区| 在线视频一区二区三| 奇米一区二区三区| 欧美激情中文不卡| 欧美日韩一卡二卡| 国产一区在线观看麻豆| 亚洲日本成人在线观看| 欧美一区二区三区视频免费播放| 国产成人免费9x9x人网站视频| 夜色激情一区二区| 久久久精品国产免大香伊| 在线看不卡av| 国产成人免费视频网站高清观看视频 | 91精品福利在线一区二区三区 | 久久婷婷久久一区二区三区| 99精品一区二区三区| 人人狠狠综合久久亚洲| 亚洲欧美日韩国产手机在线| 日韩欧美国产1| 99久久er热在这里只有精品15 | 免费人成精品欧美精品| 亚洲视频在线观看三级| 精品动漫一区二区三区在线观看| 91麻豆文化传媒在线观看| 另类的小说在线视频另类成人小视频在线 | 成人免费电影视频| 日本怡春院一区二区| 亚洲欧美国产毛片在线| 久久久精品tv| 欧美一级xxx| 欧美性受极品xxxx喷水|