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

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

?? lcdmemc.c

?? s3c44b0+ucgui+初始化的一個版本
?? C
?? 第 1 頁 / 共 4 頁
字號:
        *          LCD_DrawHLine optimized                      *
        *                                                       *
        *          Normal display, 6 Bpp                        *
        *                                                       *
        *********************************************************
*/

#elif    (LCD_OPTIMIZE)             \
      && (!LCD_MIRROR_X)            \
      && (!LCD_MIRROR_Y)            \
      && (!LCD_SWAP_XY)             \
      && (!LCD_SUPPORT_COMTRANS)    \
      && (!LCD_SUPPORT_SEGTRANS)    \
      && (LCD_BITSPERPIXEL == 6)

static U8 MaskLeft[8][3] = {
  { 0xff, 0xff, 0xff},
  { 0x1f, 0xff, 0xff},
  { 0x03, 0xff, 0xff},
  { 0x00, 0x7f, 0xff},
  { 0x00, 0x0f, 0xff},
  { 0x00, 0x01, 0xff},
  { 0x00, 0x00, 0x3f},
  { 0x00, 0x00, 0x07}/*!!!0x0e*/
};

static U8 MaskRight[8][3] = {
  { 0xe0, 0x00, 0x00},
  { 0xfc, 0x00, 0x00},
  { 0xff, 0x80, 0x00},
  { 0xff, 0xf0, 0x00},
  { 0xff, 0xfe, 0x00},
  { 0xff, 0xff, 0xc0},
  { 0xff, 0xff, 0xf8},
  { 0xff, 0xff, 0xff}
};

static U8* GetMaskRight(int x) { return &MaskRight[(x&7)][0]; }
static U8* GetMaskLeft (int x) { return &MaskLeft[(x&7)][0]; }

void LCD_L0_DrawHLine  (int x0, int y,  int x1) {
  if (x0>x1) return;  /* Check if nothing to draw */
  if (GUI_Context.DrawMode & LCD_DRAWMODE_XOR) {
    while (x0 <= x1) {
      XORPIXEL(x0, y);
      x0++;
    }
  } else {
    int i;
    U8 LCD_VRAMTYPE* p0 = OFF2PTR_0(XY2OFF(x0,y));
    U8 LCD_VRAMTYPE* p1 = OFF2PTR_1(XY2OFF(x0,y));
    U8* pMask = GetMaskLeft(x0);
    U8 aData[2][3];
    U8 aDataMasked[2][3];
    U8 c0 = ((COLOR & 0x20) >> 3) + ((COLOR & 0x08) >> 2) + ((COLOR & 0x02) >> 1);
    U8 c1 = ((COLOR & 0x10) >> 2) + ((COLOR & 0x04) >> 1) +  (COLOR & 0x01);
    aData[0][0] = (c0<<5)|(c0<<2)|(c0>>1);         /* hhhgggff */
    aData[0][1] = (c0<<7)|(c0<<4)|(c0<<1)|(c0>>2); /* feeedddc */
    aData[0][2] = (c0<<6)|(c0<<3)|(c0);            /* ccbbbaaa */
    aData[1][0] = (c1<<5)|(c1<<2)|(c1>>1);         /* hhhgggff */
    aData[1][1] = (c1<<7)|(c1<<4)|(c1<<1)|(c1>>2); /* feeedddc */
    aData[1][2] = (c1<<6)|(c1<<3)|(c1);            /* ccbbbaaa */
    for (i=0; i<3; i++, pMask++) {
      aDataMasked[0][i] = (*(p0+i) &~*pMask) | (aData[0][i] &*pMask);
      aDataMasked[1][i] = (*(p1+i) &~*pMask) | (aData[1][i] &*pMask);
    }
    if ((x0&~7) == (x1&~7)) {    /* Do we have to clip left and right side ? */
      U8* pMask = GetMaskRight(x1);
      *(p0+0) = (*(p0+0) &~*(pMask+0)) | (aDataMasked[0][0]&*(pMask+0));
      *(p0+1) = (*(p0+1) &~*(pMask+1)) | (aDataMasked[0][1]&*(pMask+1));
      *(p0+2) = (*(p0+2) &~*(pMask+2)) | (aDataMasked[0][2]&*(pMask+2));
      *(p1+0) = (*(p1+0) &~*(pMask+0)) | (aDataMasked[1][0]&*(pMask+0));
      *(p1+1) = (*(p1+1) &~*(pMask+1)) | (aDataMasked[1][1]&*(pMask+1));
      *(p1+2) = (*(p1+2) &~*(pMask+2)) | (aDataMasked[1][2]&*(pMask+2));
      return;
    }
    *p0     = aDataMasked[0][0];
    *(p0+1) = aDataMasked[0][1];
    *(p0+2) = aDataMasked[0][2];
    p0+=3;
    *p1     = aDataMasked[1][0];
    *(p1+1) = aDataMasked[1][1];
    *(p1+2) = aDataMasked[1][2];
    p1+=3;
    x0 = (x0&~7)+8;
/* Draw optimized portion */
    {
      int Len = (x1-x0+1)>>3;
      if (Len >0) {
        x0 += Len<<3;
        do {
          *p0     = aData[0][0];
          *(p0+1) = aData[0][1];
          *(p0+2) = aData[0][2];
          p0+=3;
          *p1     = aData[1][0];
          *(p1+1) = aData[1][1];
          *(p1+2) = aData[1][2];
          p1+=3;
        } while (--Len);
      }
    }
    /* Draw right portion */
    if ((x1&7)!=7) {
      U8* pMask = GetMaskRight(x1);
      for (i=0; i<3; i++, pMask++) {
        *(p0+i) = (*(p0+i) &~*pMask) | (aData[0][i]&*pMask);
        *(p1+i) = (*(p1+i) &~*pMask) | (aData[1][i]&*pMask);
      }
    }
  }
}

