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

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

?? lcd07x1.c

?? 這是我移植到GBA游戲機上的uCGUI3.24 可以通過模擬器仿真
?? C
?? 第 1 頁 / 共 4 頁
字號:
    #define XORPIXEL_DATA(x, y,c)  XorPixel_Data(LCD_XSIZE-1-(x),y,c)
  #elif ( LCD_MIRROR_X && !LCD_MIRROR_Y &&  LCD_SWAP_XY) 
    #error This combination of mirroring/swapping not yet supported
  #elif ( LCD_MIRROR_X &&  LCD_MIRROR_Y && !LCD_SWAP_XY) 
    #define SETPIXEL(x, y, c)  _SetPixel(LCD_XSIZE-1-(x), LCD_YSIZE-1-(y), c)
    #define GETPIXEL(x, y)     _GetPixel(LCD_XSIZE-1-(x), LCD_YSIZE-1-(y))
    #define XORPIXEL(x, y)     XorPixel (LCD_XSIZE-1-(x), LCD_YSIZE-1-(y))
    #define XORPIXEL_DATA(x, y,c)  XorPixel_Data(LCD_XSIZE-1-(x), LCD_YSIZE-1-(y),c)
  #elif ( LCD_MIRROR_X &&  LCD_MIRROR_Y &&  LCD_SWAP_XY) 
    #error This combination of mirroring/swapping not yet supported
  #endif
#elif (LCD_SUPPORT_COMTRANS && !LCD_SUPPORT_SEGTRANS)
  #if (!LCD_SWAP_XY)
    #define SETPIXEL(x, y, c)  _SetPixel(x,LCD__aLine2Com0[y], c)
    #define GETPIXEL(x, y)     _GetPixel(x,LCD__aLine2Com0[y])
    #define XORPIXEL(x, y)      XorPixel(x,LCD__aLine2Com0[y])
  #else
    #define SETPIXEL(x, y, c)  _SetPixel(y,LCD__aLine2Com0[x], c)
    #define GETPIXEL(x, y)     _GetPixel(y,LCD__aLine2Com0[x])
    #define XORPIXEL(x, y)      XorPixel(y,LCD__aLine2Com0[x])
  #endif
#elif (!LCD_SUPPORT_COMTRANS && LCD_SUPPORT_SEGTRANS)
  #if (!LCD_SWAP_XY)
    #define SETPIXEL(x, y, c)  _SetPixel(LCD__aRow2Seg0[x],y, c)
    #define GETPIXEL(x, y)     _GetPixel(LCD__aRow2Seg0[x],y)
    #define XORPIXEL(x, y)      XorPixel(LCD__aRow2Seg0[x],y)
  #else
    #define SETPIXEL(x, y, c)  _SetPixel(LCD__aRow2Seg0[y],x, c)
    #define GETPIXEL(x, y)     _GetPixel(LCD__aRow2Seg0[y],x)
    #define XORPIXEL(x, y)      XorPixel(LCD__aRow2Seg0[y],x)
  #endif
#elif (LCD_SUPPORT_COMTRANS && LCD_SUPPORT_SEGTRANS)
  #if (!LCD_SWAP_XY)
    #define SETPIXEL(x, y, c)  _SetPixel(LCD__aRow2Seg0[x],LCD__aLine2Com0[y], c)
    #define GETPIXEL(x, y)     _GetPixel(LCD__aRow2Seg0[x],LCD__aLine2Com0[y])
    #define XORPIXEL(x, y)      XorPixel(LCD__aRow2Seg0[x],LCD__aLine2Com0[y])
  #else
    #define SETPIXEL(x, y, c)  _SetPixel(LCD__aRow2Seg0[y],LCD__aLine2Com0[x], c)
    #define GETPIXEL(x, y)     _GetPixel(LCD__aRow2Seg0[y],LCD__aLine2Com0[x])
    #define XORPIXEL(x, y)      XorPixel(LCD__aRow2Seg0[y],LCD__aLine2Com0[x])
  #endif
#else
  #error This combination of switches not yet supported
#endif


/*
        *********************************************************
        *                                                       *
        *       Next pixel routines                             *
        *                                                       *
        *********************************************************
*/

#if 0 /* Not yet defined ! */
     (LCD_OPTIMIZE)             \
      && (LCD_BUSWIDTH == 8)        \
      && (LCD_MIRROR_X)             \
      && (!LCD_MIRROR_Y)            \
      && (LCD_SWAP_XY)              \
      && (!LCD_SUPPORT_COMTRANS)    \
      && (!LCD_SUPPORT_SEGTRANS)    \
      && (LCD_BITSPERPIXEL == 4)

