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

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

?? guicirc.c

?? Keil C下通過的UCGUI,UCGUI的移植源代碼
?? C
字號:
/*
*********************************************************************************************************
*                                                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        : GUICirc.C
Purpose     : Circle and ellipse drawing functions
----------------------------------------------------------------------
Version-Date---Author-Explanation
----------------------------------------------------------------------
1.00.02 011115 JE     a) GL_FillEllipse, GL_FillCircle, GL_DrawCircle changed
1.00.01 011113 JE     a) GL_DrawEllipse changed
1.00.00 991206 RS     First release
----------------------------------------------------------------------
Known problems or limitations with current version
----------------------------------------------------------------------
None.
----------------------------------------------------------------------
Open issues
----------------------------------------------------------------------
None
---------------------------END-OF-HEADER------------------------------
*/


#include <stddef.h>           /* needed for definition of NULL */
#include "gui\Core\GUI_Private.h"


/*
      *************************************************
      *                                               *
      *            Draw Circle                        *
      *                                               *
      *************************************************
*/

static  void Draw8Point(int x0,int y0, int xoff, int yoff) {
  LCD_HL_DrawPixel(x0+xoff,y0+yoff);
  LCD_HL_DrawPixel(x0-xoff,y0+yoff);
  LCD_HL_DrawPixel(x0+yoff,y0+xoff);
  LCD_HL_DrawPixel(x0+yoff,y0-xoff);
  if (yoff) {
    LCD_HL_DrawPixel(x0+xoff,y0-yoff);
    LCD_HL_DrawPixel(x0-xoff,y0-yoff);
    LCD_HL_DrawPixel(x0-yoff,y0+xoff);
    LCD_HL_DrawPixel(x0-yoff,y0-xoff);
  }
}


void GL_DrawCircle(int x0, int y0, int r) {
  I32 i;
  int imax = ((I32)((I32)r*707))/1000+1;
  I32 sqmax = (I32)r*(I32)r+(I32)r/2;
  I32 y=r;
  Draw8Point(x0,y0,r,0);
  for (i=1; i<= imax; i++) {
    if ((i*i+y*y) >sqmax) {
      Draw8Point(x0,y0,i,y);
      y--;
    }
    Draw8Point(x0,y0,i,y);
  }
}

void GUI_DrawCircle       (int x0, int y0, int r) {
  #if (GUI_WINSUPPORT)
    GUI_RECT Rect;
  #endif
  GUI_LOCK();
  #if (GUI_WINSUPPORT)
    WM_ADDORG(x0,y0);
    Rect.x0 = x0-r;
    Rect.x1 = x0+r;
    Rect.y0 = y0-r;
    Rect.y1 = y0+r;
    WM_ITERATE_START(&Rect); {
  #endif
    GL_DrawCircle( x0, y0, r);
  #if (GUI_WINSUPPORT)
    } WM_ITERATE_END();
  #endif
  GUI_UNLOCK();
}


/*
      *************************************************
      *                                               *
      *            Fill Circle                        *
      *                                               *
      *************************************************
*/
void GL_FillCircle       (int x0, int y0, int r) {
  I32 i;
  int imax = ((I32)((I32)r*707))/1000+1;
  I32 sqmax = (I32)r*(I32)r+(I32)r/2;
  I32 x=r;
  LCD_HL_DrawHLine(x0-r,y0,x0+r);
  for (i=1; i<= imax; i++) {
    if ((i*i+x*x) >sqmax) {
      /* draw lines from outside */
      if (x>imax) {
        LCD_HL_DrawHLine (x0-i+1,y0+x, x0+i-1);
        LCD_HL_DrawHLine (x0-i+1,y0-x, x0+i-1);
      }
      x--;
    }
    /* draw lines from inside (center) */
    LCD_HL_DrawHLine(x0-x,y0+i, x0+x);
    LCD_HL_DrawHLine(x0-x,y0-i, x0+x);
  }
}

void GUI_FillCircle       (int x0, int y0, int r) {
  GUI_LOCK();
  #if (GUI_WINSUPPORT)
    WM_ADDORG(x0,y0);
    WM_ITERATE_START(NULL); {
  #endif
  GL_FillCircle(x0,y0,r);
  #if (GUI_WINSUPPORT)
    } WM_ITERATE_END();
  #endif
  GUI_UNLOCK();
}



/*
        *********************************************************
        *                                                       *
        *               Ellipse drawing / filling               *
        *                                                       *
        *********************************************************

The most efficient way to calculate the ellipse positions
is using the knowledge that the ellipse is just circle which has
compressed (or stretched) in one direction. For a circle, the
following equation holds true for all points located on the border of
it:
               x^2 + y(x)^2 = r^2 = const

Therefor, for an ellipse we can make use of the following equation:

               (ry*x)^2 + (rx*y(x))^2 = (ry*rx)^2 = const

*/

