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

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

?? lcd15e05.c

?? 這是我移植到GBA游戲機上的uCGUI3.24 可以通過模擬器仿真
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*
*********************************************************************************************************
*                                                uC/GUI
*                        Universal graphic software for embedded applications
*
*                       (c) Copyright 2002, Micrium Inc., Weston, FL
*                       (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
*              礐/GUI is protected by international copyright laws. Knowledge of the
*              source code may not be used to write a similar product. This file may
*              only be used in accordance with a license and should not be redistributed
*              in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File        : LCD15E05.C
Purpose     : Driver for LCDs using a Seiko Epson S1D15E05 controller
----------------------------------------------------------------------   
Version-Date---Author-Explanation                                        
----------------------------------------------------------------------   
1.00a   020708 JE     a) Changed to work with 2bpp DDP bitmaps
1.00    020204 JE     a) Hardwareinterface routines renamed:
                         ...DATA -> ...A1, ...CMD -> ...A0
0.90.00 011030 JE     a) First release
---------------------------LIST OF CONFIG SWITCHES--------------------
The following is a list of additional configuration switches for this
driver. These switches might not be listed in the manual, because
the manual mainly covers the general config switches which are
supported by all drivers.
----------------------------------------------------------------------
define ----------------------Explanation------------------------------
LCD_OPTIMIZE                 Controls the use of optimized routines.
----------------------------------------------------------------------
Known problems or limitations with current version
----------------------------------------------------------------------
Driver supports only 2bpp mode
----------------------------------------------------------------------
Open issues
----------------------------------------------------------------------
1bpp mode
---------------------------END-OF-HEADER------------------------------
*/

#include <string.h>           /* needed for memset */
#include <stddef.h>           /* needed for definition of NULL */
#include "LCD_Private.h"      /* private modul definitions & config */
#include "GUI_Private.h"
#include "GUIDebug.h"
#include "LCD_0.h"            /* Defines for first display */

#if    (LCD_CONTROLLER == 0x15E05) \
       && (!defined(WIN32) | defined(LCD_SIMCONTROLLER))

/*
        *********************************************************
        *
        *           Defaults for config switches
        *
        *********************************************************
*/

#ifndef LCD_CACHE
  #define  LCD_CACHE                  (1)
#endif

#ifndef LCD_INIT_CONTROLLER
  #define LCD_INIT_CONTROLLER()
#endif

/*
        *********************************************************
        *
        *           Defines for simulation
        *
        *********************************************************
*/

#ifdef WIN32
  #undef LCD_WRITE_A0
  #undef LCD_WRITE_A1
  #undef LCD_READ_A0
  #undef LCD_READ_A1
  void SIM_WriteA1C0(U8 Data);
  void SIM_WriteA0C0(U8 cmd);
  U8   SIM_ReadA1C0(void);
  U8   SIM_ReadA0C0(void);
  #define LCD_WRITE_A1(Data) SIM_WriteA1C0(Data) 
  #define LCD_WRITE_A0(cmd)  SIM_WriteA0C0(cmd)
  #define LCD_READ_A1()      SIM_ReadA1C0()
  #define LCD_READ_A0()      SIM_ReadA0C0()
#endif

/*
        *********************************************************
        *
        *          Remap ...A0, ...A1 -> ...CMD, ...DATA
        *
        *********************************************************
*/

#define LCD_READCMD0    LCD_READ_A0
#define LCD_READDATA0   LCD_READ_A1
#define LCD_WRITECMD0   LCD_WRITE_A0
#define LCD_WRITEDATA0  LCD_WRITE_A1

/*
        *********************************************************
        *
        *           Configuration switch checking
        *
        *********************************************************
*/

#if (LCD_BITSPERPIXEL > 2)
  #error This controller can handle only 1bpp and 2bpp displays
#endif

/*
        *********************************************************
        *                                                       *
        *              Macros, standard                         *
        *                                                       *
        *********************************************************

These macros can be found in any LCD-driver as they serve purposes
that can be found in any class of LCD-driver (Like clipping).

*/

