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

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

?? guidev.c

?? ucgui源碼3.32
?? 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        : GUIDev.C
Purpose     : Implementation of memory devices
---------------------------END-OF-HEADER------------------------------
*/


#include <string.h>
#include "GUI_Private.h"
#include "GUIDebug.h"

/* Memory device capabilities are compiled only if support for them is enabled.*/ 
#if GUI_SUPPORT_MEMDEV


/*
        *********************************************************
        *                                                       *
        *                Macros                                 *
        *                                                       *
        *********************************************************
*/

#define POS_AUTO -4095   /* Position value for auto-pos */

/*
  ********************************************************************
  *
  *                  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 LCD_PIXELINDEX aID[] = {
  INTS(0)
};


/*
        *********************************************************
        *                                                       *
        *           internal routines                           *
        *                                                       *
				*     (not part of interface table)                     *
        *                                                       *
        *********************************************************
*/

LCD_PIXELINDEX* GUI_MEMDEV_XY2PTR(int x,int y) {
  GUI_MEMDEV* pDev = GUI_MEMDEV_h2p(GUI_Context.hDevData);
  U8 *pData = (U8*)(pDev+1);
  #if GUI_DEBUG_LEVEL >= GUI_DEBUG_LEVEL_CHECK_ALL
    if ((x >= pDev->x0+pDev->XSize) | (x<pDev->x0) | (y >= pDev->y0+pDev->YSize) | (y<pDev->y0)) {
      GUI_DEBUG_ERROROUT2("GUI_MEMDEV_XY2PTR: parameters out of bounds",x,y);
    }
  #endif
  pData += (y- pDev->y0) * pDev->BytesPerLine;
  return ((LCD_PIXELINDEX*)pData) + x - pDev->x0;
}




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

static void  DrawBitLine1BPP(GUI_USAGE* pUsage, 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);
  LCD_PIXELINDEX* pData;
  U8  PixelCnt;
  GUI_MEMDEV* pDev = GUI_MEMDEV_h2p(GUI_Context.hDevData);
  PixelCnt = 8- (Diff&7);
  pixels = (*p) << (Diff&7);
  pData = GUI_MEMDEV_XY2PTR(x,y);
  GUI_DEBUG_ERROROUT3_IF( x < pDev->x0, "GUIDEV.c: DrawBitLine1BPP, Act= %d, Border= %d, Clip= %d"
                    ,x,pDev->x0, GUI_Context.ClipRect.x0);
  switch (GUI_Context.DrawMode & (LCD_DRAWMODE_TRANS|LCD_DRAWMODE_XOR)) {
  case 0:    /* Write mode */
  PixelLoopWrite:
    if (PixelCnt>xsize)
      PixelCnt =xsize;
    xsize -= PixelCnt;
    do {
      *pData++ = (pixels&0x80) ? Index1 : Index0;
      pixels<<=1;
    } while (--PixelCnt);
    if (xsize) {
      PixelCnt=8;
      pixels = *(++p);
      goto PixelLoopWrite;
    }
    break;
  case LCD_DRAWMODE_TRANS:
  PixelLoopTrans:
    if (PixelCnt>xsize)
      PixelCnt =xsize;
    xsize -= PixelCnt;
    do {
      if ((pixels&0x80)) {
        if (pUsage)
          GUI_USAGE_AddPixel(pUsage, x,y);
        *pData = Index1;
      }
      x++;
      pData++;
      pixels<<=1;
    } while (--PixelCnt);
    if (xsize) {
      PixelCnt=8;
      pixels = *(++p);
      goto PixelLoopTrans;
    }
    break;
  case LCD_DRAWMODE_XOR:;
  PixelLoopXor:
    if (PixelCnt>xsize)
      PixelCnt =xsize;
    xsize -= PixelCnt;
    do {
      if ((pixels&0x80))
        *pData = pDev->NumColors - 1 - *pData;
      pData++;
      pixels<<=1;
    } while (--PixelCnt);
    if (xsize) {
      PixelCnt=8;
      pixels = *(++p);
      goto PixelLoopXor;
    }
    break;
  }
}