static int CurPosY;    /* Physical x position !!! */
static int CurOff;

static void SetPosXY(int x, int y) {
  y = LCD_YSIZE-1-y;
  CurPosY = y;
  CurOff = XY2OFF(y,x);
}

static void SetNextPixel(PIXELCOLOR c) {
  U8 Data = LCD_READ_MEM(Off);
  if (CurPosY&1) {
    Data = (Data & ~(15<<0)) | (c<<0);
    CurOff++;
  } else {
    Data = (Data & ~(15<<4)) | (c<<4);
  }
  LCD_WRITE_MEM(Off, Data);
  CurPosY++;
}

#define SETNEXTPIXEL(c) SetNextPixel(c)
#endif


/*
        *********************************************************
        *                                                       *
        *       Palette info                                    *
        *                                                       *
        *********************************************************

The following are "sample" palettes. You might have to create
a table yourself containing the entries corresponding to the
colors which your LCD can display.

*/

#if (LCD_FIXEDPALETTE==0)
  static const LCD_COLOR PhysColors[] = {
    #if (LCD_REVERSE)
      #if   (LCD_BITSPERPIXEL == 1)                   /* black/white */
        0xffffff, 0x000000
      #elif (LCD_BITSPERPIXEL == 2)                   /* 4 gray scales */
        0xffffff, 0xaaaaaa, 0x555555, 0x000000
      #endif
    #else
      #if   (LCD_BITSPERPIXEL == 1)                   /* black/white */
        0x000000, 0xffffff
      #elif (LCD_BITSPERPIXEL == 2)                   /* 4 gray scales */
        0x000000, 0x555555, 0xaaaaaa, 0xffffff
      #endif
    #endif
  };
#endif


/*
        *********************************************************
        *                                                       *
        *                   LCD_SetPaletteEntry                 *
        *                                                       *
        *********************************************************

*/

void LCD_L0_SetLUTEntry(U8 Pos, LCD_COLOR color) {
  Pos=Pos;
  color=color;
}


/*
        *********************************************************
        *                                                       *
        *       ID translation table                            *
        *                                                       *
        *********************************************************

This table contains 0, 1, 2, ... and serves as translation table for DDBs

*/

#define INTS(Base)  Base+0,Base+1,Base+2,Base+3,Base+4,Base+5,   \
                    Base+6,Base+7,Base+8,Base+9,Base+10,Base+11, \
                    Base+12,Base+13,Base+14,Base+15

static const PIXELCOLOR TransId[] = {
  INTS(0*16)
};


/*
  ********************************************************************
  *                                                                  *
  *                  Hardware access, register level                 *
  *                                                                  *
  *           Write Page / Column                                    *
  *                                                                  *
  ********************************************************************

 The following routines are used for all access to the
 LCD-controller(s).

*/

static U8 PageCache, ColCache;            /* Page / column of cache byte */


/*
        *****************************************
        *                                       *
        *         Set Column routines           *
        *                                       *
        *****************************************

These routines set the page-register of their respective
LCD-controller. Note that page is not what you might imagine,
but is a section of the controllers internal video RAM.
For details, please refer to the datasheet.

*/

#define SETCOL(col) {                                             \
  if (ColCache != col) {                                          \
    U8 temp_NewCol = 0x0+(col&15);    /* Set low nibble */        \
    LCD_WRITECMD(temp_NewCol);        /* Send low nibble */       \
    temp_NewCol = 0x10+(col>>4);   /* Set high nibble */       \
    LCD_WRITECMD(temp_NewCol);        /* Send high nibble */      \
    ColCache = col;                                            \
  }                                                               \
}

void SetCol(U8 col) {
  SETCOL(col);
}

#define SETCOL_IF_NEEDED(c) { if (c != ColCache) SETCOL(c); }


/*
        *****************************************
        *                                       *
        *         Set Page routines             *
        *                                       *
        *****************************************

These routines set the page-register of their respective
LCD-controller. Note that page is not what you might imagine,
but is a section of the controllers internal video RAM.
For details, please refer to the datasheet.

*/

#define SETPAGE(p) {              \
  U8 temp_NewPage;                \
  if (PageCache != p) {     \
    PageCache = p;          \
    temp_NewPage = 0xb0+ PageCache; \
    LCD_WRITECMD(temp_NewPage);   \
  }                               \
}

