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

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

?? lcd444.c

?? 這是我移植到GBA游戲機上的uCGUI3.24 可以通過模擬器仿真
?? C
?? 第 1 頁 / 共 2 頁
字號:
*/

#if (LCD_BITSPERPIXEL > 8)
static void  DrawBitLine16BPP(int x, int y, U16 const * p, int xsize, const LCD_PIXELINDEX * pTrans) {
  LCD_PIXELINDEX pixel;
  if ((GUI_Context.DrawMode & LCD_DRAWMODE_TRANS) == 0) {
    if (pTrans) {
      for (; xsize > 0; xsize--, x++, p++) {
        pixel = *p;
        LCD_L0_SetPixelIndex(x, y, *(pTrans + pixel));
      }
    } else {
      for (;xsize > 0; xsize--, x++, p++) {
        LCD_L0_SetPixelIndex(x, y, *p);
      }
    }
  } else {
    if (pTrans) {
      for (; xsize > 0; xsize--, x++, p++) {
        pixel = *p;
        if (pixel) {
          LCD_L0_SetPixelIndex(x, y, *(pTrans + pixel));
        }
      }
    } else {
      for (; xsize > 0; xsize--, x++, p++) {
        pixel = *p;
        if (pixel) {
          LCD_L0_SetPixelIndex(x, y, pixel);
        }
      }
    }
  }
}
#endif

/*********************************************************************
*
*       Exported functions
*
**********************************************************************
*/

/*********************************************
*
*       LCD_L0_SetPixelIndex
*
**********************************************
Purpose:
  Sets the index of the given pixel. The upper layers of emWin
  calling this routine make sure that the coordinates are in range, so
  that no check on the parameters needs to be performed.
*/

void LCD_L0_SetPixelIndex(int x, int y, int PixelIndex) {
  unsigned Off;
  U16 Data;
  /* Convert logical into physical coordinates (Dep. on LCDConf.h) */
  #if LCD_SWAP_XY | LCD_MIRROR_X| LCD_MIRROR_Y
    int xPhys = LOG2PHYS_X(x, y);
    int yPhys = LOG2PHYS_Y(x, y);
  #else
    #define xPhys x
    #define yPhys y
  #endif
  /* Write into hardware ... Adapt to your system */
  {
    Off = Y2OFF(yPhys);
    Off += 3 * x/4;
    switch (x&3) {
    case 0:
      Data = LCD_READ_MEM16(Off);
      Data &= 0xf000;
      Data |= PixelIndex;
      LCD_WRITE_MEM16(Off, Data);
      break;
    case 1:;
      Data = LCD_READ_MEM16(Off);
      Data &= 0xfff;
      Data |= (U16)(PixelIndex << 12);
      LCD_WRITE_MEM16(Off, Data);
      Off++;
      Data = LCD_READ_MEM16(Off);
      Data &= 0xff00;
      Data |= PixelIndex>>4;
      LCD_WRITE_MEM16(Off, Data);
      break;
    case 2:;
      Data = LCD_READ_MEM16(Off);
      Data &= 0xff;
      Data |= (U16)(PixelIndex << 8);
      LCD_WRITE_MEM16(Off, Data);
      Off++;
      Data = LCD_READ_MEM16(Off);
      Data &= 0xfff0;
      Data |= PixelIndex>>8;
      LCD_WRITE_MEM16(Off, Data);
      break;
    case 3:;
      Data = LCD_READ_MEM16(Off);
      Data &= 0xf;
      Data |= PixelIndex << 4;
      LCD_WRITE_MEM16(Off, Data);
      break;
    }
    /* ... */
  }
}

/*********************************************
*
*       LCD_L0_GetPixelIndex
*
**********************************************
Purpose:
  Returns the index of the given pixel. The upper layers of emWin
  calling this routine make sure that the coordinates are in range, so
  that no check on the parameters needs to be performed.
*/