/*
        *********************************************************
        *                                                       *
        *          Draw Bitmap 2 BPP                            *
        *                                                       *
        *********************************************************
*/

static void  DrawBitLine2BPP(GUI_USAGE* pUsage, int x, int y, U8 const*p, int Diff, int xsize, const LCD_PIXELINDEX*pTrans) {
  U8 pixels;
  U8  PixelCnt;
  LCD_PIXELINDEX* pData;
  PixelCnt = 4- (Diff&3);
  pixels = (*p) << ((Diff&3)<<1);
  pData = GUI_MEMDEV_XY2PTR(x,y);
  switch (GUI_Context.DrawMode & (LCD_DRAWMODE_TRANS|LCD_DRAWMODE_XOR)) {
  case 0:    /* Write mode */
  PixelLoopWrite:
    if (PixelCnt>xsize) {
      PixelCnt =xsize;
    }
    xsize -= PixelCnt;
    do {
      *pData++ = *(pTrans + (pixels>>6));
      pixels<<=2;
    } while (--PixelCnt);
    if (xsize) {
      PixelCnt=4;
      pixels = *(++p);
      goto PixelLoopWrite;
    }
    break;
  case LCD_DRAWMODE_TRANS:
  PixelLoopTrans:
    if (PixelCnt>xsize)
      PixelCnt =xsize;
    xsize -= PixelCnt;
    do {
      if (pixels&0xc0) {
        *pData = *(pTrans + (pixels>>6));
        GUI_USAGE_AddPixel(pUsage, x,y);
      }
      pData++;
      pixels<<=2;
    } while (--PixelCnt);
    if (xsize) {
      PixelCnt=4;
      pixels = *(++p);
      goto PixelLoopTrans;
    }
    break;
  case LCD_DRAWMODE_XOR:;
  PixelLoopXor:
    if (PixelCnt>xsize)
      PixelCnt =xsize;
    xsize -= PixelCnt;
    do {
      if ((pixels&0xc0))
        *pData ^= 255;
      pData++;
      pixels<<=2;
    } while (--PixelCnt);
    if (xsize) {
      PixelCnt=4;
      pixels = *(++p);
      goto PixelLoopXor;
    }
    break;
  }
}

/*
        *********************************************************
        *                                                       *
        *          Draw Bitmap 4 BPP                            *
        *                                                       *
        *********************************************************
*/