#if (!defined (LCD_LUT_COM) && !defined(LCD_LUT_SEG))
  #if   (!LCD_MIRROR_X && !LCD_MIRROR_Y && !LCD_SWAP_XY) 
    #define LOG2PHYS(x, y) x, y
  #elif (!LCD_MIRROR_X && !LCD_MIRROR_Y &&  LCD_SWAP_XY) 
    #define LOG2PHYS(x, y) y, x
  #elif (!LCD_MIRROR_X &&  LCD_MIRROR_Y && !LCD_SWAP_XY) 
    #define LOG2PHYS(x, y) x, LCD_YSIZE - 1 - (y)
  #elif (!LCD_MIRROR_X &&  LCD_MIRROR_Y &&  LCD_SWAP_XY) 
    #define LOG2PHYS(x, y) LCD_YSIZE - 1 - (y), x
  #elif ( LCD_MIRROR_X && !LCD_MIRROR_Y && !LCD_SWAP_XY) 
    #define LOG2PHYS(x, y) LCD_XSIZE - 1 - (x), y
  #elif ( LCD_MIRROR_X && !LCD_MIRROR_Y &&  LCD_SWAP_XY) 
    #define LOG2PHYS(x, y) LCD_YSIZE - 1 - (y), x
  #elif ( LCD_MIRROR_X &&  LCD_MIRROR_Y && !LCD_SWAP_XY) 
    #define LOG2PHYS(x, y) LCD_XSIZE - 1 - (x), LCD_YSIZE - 1 - (y)
  #elif ( LCD_MIRROR_X &&  LCD_MIRROR_Y &&  LCD_SWAP_XY) 
    #error This combination of mirroring/swapping not yet supported
  #endif
#else
  #if   ( defined (LCD_LUT_COM) && !defined(LCD_LUT_SEG))
    #define LOG2PHYS(x, y) x, LCD__aLine2Com0[y]
  #elif (!defined (LCD_LUT_COM) &&  defined(LCD_LUT_SEG))
    #define LOG2PHYS(x, y) LCD__aCol2Seg0[x], y
  #elif ( defined (LCD_LUT_COM) &&  defined(LCD_LUT_SEG))
    #define LOG2PHYS(x, y) LCD__aCol2Seg0[x], LCD__aLine2Com0[y]
  #endif
#endif

#define BKCOLOR LCD_BKCOLORINDEX
#define   COLOR LCD_COLORINDEX


/*
        *********************************************************
        *
        *           Static variables for driver
        *
        *********************************************************
*/

#if LCD_CACHE
  #if   (LCD_BITSPERPIXEL == 1)
    static U8 aVRam[(LCD_YSIZE_PHYS + 7) >> 3][LCD_XSIZE_PHYS];
  #elif (LCD_BITSPERPIXEL == 2)
    static U8 aVRam[(LCD_YSIZE_PHYS + 3) >> 2][LCD_XSIZE_PHYS];
  #endif
#endif

static int Page, Offset;

/*
        *********************************************************
        *
        *           Hardware access macros
        *
        *********************************************************
*/

#define MAX_PAGE   32
#define MAX_OFFSET 159

#define INCREMENT_CURSOR() \
  Offset++; \
  if (Offset > MAX_OFFSET) { \
    Offset = 0; \
    Page ++; \
    if (Page > MAX_PAGE) \
      Page = 0; \
  }

#if LCD_CACHE

  #define READ_DATA(Data) \
    Data = aVRam[Page][Offset]

  #define WRITE_DATA(Data) \
    LCD_WRITECMD0(0x1d); \
    LCD_WRITEDATA0(Data); \
    aVRam[Page][Offset] = Data; \
    INCREMENT_CURSOR()