unsigned int LCD_L0_GetPixelIndex(int x, int y) {
  LCD_PIXELINDEX PixelIndex;
  U16 Data0, Data1;
  unsigned Off;
  /* Convert logical into physical coordinates (Dep. on LCDConf.h) */
  #if LCD_SWAP_XY | LCD_MIRROR_X| LCD_MIRROR_Y
    int xPhys = LOG2PHYS_X(x, y);
    int yPhys = LOG2PHYS_Y(x, y);
  #else
    #define xPhys x
    #define yPhys y
  #endif
  /* Write into hardware ... Adapt to your system */
  {
    Off = Y2OFF(yPhys);
    Off += 3 * x/4;
    switch (x&3) {
    case 0:
      PixelIndex = LCD_READ_MEM16(Off) & 0xfff;
      break;
    case 1:
      Data0 = LCD_READ_MEM16(Off);
      Off++;
      Data1 = LCD_READ_MEM16(Off);
      PixelIndex  = Data0 >> 12;
      PixelIndex |= (Data1 & 255) << 4;
      break;
    case 2:
      Data0 = LCD_READ_MEM16(Off);
      Off++;
      Data1 = LCD_READ_MEM16(Off);
      PixelIndex  = Data0 >> 8;
      PixelIndex |= (Data1 & 15) << 8;
      break;
    case 3:
      PixelIndex = LCD_READ_MEM16(Off);
      PixelIndex >>= 4;
      break;
    }
  }
  return PixelIndex;
}

/*********************************************
*
*       LCD_L0_XorPixel
*
**********************************************
*/

void LCD_L0_XorPixel(int x, int y) {
  LCD_PIXELINDEX PixelIndex = LCD_L0_GetPixelIndex(x, y);
  LCD_L0_SetPixelIndex(x, y, LCD_NUM_COLORS - PixelIndex - 1);
}

/*********************************************
*
*       LCD_L0_DrawHLine
*
**********************************************
*/

void LCD_L0_DrawHLine  (int x0, int y,  int x1) {
  if (GUI_Context.DrawMode & LCD_DRAWMODE_XOR) {
    for (; x0 <= x1; x0++) {
      LCD_L0_XorPixel(x0, y);
    }
  } else {
    for (; x0 <= x1; x0++) {
      LCD_L0_SetPixelIndex(x0, y, LCD_COLORINDEX);
    }
  }
}

/*********************************************
*
*       LCD_L0_DrawVLine
*
**********************************************
*/

void LCD_L0_DrawVLine  (int x, int y0,  int y1) {
  if (GUI_Context.DrawMode & LCD_DRAWMODE_XOR) {
    for (; y0 <= y1; y0++) {
      LCD_L0_XorPixel(x, y0);
    }
  } else {
    for (; y0 <= y1; y0++) {
      LCD_L0_SetPixelIndex(x, y0, LCD_COLORINDEX);
    }
  }
}

/*********************************************
*
*       LCD_L0_FillRect
*
**********************************************
*/

void LCD_L0_FillRect(int x0, int y0, int x1, int y1) {
  for (; y0 <= y1; y0++) {
    LCD_L0_DrawHLine(x0, y0, x1);
  }
}

/*********************************************
*
*       LCD_L0_DrawBitmap
*
**********************************************
*/

void LCD_L0_DrawBitmap(int x0, int y0,
                       int xsize, int ysize,
                       int BitsPerPixel, 
                       int BytesPerLine,
                       const U8* pData, int Diff,
                       const LCD_PIXELINDEX* pTrans)
{
  int i;
  /* Use _DrawBitLineXBPP */
  for (i=0; i<ysize; i++) {
    switch (BitsPerPixel) {
    case 1:
      _DrawBitLine1BPP(x0, i + y0, pData, Diff, xsize, pTrans);
      break;
      case 2:
        _DrawBitLine2BPP(x0, i + y0, pData, Diff, xsize, pTrans);
        break;
      case 4:
        _DrawBitLine4BPP(x0, i + y0, pData, Diff, xsize, pTrans);
        break;
      case 8:
        _DrawBitLine8BPP(x0, i + y0, pData, xsize, pTrans);
        break;
      case 16:
        DrawBitLine16BPP(x0, i + y0, (const U16 *)pData, xsize, pTrans);
        break;
    }
    pData += BytesPerLine;
  }
}