static void  DrawBitLine4BPP(GUI_USAGE* pUsage, int x, int y, U8 const*p, int Diff, int xsize, const LCD_PIXELINDEX*pTrans) {
  U8 pixels;
  LCD_PIXELINDEX* pData;
  U8  PixelCnt;
  PixelCnt = 2- (Diff&1);
  pixels = (*p) << ((Diff&1)<<2);
  pData = GUI_MEMDEV_XY2PTR(x,y);
  switch (GUI_Context.DrawMode & (LCD_DRAWMODE_TRANS|LCD_DRAWMODE_XOR)) {
/*
          * Write mode *
*/
  case 0:
    /* Draw incomplete bytes to the left of center area */
    if (Diff) {
      *pData = *(pTrans + (pixels >>4));
      pData++;
      xsize--;
      pixels = *++p;
    }
    /* Draw center area (2 pixels in one byte) */
    if (xsize >= 2) {
      int i = xsize>>1;
      xsize &= 1;
      do {
        *pData     = *(pTrans + (pixels>>4));   /* Draw 1. (left) pixel */
        *(pData+1) = *(pTrans + (pixels&15));   /* Draw 2. (right) pixel */
        pData +=2;
        pixels = *++p;
      } while (--i);
    }
    /* Draw incomplete bytes to the right of center area */
    if (xsize) {
      *pData = * (pTrans + (pixels >> 4));
    }
    break;
/*
          * Transparent draw mode *
*/
  case LCD_DRAWMODE_TRANS:
    /* Draw incomplete bytes to the left of center area */
    if (Diff) {
      if (pixels&0xF0) {
        *pData = *(pTrans + (pixels>>4));
        if (pUsage)
          GUI_USAGE_AddPixel(pUsage, x,y);
      }
      pData++;
      x++;
      xsize--;
      pixels = *++p;
    }
    /* Draw center area (2 pixels in one byte) */
    while (xsize >= 2) {
      /* Draw 1. (left) pixel */
      if (pixels&0xF0) {
        *pData = *(pTrans + (pixels>>4));
        if (pUsage)
          GUI_USAGE_AddPixel(pUsage, x,y);
      }
      /* Draw 2. (right) pixel */
      if (pixels &= 15) {
        *(pData+1) = *(pTrans + pixels);
        if (pUsage)
          GUI_USAGE_AddPixel(pUsage, x+1,y);
      }
      pData +=2;
      x+=2;
      xsize-=2;
      pixels = *++p;
    }
    /* Draw incomplete bytes to the right of center area */
    if (xsize) {
      if (pixels >>= 4) {
        *pData = *(pTrans + pixels);
        if (pUsage)
          GUI_USAGE_AddPixel(pUsage, x,y);
      }
    }
    break;
  case LCD_DRAWMODE_XOR:;
  PixelLoopXor:
    if (PixelCnt>xsize)
      PixelCnt =xsize;
    xsize -= PixelCnt;
    do {
      if ((pixels&0xc0))
        *pData ^= 255;
      pData++;
      pixels<<=4;
    } while (--PixelCnt);
    if (xsize) {
      PixelCnt=2;
      pixels = *(++p);
      goto PixelLoopXor;
    }
    break;
  }
}

/*
        *********************************************************
        *                                                       *
        *          Draw Bitmap 8 BPP Trans                      *
        *                                                       *
        *********************************************************
*/

static void  DrawBitLine8BPP(GUI_USAGE* pUsage, int x, int y, U8 const*pSrc, int xsize, const LCD_PIXELINDEX*pTrans) {
  LCD_PIXELINDEX* pDest;
  pDest = GUI_MEMDEV_XY2PTR(x,y);
  switch (GUI_Context.DrawMode & (LCD_DRAWMODE_TRANS|LCD_DRAWMODE_XOR)) {
  case 0:    /* Write mode */
    do {
      *pDest = *(pTrans + *pSrc);
      pDest++;
      pSrc++;
    } while (--xsize);
    break;
  case LCD_DRAWMODE_TRANS:
    do {
      if (*pSrc) {
        *pDest = *(pTrans + *pSrc);
        GUI_USAGE_AddPixel(pUsage, x,y);
      }
      x++;
      pDest++;
      pSrc++;
    } while (--xsize);
    break;
  }
}

/*
        *********************************************************
        *                                                       *
        *          Draw Bitmap 8 BPP No Trans                   *
        *                                                       *
        *********************************************************
*/

static void  DrawBitLine8BPP_DDB(GUI_USAGE* pUsage, int x, int y, U8 const*pSrc, int xsize) {
  LCD_PIXELINDEX* pDest;
  pDest = GUI_MEMDEV_XY2PTR(x,y);
  switch (GUI_Context.DrawMode & (LCD_DRAWMODE_TRANS|LCD_DRAWMODE_XOR)) {
  case 0:    /* Write mode */
    #if LCD_BITSPERPIXEL <=8
      memcpy(pDest, pSrc, xsize);
    #else
      *pDest = *pSrc;
      while (--xsize) {
        *++pDest = *++pSrc;
      }
    #endif
    break;
  case LCD_DRAWMODE_TRANS:
    do {
      if (*pSrc) {
        *pDest = *pSrc;
        GUI_USAGE_AddPixel(pUsage, x,y);
      }
      x++;
      pDest++;
      pSrc++;
    } while (--xsize);
    break;
  }
}

