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

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

?? guidev.c

?? ucgui在ARM44B0目標板上的移植代碼支持16級灰度
?? 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一区二区三区免费野_久草精品视频
奇米影视7777精品一区二区| 在线视频国内自拍亚洲视频| 99精品国产视频| 欧美肥妇bbw| 国产精品欧美经典| 人人超碰91尤物精品国产| 91一区二区三区在线播放| 日韩精品自拍偷拍| 丝袜美腿亚洲一区| 91小视频在线免费看| 国产视频一区不卡| 久久av资源站| 欧美日韩国产成人在线免费| 最新国产精品久久精品| 黄页视频在线91| 欧美日韩卡一卡二| 亚洲美腿欧美偷拍| av中文字幕在线不卡| 精品国产露脸精彩对白| 日本中文字幕不卡| 欧美精品日韩一区| 亚洲伊人色欲综合网| 97se亚洲国产综合自在线观| 中文字幕+乱码+中文字幕一区| 黄色小说综合网站| 久久综合久久久久88| 精品在线一区二区三区| 日韩欧美综合在线| 美女视频第一区二区三区免费观看网站 | 日韩精品久久久久久| 91理论电影在线观看| 国产精品伦一区二区三级视频| 国产在线精品免费av| 久久一日本道色综合| 韩国三级中文字幕hd久久精品| 欧美videos大乳护士334| 免费的成人av| 久久亚洲欧美国产精品乐播| 国产精品自拍毛片| 国产免费成人在线视频| 欧洲精品一区二区| 亚洲精品乱码久久久久久日本蜜臀 | 国产一区二区三区综合| 久久久久久黄色| 成人影视亚洲图片在线| 亚洲色图都市小说| 欧美无砖砖区免费| 亚洲444eee在线观看| 91精品国产入口在线| 久久99国内精品| 亚洲国产精品二十页| 色综合久久88色综合天天6| 亚洲福利一区二区三区| 日韩欧美国产电影| 国产iv一区二区三区| 1024精品合集| 欧美精品乱码久久久久久按摩 | 亚洲伦在线观看| 欧美蜜桃一区二区三区| 久久激五月天综合精品| 国产精品理论片| 欧美日韩1234| 国产电影一区在线| 亚洲尤物在线视频观看| 日韩精品一区二区三区视频播放| 国产suv精品一区二区三区| 一区二区三区四区乱视频| 日韩美女在线视频| 91丨九色porny丨蝌蚪| 免费的成人av| 亚洲视频中文字幕| 精品国产一二三区| 91视频国产资源| 韩国v欧美v亚洲v日本v| 一区二区三区中文字幕在线观看| 日韩美女视频一区二区在线观看| 99re这里只有精品首页| 七七婷婷婷婷精品国产| 亚洲少妇中出一区| 精品精品国产高清a毛片牛牛| 91香蕉视频污| 国产精品一区二区久久精品爱涩| 亚洲第一福利视频在线| 欧美高清一级片在线观看| 欧美精品久久久久久久多人混战| 从欧美一区二区三区| 蜜臀av性久久久久蜜臀av麻豆| 亚洲美女屁股眼交| 亚洲国产精品二十页| 欧美精品一区二区高清在线观看| 色婷婷久久久综合中文字幕| 国产成人在线视频网址| 日韩福利视频网| 亚洲综合999| 日韩理论片网站| 欧美国产日本视频| 久久亚洲一级片| 精品嫩草影院久久| 欧美一区二区三区人| 91国产成人在线| 91蜜桃在线观看| 成人91在线观看| 国产91精品一区二区麻豆亚洲| 麻豆精品在线播放| 日韩电影免费一区| 亚洲超碰精品一区二区| 亚洲综合免费观看高清完整版| 中文字幕视频一区| 国产精品久久福利| 中文字幕制服丝袜成人av| 2021久久国产精品不只是精品| 91超碰这里只有精品国产| 欧美性感一区二区三区| 在线国产亚洲欧美| 欧美性猛交一区二区三区精品| 在线观看亚洲精品| 在线观看免费成人| 欧美性色aⅴ视频一区日韩精品| 91电影在线观看| 欧美日韩国产一级片| 3d成人动漫网站| 欧美一区二区在线免费观看| 欧美一区永久视频免费观看| 欧美成人a∨高清免费观看| 欧美成人国产一区二区| 亚洲精品一区二区三区香蕉| 久久久精品人体av艺术| 亚洲国产精品二十页| 亚洲婷婷国产精品电影人久久| 亚洲伦在线观看| 日韩高清中文字幕一区| 精品一区二区三区蜜桃| 国产精品1024| 91丨九色丨蝌蚪富婆spa| 欧美日韩一区不卡| 日韩丝袜情趣美女图片| 国产偷国产偷精品高清尤物 | 成人性色生活片免费看爆迷你毛片| 岛国av在线一区| 在线视频一区二区三区| 日韩一级大片在线| 日本一区二区成人在线| 亚洲一区二区av在线| 久久精品国产在热久久| 99热在这里有精品免费| 欧美人与性动xxxx| 国产三区在线成人av| 一区二区三区av电影| 蜜臀99久久精品久久久久久软件| 国产一二精品视频| 欧美午夜在线一二页| 精品成人一区二区| 亚洲私人黄色宅男| 老汉av免费一区二区三区| www.性欧美| 欧美一区二区三区爱爱| 国产精品久久久久久久裸模| 首页综合国产亚洲丝袜| 国产成人精品亚洲午夜麻豆| 欧美日韩极品在线观看一区| 国产亚洲一区二区三区在线观看| 亚洲一区二区三区在线看| 国产精品夜夜嗨| 欧美日韩国产成人在线免费| 欧美高清在线视频| 日韩vs国产vs欧美| 99久久久久久| 精品国产乱子伦一区| 一区二区欧美精品| 国产成人亚洲综合a∨婷婷图片| 在线观看亚洲成人| 成人欧美一区二区三区视频网页| 久久精品99国产精品日本| 欧美亚一区二区| 亚洲欧洲日韩av| 国产白丝网站精品污在线入口| 欧美一区二区播放| 亚洲国产精品久久一线不卡| 国产·精品毛片| 久久这里只有精品首页| 强制捆绑调教一区二区| 欧美性受xxxx黑人xyx| 亚洲色图欧洲色图婷婷| 成人一级片在线观看| 欧美www视频| 日本成人在线一区| 欧美精品在线视频| 亚洲一级片在线观看| 色综合视频一区二区三区高清| 欧美国产成人在线| 成人免费观看视频| 国产欧美精品日韩区二区麻豆天美| 久久99精品国产麻豆不卡| 51精品久久久久久久蜜臀| 亚洲国产日产av| 欧美性生交片4| 午夜视黄欧洲亚洲| 欧美日韩国产综合一区二区三区| 亚洲伊人伊色伊影伊综合网| 欧美色网一区二区|