#define SETPAGE_IF_NEEDED(p) { if (p != PageCache) SETPAGE(p); }

void SetPage(U8 p) {
  SETPAGE(p);
}

#define WRITE_VMEM_PAIR(page, col, ptr)  { \
  if (!CacheLocked) {                      \
    SETPAGE_IF_NEEDED(page);               \
    SETCOL_IF_NEEDED(col);                 \
    LCD_WRITEMDATA(ptr,2);                 \
    ColCache++;                            \
  } else {                                 \
    aCacheDirty[page] = CacheStat=1;       \
  }                                        \
}


/*
        *********************************************************
        *                                                       *
        *       Internal set pixel routines                     *
        *                                                       *
        *********************************************************
*/

static void _SetPixel(int x, int y, PIXELCOLOR c) {
  U8 page = (y+LCD_FIRSTSEG0)>>3;
  U8 mask = 1<<((y+LCD_FIRSTSEG0)&7);
  U8 aData[2];
  U8* pCache = &Cache[page][x][0];
/* Read data from cache into 2 byte array */
  aData[0] = *pCache;
  aData[1] = *(pCache+1);
/* Write Data into array */
  if (c&(1<<1))
    aData[0] |= mask;
  else
    aData[0] &= ~mask;
  if (c&(1<<0))
    aData[1] |=  mask;
  else
    aData[1] &= ~mask;
/* Check if we need to write */
  if ((*pCache == aData[0]) &&  (*(pCache+1) == aData[1]))
    return;
/* Write modified data back into cache */
  *pCache    = aData[0];
  *(pCache+1) = aData[1];
/* Write data from cache into 2 byte array */
  WRITE_VMEM_PAIR(page, x, &aData[0]);
}

static PIXELCOLOR _GetPixel(int x, int y) {
  PIXELCOLOR col=0;
  U8 page = (y+LCD_FIRSTSEG0)>>3;
  U8 mask = 1<<((y+LCD_FIRSTSEG0)&7);
  if (Cache[page][x][0] & mask)
    col|=(1<<1);
  if (Cache[page][x][1] & mask)
    col|=(1<<0);
  return col;
}

static void XorPixel   (int x, int y) {
  PIXELCOLOR Index = _GetPixel(x,y);
  _SetPixel(x,y, LCD_NUM_COLORS-1-Index);
}

static void XorPixel_Data(int x, int y, PIXELCOLOR c) {
  PIXELCOLOR Index = _GetPixel(x,y);
  _SetPixel(x,y,Index^c);
}

/*
        *********************************************************
        *                                                       *
        *                  LCD_GetPixelIndex                    *
        *                                                       *
        *********************************************************
*/
unsigned LCD_L0_GetPixelIndex(int x, int y) {
  return GETPIXEL(x,y);
  /*return _GetPixel(x,y);*/
}

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

Purpose:  This routine is called by emWin. It writes 1 pixel into the
          display.

*/

void LCD_L0_XorPixel(int x, int y) {
  XORPIXEL(x, y);
}

/*
        *********************************************************
        *                                                       *
        *       LCD_L0_SetPixelIndex                            *
        *                                                       *
        *********************************************************

Purpose:  This routine is called by emWin. It writes 1 pixel into the
          display.

*/
void LCD_L0_SetPixelIndex(int x, int y, int ColorIndex) {
  SETPIXEL(x, y, ColorIndex);
}



/*
        *********************************************************
        *                                                       *
        *          LCD_L0_DrawHLine unoptimized                    *
        *                                                       *
        *********************************************************
*/

void LCD_L0_DrawHLine  (int x0, int y,  int x1) {
  LCD_KICK_WATCHDOG();
  if (LCD_DrawMode & LCD_DRAWMODE_XOR) {
    while (x0 <= x1) {
      XORPIXEL(x0, y);
      x0++;
    }
  } else {
    while (x0 <= x1) {
      SETPIXEL(x0, y, COLOR);
      x0++;
    }
  }
}


/*
        *********************************************************
        *                                                       *
        *          LCD_L0_DrawVLine no optimization                *
        *                                                       *
        *********************************************************
*/

void LCD_L0_DrawVLine  (int x, int y0,  int y1) {
  LCD_KICK_WATCHDOG();
  if (LCD_DrawMode & LCD_DRAWMODE_XOR) {
    while (y0 <= y1) {
      XORPIXEL(x, y0);
      y0++;
    }
  } else {
    while (y0 <= y1) {
      SETPIXEL(x, y0, COLOR);
      y0++;
    }
  }
}