/********************************************************
*
*          Draw Bitmap 16 BPP DDB
*
*********************************************************
*/

#if LCD_BITSPERPIXEL >8
static void  DrawBitLine16BPP_DDB(GUI_USAGE* pUsage, int x, int y, const U16 *pSrc, int xsize) {
  LCD_PIXELINDEX* pDest;
  pDest = GUI_MEMDEV_XY2PTR(x,y);
  switch (GUI_Context.DrawMode & (LCD_DRAWMODE_TRANS|LCD_DRAWMODE_XOR)) {
  case 0:    /* Write mode */
    memcpy(pDest, pSrc, xsize*2);
    break;
  case LCD_DRAWMODE_TRANS:
    do {
      if (*pSrc) {
        *pDest = *pSrc;
        GUI_USAGE_AddPixel(pUsage, x,y);
      }
      x++;
      pDest++;
      pSrc++;
    } while (--xsize);
    break;
  }
}
#endif
/*
        *********************************************************
        *                                                       *
        *         Universal draw Bitmap routine                 *
        *                                                       *
        *********************************************************
*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区视频网站| 日韩欧美电影一区| 欧美大胆一级视频| 国产精品蜜臀在线观看| 日韩电影在线免费| 99久久精品免费精品国产| 欧美日韩极品在线观看一区| 国产亚洲一区字幕| 激情久久五月天| 欧美在线观看视频一区二区三区| 久久久久99精品一区| 视频一区中文字幕| 欧美性猛片aaaaaaa做受| 1024成人网色www| 国产99精品视频| 26uuu国产在线精品一区二区| 亚洲午夜一区二区| 99久免费精品视频在线观看| 久久久一区二区三区捆绑**| 调教+趴+乳夹+国产+精品| 一本久久a久久精品亚洲| 国产精品嫩草99a| 国产成人自拍高清视频在线免费播放| 日韩欧美国产综合| 蜜臀av性久久久久蜜臀aⅴ| 欧美日韩久久一区| 日精品一区二区三区| 欧美三级在线看| 一区二区高清在线| 91成人免费电影| 亚洲午夜久久久久久久久久久| 成人性生交大合| 欧美国产精品中文字幕| 国产成人亚洲精品青草天美| 精品捆绑美女sm三区| 韩国成人福利片在线播放| 欧美一区二区福利视频| 奇米色一区二区| 91精品在线免费| 蜜臀av亚洲一区中文字幕| 欧美电影免费观看高清完整版在线| 日韩影院在线观看| 日韩一区二区三区在线视频| 日韩高清不卡在线| 日韩区在线观看| 国产九九视频一区二区三区| 久久久www成人免费毛片麻豆| 韩国视频一区二区| 欧美韩国日本综合| 99久久er热在这里只有精品15 | 国产91精品久久久久久久网曝门| 精品国产一区二区在线观看| 国产精品乡下勾搭老头1| 中文字幕一区在线观看视频| 91猫先生在线| 日本免费新一区视频| 精品蜜桃在线看| av在线播放一区二区三区| 一区二区免费视频| 精品国产一区二区三区av性色| 国产精品18久久久久久久网站| 亚洲天堂网中文字| 日韩欧美专区在线| 91蝌蚪porny九色| 免费在线观看精品| 国产精品入口麻豆原神| 欧美性淫爽ww久久久久无| 韩国理伦片一区二区三区在线播放| 国产精品天干天干在线综合| 欧美亚洲丝袜传媒另类| 精品一二三四区| 一区二区三区四区视频精品免费| 欧美日本国产视频| 波多野结衣在线aⅴ中文字幕不卡| 亚洲福利一区二区三区| 久久久久久影视| 欧美日韩国产系列| 成人av在线影院| 蜜桃视频一区二区三区在线观看 | 日韩午夜中文字幕| av电影天堂一区二区在线| 免费视频最近日韩| 亚洲品质自拍视频| 久久久国产精华| 欧美一区在线视频| 91行情网站电视在线观看高清版| 国内不卡的二区三区中文字幕| 亚洲欧美日韩综合aⅴ视频| 久久久久久久久蜜桃| 91精品久久久久久久91蜜桃| 99久久er热在这里只有精品15| 激情亚洲综合在线| 丝袜美腿亚洲一区| 亚洲国产欧美另类丝袜| 《视频一区视频二区| 国产日韩欧美精品电影三级在线 | 色综合天天狠狠| 丁香激情综合国产| 国产精品一区二区三区四区| 日本麻豆一区二区三区视频| 一区二区三区不卡视频| 国产精品久久久久久亚洲伦 | 日韩一区二区三区精品视频| 欧美中文字幕一区二区三区亚洲 | 国产在线一区二区| 日韩av高清在线观看| 亚洲18影院在线观看| 亚洲品质自拍视频| 亚洲美女视频在线观看| 亚洲视频一二三区| 亚洲欧美日韩人成在线播放| 中文字幕av一区 二区| 久久日一线二线三线suv| 日韩欧美在线观看一区二区三区| 欧美日韩成人在线| 欧美视频三区在线播放| 欧美三区免费完整视频在线观看| 色综合久久中文综合久久牛| 一本一本久久a久久精品综合麻豆| caoporm超碰国产精品| 99久久精品国产导航| 91久久精品国产91性色tv| 色丁香久综合在线久综合在线观看| 成人黄色软件下载| 99久久精品一区| 欧美亚洲综合色| 日韩一区二区在线看| 欧美精品一区二区三区蜜桃| 久久久亚洲欧洲日产国码αv| 久久久久久久久久久久久夜| 国产亚洲精品资源在线26u| 国产精品久久久久久久午夜片| 亚洲少妇最新在线视频| 一区二区三区 在线观看视频| 午夜亚洲福利老司机| 久久99久久99小草精品免视看| 国产综合色在线视频区| 国产精品456露脸| 91丨porny丨户外露出| 欧美日本在线看| 国产午夜亚洲精品理论片色戒| 欧美激情一区二区三区四区| 亚洲激情综合网| 美女www一区二区| 99久久99久久综合| 欧美麻豆精品久久久久久| 精品成a人在线观看| 亚洲视频你懂的| 成人欧美一区二区三区在线播放| 亚洲成av人片一区二区梦乃| 国内久久精品视频| 色美美综合视频| 久久久亚洲国产美女国产盗摄| 亚洲欧美视频在线观看视频| 久久99九九99精品| 欧美中文字幕一区二区三区| 久久一区二区三区国产精品| 亚洲精品精品亚洲| 激情五月播播久久久精品| 欧美在线观看视频一区二区| 久久久不卡网国产精品二区| 亚洲成人精品一区二区| 成人深夜视频在线观看| 6080亚洲精品一区二区| 国产精品九色蝌蚪自拍| 狠狠色丁香九九婷婷综合五月 | 国产激情精品久久久第一区二区 | 亚洲精品免费在线观看| 国产专区欧美精品| 欧美丰满嫩嫩电影| √…a在线天堂一区| 国产在线一区观看| 欧美一区二区福利在线| 亚洲综合激情网| 成人h动漫精品一区二| 欧美精品一区二区不卡| 亚洲成人免费视频| 欧美主播一区二区三区美女| 国产精品嫩草99a| 国产麻豆91精品| 日韩精品一区二区三区四区| 亚洲国产一区二区在线播放| 成人一区在线看| 久久婷婷色综合| 精品一区二区久久| 欧美xxxxxxxxx| 手机精品视频在线观看| 欧美这里有精品| 亚洲综合在线电影| 色哟哟一区二区三区| 亚洲欧美中日韩| 色吊一区二区三区| 亚洲精品欧美专区| 欧美最新大片在线看| 亚洲麻豆国产自偷在线| 在线影视一区二区三区| 亚洲精品日韩一| 欧美日韩黄色影视| 天堂成人免费av电影一区| 欧美日韩成人综合在线一区二区|