#else

  #define READ_DATA(Data) \
    LCD_WRITECMD0(0x1c); \
    Data = LCD_READDATA0(); \
    INCREMENT_CURSOR()

  #define WRITE_DATA(Data) \
    LCD_WRITECMD0(0x1d); \
    LCD_WRITEDATA0(Data); \
    INCREMENT_CURSOR()

#endif

#define WRITE_PAGE(NewPage) \
  LCD_WRITECMD0(0xb1); \
  LCD_WRITEDATA0(NewPage); \
  Page = NewPage

#define WRITE_OFFSET(NewOffset) \
  LCD_WRITECMD0(0x13); \
  LCD_WRITEDATA0(NewOffset); \
  Offset = NewOffset

#define SET_PAGE_IF_NEEDED(y) \
  if (Page != (y >> 2)) { \
    WRITE_PAGE(y >> 2); \
  }

#define SET_OFFSET_IF_NEEDED(x) \
  if (Offset != x) { \
    WRITE_OFFSET(x); \
  }

/*
        *********************************************************
        *
        *           Static access routines for pixel access
        *
        *********************************************************

These routines should be only used by access macros to keep
sure, that logical coordinates are mapped to physical level

*/

/*
        *****************************************
        *
        *           SetPixelIndex
        *
        *****************************************
*/

static void SetPixelIndex(int x, int y, LCD_PIXELINDEX ColorIndex) {
  U8 Shift = ((y & 3) << 1);
  U8 AndMask = ~(0x03 << Shift);
  U8 OrMask  = ColorIndex << Shift;
  U8 Data;
  SET_PAGE_IF_NEEDED(y);
  SET_OFFSET_IF_NEEDED(x);
  READ_DATA(Data);
  Data &= AndMask;
  Data |= OrMask;
  SET_OFFSET_IF_NEEDED(x);
  WRITE_DATA(Data);
}

/*
        *****************************************
        *
        *           GetPixelIndex
        *
        *****************************************
*/

static LCD_PIXELINDEX GetPixelIndex(int x, int y) {
  U8 Shift = ((y & 3) << 1);
  U8 AndMask = 0x03 << Shift;
  U8 Data;
  SET_PAGE_IF_NEEDED(y);
  SET_OFFSET_IF_NEEDED(x);
  READ_DATA(Data);
  return (Data & AndMask) >> Shift;
}

/*
        *****************************************
        *
        *           XorPixel
        *
        *****************************************
*/

static void XorPixel(int x, int y) {
  U8 Data = GetPixelIndex(x, y);
  Data = LCD_NUM_COLORS - 1 - Data;
  SetPixelIndex(x, y, Data);
}

/*
        *********************************************************
        *
        *           Access macros for pixel access
        *
        *********************************************************
*/

#define SETPIXEL(x, y, c)  SetPixelIndex(LOG2PHYS(x, y), c)
#define GETPIXEL(x, y)     GetPixelIndex(LOG2PHYS(x, y))
#define XORPIXEL(x, y)     XorPixel     (LOG2PHYS(x, y))

/*
        *********************************************************
        *
        *           Static DrawBitLineXBPP functions
        *
        *********************************************************
*/

/*
        *****************************************
        *
        *           Draw Bitmap 1 BPP
        *           no optimizations
        *
        *****************************************
*/