/*
        *********************************************************
        *                                                       *
        *          LCD_FillRect, no swap, optimized             *
        *                                                       *
        *********************************************************
*/

#if (!LCD_SWAP_XY) && (LCD_OPTIMIZE)

static const U8 aStartMask[] = { 255, 255-1, 255-3, 255-7, 255-15, 255-31, 255-63, 255-127 };
static const U8 aEndMask[] = { 1,3,7,15,31,63,127,255 };

void LCD_L0_FillRect(int x0, int y0, int x1, int y1) {
  U8 MaskStart, MaskEnd;
  U8 Page, Page0, Page1;
  int x;
  #if LCD_MIRROR_X
    #define X0 (LCD_XSIZE - 1 - x1)
    #define X1 (LCD_XSIZE - 1 - x0)
  #else
    #define X0 x0
    #define X1 x1
  #endif
  #if LCD_MIRROR_Y
    #define Y0 (LCD_YSIZE - 1 - y1)
    #define Y1 (LCD_YSIZE - 1 - y0)
  #else
    #define Y0 y0
    #define Y1 y1
  #endif
  if ((LCD_DrawMode & LCD_DRAWMODE_XOR) ==0) {
    MaskStart = aStartMask[Y0&7];
    MaskEnd   = aEndMask[Y1&7];
    Page0     = Y0>>3;
    Page1     = Y1>>3;
    for (Page =Page0; Page<= Page1; Page++) {
      U8 Mask =0xff;
      if (Page==Page0) {
        Mask  = MaskStart;
      }
      if (Page==Page1) {
        Mask &= MaskEnd;
      }
      for (x=X0; x<=X1; x++) {
        U8 aData[2];
        aData[0] = Cache[Page][x][0];
        aData[1] = Cache[Page][x][1];
        if (COLOR&(1<<1)) {
          aData[0] |= Mask;
        } else {
          aData[0] &= ~Mask;
        }
        if (COLOR&(1<<0)) {
          aData[1] |= Mask;
        } else {
          aData[1] &= ~Mask;
        }
        if (memcmp(&aData[0], &Cache[Page][x],2)) {
          Cache[Page][x][0]      = aData[0];
          Cache[Page][x][1]      = aData[1];
          WRITE_VMEM_PAIR(Page, x, &aData[0]);
        }
      }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久久久久美女| 在线观看亚洲精品视频| 久久一区二区三区四区| 另类小说欧美激情| 久久久高清一区二区三区| 国产精品一线二线三线| 国产精品国产自产拍高清av王其| 成人h版在线观看| 一区二区三区在线免费视频| 欧美日韩免费不卡视频一区二区三区| 免费在线一区观看| 久久久电影一区二区三区| 99久久精品一区二区| 亚洲二区在线观看| 精品乱人伦小说| 91理论电影在线观看| 五月综合激情日本mⅴ| 久久久综合视频| 色综合中文字幕国产 | 欧美丰满一区二区免费视频| 欧美aaaaaa午夜精品| 国产欧美视频一区二区三区| 色av一区二区| 韩国午夜理伦三级不卡影院| 中文字幕在线观看一区| 欧美丝袜第三区| 国产成人综合在线播放| 亚洲国产三级在线| 久久久亚洲高清| 欧美日韩高清一区| 国产精品一区免费视频| 一区二区三区欧美久久| 精品免费国产二区三区| 91极品视觉盛宴| 国产馆精品极品| 亚洲国产精品久久人人爱| 久久欧美一区二区| 欧美视频精品在线观看| 国产精品综合在线视频| 天堂av在线一区| 亚洲欧美视频在线观看视频| 日韩一区二区三区在线观看| gogogo免费视频观看亚洲一| 久久不见久久见免费视频7| 樱桃视频在线观看一区| 国产视频一区二区在线| 欧美一区午夜视频在线观看| 99精品视频在线播放观看| 久久草av在线| 日本欧美一区二区| 尤物av一区二区| 亚洲欧美在线视频观看| 久久久亚洲欧洲日产国码αv| 欧美日本免费一区二区三区| 91尤物视频在线观看| 国产99久久久国产精品免费看 | 欧美一区二区视频免费观看| 色先锋aa成人| 成人黄色网址在线观看| 国产一区二区三区最好精华液| 日日摸夜夜添夜夜添国产精品 | 在线成人午夜影院| 91免费观看视频在线| 粉嫩一区二区三区在线看| 久久aⅴ国产欧美74aaa| 免费的成人av| 天天做天天摸天天爽国产一区| 亚洲综合无码一区二区| 综合久久综合久久| 国产精品久久久久久久久动漫 | 欧美男女性生活在线直播观看| 91麻豆国产福利在线观看| 99精品国产视频| www.色精品| 99r精品视频| 色综合天天视频在线观看| 成人免费视频视频在线观看免费| 国产成人亚洲综合a∨婷婷图片| 精品一区二区av| 国产制服丝袜一区| 国产精品99久久久久久有的能看| 韩国视频一区二区| 国产老肥熟一区二区三区| 国产成人aaa| 成人的网站免费观看| 色婷婷亚洲精品| 欧美性大战久久久| 欧美精品日韩一区| 欧美电影免费提供在线观看| 精品处破学生在线二十三| 久久免费看少妇高潮| 欧美高清在线精品一区| 亚洲精品少妇30p| 午夜国产不卡在线观看视频| 蜜臀av一级做a爰片久久| 狠狠狠色丁香婷婷综合久久五月| 国产精品白丝av| 色综合久久综合网欧美综合网| 在线观看一区二区视频| 欧美一区二区三区免费在线看| 欧美精品一区二区三区久久久| 国产精品灌醉下药二区| 亚洲一区二区欧美激情| 久久99精品久久久久久| 99九九99九九九视频精品| 欧美日韩情趣电影| 久久尤物电影视频在线观看| 综合av第一页| 美女视频一区二区三区| 99久久久久久| 日韩视频在线你懂得| 国产精品视频一二三| 亚洲成人免费av| 成人午夜精品在线| 欧美日韩和欧美的一区二区| 久久久噜噜噜久久中文字幕色伊伊| 国产精品网站在线观看| 日韩国产欧美在线视频| 国产精品996| 欧美日本一区二区在线观看| 国产欧美日韩视频在线观看| 亚洲大型综合色站| 丁香婷婷深情五月亚洲| 91麻豆精品国产自产在线观看一区 | 亚洲成国产人片在线观看| 国产麻豆日韩欧美久久| 欧亚洲嫩模精品一区三区| 亚洲精品一区二区三区蜜桃下载| 亚洲综合久久久久| 成人毛片老司机大片| 日韩一区二区在线观看视频| 一区二区在线观看免费| 国产一区二区三区观看| 欧美男女性生活在线直播观看| 国产精品久久免费看| 国产呦精品一区二区三区网站| 欧美日韩在线播放一区| 亚洲欧洲在线观看av| 激情综合网最新| 欧美久久一二三四区| 亚洲欧美一区二区三区孕妇| 国产成人a级片| 精品sm捆绑视频| 麻豆精品国产91久久久久久| 欧美日韩aaa| 亚洲免费在线电影| 成人美女视频在线看| 国产午夜亚洲精品羞羞网站| 免费成人性网站| 91精品国产高清一区二区三区| 一区二区激情视频| 色偷偷久久人人79超碰人人澡 | 一区二区三区四区蜜桃| 成人激情免费视频| 欧美国产激情二区三区 | 亚洲欧美自拍偷拍| 国产suv精品一区二区三区| 欧美不卡一区二区三区| 日本免费在线视频不卡一不卡二| 欧美日韩国产影片| 视频一区视频二区中文| 6080国产精品一区二区| 日一区二区三区| 在线综合视频播放| 青青草原综合久久大伊人精品| 欧美一区永久视频免费观看| 日产精品久久久久久久性色| 6080午夜不卡| 裸体一区二区三区| 精品sm在线观看| 国产精品亚洲第一区在线暖暖韩国| 久久亚洲春色中文字幕久久久| 国产一区二区三区在线观看精品| xnxx国产精品| 国产99精品在线观看| 《视频一区视频二区| 91日韩精品一区| 亚洲国产精品久久久男人的天堂| 欧美日韩一二三区| 日韩精品亚洲一区| 欧美精品一区二区三| 国产成人啪免费观看软件| 日本一区二区三区四区在线视频| 高清不卡一二三区| 亚洲精品视频一区二区| 3751色影院一区二区三区| 精品一区二区三区在线观看| 国产日产欧美精品一区二区三区| 波多野结衣精品在线| 亚洲综合激情另类小说区| 欧美精品久久天天躁| 国内精品久久久久影院薰衣草| 中文欧美字幕免费| 在线观看亚洲成人| 精品在线播放午夜| 最新高清无码专区| 在线不卡一区二区| 国产成人丝袜美腿| 亚洲一区二区三区精品在线| 精品成a人在线观看|