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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? guiaalib.c

?? uCGUI
?? C
字號(hào):
/*************************************************************************************************************
                                                   uC/GUI
                                               嵌入式通用圖形軟件
File        : GUIAALib.C
Purpose     : Antialiasing library
************************************************************************************************************/

#include "GUI_Private.H"
#include "LCD_ConfDefaults.h"            /* Required in order to know max. XSize so we do not waste memory */

#include <stdio.h>
#include <string.h>
#include <math.h>


#ifdef WIN32
  #pragma warning( disable : 4244 )  // Disable warning messages in simulation
  #pragma warning( disable : 4761 )  // Disable warning "integral size mismatch in argument; conversion supplied"
#endif                                      


/*
  *******************************************************************
  *
  *              Config defaults ...
  *
  *******************************************************************
*/
#ifndef GUI_AA_LINEBUFFER_SIZE
  #define GUI_AA_LINEBUFFER_SIZE LCD_XSIZE
#endif

/*
  *******************************************************************
  *
  *              Statics
  *
  *******************************************************************
*/

static U8   abAABuffer[GUI_AA_LINEBUFFER_SIZE];   /* This could be changed to dynamic memory ... */
static U8*  pabAABuffer;
static int  AA_x0, AA_x1, AA_y, AA_x0_InUse, AA_x1_InUse;
static GUI_RECT ClipRect_HL;

static tLCD_HL_APIList           DrawAPICopy;    /* Copy of device function ptr list */
static const tLCD_HL_APIList*    pLCD_HLPrev;    /* Copy of device function ptr list */


/*
          **********************************************
          *                                            *
          *              AA Clean Line Buffer          *
          *                                            *
          **********************************************

*/

static void AA_CleanLine(void) {
  memset(pabAABuffer,0, AA_x1 - AA_x0+1);
  AA_y = -16383;  /* Invalidate */  
  AA_x0_InUse =  16383;
  AA_x1_InUse = -16383;
}

/*
          **********************************************
          *                                            *
          *              AA Flush Line Buffer          *
          *                                            *
          **********************************************

*/

static void AA_FlushLine(void) {
  int i;
  int iEnd = AA_x1_InUse-AA_x0;
  int IMax = GUI_Context.AA_Factor*GUI_Context.AA_Factor;
  for (i =AA_x0_InUse-AA_x0; i<=iEnd; i++) {
    int Intens = *(pabAABuffer+i);
    if (Intens) {
      /* Check we can use line draw */
      if (Intens == IMax) {
        int j;
        for (j=i; j<iEnd; ) {
          if (*(pabAABuffer+j+1) != IMax) {
            break;
          }
          j++;
        }
        /* Draw the full pixel(s) */
        if (j!=i) {
          pLCD_HLPrev->pfDrawHLine(AA_x0+i, AA_y, AA_x0+j);
          i = j;  /*xxx*/
        } else {
          LCD_HL_DrawPixel (AA_x0+i,AA_y);
        }
      } else {
        LCD_SetPixelAA(AA_x0+i,AA_y, (15*Intens+IMax/2)/IMax);
      }
    }    
  }
  AA_CleanLine();
}


/*
          **********************************************
          *                                            *
          *              Local DrawHLine               *
          *                                            *
          **********************************************

  This is the redirected DrawHLine routine which is called
  instead of the default output routine. Its job is to do
  antialiasing and then perform the drawing operations.
*/

