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

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

?? wm.c

?? Samsung ARM7 s3c44b0 + uC-OSii + uC-GUI 完美的綜合到了一起
?? 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一区二区三区免费野_久草精品视频
91极品视觉盛宴| 亚洲美女免费在线| 亚洲理论在线观看| 黑人巨大精品欧美一区| 色婷婷狠狠综合| 精品久久99ma| 五月天欧美精品| 色综合久久综合网欧美综合网| 久久色中文字幕| 天使萌一区二区三区免费观看| 色综合天天综合狠狠| 国产午夜精品一区二区| 久久99久久久久| 日韩一区二区视频在线观看| 亚洲黄色录像片| 91久久精品午夜一区二区| 国产精品乱子久久久久| 国内精品自线一区二区三区视频| 欧美高清视频不卡网| 亚洲国产日韩精品| 色呦呦一区二区三区| 国产精品不卡一区| 成人激情午夜影院| 中文字幕第一区二区| 国产成人亚洲综合色影视| xnxx国产精品| 精品一区二区三区免费毛片爱| 欧美日韩aaaaaa| 性感美女极品91精品| 欧美日韩视频在线观看一区二区三区| 成人免费在线播放视频| 91色视频在线| 夜夜亚洲天天久久| 欧美人与z0zoxxxx视频| 日产精品久久久久久久性色| 欧美日韩在线观看一区二区| 亚洲第一av色| 欧美日韩国产综合草草| 天天影视涩香欲综合网 | 欧美在线视频你懂得| 亚洲精品乱码久久久久久久久| 色一情一伦一子一伦一区| 国产精品国产自产拍高清av王其 | 亚洲色图制服丝袜| 在线不卡的av| 亚洲韩国一区二区三区| 91精品国产手机| 久久国产剧场电影| 久久久久久久久久电影| av不卡在线播放| 亚洲国产综合人成综合网站| 91精品国产乱| 国产精品99久久久久| 亚洲欧美综合在线精品| 欧美日韩成人在线| 极品少妇一区二区三区精品视频| 中文乱码免费一区二区| 欧美日韩免费电影| 久久精品av麻豆的观看方式| 中文字幕欧美激情一区| 欧美日韩中文字幕精品| 久久精品国产一区二区| 国产精品欧美精品| 欧美日韩国产bt| 国产激情视频一区二区在线观看| 亚洲精品va在线观看| 精品日韩在线一区| 91在线精品一区二区| 琪琪一区二区三区| 国产精品久久久久久久久动漫| 欧美日韩日日夜夜| 高清日韩电视剧大全免费| 丝袜美腿高跟呻吟高潮一区| 久久久91精品国产一区二区精品 | 午夜欧美大尺度福利影院在线看| 精品伦理精品一区| 一本久道中文字幕精品亚洲嫩 | 一区二区三区四区在线播放 | 不卡电影一区二区三区| 午夜国产精品影院在线观看| 国产欧美日韩中文久久| 欧美一级淫片007| 99久久精品国产网站| 久久99国产精品尤物| 亚洲国产一区二区a毛片| 亚洲国产经典视频| 日韩欧美精品在线| 欧美日韩一区二区欧美激情 | 国产一区二区精品久久91| 亚洲精品高清在线观看| 亚洲国产精品99久久久久久久久 | 亚洲一区二区三区视频在线播放 | 久久老女人爱爱| 欧美日韩国产片| 91老司机福利 在线| 国产福利一区二区三区视频| 久久99国产精品久久99| 五月天视频一区| 亚洲国产乱码最新视频| 一区二区三区日韩| 日韩国产精品91| 亚洲专区一二三| 中文字幕一区免费在线观看| 国产午夜亚洲精品羞羞网站| 精品久久久三级丝袜| 日韩一二三四区| 欧美一卡二卡三卡四卡| 日韩区在线观看| 欧美一级xxx| 91精品国产综合久久精品| 欧美电影在哪看比较好| 制服丝袜中文字幕一区| 欧美日韩极品在线观看一区| 欧美高清视频一二三区 | 久久久久久久免费视频了| 精品国产一区二区三区四区四 | 亚洲美女屁股眼交| 亚洲人成在线播放网站岛国| 亚洲码国产岛国毛片在线| 亚洲丝袜制服诱惑| 亚洲美女精品一区| 亚洲高清不卡在线| 天天操天天综合网| 免费看欧美女人艹b| 国模冰冰炮一区二区| 韩国女主播一区二区三区| 大胆欧美人体老妇| av不卡免费在线观看| 91久久线看在观草草青青| 制服丝袜激情欧洲亚洲| 欧美成人女星排行榜| 久久九九99视频| 成人欧美一区二区三区视频网页| 亚洲黄色录像片| 免费人成网站在线观看欧美高清| 激情六月婷婷久久| 波多野结衣中文一区| 欧美日韩一区不卡| 制服丝袜中文字幕亚洲| 国产人伦精品一区二区| 亚洲综合激情另类小说区| 麻豆精品蜜桃视频网站| 国产99一区视频免费| 在线观看不卡一区| 精品久久久久久久人人人人传媒 | 精品一区二区免费| 不卡av免费在线观看| 欧美蜜桃一区二区三区 | 日韩一级片在线播放| 国产精品视频九色porn| 天天综合日日夜夜精品| 成人自拍视频在线| 91精品国产一区二区人妖| 亚洲欧洲精品成人久久奇米网| 天堂影院一区二区| 成人免费毛片app| 911精品国产一区二区在线| 国产精品视频一二| 美女视频一区在线观看| 91美女在线观看| 欧美成人a视频| 一区二区久久久久久| 国产sm精品调教视频网站| 555www色欧美视频| 国产精品二三区| 国产在线视频一区二区三区| 欧美体内she精高潮| 国产精品拍天天在线| 麻豆精品在线看| 欧美日韩二区三区| 亚洲色图欧美在线| 高潮精品一区videoshd| 日韩欧美亚洲国产另类| 婷婷六月综合网| 91福利精品视频| 最新高清无码专区| 高潮精品一区videoshd| 精品成a人在线观看| 美女网站色91| 3atv一区二区三区| 亚洲福利一区二区三区| 一本一道久久a久久精品| 国产日韩精品一区二区三区 | 欧美日韩国产小视频| **性色生活片久久毛片| 日韩激情一二三区| 久久久久国产精品麻豆ai换脸| 亚洲高清免费观看 | 亚洲色图19p| 国产美女在线观看一区| 日韩视频不卡中文| 午夜精品久久久久久久久久久 | 日韩av中文字幕一区二区三区| 色一情一伦一子一伦一区| 成人欧美一区二区三区1314| 高清久久久久久| 国产精品久久久久久久岛一牛影视 | 一区二区三区国产精品| 91香蕉国产在线观看软件| 亚洲精选视频免费看|