/*
        *********************************************************
        *                                                       *
        *          LCD_DrawHLine                                *
        *                                                       *
        *          Unoptimized                                  *
        *                                                       *
        *********************************************************
*/

#else
void LCD_L0_DrawHLine(int x0, int y,  int x1) {
  if (x0>x1) return;  /* Check if nothing to draw */
  if (GUI_Context.DrawMode & LCD_DRAWMODE_XOR) {
    while (x0 <= x1) {
      XORPIXEL(x0, y);
      x0++;
    }
  } else {
    while (x0 <= x1) {
      SETPIXEL(x0, y, COLOR);
      x0++;
    }
  }
}
#endif


/*
        *********************************************************
        *                                                       *
        *          LCD_DrawVLine                                *
        *                                                       *
        *          Unoptimized                                  *
        *                                                       *
        *********************************************************
*/

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

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


/*
  ***************************************************************
  *                                                             *
  *            Internal bitmap routines                         *
  *                                                             *
  ***************************************************************

*/


/*
    *********************************************
    *                                           *
    *      Draw Bitmap 1 BPP                    *
    *                                           *
    *********************************************
*/

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:
#if      (LCD_OPTIMIZE)             \
      && (!LCD_MIRROR_X)            \
      && (!LCD_MIRROR_Y)            \
      && (!LCD_SWAP_XY)             \
      && (!LCD_SUPPORT_COMTRANS)    \
      && (!LCD_SUPPORT_SEGTRANS)    \
      && ((LCD_BITSPERPIXEL == 3) || (LCD_BITSPERPIXEL == 6))
    SetPosXY(x+(Diff&7),y);
#endif
    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
