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

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

?? guidev.c

?? Samsung ARM7 s3c44b0 + uC-OSii + uC-GUI 完美的綜合到了一起
?? C
?? 第 1 頁 / 共 2 頁
字號:
static void _DrawBitmap   (int x0, int y0,                       int xsize, int ysize,                       int BitsPerPixel,                        int BytesPerLine,                       const U8* pData, int Diff,                       const LCD_PIXELINDEX* pTrans){  int i;  GUI_MEMDEV * pDev = GUI_MEMDEV_h2p(GUI_Context.hDevData);  GUI_USAGE* pUsage = (pDev->hUsage) ? GUI_USAGE_h2p(pDev->hUsage) : 0;  /* Mark all affected pixels dirty unless transparency is set */  if (pUsage) {    if ((GUI_Context.DrawMode & LCD_DRAWMODE_TRANS) ==0) {      for (i=0; i<ysize; i++) {        GUI_USAGE_AddHLine(pUsage, x0+Diff,y0+i,xsize);      }    }  }  /* Handle 8 bpp bitmaps seperately as we have different routine bitmaps with or without palette */  x0+=Diff;  /* handle 16 bpp bitmaps in high color modes, but only without palette */  #if LCD_BITSPERPIXEL >8    if (BitsPerPixel==16) {      for (i=0; i<ysize; i++) {        DrawBitLine16BPP_DDB(pUsage, x0, i+y0, (U16*)pData, xsize);        pData += BytesPerLine;      }      return;    }  #endif  /* handle 8 bpp bitmaps */  if (BitsPerPixel==8) {    for (i=0; i<ysize; i++) {      if (pTrans) {        DrawBitLine8BPP(pUsage, x0, i+y0, pData, xsize, pTrans);      } else {        DrawBitLine8BPP_DDB(pUsage, x0, i+y0, pData, xsize);      }      pData += BytesPerLine;    }    return;  }  /* Use aID for bitmaps without palette */  if (!pTrans) {    pTrans = aID;  }  for (i=0; i<ysize; i++) {    switch (BitsPerPixel) {    case 1:      DrawBitLine1BPP(pUsage, x0, i+y0, pData, Diff, xsize, pTrans);      break;    case 2:      DrawBitLine2BPP(pUsage, x0, i+y0, pData, Diff, xsize, pTrans);      break;    case 4:      DrawBitLine4BPP(pUsage, x0, i+y0, pData, Diff, xsize, pTrans);      break;    }    pData += BytesPerLine;  }}static void _DrawHLine    (int x0, int y,  int x1) {  GUI_MEMDEV * pDev = GUI_MEMDEV_h2p(GUI_Context.hDevData);  GUI_USAGE_h hUsage = pDev->hUsage;   if (hUsage)    GUI_USAGE_AddHLine(GUI_USAGE_h2p(hUsage), x0,y,x1-x0+1);  {    int len = x1-x0+1;    LCD_PIXELINDEX* pData = GUI_MEMDEV_XY2PTR(x0,y);    if (GUI_Context.DrawMode & LCD_DRAWMODE_XOR) {      int NumColorsM1 = pDev->NumColors-1;      do {        *pData = NumColorsM1 - *pData;        pData++;      } while (--len);    } else {  /* Fill */      #if LCD_BITSPERPIXEL <=8        memset (pData, LCD_COLORINDEX, len);      #else        *pData = LCD_COLORINDEX;   /* We write at least one pixel, so this is permitted ...                                  (speed optimization) */        while (--len) {          *++pData = LCD_COLORINDEX;        }      #endif    }  }}static void _DrawVLine    (int x , int y0,  int y1) {  GUI_MEMDEV * pDev = GUI_MEMDEV_h2p(GUI_Context.hDevData);  GUI_USAGE_h hUsage = pDev->hUsage;   GUI_USAGE*  pUsage = hUsage ? GUI_USAGE_h2p(hUsage) : NULL;  int NumColorsM1 = pDev->NumColors-1;  LCD_PIXELINDEX* pData = GUI_MEMDEV_XY2PTR(x,y0);  do {    if (hUsage)      GUI_USAGE_AddPixel(pUsage, x,y0);    if (GUI_Context.DrawMode & LCD_DRAWMODE_XOR)      *pData = NumColorsM1 - *pData;    else      *pData = LCD_COLORINDEX;    #if LCD_BITSPERPIXEL <= 8      pData += pDev->BytesPerLine;    #else      pData += pDev->BytesPerLine>>1;    #endif  } while (++y0<=y1);}static void _SetPixelIndex (int x, int y, int Index){  GUI_MEMDEV * pDev = GUI_MEMDEV_h2p(GUI_Context.hDevData);  GUI_USAGE_h hUsage = pDev->hUsage;   LCD_PIXELINDEX* pData = GUI_MEMDEV_XY2PTR(x,y);  *pData = Index;  if (hUsage) {    GUI_USAGE*  pUsage = GUI_USAGE_h2p(hUsage);    GUI_USAGE_AddPixel(pUsage, x,y);  }}static void _XorPixel (int x, int y) {  GUI_MEMDEV * pDev = GUI_MEMDEV_h2p(GUI_Context.hDevData);  GUI_USAGE_h hUsage = pDev->hUsage;   LCD_PIXELINDEX* pData = GUI_MEMDEV_XY2PTR(x,y);  *pData = pDev->NumColors - 1-*pData;  if (hUsage) {    GUI_USAGE*  pUsage = GUI_USAGE_h2p(hUsage);    GUI_USAGE_AddPixel(pUsage, x,y);  }}static unsigned int _GetPixelIndex (int x, int y){  LCD_PIXELINDEX* pData = GUI_MEMDEV_XY2PTR(x,y);  return *pData;}static void _FillRect     (int x0, int y0, int x1, int y1){  for (; y0 <= y1; y0++) {    _DrawHLine(x0,y0, x1);  }}static void _GetRect  (GUI_RECT* pRect) {  GUI_MEMDEV * pDev = GUI_MEMDEV_h2p(GUI_Context.hDevData);  pRect->x0 = pDev->x0;  pRect->y0 = pDev->y0;  pRect->x1 = pDev->x0 + pDev->XSize-1;  pRect->y1 = pDev->y0 + pDev->YSize-1;}static  unsigned int _Color2Index (LCD_COLOR Color) {  GUI_MEMDEV * pDev = GUI_MEMDEV_h2p(GUI_Context.hDevData);  return pDev->pfColor2Index(Color);}static  LCD_COLOR _Index2Color (int Index) {  GUI_MEMDEV * pDev = GUI_MEMDEV_h2p(GUI_Context.hDevData);  return pDev->pfIndex2Color(Index);}/***********************************************************************             Device structure************************************************************************/static const tLCDDEV_APIList _APIList = {  _Color2Index,  _DrawBitmap,  _DrawHLine,  _DrawVLine,  _FillRect,  _GetPixelIndex,  _GetRect,  _Index2Color,  _SetPixelIndex,  _XorPixel};/*  *********************************************************  *  *            Exported routines  *  **********************************************************//*      *************************************************      *                                               *      *             Delete                            *      *                                               *      **************************************************/void GUI_MEMDEV_Delete(GUI_MEMDEV_Handle hMemDev) {/* Make sure memory device is not used */  GUI_LOCK();  if (hMemDev) {    GUI_MEMDEV* pDev;    if (GUI_Context.hDevData == hMemDev) {	    GUI_SelectLCD();    }    pDev = GUI_MEMDEV_h2p(hMemDev);    /* Delete the associated usage device */    if (pDev->hUsage)      GUI_USAGE_DecUseCnt(pDev->hUsage);    GUI_ALLOC_FREE(hMemDev);  }  GUI_UNLOCK();}/**************************************************             CreateEx***************************************************/GUI_MEMDEV_Handle GUI_MEMDEV_CreateEx (int x0, int y0, int xsize, int ysize, int Flags) {  I32 MemSize;  GUI_USAGE_Handle hUsage =0;  #if LCD_BITSPERPIXEL <= 8    int BytesPerLine = (( 8*xsize+15)>>4)<<1;  /* Reserve 8 bits for pixels */  #else    int BytesPerLine = ((16*xsize+15)>>4)<<1;  /* Reserve 16 bits for pixels */  #endif  GUI_MEMDEV_Handle hMemDev;  /* Calc avaliable MemSize */  MemSize = GUI_ALLOC_GetMaxSize();  if (!(Flags & GUI_MEMDEV_NOTRANS)) {    MemSize = (MemSize/4)*3;   /* We need to reserve some memory for usage object */  }  if (ysize<=0) {    int MaxLines = (MemSize-sizeof(GUI_MEMDEV))/BytesPerLine;    ysize = (MaxLines >-ysize) ? -ysize : MaxLines;  }  if (!(Flags & GUI_MEMDEV_NOTRANS)) {    /* Create the usage map */    hUsage = GUI_USAGE_BM_Create(x0, y0, xsize, ysize, 0);  }  /* Check if we can alloc sufficient memory */  if (ysize <= 0) {    GUI_DEBUG_WARN("GUI_MEMDEV_Create: Too little memory");    return 0;      }  MemSize = ysize*BytesPerLine +sizeof(GUI_MEMDEV);  hMemDev = GUI_ALLOC_ALLOC(MemSize);  if (hMemDev) {    GUI_MEMDEV* pDevData = GUI_MEMDEV_h2p(hMemDev);    pDevData->x0    = x0;    pDevData->y0    = y0;    pDevData->XSize = xsize;    pDevData->YSize = ysize;    pDevData->NumColors = LCD_GET_NUMCOLORS();    pDevData->BytesPerLine= BytesPerLine;    pDevData->hUsage = hUsage;    pDevData->pfColor2Index = GUI_Context.pDeviceAPI->pfColor2Index;        pDevData->pfIndex2Color = GUI_Context.pDeviceAPI->pfIndex2Color;  } else {    GUI_DEBUG_WARN("GUI_MEMDEV_Create: Alloc failed");  }  return hMemDev;}/**************************************************             Create***************************************************/GUI_MEMDEV_Handle GUI_MEMDEV_Create (int x0, int y0, int xsize, int ysize) {  return GUI_MEMDEV_CreateEx(x0, y0, xsize, ysize, GUI_MEMDEV_HASTRANS);}/**************************************************             Select***************************************************/void GUI_MEMDEV_Select(GUI_MEMDEV_Handle hMem) {  if (hMem==0) {    GUI_SelectLCD();  } else {    #if GUI_WINSUPPORT      WM_Deactivate();    #endif    /* If LCD was selected Save cliprect */    if (GUI_Context.hDevData == 0)      GUI_Context.ClipRectPrev = GUI_Context.ClipRect;    GUI_Context.hDevData = hMem;    GUI_Context.pDeviceAPI  = &_APIList;    LCD_SetClipRectMax();  }}/*      *************************************************      *                                               *      *             CopyToLCDAt                       *      *                                               *      **************************************************/#if LCD_BITSPERPIXEL <=8  #define BITSPERPIXEL 8#else  #define BITSPERPIXEL 16#endif#define BYTESPERLINE (BITSPERPIXEL/8)static void _CopyToLCDAt(GUI_MEMDEV_Handle hMem,int x, int y) {  /* Make sure the memory handle is valid */  if (!hMem) {    return;  }  {    GUI_MEMDEV * pDev = GUI_MEMDEV_h2p(hMem);    GUI_USAGE_h hUsage = pDev->hUsage;     GUI_USAGE*  pUsage;    int YSize = pDev->YSize;    int yi;    int BytesPerLine = pDev->BytesPerLine;    U8 * pData = (U8*)(pDev+1);    if (hUsage) {      pUsage = GUI_USAGE_h2p(hUsage);      for (yi = 0; yi < YSize; yi++) {        int xOff = 0;        int XSize;        XSize = GUI_USAGE_GetNextDirty(pUsage, &xOff, yi);        if (XSize == pDev->XSize) {          /* If the entire line is affected, calculate the number of entire lines */          int y0 = yi;          while ((GUI_USAGE_GetNextDirty(pUsage, &xOff, yi + 1)) == XSize) {            yi++;          }		      LCD_DrawBitmap(x, y + y0, pDev->XSize, yi - y0 + 1,                         1, 1,                         BITSPERPIXEL,                         BytesPerLine, pData, NULL);          pData += (yi - y0 + 1) * BytesPerLine;        } else {          /* Draw the partial line which needs to be drawn */          for (; XSize; ) {            LCD_DrawBitmap(x + xOff, y + yi, XSize, 1,                            1, 1,                            BITSPERPIXEL,                            BytesPerLine, pData + xOff * BYTESPERLINE, NULL);            xOff += XSize;            XSize = GUI_USAGE_GetNextDirty(pUsage, &xOff, yi);          }          pData += BytesPerLine;        }      }    } else {		  LCD_DrawBitmap(x, y, pDev->XSize, YSize,                     1, 1,                     BITSPERPIXEL,                     BytesPerLine, pData, NULL);    }  }  GUI_ALLOC_UNLOCK(hMem);}#if (GUI_WINSUPPORT)void GUI_MEMDEV_CopyToLCDAt(GUI_MEMDEV_Handle hMem, int x, int y) {  if (hMem) {    WM_LOCK(); {      GUI_MEMDEV_Handle hMemPrev = GUI_Context.hDevData;      GUI_MEMDEV* pDevData = (GUI_MEMDEV*) GUI_ALLOC_LOCK(hMem);  /* Convert to pointer */      GUI_RECT r;      /* Make sure LCD is selected as device */      if (hMemPrev) {        GUI_MEMDEV_Select(0);  /* Activate LCD */      }      if (x==POS_AUTO) {        x = pDevData->x0;        y = pDevData->y0;      }      /* Calculate rectangle */      r.x1 = (r.x0 = x) + pDevData->XSize-1;      r.y1 = (r.y0 = y) + pDevData->YSize-1;;      /* Do the drawing. WIndow manager has to be on */      WM_Activate();      WM_ITERATE_START(&r) {        _CopyToLCDAt(hMem,x,y);      } WM_ITERATE_END();      /* Reactivate previously used device */      GUI_MEMDEV_Select(hMemPrev);    } WM_UNLOCK();  }}#elsevoid GUI_MEMDEV_CopyToLCDAt(GUI_MEMDEV_Handle hMem,int x, int y) {  GUI_MEMDEV_Handle hMemPrev = GUI_Context.hDevData;  GUI_MEMDEV* pDevData = (GUI_MEMDEV*) GUI_ALLOC_LOCK(hMem);  /* Convert to pointer */  /* Make sure LCD is selected as device */  if (hMemPrev) {    GUI_MEMDEV_Select(0);  /* Activate LCD */  }  if (x==POS_AUTO) {    x = pDevData->x0;    y = pDevData->y0;  }  _CopyToLCDAt(hMem,x,y);  /* Reactivate previously used memory device */  if (hMemPrev) {    GUI_MEMDEV_Select(hMemPrev);  }}#endif/*      *************************************************      *                                               *      *             CopyToLCD                         *      *                                               *      **************************************************/void GUI_MEMDEV_CopyToLCD(GUI_MEMDEV_Handle hMem) {  GUI_MEMDEV_CopyToLCDAt(hMem, POS_AUTO, POS_AUTO);}#elsevoid GUIDEV(void) {}#endif /* GUI_SUPPORT_MEMDEV && (LCD_BITSPERPIXEL <= 8) */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲人成亚洲人成在线观看图片| 日韩亚洲欧美成人一区| 欧美一区二区三区在线电影| 国产精品毛片久久久久久久| 美日韩黄色大片| 91在线观看视频| 久久久噜噜噜久噜久久综合| 日韩高清欧美激情| 91福利在线导航| 国产精品免费av| 黑人巨大精品欧美一区| 欧美日韩另类一区| 亚洲欧美另类小说| 成人av免费在线观看| 久久看人人爽人人| 蜜臀av在线播放一区二区三区| 欧洲一区二区av| 中文字幕亚洲区| 国产精品一品二品| 精品国产sm最大网站| 日韩—二三区免费观看av| 欧美羞羞免费网站| 亚洲精品国产无套在线观| 成人av网址在线| 国产精品网站一区| 懂色av中文字幕一区二区三区| 精品日韩成人av| 麻豆91精品91久久久的内涵| 7777精品伊人久久久大香线蕉最新版| 亚洲自拍偷拍网站| 91久久精品一区二区三区| 国产精品激情偷乱一区二区∴| 国产成人亚洲精品青草天美| 久久久久久**毛片大全| 国产又黄又大久久| 久久久三级国产网站| 国产精品一区二区无线| 精品国产乱码久久久久久蜜臀| 美女性感视频久久| 欧美电影免费观看高清完整版| 日本vs亚洲vs韩国一区三区| 51精品视频一区二区三区| 日韩精品一卡二卡三卡四卡无卡| 欧美日韩在线不卡| 天堂久久一区二区三区| 91麻豆精品国产| 青青草精品视频| 日韩女优电影在线观看| 国内精品自线一区二区三区视频| 精品三级在线看| 国产成人在线电影| 国产精品久久毛片av大全日韩| eeuss鲁片一区二区三区在线看| 综合自拍亚洲综合图不卡区| 99天天综合性| 亚洲一区在线播放| 911精品产国品一二三产区 | 777a∨成人精品桃花网| 日韩av不卡在线观看| 精品国产一区二区三区忘忧草| 国产一区二区福利视频| 国产精品色哟哟网站| 91捆绑美女网站| 午夜天堂影视香蕉久久| 日韩欧美一二区| 岛国av在线一区| 亚洲永久精品国产| 日韩视频在线永久播放| 夫妻av一区二区| 亚洲综合色噜噜狠狠| 欧美一区二区视频网站| 韩国成人在线视频| 亚洲色图一区二区| 制服视频三区第一页精品| 国产一区 二区| 亚洲日本护士毛茸茸| 欧美精品vⅰdeose4hd| 激情综合五月婷婷| 成人欧美一区二区三区视频网页| 在线看国产日韩| 激情综合色播五月| 最新国产精品久久精品| 在线成人av影院| 国产69精品久久777的优势| 亚洲精品免费播放| 欧美电影免费提供在线观看| av男人天堂一区| 美女精品一区二区| 国产精品久久一级| 在线91免费看| 成年人国产精品| 日本大胆欧美人术艺术动态 | 日本韩国精品在线| 久久99在线观看| 亚洲欧美国产毛片在线| 日韩一区二区麻豆国产| 91在线播放网址| 狠狠色丁香久久婷婷综合_中| 亚洲人成在线播放网站岛国| 欧美一区二区三区四区久久| 成人免费高清视频在线观看| 午夜国产不卡在线观看视频| 国产精品麻豆视频| 日韩欧美综合在线| 在线观看日产精品| 国产成人免费视| 美日韩黄色大片| 亚洲一区二区免费视频| 日本一区二区三级电影在线观看| 欧美人妖巨大在线| a级高清视频欧美日韩| 看片网站欧美日韩| 亚洲一级电影视频| 国产精品免费丝袜| 26uuu国产日韩综合| 欧美日韩美少妇| 色综合天天综合网天天狠天天| 狠狠色丁香久久婷婷综| 石原莉奈在线亚洲二区| 亚洲欧洲综合另类| 日本一区二区电影| 欧美xxxxxxxx| 91麻豆精品国产综合久久久久久| 91蜜桃免费观看视频| 国产一区二区免费在线| 蜜臀久久99精品久久久久宅男 | 1000部国产精品成人观看| 日韩免费看的电影| 精品视频在线视频| 色激情天天射综合网| 波多野结衣在线aⅴ中文字幕不卡| 麻豆精品视频在线| 三级欧美在线一区| 亚洲一区二区三区中文字幕| 中文字幕一区二区三区视频| 久久久午夜精品理论片中文字幕| 欧美一卡在线观看| 欧美日产国产精品| 欧美日韩精品一二三区| 在线看日韩精品电影| 日本韩国一区二区| 色欧美88888久久久久久影院| 99久久夜色精品国产网站| 国产91在线看| 国产mv日韩mv欧美| 国产剧情一区在线| 狠狠色丁香婷综合久久| 久久精品99国产精品| 日韩电影在线一区二区三区| 五月天亚洲精品| 日韩中文字幕区一区有砖一区| 亚洲一二三四在线| 亚洲电影第三页| 亚洲成人免费视频| 五月天久久比比资源色| 婷婷久久综合九色综合绿巨人| 亚洲国产精品久久久久婷婷884| 亚洲影视在线播放| 亚洲成人在线免费| 视频一区在线播放| 麻豆精品蜜桃视频网站| 韩国在线一区二区| 国产成人在线看| av激情亚洲男人天堂| 色诱视频网站一区| 欧美三电影在线| 欧美一区二区三区免费观看视频| 欧美一区二区不卡视频| 精品国产伦一区二区三区观看方式 | 日韩在线卡一卡二| 麻豆久久久久久久| 国产精品911| 99视频一区二区三区| 色屁屁一区二区| 欧美精品乱码久久久久久| 日韩一级成人av| 久久一区二区三区国产精品| 国产拍欧美日韩视频二区| 国产精品天美传媒| 一区二区三区美女| 日本不卡一区二区三区高清视频| 久久91精品国产91久久小草| 高清久久久久久| 色系网站成人免费| 在线不卡一区二区| 国产日产精品1区| 亚洲女人小视频在线观看| 日韩在线播放一区二区| 国产精品亚洲一区二区三区妖精| 成人av资源站| 欧美日韩1区2区| 久久久久亚洲蜜桃| 亚洲女人****多毛耸耸8| 婷婷综合另类小说色区| 国产精品99久久久久久似苏梦涵| 一本久久综合亚洲鲁鲁五月天| 欧美一区二区三区啪啪| 国产欧美精品一区| 亚洲小少妇裸体bbw| 精品中文av资源站在线观看|