void GL_FillEllipse      (int x0, int y0, int rx, int ry) {
  I32 OutConst, Sum, SumY;
  int x,y;
  U32 _rx = rx;
  U32 _ry = ry;
  OutConst = _rx*_rx*_ry*_ry  /* Constant as explaint above */
            +(_rx*_rx*_ry>>1); /* To compensate for rounding */
  x = rx;
  for (y=0; y<=ry; y++) {
    SumY =((I32)(rx*rx))*((I32)(y*y)); /* Does not change in loop */
    while (Sum = SumY + ((I32)(ry*ry))*((I32)(x*x)),
           (x>0) && (Sum>OutConst))
    {
      x--;
    }
    LCD_HL_DrawHLine(x0-x, y0+y, x0+x);
    if (y)
      LCD_HL_DrawHLine(x0-x, y0-y, x0+x);
  }
}

void GUI_FillEllipse      (int x0, int y0, int rx, int ry) {
  #if (GUI_WINSUPPORT)
    GUI_RECT r;
  #endif
  GUI_LOCK();
  #if (GUI_WINSUPPORT)
    WM_ADDORG(x0,y0);
    /* Calc rectangle in order to avoid unnecessary drawing ops. */
    r.x0 = x0-rx; r.x1 = x0+rx; r.y0 = y0-ry; r.y1 = y0+ry;
    WM_ITERATE_START(&r); {
  #endif
  GL_FillEllipse (x0,y0, rx, ry);
  #if (GUI_WINSUPPORT)
    } WM_ITERATE_END();
  #endif
  GUI_UNLOCK();
}

void GL_DrawEllipse      (int x0, int y0, int rx, int ry) {
  I32 OutConst, Sum, SumY;
  int x,y;
  int xOld;
  U32 _rx = rx;
  U32 _ry = ry;
  OutConst = _rx*_rx*_ry*_ry  /* Constant as explaint above */
            +(_rx*_rx*_ry>>1); /* To compensate for rounding */
  xOld = x = rx;
  for (y=0; y<=ry; y++) {
    if (y==ry) {
      x=0;
    } else {
      SumY =((I32)(rx*rx))*((I32)(y*y)); /* Does not change in loop */
      while (Sum = SumY + ((I32)(ry*ry))*((I32)(x*x)),
             (x>0) && (Sum>OutConst)) x--;
    }
/* Since we draw lines, we can not draw on the first
    iteration
*/
    if (y) {
      GL_DrawLine1(x0-xOld,y0-y+1,x0-x,y0-y);
      GL_DrawLine1(x0-xOld,y0+y-1,x0-x,y0+y);
      GL_DrawLine1(x0+xOld,y0-y+1,x0+x,y0-y);
      GL_DrawLine1(x0+xOld,y0+y-1,x0+x,y0+y);
    }
    xOld = x;
  }
}

void GUI_DrawEllipse      (int x0, int y0, int rx, int ry) {
  #if (GUI_WINSUPPORT)
    GUI_RECT r;
  #endif
  GUI_LOCK();
  #if (GUI_WINSUPPORT)
    WM_ADDORG(x0,y0);
  /* Calc rectangle in order to avoid unnecessary drawing ops. */
    r.x0 = x0-rx; r.x1 = x0+rx; r.y0 = y0-ry; r.y1 = y0+ry;
    WM_ITERATE_START(&r); {
  #endif
  GL_DrawEllipse(x0, y0, rx, ry);
  #if (GUI_WINSUPPORT)
    } WM_ITERATE_END();
  #endif
  GUI_UNLOCK();
}