*/
#if      (LCD_OPTIMIZE)             \
      && (!LCD_MIRROR_X)            \
      && (!LCD_MIRROR_Y)            \
      && (!LCD_SWAP_XY)             \
      && (!LCD_SUPPORT_COMTRANS)    \
      && (!LCD_SUPPORT_SEGTRANS)    \
      && ((LCD_BITSPERPIXEL == 3) || (LCD_BITSPERPIXEL == 6))

  WriteBit0:
    SetNextPixel((pixels&(1<<7)) ? Index1 : Index0);
    if (!--xsize) return;
  WriteBit1:
    SetNextPixel((pixels&(1<<6)) ? Index1 : Index0);
    if (!--xsize) return;
  WriteBit2:
    SetNextPixel((pixels&(1<<5)) ? Index1 : Index0);
    if (!--xsize) return;
  WriteBit3:
    SetNextPixel((pixels&(1<<4)) ? Index1 : Index0);
    if (!--xsize) return;
  WriteBit4:
    SetNextPixel((pixels&(1<<3)) ? Index1 : Index0);
    if (!--xsize) return;
  WriteBit5:
    SetNextPixel((pixels&(1<<2)) ? Index1 : Index0);
    if (!--xsize) return;
  WriteBit6:
    SetNextPixel((pixels&(1<<1)) ? Index1 : Index0);
    if (!--xsize) return;
  WriteBit7:
    SetNextPixel((pixels&(1<<0)) ? Index1 : Index0);
    if (!--xsize) return;
    x+=8;
    pixels = *(++p);
    goto WriteBit0;
#else
  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;