static void AA_DrawHLine  (int x0, int y,  int x1) {
  int x0Real, x1Real;
/* Make sure there is something to do */
  if (x1<x0)
    return;
/* Flush line if we are in an other pixel (real) line */
  if (y/GUI_Context.AA_Factor != AA_y) {
    AA_FlushLine();
    AA_y = y/GUI_Context.AA_Factor;
  }
  x0Real = x0/GUI_Context.AA_Factor;
  x1Real = x1/GUI_Context.AA_Factor;
/* Handle used area (speed optimization for drawing) */
  if (x0Real < AA_x0_InUse)
    AA_x0_InUse = x0Real;
  if (x1Real > AA_x1_InUse)
    AA_x1_InUse = x1Real;
/* Clip (should not be necessary ... Just to be on the safe side ! */
  if (x0Real < AA_x0) {
    x0 = AA_x0*GUI_Context.AA_Factor;
  }
  if (x1Real > AA_x1) {
    x1 = (AA_x1+1)*GUI_Context.AA_Factor-1;
  }
/* Make sure there is still something to do (after clipping) */
  if (x1<x0)
    return;
/* Inc. hit counters in buffer */
  {
    int x0_Off = x0/GUI_Context.AA_Factor-AA_x0;
    int x1_Off = x1/GUI_Context.AA_Factor-AA_x0;
    int iRem = x1_Off-x0_Off+1;
    U8 *pDest = pabAABuffer+x0_Off;
    if (iRem ==1) {
      *(pDest) += x1-x0+1;
    } else {
      /* First Pixel */
      *pDest++ += ((x0_Off+AA_x0+1)*GUI_Context.AA_Factor-x0);
      /* Middle Pixels */
      for (;--iRem>1; ) {
        *pDest++ +=GUI_Context.AA_Factor;
      }
      /* Last Pixel */
      *pDest += (1+x1- (x1_Off+AA_x0) *GUI_Context.AA_Factor);
    }
  }
}

/*
  *******************************************************************
  *
  *              CalcClipRectHL
  *
  *******************************************************************
*/
static void CalcClipRectHL(void) {
  ClipRect_HL.x0 =  GUI_Context.ClipRect.x0    * GUI_Context.AA_Factor;
  ClipRect_HL.y0 =  GUI_Context.ClipRect.y0    * GUI_Context.AA_Factor;
  ClipRect_HL.x1 = (GUI_Context.ClipRect.x1+1) * GUI_Context.AA_Factor -1;
  ClipRect_HL.y1 = (GUI_Context.ClipRect.y1+1) * GUI_Context.AA_Factor -1;
}

/******************************************************************
*
*              GUI_AA_Init
*
*******************************************************************
*/

int GUI_AA_Init(int x0, int x1) {
  int r =0;
  /* Bounds checking:
     Make sure x0, x1 are in legal range ...
     (The important point is that they span no more than configured as
      buffer size)
  */
  if (x0<0)
    x0 =0;
  if (x1-x0 > GUI_AA_LINEBUFFER_SIZE-1)
    x1 = x0+GUI_AA_LINEBUFFER_SIZE-1;
  /* Is there anything to do at all ??? */
  if (x1 < x0) {
    x1 = x0;   /* Not really ... */
    r =1;
  }
  DrawAPICopy = *GUI_Context.pLCD_HL; /* Copy API table */
  pLCD_HLPrev = GUI_Context.pLCD_HL; /* Remember list ptr (for restore) */
  DrawAPICopy.pfDrawHLine = AA_DrawHLine;  /* modify function ptr. for hline */
  GUI_Context.pLCD_HL = &DrawAPICopy;      /* Use copy of fp-list */
  pabAABuffer = abAABuffer;
  AA_x0 = x0;
  AA_x1 = x1;
  AA_CleanLine();
  CalcClipRectHL();
  GUI_Context.pClipRect_HL = &ClipRect_HL;
  return r;
}

/******************************************************************
*
*              GUI_AA_Init
*
*******************************************************************
*/

int GUI_AA_Init_HiRes(int x0, int x1) {
  x0 /= GUI_Context.AA_Factor;
  x1 /= GUI_Context.AA_Factor;
  return GUI_AA_Init(x0, x1);
}

/*********************************************************************
*
*              AA Selection of Factors for position and quality
*
**********************************************************************

*/