/*********************************************
*
*       LCD_L0_SetOrg
*
**********************************************
*/

void LCD_L0_SetOrg(int x, int y) {
  GUI_USE_PARA(x);
  GUI_USE_PARA(y);
}

/*********************************************
*
*       LCD_On / LCD_Off
*
**********************************************
*/

void LCD_On (void) {
#ifdef LCD_ON
  LCD_ON();
#endif
}

void LCD_Off (void) {
#ifdef LCD_OFF
  LCD_OFF();
#endif
}

/*********************************************
*
*       LCD_L0_Init
*
**********************************************
Purpose:
  Initialises the LCD-controller.
*/

int  LCD_L0_Init(void) {
  LCD_INIT_CONTROLLER();
  return 0;
}

/*********************************************
*
*       LCD_L0_SetLUTEntry
*
**********************************************
*/

void LCD_L0_SetLUTEntry(U8 Pos, LCD_COLOR Color) {
  GUI_USE_PARA(Pos);
  GUI_USE_PARA(Color);
}

#else

void LCD444_c(void) { } /* avoid empty object files */

#endif /* (LCD_CONTROLLER undefined) */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区三区| 99久久久免费精品国产一区二区| 国产成人在线观看| 色综合久久久久久久久| 91精品国产91久久综合桃花| 国产精品久久三区| 久久精品免费观看| 欧美系列在线观看| 日韩美女视频一区二区 | 国产精品狼人久久影院观看方式| 欧美精品一级二级| 一色桃子久久精品亚洲| 麻豆中文一区二区| 欧美人与z0zoxxxx视频| 中文字幕综合网| 国产成a人亚洲精品| 26uuu欧美| 日韩激情视频在线观看| 91国偷自产一区二区三区观看| 色欧美88888久久久久久影院| 99久久精品免费| 中文字幕高清不卡| 国产精品456露脸| 精品国产一区二区三区四区四| 2020国产精品自拍| 裸体健美xxxx欧美裸体表演| 欧美在线观看禁18| 亚洲自拍偷拍网站| 日本道精品一区二区三区| 日韩理论片网站| 91免费在线视频观看| 亚洲欧洲av色图| 97aⅴ精品视频一二三区| 国产精品乱码久久久久久| 成人小视频在线| 一区在线观看免费| 欧美特级限制片免费在线观看| 日韩视频免费观看高清完整版| 精品福利在线导航| 国产自产2019最新不卡| 日韩一区二区精品葵司在线| 另类欧美日韩国产在线| 精品国产99国产精品| 狠狠色丁香婷综合久久| 国产日韩v精品一区二区| 粉嫩高潮美女一区二区三区| 国产精品久久久久久户外露出| 一区二区三区精品视频在线| 色综合久久久网| 亚洲aaa精品| 欧美老女人在线| 国内精品伊人久久久久av影院| 92国产精品观看| 亚洲主播在线观看| 欧美一区二区三区播放老司机| 欧美激情在线观看视频免费| 不卡的电视剧免费网站有什么| 91.xcao| 水蜜桃久久夜色精品一区的特点| 国产不卡在线一区| 亚洲综合成人在线视频| 欧美成人激情免费网| 成人综合在线网站| 亚洲成人免费观看| 国产亚洲精品超碰| 欧美在线999| 国产美女在线观看一区| 最新国产成人在线观看| 日韩欧美区一区二| 91一区在线观看| 久久99久久久久久久久久久| 中文字幕欧美一区| 精品免费一区二区三区| 91欧美激情一区二区三区成人| 国产精品美女一区二区在线观看| 麻豆成人综合网| 亚洲欧美欧美一区二区三区| 欧美一区二区黄| 色婷婷久久久综合中文字幕| 日日摸夜夜添夜夜添国产精品| 欧美性一区二区| 国产91丝袜在线播放0| 亚洲大型综合色站| 国产精品国产三级国产专播品爱网| 国产一区美女在线| 一区二区三区四区蜜桃 | 寂寞少妇一区二区三区| 亚洲欧洲制服丝袜| 精品国免费一区二区三区| 在线观看成人免费视频| 成人av网在线| 狠狠色丁香久久婷婷综| 日韩成人dvd| 亚洲国产综合91精品麻豆| 欧美高清在线精品一区| 欧美sm美女调教| 欧美日韩二区三区| 欧美熟乱第一页| 在线看不卡av| 91麻豆国产在线观看| 成人综合激情网| 国产精品一区二区久久不卡 | 精品少妇一区二区三区免费观看| 日本欧美一区二区三区| 亚洲国产wwwccc36天堂| 亚洲乱码中文字幕| 18欧美乱大交hd1984| 中文字幕精品一区| 中文字幕在线不卡| 国产精品国模大尺度视频| 国产网站一区二区| 国产精品天美传媒沈樵| 久久精品一区二区三区不卡| 精品久久人人做人人爽| 日韩女优电影在线观看| 欧美成人bangbros| 精品免费国产二区三区 | 国产欧美va欧美不卡在线| 26uuu色噜噜精品一区二区| 26uuuu精品一区二区| 2023国产精品自拍| 国产午夜精品一区二区三区四区| 色综合视频在线观看| 成人短视频下载| 91天堂素人约啪| 色吊一区二区三区| 欧美丰满嫩嫩电影| 欧美一区二区三区四区五区| 日韩视频免费观看高清完整版 | 亚洲免费看黄网站| 亚洲视频在线观看一区| 亚洲成人精品在线观看| 蜜臀va亚洲va欧美va天堂| 国产成人一区二区精品非洲| 成人h动漫精品一区二区| 91成人免费网站| 欧美一区二区三区视频在线| 久久久久久久网| 国产精品人妖ts系列视频| 一区二区三区欧美| 美女网站色91| 成人av资源在线观看| 欧美婷婷六月丁香综合色| 精品少妇一区二区三区日产乱码| 欧美亚日韩国产aⅴ精品中极品| 国产一区二区三区黄视频| 成人精品免费视频| 欧美三级日本三级少妇99| 精品国产凹凸成av人网站| 亚洲视频你懂的| 中文字幕在线免费不卡| 精品一区二区三区免费观看 | 日韩午夜激情免费电影| 91免费看视频| 欧美电影免费提供在线观看| 国产精品国产三级国产aⅴ入口| 精品三级av在线| 最新国产成人在线观看| 精品在线你懂的| 色视频欧美一区二区三区| 欧美一区二区三区白人| 中文字幕一区二| 国内成人自拍视频| 欧美日韩美少妇| 中文字幕亚洲综合久久菠萝蜜| 综合色中文字幕| 蜜桃一区二区三区四区| 99久久精品免费| 久久久高清一区二区三区| 午夜免费久久看| 91小视频在线免费看| 国产亚洲欧美一级| 美女看a上一区| 精品污污网站免费看| 亚洲日本在线看| 国产成人在线网站| 欧美精品一区二区三区在线 | 亚洲色图欧洲色图婷婷| 国产一区二区不卡在线 | 99国产精品国产精品久久| 日韩视频在线观看一区二区| 亚洲一区在线视频观看| av亚洲精华国产精华精| 精品成人一区二区| 麻豆精品一区二区三区| 在线中文字幕不卡| 一区在线中文字幕| caoporm超碰国产精品| 国产午夜精品久久| 国产在线播精品第三| 欧美大片顶级少妇| 日韩vs国产vs欧美| 欧美老肥妇做.爰bbww视频| 悠悠色在线精品| 色妞www精品视频| 亚洲精品免费在线播放| 一本大道久久a久久综合婷婷| 欧美一区二区三区色| 偷拍日韩校园综合在线| 欧美性大战久久久久久久|