#endif
/*
        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:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色狠狠一区二区三区香蕉| 亚洲欧美日韩国产手机在线| 国产亚洲短视频| 亚洲一区二区三区小说| 国产.欧美.日韩| 欧美精品久久一区二区三区| 亚洲日本va午夜在线影院| 国产在线不卡一卡二卡三卡四卡| 制服丝袜亚洲播放| 亚洲综合一区二区三区| 99久久精品国产精品久久| 成人美女视频在线观看| 国产精品卡一卡二| 精品一区免费av| 欧美少妇性性性| 亚洲影院久久精品| 91免费看片在线观看| 国产日韩欧美高清| 国产黄色成人av| 欧美精品一区二区蜜臀亚洲| 日韩av一区二区三区| 欧美欧美欧美欧美首页| 午夜欧美电影在线观看| 欧美四级电影在线观看| 亚洲影院在线观看| 在线视频一区二区三区| 一区二区三区精品| 欧美日韩在线不卡| 中文字幕亚洲区| 国产精品中文字幕欧美| 欧美一级免费大片| 视频一区视频二区中文| 欧美一区二区三区免费在线看| 亚洲福利视频一区二区| 91丨九色丨黑人外教| 亚洲精品成人在线| 色视频一区二区| 亚洲国产一区二区视频| 欧美精品18+| 热久久免费视频| 精品国产百合女同互慰| 国产二区国产一区在线观看| 久久精品视频一区二区三区| 国产一区二区在线观看免费| 欧美国产综合色视频| 成人性色生活片| 亚洲另类春色国产| 欧美久久一区二区| 九色porny丨国产精品| 久久综合狠狠综合久久综合88| 香蕉加勒比综合久久| 欧美一区在线视频| 国产综合一区二区| 中文字幕一区二区三区视频| 欧美日韩一区 二区 三区 久久精品 | 日韩理论片网站| 欧美在线视频日韩| 久久精品免费观看| 亚洲国产精品t66y| 欧美精品123区| 丰满亚洲少妇av| 婷婷久久综合九色综合绿巨人 | 欧美xxxx老人做受| 不卡的av电影在线观看| 日韩精品高清不卡| 91精品国产乱| 亚洲一区二区三区精品在线| 欧美一级在线免费| 99热在这里有精品免费| 日本成人中文字幕| 国产精品看片你懂得| 日韩午夜在线观看| 一本久久精品一区二区| 久久99精品国产麻豆不卡| 一区二区三区自拍| 久久午夜羞羞影院免费观看| 欧美伊人久久大香线蕉综合69| 国产揄拍国内精品对白| 亚洲va欧美va人人爽午夜| 国产精品视频一区二区三区不卡| 69av一区二区三区| 成人高清视频免费观看| 久久99久久99精品免视看婷婷 | 国产一区二区三区免费播放| 亚洲综合网站在线观看| 中文字幕免费不卡| 美女视频网站黄色亚洲| 欧美国产日韩亚洲一区| 欧美日韩精品电影| 成人性生交大片免费看中文| 麻豆精品国产91久久久久久| 一区二区三区欧美| 国产精品色在线观看| 欧美岛国在线观看| 欧美精品v国产精品v日韩精品 | 中文字幕综合网| 久久免费视频色| 日韩欧美国产电影| 欧美日韩大陆在线| 91久久免费观看| 91免费国产视频网站| 成人av综合在线| 国产成人av自拍| 国产精品88av| 国产91丝袜在线观看| 国产真实精品久久二三区| 麻豆精品久久精品色综合| 日韩激情一二三区| 日本女优在线视频一区二区| 亚洲福利一区二区| 午夜欧美电影在线观看| 日一区二区三区| 性做久久久久久免费观看欧美| 亚洲综合色区另类av| 亚洲自拍偷拍av| 亚洲国产日产av| 视频一区二区三区在线| 日本免费在线视频不卡一不卡二| 日本中文字幕一区二区视频| 日韩精品五月天| 日韩av网站免费在线| 裸体歌舞表演一区二区| 精品亚洲国内自在自线福利| 琪琪久久久久日韩精品| 国产在线精品一区二区| 国产成人亚洲综合a∨婷婷| 国产91精品入口| 色综合激情久久| 欧美日韩高清在线播放| 欧美成人欧美edvon| 国产午夜精品在线观看| 亚洲免费在线电影| 日韩国产精品久久久久久亚洲| 麻豆精品一区二区综合av| 国产精品一区二区在线看| av一区二区三区在线| 在线观看成人免费视频| 日韩一区二区免费在线电影| 国产欧美视频一区二区| 亚洲精品久久7777| 风间由美一区二区三区在线观看 | 天堂蜜桃91精品| 久99久精品视频免费观看| 丰满放荡岳乱妇91ww| 欧美在线观看你懂的| 欧美成人乱码一区二区三区| 国产精品乱人伦| 亚洲电影一区二区三区| 国内精品伊人久久久久影院对白| 国产高清视频一区| 欧美亚洲自拍偷拍| 久久久久高清精品| 一区二区成人在线视频| 久久av老司机精品网站导航| 91视频免费播放| 日韩精品专区在线| 成人欧美一区二区三区| 日本网站在线观看一区二区三区| 成人午夜大片免费观看| 欧美精品在线一区二区| 国产精品乱码妇女bbbb| 蜜桃av一区二区在线观看| 成人精品免费视频| 日韩欧美黄色影院| 一区二区三区中文字幕电影 | 国产日韩欧美a| 亚洲成av人片观看| av一区二区不卡| 久久久精品日韩欧美| 天天操天天干天天综合网| 成人av电影在线| 亚洲精品一区二区精华| 亚洲一区二区美女| 不卡的av电影| 国产三级一区二区| 美女一区二区久久| 欧美日韩国产不卡| 一区二区三区在线高清| 成人小视频免费在线观看| 精品国产在天天线2019| 日韩激情在线观看| 欧美手机在线视频| 亚洲丝袜制服诱惑| 最新日韩av在线| 成人在线综合网站| 美女网站在线免费欧美精品| 久久综合九色综合久久久精品综合| 国产精品白丝在线| 日韩免费视频线观看| 免费成人小视频| 亚洲国产岛国毛片在线| 欧美日韩黄视频| 国产精品亚洲第一区在线暖暖韩国| 欧美精品tushy高清| 精品一区二区三区视频在线观看 | 亚洲国产精品二十页| 亚洲高清在线视频| 欧洲av在线精品| 亚洲国产婷婷综合在线精品| 欧美午夜精品久久久|