?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人妖精视频yjsp地址| 粉嫩高潮美女一区二区三区| 美女一区二区在线观看| av在线一区二区三区| 日韩欧美美女一区二区三区| 国产精品福利一区二区三区| 免费高清成人在线| 色综合久久88色综合天天免费| 日韩欧美国产精品| 亚洲午夜精品17c| 91色综合久久久久婷婷| 精品国产第一区二区三区观看体验| 一区二区三区四区在线| 成熟亚洲日本毛茸茸凸凹| 欧美va在线播放| 亚洲高清一区二区三区| 色狠狠av一区二区三区| 国产精品卡一卡二卡三| 国产精品一区二区三区网站| 日韩欧美国产综合| 日本怡春院一区二区| 91精品办公室少妇高潮对白| 中文字幕亚洲一区二区av在线| 国产精品亚洲一区二区三区妖精 | 视频一区视频二区中文字幕| 色哟哟日韩精品| 亚洲男人的天堂网| 色综合久久中文字幕综合网| 国产精品国产三级国产aⅴ无密码| 久久成人免费网| 精品国产99国产精品| 久久精品99国产精品| 欧美成人video| 精品在线你懂的| 精品久久久久久综合日本欧美| 久久精品国产99久久6| 日韩精品一区在线观看| 蜜桃视频一区二区三区在线观看| 日韩一卡二卡三卡四卡| 久久99精品久久只有精品| 欧美精品一区二区高清在线观看| 国内不卡的二区三区中文字幕| 欧美mv和日韩mv国产网站| 黑人精品欧美一区二区蜜桃 | 337p亚洲精品色噜噜噜| 日日夜夜精品免费视频| 欧美一区永久视频免费观看| 激情成人综合网| 久久精品一区二区三区av| 暴力调教一区二区三区| 亚洲黄色av一区| 欧美一区二区三区小说| 国产精品亚洲专一区二区三区| 国产精品成人一区二区三区夜夜夜| 色哟哟精品一区| 首页欧美精品中文字幕| 久久精品一区二区三区四区| 91麻豆自制传媒国产之光| 亚洲国产日日夜夜| 欧美成人一级视频| 9i看片成人免费高清| 亚洲国产视频a| 久久影院午夜论| 91黄色免费观看| 免费的国产精品| 中文字幕第一区| 欧美色电影在线| 国产精品一区不卡| 亚洲一卡二卡三卡四卡| 久久精品亚洲精品国产欧美 | 久久久久国色av免费看影院| 99v久久综合狠狠综合久久| 天天色天天操综合| 欧美激情综合五月色丁香小说| 欧美午夜电影在线播放| 国产精品一区三区| 日韩一区精品视频| 中文字幕在线不卡视频| 精品久久久网站| 欧美日韩一级黄| 99久久综合精品| 久久99精品一区二区三区三区| 一个色妞综合视频在线观看| 久久久www成人免费毛片麻豆| 欧美三级视频在线| 成人久久视频在线观看| 另类综合日韩欧美亚洲| 一区二区三区av电影| 国产欧美1区2区3区| 欧美一区二区三区视频在线| 色综合久久久网| 福利91精品一区二区三区| 奇米一区二区三区| 亚洲电影一区二区三区| 日韩理论片在线| 国产午夜精品美女毛片视频| 日韩一区二区在线观看视频| 欧美三级视频在线观看| 91黄视频在线| 日本道精品一区二区三区 | 久久九九99视频| 精品久久久网站| 日韩午夜激情视频| 欧美老肥妇做.爰bbww视频| 色先锋资源久久综合| 99久久伊人久久99| www.激情成人| 国产91精品免费| 国产不卡视频在线观看| 国产黄色91视频| 国产黄人亚洲片| 国产精品白丝av| 丰满亚洲少妇av| 风间由美一区二区av101 | 国产精品乱人伦中文| 久久久国产精品午夜一区ai换脸| 精品久久久久久久人人人人传媒| 91精品国产麻豆| 日韩女优制服丝袜电影| 日韩精品一区二区在线观看| 欧美一区二区三区小说| 欧美va亚洲va国产综合| 精品国产乱码久久久久久图片| 精品99999| 国产欧美日韩亚州综合| 国产精品乱人伦中文| 亚洲欧美福利一区二区| 亚洲国产综合色| 视频一区欧美精品| 国产一区二区久久| 成人在线综合网站| 91色在线porny| 欧美伦理电影网| 欧美不卡一区二区三区四区| 久久久久久免费网| 综合久久久久久| 亚洲第一二三四区| 国产一区中文字幕| 91丨porny丨在线| 欧美三级一区二区| 久久综合成人精品亚洲另类欧美 | 亚洲福利电影网| 久久99蜜桃精品| 夫妻av一区二区| 欧美日韩一区二区电影| 欧美电视剧在线看免费| 亚洲欧洲精品一区二区三区不卡| 一区二区在线免费观看| 美女视频网站久久| 一级日本不卡的影视| 秋霞电影网一区二区| 国内一区二区在线| av高清不卡在线| 91精品久久久久久久99蜜桃| 久久亚洲精精品中文字幕早川悠里 | 久久丝袜美腿综合| 亚洲精品乱码久久久久久日本蜜臀| 午夜精品影院在线观看| 亚洲无人区一区| 欧美在线观看视频一区二区| 5858s免费视频成人| 日韩你懂的在线播放| 1024成人网| 久久99精品国产.久久久久 | 91成人国产精品| 日韩一区二区三区四区五区六区| 国产欧美日韩在线看| 天天色综合天天| 精品一区二区三区视频| 欧美喷水一区二区| 亚洲一卡二卡三卡四卡无卡久久 | 日韩成人免费电影| 这里只有精品视频在线观看| 午夜欧美一区二区三区在线播放| 欧美日韩大陆在线| 奇米精品一区二区三区在线观看一| 欧美日韩一卡二卡三卡 | 久久成人久久爱| 精品久久五月天| 国产成人精品在线看| 中文字幕第一区综合| 91污片在线观看| 夜夜夜精品看看| 8v天堂国产在线一区二区| 亚洲欧美一区二区不卡| 在线一区二区观看| 五月天丁香久久| 精品国产一区二区三区四区四| 国产精品影视在线| 亚洲男女一区二区三区| 欧美另类一区二区三区| 久久99精品久久久久婷婷| 久久久久国产精品免费免费搜索| 99久久综合国产精品| 亚洲国产精品尤物yw在线观看| 欧美四级电影网| 国产中文字幕一区| 亚洲精品免费在线| 欧美一区二区免费视频| 丁香六月综合激情|