void GUI_AA_SetFactor(int Factor) {
  GUI_Context.AA_Factor = Factor;
  CalcClipRectHL();      /* High level clipping depends on quality factor */
}

int GUI_AA_GetFactor(void) {
  return GUI_Context.AA_Factor;
}

void GUI_AA_DisableHiRes(void) {
  GUI_Context.AA_HiResEnable = 0;
}

void GUI_AA_EnableHiRes(void) {
  GUI_Context.AA_HiResEnable =1;
}

I16 GUI_AA_HiRes2Pixel(int HiRes) {
  return GUI_Context.AA_Factor ? (HiRes / GUI_Context.AA_Factor) : HiRes;
}

/*
  *******************************************************************
  *
  *              GUI_AA_Exit
  *
  *******************************************************************
*/
void GUI_AA_Exit(void) {
  AA_FlushLine();
  /* restore previous settings */
  GUI_Context.pLCD_HL = pLCD_HLPrev;
  GUI_Context.pClipRect_HL = &GUI_Context.ClipRect;
}

/*********************** EOF FILE *******************************/






?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲精品bt天堂精选| 亚洲免费电影在线| 欧美一级黄色大片| 欧美视频三区在线播放| 国产欧美日韩视频在线观看| 91精品国产91久久久久久一区二区 | 在线不卡的av| 欧美在线观看视频一区二区 | 中文字幕亚洲欧美在线不卡| 欧美极品少妇xxxxⅹ高跟鞋| 国产日韩欧美高清| 国产日韩成人精品| 国产精品动漫网站| 亚洲猫色日本管| 夜夜嗨av一区二区三区网页| 一区二区三区欧美| 亚洲自拍偷拍图区| 五月激情综合网| 热久久国产精品| 久久99精品久久久久婷婷| 久久成人久久爱| 国产高清无密码一区二区三区| 丁香一区二区三区| 91丝袜美腿高跟国产极品老师| 日本道色综合久久| 欧美人妇做爰xxxⅹ性高电影| 日韩一区二区三区四区五区六区| 欧美精品一区二区三| 国产欧美综合在线| 亚洲精品国产高清久久伦理二区| 依依成人综合视频| 日韩成人伦理电影在线观看| 国产剧情一区在线| 成人h精品动漫一区二区三区| 91视视频在线观看入口直接观看www| 色吧成人激情小说| 91精品国产综合久久精品图片| 欧美成人精品3d动漫h| 国产蜜臀97一区二区三区 | 国产一区二区精品在线观看| 成人a级免费电影| 欧洲视频一区二区| 日韩免费福利电影在线观看| 国产精品欧美久久久久无广告| 一区二区三区视频在线看| 日本精品一区二区三区四区的功能| 91高清视频在线| 日韩精品在线看片z| 中文字幕日韩精品一区| 日韩精品一二三四| 成人毛片老司机大片| 欧美乱妇23p| 国产欧美视频一区二区| 亚洲一区二区三区四区五区中文| 精品一区二区三区在线观看 | 国产精品一区在线观看你懂的| 91色婷婷久久久久合中文| 日韩女优av电影在线观看| **欧美大码日韩| 老司机精品视频导航| 日本精品一级二级| 久久网站热最新地址| 亚洲国产精品久久久久秋霞影院| 国产精品亚洲人在线观看| 欧美伊人久久大香线蕉综合69| 久久久蜜桃精品| 五月婷婷综合激情| 99视频超级精品| 久久久777精品电影网影网| 亚洲一区二区三区四区在线| 成人高清视频免费观看| 日韩欧美黄色影院| 亚洲图片欧美综合| 99综合电影在线视频| 精品国产123| 日韩vs国产vs欧美| 色天使久久综合网天天| 中文av一区二区| 国内精品伊人久久久久影院对白| 欧美美女网站色| 亚洲国产美女搞黄色| 99久久久精品免费观看国产蜜| 免费在线观看日韩欧美| 91论坛在线播放| 国产精品久久久久影院亚瑟 | 欧美综合一区二区三区| 国产精品毛片无遮挡高清| 亚洲一区二区在线观看视频| 成人app在线观看| 久久亚洲私人国产精品va媚药| 日韩成人午夜精品| 欧美日韩在线播| 亚洲精品第1页| 大桥未久av一区二区三区中文| 欧美第一区第二区| 日韩电影免费一区| 51精品国自产在线| 天堂成人免费av电影一区| 欧美视频一区二区在线观看| 亚洲综合小说图片| 欧美无乱码久久久免费午夜一区 | 国产精品无圣光一区二区| 精品综合免费视频观看| 精品视频1区2区| 亚洲国产精品久久艾草纯爱| 欧美日韩在线播放一区| 亚洲成av人在线观看| 欧美色综合影院| 午夜伊人狠狠久久| 欧美日韩亚洲国产综合| 亚洲成人午夜电影| 欧美美女激情18p| 丝袜美腿亚洲一区二区图片| 欧美一区二区三区色| 青青草成人在线观看| 日韩精品一区二区三区三区免费| 精品亚洲成a人| 久久久亚洲精品石原莉奈| 国产精品一区二区不卡| 欧美激情中文字幕| 91丝袜国产在线播放| 亚洲一区二区视频在线观看| 欧美日韩国产免费一区二区| 日本欧美一区二区三区乱码| 欧美v国产在线一区二区三区| 激情综合色播激情啊| 中文字幕欧美三区| 91麻豆免费观看| 日日欢夜夜爽一区| 欧美大片在线观看| 风间由美一区二区三区在线观看 | 99视频精品免费视频| 亚洲制服丝袜av| 欧美一区二区久久| 国产高清不卡一区二区| 亚洲精品视频免费观看| 欧美精品日韩综合在线| 欧美三级视频在线播放| 免费高清在线视频一区·| 久久久久久黄色| 色偷偷久久一区二区三区| 日韩中文字幕一区二区三区| 久久综合色之久久综合| 99综合影院在线| 青青草原综合久久大伊人精品| 国产午夜一区二区三区| 91高清视频在线| 国产麻豆视频一区二区| 亚洲欧美日韩国产中文在线| 日韩视频在线一区二区| 国产成人h网站| 亚洲成人激情自拍| 国产日韩av一区| 色八戒一区二区三区| 韩国女主播成人在线观看| 亚洲色图在线播放| 欧美一区二区美女| 91麻豆自制传媒国产之光| 免费成人在线播放| 1区2区3区国产精品| 91精品国产一区二区人妖| 成人一区二区三区视频| 丝袜a∨在线一区二区三区不卡| 国产日韩欧美激情| 91精品国产综合久久蜜臀| 成人av在线看| 久久99精品国产91久久来源| 日韩毛片精品高清免费| 久久你懂得1024| 56国语精品自产拍在线观看| 成人av电影在线网| 老司机免费视频一区二区三区| 亚洲精品乱码久久久久久久久| 久久夜色精品国产欧美乱极品| 欧美三级日韩三级国产三级| 成人一区二区视频| 麻豆精品在线看| 亚洲成人激情av| 1000精品久久久久久久久| 精品国产免费久久| 欧美另类videos死尸| 91麻豆免费看| 成人激情文学综合网| 国产中文字幕精品| 日本一不卡视频| 艳妇臀荡乳欲伦亚洲一区| 欧美国产综合色视频| 精品国内二区三区| 亚洲第一久久影院| 亚洲婷婷综合久久一本伊一区| 国产午夜亚洲精品羞羞网站| 精品国产乱码久久久久久影片| 欧美三区在线观看| 欧美伊人精品成人久久综合97 | 日韩一区二区三区视频在线观看| 91成人国产精品| 成人不卡免费av| 成人免费毛片app| 国产成人在线视频网站| 国产乱子伦视频一区二区三区 |