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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? guidev.c

?? 掌宇公司44b0實驗平臺的測試程序
?? 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一区二区三区免费野_久草精品视频
在线日韩av片| 中文字幕精品一区二区三区精品| ...xxx性欧美| 亚洲国产欧美日韩另类综合| 国产乱理伦片在线观看夜一区| 99精品国产一区二区三区不卡| 欧美一级搡bbbb搡bbbb| 亚洲精品久久久久久国产精华液| 激情文学综合丁香| 欧美伦理电影网| 亚洲欧美国产毛片在线| 国产乱码一区二区三区| 91精品国产高清一区二区三区| 国产精品国产a级| 国产精品1区二区.| 欧美tickling网站挠脚心| 亚洲国产日韩a在线播放| 成人涩涩免费视频| 国产日韩欧美a| 国产在线播放一区| 欧美精品一区二区三区在线播放| 午夜精品福利在线| 欧美性三三影院| 一区二区免费看| 91啪九色porn原创视频在线观看| 国产日韩在线不卡| 国产大片一区二区| 欧美激情在线一区二区三区| 国产乱人伦精品一区二区在线观看| 日韩亚洲欧美综合| 九一久久久久久| 2019国产精品| 国产成人午夜视频| 国产精品欧美一区二区三区| 成人晚上爱看视频| 亚洲视频一二三| 色天使久久综合网天天| 一区二区三区不卡视频| 欧美丝袜丝nylons| 日本不卡中文字幕| 精品国产91乱码一区二区三区 | 91在线丨porny丨国产| 国产精品国产三级国产有无不卡| 国产成人精品午夜视频免费 | 懂色av中文字幕一区二区三区 | 91美女片黄在线| 亚洲欧美色一区| 欧美日韩电影一区| 精品一区二区三区日韩| 国产午夜精品一区二区三区四区| 成人精品免费看| 亚洲黄色片在线观看| 欧美日本一区二区| 韩国精品在线观看| 亚洲欧美色一区| 91麻豆精品国产91久久久| 国产精品一线二线三线精华| 亚洲欧美日韩一区二区| 欧美色图免费看| 国产美女精品在线| 一区二区高清免费观看影视大全| 日韩一本二本av| 99久久伊人久久99| 美女脱光内衣内裤视频久久影院| 久久精子c满五个校花| 色婷婷综合久久久久中文一区二区| 亚洲成人动漫精品| 中文在线一区二区| 欧美日韩美少妇| 成人免费av在线| 久久国产精品99久久人人澡| 中文一区二区在线观看| 欧美群妇大交群中文字幕| 国产精一区二区三区| 午夜精品一区二区三区免费视频| 久久看人人爽人人| 欧美一区二区日韩一区二区| 色就色 综合激情| 国产精品一区免费视频| 日韩黄色免费电影| 亚洲免费视频中文字幕| 久久综合久久鬼色中文字| 欧美日韩免费观看一区二区三区| 国产精品伊人色| 蜜桃视频在线观看一区| 亚洲香肠在线观看| 亚洲视频一区在线| 国产精品欧美经典| 日韩你懂的在线观看| 欧美日韩高清不卡| 日本道在线观看一区二区| 国产超碰在线一区| 国产美女久久久久| 久久电影国产免费久久电影 | 欧美日韩极品在线观看一区| 成人午夜免费av| 国产精品综合视频| 紧缚捆绑精品一区二区| 麻豆国产精品官网| 亚洲gay无套男同| 亚洲国产精品一区二区尤物区| 国产精品久久久久四虎| 日本在线不卡视频一二三区| 亚洲自拍偷拍九九九| 色婷婷久久久亚洲一区二区三区| 盗摄精品av一区二区三区| 欧美日韩一区 二区 三区 久久精品| 亚洲日本在线观看| 国产精品美女久久久久aⅴ | 久久婷婷国产综合国色天香| 国产女同性恋一区二区| 亚洲九九爱视频| 热久久一区二区| 成人av电影免费观看| 欧美日韩国产成人在线91 | 国产精品毛片a∨一区二区三区| 亚洲麻豆国产自偷在线| 蜜臀久久久99精品久久久久久| 国产成人丝袜美腿| 欧美日韩免费视频| 中文字幕在线不卡一区二区三区| 亚洲成人av资源| 成人av午夜电影| 日韩一区二区三区电影| 18涩涩午夜精品.www| 精品一区二区日韩| 欧美调教femdomvk| 国产精品情趣视频| 精品一区二区三区不卡| 欧美区视频在线观看| 国产精品视频一二三区 | 国产一区91精品张津瑜| 欧美美女视频在线观看| 亚洲欧美日韩成人高清在线一区| 蜜桃一区二区三区四区| 欧美日韩一区精品| 中文字幕中文字幕一区二区| 精品一区二区综合| 欧美日本一区二区三区四区| 亚洲女同一区二区| 成人免费视频视频| 久久综合九色综合97婷婷| 天天色综合成人网| 欧美日韩另类国产亚洲欧美一级| 国产精品福利一区二区三区| 国产自产v一区二区三区c| 日韩午夜精品电影| 午夜精品aaa| 欧美性色aⅴ视频一区日韩精品| 国产精品欧美一区二区三区| 国产精品一区二区三区网站| 精品国产一区二区三区久久影院 | 亚洲一区二区在线播放相泽| 不卡视频一二三四| 中文字幕av一区二区三区免费看| 韩国欧美一区二区| 久久久综合视频| 国产在线日韩欧美| 久久蜜桃一区二区| 国产高清无密码一区二区三区| 日韩视频一区二区三区在线播放| 五月婷婷色综合| 91麻豆精品国产91久久久使用方法 | 国产成人精品免费| 国产亚洲成aⅴ人片在线观看| 精品一区二区三区欧美| 久久免费偷拍视频| 成人免费毛片高清视频| 国产精品每日更新在线播放网址| 成人av网在线| 亚洲精品第一国产综合野| 欧美亚洲动漫精品| 香蕉乱码成人久久天堂爱免费| 欧美日韩国产bt| 日本欧美一区二区在线观看| 日韩美女视频一区二区在线观看| 激情综合色丁香一区二区| 久久久蜜臀国产一区二区| 国产成人精品网址| 亚洲蜜桃精久久久久久久| 欧美情侣在线播放| 精品一区二区在线看| 中文欧美字幕免费| 91久久国产最好的精华液| 五月天精品一区二区三区| 日韩欧美一卡二卡| 成人中文字幕电影| 一区二区三区四区av| 欧美日韩一区 二区 三区 久久精品| 蜜乳av一区二区三区| 亚洲国产激情av| 欧美性做爰猛烈叫床潮| 国产在线看一区| 一区二区三区不卡在线观看 | 久久久91精品国产一区二区精品| 成人激情文学综合网| 亚洲国产精品自拍| 国产色综合一区| 色综合激情五月| 激情综合五月婷婷|