static void  DrawBitLine1BPP(int x, int y, U8 const*p, int Diff, int xsize, const LCD_PIXELINDEX*pTrans) {
  LCD_PIXELINDEX pixels;
  LCD_PIXELINDEX Index0 = *(pTrans+0);
  LCD_PIXELINDEX Index1 = *(pTrans+1);
/*
// Jump to right entry point
*/
  pixels = *p;
  switch (GUI_Context.DrawMode & (LCD_DRAWMODE_TRANS|LCD_DRAWMODE_XOR)) {
  case 0:
    switch (Diff&7) {
    case 0:   
      goto WriteBit0;
    case 1:   
      goto WriteBit1;
    case 2:
      goto WriteBit2;
    case 3:
      goto WriteBit3;
    case 4:
      goto WriteBit4;
    case 5:   
      goto WriteBit5;
    case 6:   
      goto WriteBit6;
    case 7:   
      goto WriteBit7;
    }
    break;
  case LCD_DRAWMODE_TRANS:
    switch (Diff&7) {
    case 0:
      goto WriteTBit0;
    case 1:
      goto WriteTBit1;
    case 2:
      goto WriteTBit2;
    case 3:
      goto WriteTBit3;
    case 4:
      goto WriteTBit4;
    case 5:   
      goto WriteTBit5;
    case 6:   
      goto WriteTBit6;
    case 7:   
      goto WriteTBit7;
    }
    break;
  case LCD_DRAWMODE_XOR:
    switch (Diff&7) {
    case 0:   
      goto WriteXBit0;
    case 1:   
      goto WriteXBit1;
    case 2:
      goto WriteXBit2;
    case 3:
      goto WriteXBit3;
    case 4:
      goto WriteXBit4;
    case 5:   
      goto WriteXBit5;
    case 6:   
      goto WriteXBit6;
    case 7:   
      goto WriteXBit7;
    }
  }
/*
        Write with transparency
*/
  WriteTBit0:
    if (pixels&(1<<7)) SETPIXEL(x+0, y, Index1);
    if (!--xsize)
      return;
  WriteTBit1:
    if (pixels&(1<<6)) SETPIXEL(x+1, y, Index1);
    if (!--xsize)
      return;
  WriteTBit2:
    if (pixels&(1<<5)) SETPIXEL(x+2, y, Index1);
    if (!--xsize)
      return;
  WriteTBit3:
    if (pixels&(1<<4)) SETPIXEL(x+3, y, Index1);
    if (!--xsize)
      return;
  WriteTBit4:
    if (pixels&(1<<3)) SETPIXEL(x+4, y, Index1);
    if (!--xsize)
      return;
  WriteTBit5:
    if (pixels&(1<<2)) SETPIXEL(x+5, y, Index1);
    if (!--xsize)
      return;
  WriteTBit6:
    if (pixels&(1<<1)) SETPIXEL(x+6, y, Index1);
    if (!--xsize)
      return;
  WriteTBit7:
    if (pixels&(1<<0)) SETPIXEL(x+7, y, Index1);
    if (!--xsize)
      return;
    x+=8;
    pixels = *(++p);
    goto WriteTBit0;
/*
        Write without transparency
*/
  WriteBit0:
    SETPIXEL(x+0, y, (pixels&(1<<7)) ? Index1 : Index0);
    if (!--xsize)
      return;
  WriteBit1:
    SETPIXEL(x+1, y, (pixels&(1<<6)) ? Index1 : Index0);
    if (!--xsize)
      return;
  WriteBit2:
    SETPIXEL(x+2, y, (pixels&(1<<5)) ? Index1 : Index0);
    if (!--xsize)
      return;
  WriteBit3:
    SETPIXEL(x+3, y, (pixels&(1<<4)) ? Index1 : Index0);
    if (!--xsize)
      return;
  WriteBit4:
    SETPIXEL(x+4, y, (pixels&(1<<3)) ? Index1 : Index0);
    if (!--xsize)
      return;
  WriteBit5:
    SETPIXEL(x+5, y, (pixels&(1<<2)) ? Index1 : Index0);
    if (!--xsize)
      return;
  WriteBit6:
    SETPIXEL(x+6, y, (pixels&(1<<1)) ? Index1 : Index0);
    if (!--xsize)
      return;
  WriteBit7:
    SETPIXEL(x+7, y, (pixels&(1<<0)) ? Index1 : Index0);
    if (!--xsize)
      return;
    x+=8;
    pixels = *(++p);
    goto WriteBit0;
/*
        Write XOR mode
*/
  WriteXBit0:
    if (pixels&(1<<7))
      XORPIXEL(x+0, y);
    if (!--xsize)
      return;
  WriteXBit1:
    if (pixels&(1<<6))
      XORPIXEL(x+1, y);
    if (!--xsize)
      return;
  WriteXBit2:
    if (pixels&(1<<5))
      XORPIXEL(x+2, y);
    if (!--xsize)
      return;
  WriteXBit3:
    if (pixels&(1<<4))
      XORPIXEL(x+3, y);
    if (!--xsize)
      return;
  WriteXBit4:
    if (pixels&(1<<3))
      XORPIXEL(x+4, y);
    if (!--xsize)
      return;
  WriteXBit5:
    if (pixels&(1<<2))
      XORPIXEL(x+5, y);
    if (!--xsize)
      return;
  WriteXBit6:
    if (pixels&(1<<1))
      XORPIXEL(x+6, y);
    if (!--xsize)
      return;
  WriteXBit7:
    if (pixels&(1<<0))
      XORPIXEL(x+7, y);
    if (!--xsize)
      return;
    x+=8;
    pixels = *(++p);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99国内精品久久| av一区二区三区四区| 喷白浆一区二区| 日本vs亚洲vs韩国一区三区 | 亚洲成va人在线观看| 亚洲自拍偷拍图区| 午夜精品福利一区二区三区av| 亚洲国产精品一区二区www在线 | 7777女厕盗摄久久久| 精品区一区二区| 亚洲美女免费视频| 日韩高清国产一区在线| 国产精品一二三在| 欧美亚洲动漫制服丝袜| 日韩欧美综合在线| 综合精品久久久| 狠狠色综合日日| 欧美日本国产视频| 亚洲色图欧美在线| 国产风韵犹存在线视精品| 欧美日韩国产成人在线免费| 中文幕一区二区三区久久蜜桃| 亚洲午夜羞羞片| 97se亚洲国产综合自在线不卡| 亚洲精品在线观| 久久99精品久久久久久动态图 | 国产精品国产三级国产有无不卡| 亚洲韩国一区二区三区| 91香蕉视频黄| 亚洲欧洲三级电影| 成人av电影在线| 国产精品久久99| 成人av资源在线| 日韩一区日韩二区| 岛国精品在线观看| 亚洲美女视频一区| 一道本成人在线| 亚洲激情男女视频| 91论坛在线播放| 一区二区三区中文在线| 色欧美日韩亚洲| 亚洲国产欧美在线| 日韩一级精品视频在线观看| 日本欧美一区二区三区乱码| 制服.丝袜.亚洲.另类.中文| 午夜精品一区二区三区三上悠亚 | 亚洲欧美日韩国产一区二区三区| 91在线观看一区二区| 亚洲在线一区二区三区| 日韩亚洲欧美一区| 成人综合婷婷国产精品久久蜜臀| 国产欧美日韩精品一区| 91看片淫黄大片一级在线观看| 蜜臀久久99精品久久久久久9| 精品日韩在线观看| 91首页免费视频| 免费精品视频最新在线| 欧美激情一区二区| 91精选在线观看| www.亚洲国产| 美国三级日本三级久久99| 亚洲男同性视频| 久久久一区二区三区捆绑**| 欧美午夜精品免费| 粉嫩高潮美女一区二区三区| 午夜精品在线视频一区| 国产精品久久久久久久岛一牛影视| 欧美在线看片a免费观看| 成人听书哪个软件好| 琪琪久久久久日韩精品| 亚洲成人av福利| 亚洲最大成人网4388xx| 国产精品电影一区二区| 亚洲精品va在线观看| 亚洲欧美另类综合偷拍| 国产精品水嫩水嫩| 国产日韩综合av| 国产亚洲精品免费| 国产欧美日韩在线观看| 欧美激情在线一区二区| 国产午夜精品福利| 久久久综合视频| 国产精品久久久久影视| 国产丝袜在线精品| 亚洲国产成人一区二区三区| 国产亚洲成aⅴ人片在线观看| 久久精品人人做人人综合| 久久亚区不卡日本| 国产精品污网站| 一区二区三区四区在线| 亚洲成人av中文| 韩国成人精品a∨在线观看| 国内精品伊人久久久久av影院 | 51午夜精品国产| 欧美成人福利视频| 国产精品欧美久久久久无广告 | 久久综合九色综合久久久精品综合| 久久综合久久久久88| 亚洲欧美日韩一区二区三区在线观看 | 国产精品乱码妇女bbbb| 伊人色综合久久天天人手人婷| 国产精品中文有码| 在线看不卡av| 国产三级欧美三级日产三级99| 亚洲图片另类小说| 激情国产一区二区| 欧美午夜在线一二页| 国产精品无人区| 麻豆精品一区二区综合av| 国产suv一区二区三区88区| 欧美日韩1区2区| 五月天国产精品| 欧洲一区二区三区免费视频| 日韩免费高清av| 亚洲国产精品影院| jlzzjlzz亚洲日本少妇| 欧美国产日韩在线观看| 免费观看91视频大全| 欧美吻胸吃奶大尺度电影 | 色欧美乱欧美15图片| 日本一区二区电影| 国产成人亚洲精品青草天美| 欧美一区国产二区| 日韩成人伦理电影在线观看| 欧美综合视频在线观看| 亚洲欧美国产三级| 色爱区综合激月婷婷| 久久91精品国产91久久小草| 国产成人av自拍| 3d成人h动漫网站入口| 一区二区三区在线高清| 在线观看日韩电影| 国产欧美一区二区在线观看| 午夜亚洲国产au精品一区二区| 97久久精品人人爽人人爽蜜臀 | 亚洲精选免费视频| 色综合久久久久| 亚洲精品国产精华液| 粉嫩av一区二区三区粉嫩 | 午夜电影一区二区三区| 欧美亚洲愉拍一区二区| 无码av免费一区二区三区试看 | 亚洲免费在线播放| 正在播放亚洲一区| 蜜臀99久久精品久久久久久软件 | 亚洲影视在线播放| 欧美日韩国产首页| 国产综合色在线| 国产精品第13页| 欧美人妖巨大在线| 极品少妇xxxx精品少妇偷拍| 国产日韩精品视频一区| av网站一区二区三区| 亚洲电影在线免费观看| 欧美精品一区二区三区视频 | 337p粉嫩大胆色噜噜噜噜亚洲 | wwww国产精品欧美| 99麻豆久久久国产精品免费优播| 亚洲成av人影院| 国产精品久99| 91精品国产综合久久香蕉麻豆| 国产精品一卡二卡| 亚洲地区一二三色| 亚洲国产成人午夜在线一区 | 亚洲三级视频在线观看| 欧美不卡一区二区三区四区| 成人午夜av电影| 蜜桃91丨九色丨蝌蚪91桃色| 亚洲日穴在线视频| 国产精品国产三级国产aⅴ无密码| 在线播放中文一区| 欧美色男人天堂| 色偷偷88欧美精品久久久| 国产精品一区二区在线播放 | 欧美亚一区二区| 99精品视频在线观看| 97久久精品人人爽人人爽蜜臀| 国产美女一区二区三区| 看电影不卡的网站| 免费久久99精品国产| 美女网站色91| 久久精品二区亚洲w码| 久久国产三级精品| 国产一区二区三区免费在线观看| 麻豆国产精品视频| 国产精品123区| 99久久精品情趣| 色婷婷综合久久久中文一区二区| 成人国产精品免费网站| 91麻豆精品秘密| 欧美一二三四区在线| 国产丝袜美腿一区二区三区| 国产精品视频yy9299一区| 亚洲第一久久影院| 国产一区二区三区免费播放| 91麻豆蜜桃一区二区三区| 欧美不卡激情三级在线观看| 亚洲精品乱码久久久久| 国产麻豆成人传媒免费观看| 91豆麻精品91久久久久久|