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

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

?? gui.c

?? LCD.rar
?? C
?? 第 1 頁 / 共 5 頁
字號:
   GUI_Point(draw_x2, draw_y2, color);
	
   while( (radius_yy*xx) < (radius_xx*yy) ) 
   {
      if(di<0)
      {
         di+= radius_yy2*(2*xx+3);
      }
      else
      {
         di += radius_yy2*(2*xx+3) + 4*radius_xx - 4*radius_xx*yy;
	 	  
         yy--;
         draw_y0--;
         draw_y1--;
         draw_y2++;
         draw_y3++;
      }
	  
      xx ++;						// x軸加1
	 		
      draw_x0++;
      draw_x1--;
      draw_x2++;
      draw_x3--;
		
      GUI_Point(draw_x0, draw_y0, color);
      GUI_Point(draw_x1, draw_y1, color);
      GUI_Point(draw_x2, draw_y2, color);
      GUI_Point(draw_x3, draw_y3, color);
   }
  
   di = radius_xx2*(yy-1)*(yy-1) + radius_yy2*xx*xx + radius_yy + radius_yy2*xx - radius_xx2*radius_yy;
   while(yy>=0) 
   {
      if(di<0)
      {
         di+= radius_xx2*3 + 4*radius_yy*xx + 4*radius_yy - 2*radius_xx2*yy;
	 	  
         xx ++;						// x軸加1
         draw_x0++;
         draw_x1--;
         draw_x2++;
         draw_x3--;
      }
      else
      {
         di += radius_xx2*3 - 2*radius_xx2*yy;
      }
	  
      yy--;
      draw_y0--;
      draw_y1--;
      draw_y2++;
      draw_y3++;
		
      GUI_Point(draw_x0, draw_y0, color);
      GUI_Point(draw_x1, draw_y1, color);
      GUI_Point(draw_x2, draw_y2, color);
      GUI_Point(draw_x3, draw_y3, color);
   }     
}

/****************************************************************************
* 名稱:GUI_EllipseFill()
* 功能:畫正橢圓,并填充。給定橢圓的四個點的參數,最左、最右點的x軸坐標值為x0、x1,最上、最下點
*      的y軸坐標為y0、y1。
* 入口參數:x0		最左點的x坐標值
*           x1		最右點的x坐標值
*           y0		最上點的y坐標值
*           y1          最下點的y坐標值
*           color	填充顏色
* 出口參數:無
* 說明:操作失敗原因是指定地址超出有效范圍。
****************************************************************************/
void  GUI_EllipseFill(uint32 x0, uint32 x1, uint32 y0, uint32 y1, TCOLOR color)
{
   int32  draw_x0, draw_y0;			// 劊圖點坐標變量
   int32  draw_x1, draw_y1;
   int32  draw_x2, draw_y2;
   int32  draw_x3, draw_y3;
   int32  xx, yy;				// 畫圖控制變量
    
   int32  center_x, center_y;		        // 橢圓中心點坐標變量
   int32  radius_x, radius_y;		        // 橢圓的半徑,x軸半徑和y軸半徑
   int32  radius_xx, radius_yy;		        // 半徑乘平方值
   int32  radius_xx2, radius_yy2;	        // 半徑乘平方值的兩倍
   int32  di;					// 定義決策變量
	
   /* 參數過濾 */
   if( (x0==x1) || (y0==y1) )
       return;
   
   /* 計算出橢圓中心點坐標 */
   center_x = (x0 + x1) >> 1;			
   center_y = (y0 + y1) >> 1;
   
   /* 計算出橢圓的半徑,x軸半徑和y軸半徑 */
   if(x0 > x1)
   {
      radius_x = (x0 - x1) >> 1;
   }
   else
   {
      radius_x = (x1 - x0) >> 1;
   }
   if(y0 > y1)
   {
      radius_y = (y0 - y1) >> 1;
   }
   else
   {
      radius_y = (y1 - y0) >> 1;
   }
		
   /* 計算半徑乘平方值 */
   radius_xx = radius_x * radius_x;
   radius_yy = radius_y * radius_y;
	
   /* 計算半徑乘4值 */
   radius_xx2 = radius_xx<<1;
   radius_yy2 = radius_yy<<1;
   
    /* 初始化畫圖變量 */
   xx = 0;
   yy = radius_y;
  
   di = radius_yy2 + radius_xx - radius_xx2*radius_y ;	// 初始化決策變量 
	
   /* 計算出橢圓y軸上的兩個端點坐標,作為作圖起點 */
   draw_x0 = draw_x1 = draw_x2 = draw_x3 = center_x;
   draw_y0 = draw_y1 = center_y + radius_y;
   draw_y2 = draw_y3 = center_y - radius_y;
  
	 
   GUI_Point(draw_x0, draw_y0, color);					// 畫y軸上的兩個端點
   GUI_Point(draw_x2, draw_y2, color);
	
   while( (radius_yy*xx) < (radius_xx*yy) ) 
   {
      if(di<0)
      {
         di+= radius_yy2*(2*xx+3);
      }
      else
      {
         di += radius_yy2*(2*xx+3) + 4*radius_xx - 4*radius_xx*yy;
	 	  
         yy--;
         draw_y0--;
         draw_y1--;
         draw_y2++;
         draw_y3++;
      }
	  
      xx ++;						// x軸加1
	 		
      draw_x0++;
      draw_x1--;
      draw_x2++;
      draw_x3--;
		
      GUI_Point(draw_x0, draw_y0, color);
      GUI_Point(draw_x1, draw_y1, color);
      GUI_Point(draw_x2, draw_y2, color);
      GUI_Point(draw_x3, draw_y3, color);
	  
      /* 若y軸已變化,進行填充 */
      if(di>=0)
      {
         GUI_HLine(draw_x0, draw_y0, draw_x1, color);
         GUI_HLine(draw_x2, draw_y2, draw_x3, color);
      }
   }
  
   di = radius_xx2*(yy-1)*(yy-1) + radius_yy2*xx*xx + radius_yy + radius_yy2*xx - radius_xx2*radius_yy;
   while(yy>=0) 
   {
      if(di<0)
      {
         di+= radius_xx2*3 + 4*radius_yy*xx + 4*radius_yy - 2*radius_xx2*yy;
	 	  
         xx ++;						// x軸加1
         draw_x0++;
         draw_x1--;
         draw_x2++;
         draw_x3--;
      }
      else
      {
         di += radius_xx2*3 - 2*radius_xx2*yy;
      }
	  
      yy--;
      draw_y0--;
      draw_y1--;
      draw_y2++;
      draw_y3++;
		
      GUI_Point(draw_x0, draw_y0, color);
      GUI_Point(draw_x1, draw_y1, color);
      GUI_Point(draw_x2, draw_y2, color);
      GUI_Point(draw_x3, draw_y3, color);
	  
      /* y軸已變化,進行填充 */
      GUI_HLine(draw_x0, draw_y0, draw_x1, color);
      GUI_HLine(draw_x2, draw_y2, draw_x3, color); 
   }     
}
#endif

#if  GUI_FloodFill_EN==1
/****************************************************************************
* 名稱:GUI_ReadLeftPoint()
* 功能:找出指定點左邊最近的非color點。
* 入口參數:x0		指定點的x坐標值
*           y0		指定點的y坐標值
*           color	指定顏色值
* 出口參數:返回該點的x軸坐標值。
* 說明:若沒有找出,則返回最左的x坐標0。
****************************************************************************/
uint32  GUI_ReadLeftPoint(uint32 x0, uint32 y0, TCOLOR color)
{
   uint32  i;
   TCOLOR  bakc;
   
   for(i=x0-1; i>0; i--)
   {
      GUI_ReadPoint(i, y0, &bakc);
      if( GUI_CmpColor(bakc,color)==0 )
         return(i+1);	// 若找到,則返回
   }
   GUI_ReadPoint(i, y0, &bakc);
   if( GUI_CmpColor(bakc,color)==0 )
      return(1);	        	// 若找到,則返回
   
   return(0);
}


/****************************************************************************
* 名稱:GUI_ReadRightPoint()
* 功能:找出指定點右邊最近的非color點。
* 入口參數:x0		指定點的x軸坐標值
*           y0		指定點的y軸坐標值
*           color	指定顏色值
* 出口參數:返回該點的x軸坐標值。
* 說明:若沒有找出,則返回最右的x坐標GUI_LCM_XMAX。
****************************************************************************/
uint32  GUI_ReadRightPoint(uint32 x0, uint32 y0, TCOLOR color)
{
   uint32  i;
   TCOLOR  bakc;
   
   for(i=x0+1; i<GUI_LCM_XMAX; i++)
   {
      GUI_ReadPoint(i, y0, &bakc);
      if( GUI_CmpColor(bakc,color)==0 )
         return(i-1);	                 // 若找到,則返回
   }
   return(GUI_LCM_XMAX);
}


/****************************************************************************
* 名稱:GUI_CmpPointColor()
* 功能:判斷指定點上的顏色是否為某種顏色。
* 入口參數:x		指定點的x軸坐標值
*	    y		指定點的y軸坐標值
*          color	顏色值
* 出口參數:返回1表示相同,返回0表示不相同。
* 說明:
****************************************************************************/
int  GUI_CmpPointColor(uint32 x, uint32 y, TCOLOR color)
{
   TCOLOR  bakc;
   
   GUI_ReadPoint(x, y, &bakc);
   return( GUI_CmpColor(bakc,color) );	
}

/* 定義折點個數 */
#ifndef  DOWNP_N
#define  DOWNP_N		20
#endif
#ifndef	 UPP_N
#define  UPP_N			20
#endif
/****************************************************************************
* 名稱:GUI_FloodFill()
* 功能:圖形填充,將指定點內的封閉圖形進行填充。對指定點的顏色區域進行填充,即不是該顏色
*      的像素為邊界(如,指定點上的顏色為紅色,則其它顏色像素均為邊界)。
* 入口參數:x0		指定點的x坐標值
*           y0		指定點的y坐標值
*           color	填充顏色
* 出口參數:無
* 說明:操作失敗原因是指定地址超出有效范圍、指定點不在封閉圖形內。
****************************************************************************/
void  GUI_FloodFill(uint32 x0, uint32 y0, TCOLOR color)
{
   PointXY  down_point[DOWNP_N];	                // 定義向下填充轉折點緩沖區
   uint8    down_no;				        // 向下折點個數
   PointXY  up_point[UPP_N];		                // 定義向上填充轉折點緩沖區
   uint8    up_no;					// 向上折點個數
   TCOLOR   fcolor;					// 填充點上的顏色
   
   uint32  xx, yy;					// 填充臨時x,y變量 (當前填充行的中點)
   uint32  xx0;						// 當前填充行的左x值變量
   uint32  xx1;						// 當前填充行的右y值變量
   uint32  i;
   
   uint32  x0_bak, y0_bak;
   uint32  x1_bak;
   
   /* 參數過濾 */
   if(x0>=GUI_LCM_XMAX)
      return;
   if(y0>=GUI_LCM_YMAX)
      return;
   
   /* 判斷指定點是否為填充顏色,若是則直接返回 */
   GUI_ReadPoint(x0, y0, &fcolor);					// 取得填充點的顏色
   if( GUI_CmpColor(fcolor,color)!=0 )
      return;
   
   y0_bak = y0;
   x0_bak = xx0 = GUI_ReadLeftPoint(x0, y0, fcolor);			// 找出當前y坐標上的最左邊的點
   x1_bak = xx1 = GUI_ReadRightPoint(x0, y0, fcolor);			// 找出當前y坐標上的最右邊的點
   down_point[0].x = up_point[0].x = (xx1 + xx0)/2;
   down_point[0].y = up_point[0].y = y0;
   down_no = 1;
   up_no = 1;
   					
   /* 開始向上填充 */
FILL_UP:
   if(0==up_no)
      goto FILL_DOWN;							// 若向下掃描已完成,則退出
   xx = up_point[up_no-1].x;						// 否則取出下一折點
   yy = up_point[up_no-1].y;
   up_no--; 
   xx0 = GUI_ReadLeftPoint(xx, yy, fcolor);
   xx1 = GUI_ReadRightPoint(xx, yy, fcolor);
   while(1) 
   {
      yy += 1;								// 中心點向上一點

      if( GUI_CmpPointColor(xx, yy, fcolor)==0 )					
      {  /* 判斷此點是否為終點,若是則退出此次循環 */
         for(i=xx0; i<=xx1; i++)     					// 查找此行是否有需填充點
         {
            if( GUI_CmpPointColor(i, yy, fcolor)!=0 ) break;
         }
         if(i>xx1)
            goto FILL_UP;
         
         /* 找出新一行中最右邊的點 */
         xx = i;							// 更新xx到要填充的有效區域內
         xx1 = GUI_ReadRightPoint(xx, yy, fcolor);
      }
      else
      {  /* 找出新一行中最右邊的點 */
         xx1 = GUI_ReadRightPoint(xx, yy, fcolor);
      }
      xx0 = GUI_ReadLeftPoint(xx, yy, fcolor);
      
      /* 向下折點。使用y0作為折點變量,x0作為上一折點變量 */
      if(down_no<DOWNP_N)
      {
         y0 = xx0;
         x0 = y0-1;
         for(i=y0; i<=xx1; i++)
         {
            if( GUI_CmpPointColor(i, yy-1, fcolor)==0 )                 // 更新折點
            {
               y0 = i;
            }
            else
            {
               if(x0!=y0)						// 找到新的折點
               {
                  x0 = y0;
                  down_point[down_no].x = i;
                  down_point[down_no].y = yy;
                  down_no++;
               }
            }
            if(down_no>=DOWNP_N)
               break;					                // 若緩沖區已保存滿,則退出
         } // end  of for(i=y0+1; i<xx1; i++)
      } // end of if(down_no<DOWNP_N)
      
      xx = (xx1 + xx0)/2;						// 更新中心點
      GUI_HLine(xx0, yy, xx1, color);					// 填充一行
      
      /* 向上折點。使用y0作為折點變量,x0作為上一折點變量 */
      if(up_no<UPP_N)
      {
         y0 = xx0;
         x0 = y0-1;
         for(i=y0; i<=xx1; i++)
         {
            if( GUI_CmpPointColor(i, yy+1, fcolor)==0 )	                // 更新折點
            {
               y0 = i;
            }
            else
            {
               if(x0!=y0)						// 找到新的折點
               {
                  x0 = y0;
                  up_point[up_no].x = i;
                  up_point[up_no].y = yy;
                  up_no++;
               }
            }
            if(up_no>=UPP_N)
               break;				                	// 若緩沖區已保存滿,則退出
         }
      } // end of if(up_no<UPP_N)
   } // end of while(1) 

   /* 向下填充 */
FILL_DOWN: 
   if(0==down_no) 
   {
      if(0==up_no)
      {
         GUI_HLine(x0_bak, y0_bak, x1_bak, color);
         return;							// 若向下掃描已完成,且沒有發現新的向上折點,則退出
      }
      else
      {
         goto FILL_UP;
      }
   }
   xx = down_point[down_no-1].x;					// 否則取出下一折點
   yy = down_point[down_no-1].y;
   down_no--;
   xx0 = GUI_ReadLeftPoint(xx, yy, fcolor);
   xx1 = GUI_ReadRightPoint(xx, yy, fcolor);
   

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本久道中文字幕精品亚洲嫩| 亚洲精品国产成人久久av盗摄| 色综合久久久网| 成人黄色777网| 丁香六月综合激情| 福利91精品一区二区三区| 国产mv日韩mv欧美| 国产ts人妖一区二区| 成人丝袜视频网| 99久久精品免费| 色网综合在线观看| 在线观看视频欧美| 欧美日本不卡视频| 精品久久国产老人久久综合| 精品久久久网站| 精品国产乱码久久久久久闺蜜| 26uuu国产一区二区三区 | 亚洲精品视频免费看| 国产精品福利一区二区| 亚洲精品中文在线| 亚洲国产成人高清精品| 日本不卡中文字幕| 国产成人在线视频网站| 91视频国产观看| 欧美一二区视频| 欧美国产综合一区二区| 中文字幕视频一区| 偷拍与自拍一区| 国产999精品久久久久久| 91美女在线观看| 亚洲精品在线三区| 自拍偷拍欧美精品| 日本在线观看不卡视频| 成人黄色在线看| 69成人精品免费视频| 国产午夜精品在线观看| 亚洲在线免费播放| 丰满亚洲少妇av| 欧美日韩中文国产| 国产免费久久精品| 美国精品在线观看| 91香蕉视频黄| 久久久久久久久久久久电影 | 国产成人午夜99999| 欧美日韩一区国产| 久久久午夜精品理论片中文字幕| 一区二区三区在线免费视频| 国产在线精品视频| 69堂亚洲精品首页| 亚洲综合一区二区三区| 成人激情综合网站| wwww国产精品欧美| 美脚の诱脚舐め脚责91 | 亚洲第四色夜色| 成人午夜免费电影| 精品国产一区二区三区四区四| 亚洲图片欧美一区| 色吧成人激情小说| 亚洲欧美日韩中文字幕一区二区三区| 美女一区二区三区| 欧美高清视频在线高清观看mv色露露十八 | 亚洲国产精品av| 国产在线日韩欧美| 欧美电视剧免费全集观看| 香蕉加勒比综合久久| 欧美在线视频日韩| 亚洲一区精品在线| 在线观看不卡视频| 亚洲精品成人精品456| 99精品视频一区| 亚洲欧美区自拍先锋| 一本久久a久久精品亚洲| 成人欧美一区二区三区1314| www.欧美日韩| 亚洲人成网站在线| 一本久道中文字幕精品亚洲嫩| 日韩美女视频19| 91官网在线观看| 亚洲不卡av一区二区三区| 欧美亚洲综合久久| 日韩电影在线观看电影| 2014亚洲片线观看视频免费| 精品一区二区影视| 国产欧美va欧美不卡在线| 国产91精品在线观看| 亚洲色图欧美偷拍| 欧美日韩视频第一区| 肉色丝袜一区二区| 精品剧情v国产在线观看在线| 国产在线视视频有精品| 久久嫩草精品久久久久| 99re这里只有精品视频首页| 夜夜操天天操亚洲| 日韩丝袜情趣美女图片| 韩国欧美国产1区| 中文字幕一区二区三区在线观看 | 国产亚洲福利社区一区| 国产真实精品久久二三区| 精品日韩成人av| eeuss鲁片一区二区三区在线观看| 自拍偷拍欧美精品| 欧美精品成人一区二区三区四区| 亚洲一区av在线| 精品国产自在久精品国产| 成人精品在线视频观看| 亚洲欧美日韩久久精品| 欧美一区二区人人喊爽| 粉嫩13p一区二区三区| 国产精品久久久久影院亚瑟| 欧美日韩不卡视频| 国产69精品久久久久777| 亚洲国产视频网站| 国产精品乱子久久久久| 欧美一区二区视频在线观看2022| 成人a级免费电影| 免费日本视频一区| 自拍偷拍亚洲欧美日韩| ww亚洲ww在线观看国产| 欧美日韩第一区日日骚| 成人免费视频免费观看| 青青草91视频| 一区二区三区免费| 国产欧美一区在线| 日韩欧美不卡在线观看视频| 91麻豆6部合集magnet| 国产福利电影一区二区三区| 天天做天天摸天天爽国产一区| 中文文精品字幕一区二区| 日韩一卡二卡三卡国产欧美| 色噜噜狠狠成人中文综合 | 久久久91精品国产一区二区三区| 欧美性感一类影片在线播放| 高清在线成人网| 国产成人三级在线观看| 寂寞少妇一区二区三区| 青青草精品视频| 日韩电影一区二区三区| 午夜免费久久看| 天堂成人免费av电影一区| 亚洲美女精品一区| 亚洲色图一区二区| 亚洲日本电影在线| 国产精品不卡在线观看| 国产亲近乱来精品视频| 久久久久国产精品麻豆 | 高清久久久久久| 国产成人免费视| 国产一区 二区 三区一级| 日韩av电影天堂| 日韩av中文在线观看| 午夜精品123| 亚洲h在线观看| 日韩在线一区二区三区| 天天色综合天天| 裸体在线国模精品偷拍| 久久成人久久鬼色| 久久se精品一区精品二区| 精品综合久久久久久8888| 久草精品在线观看| 国产成人精品影院| 不卡免费追剧大全电视剧网站| 9久草视频在线视频精品| 一本色道亚洲精品aⅴ| 欧美亚洲图片小说| 777午夜精品免费视频| 精品国产sm最大网站| 国产精品女人毛片| 一区二区久久久| 秋霞国产午夜精品免费视频| 韩国欧美国产一区| bt欧美亚洲午夜电影天堂| 在线观看欧美黄色| 欧美一级一级性生活免费录像| 精品1区2区在线观看| 中文字幕色av一区二区三区| 亚洲一区二区四区蜜桃| 免费成人在线观看| 成人91在线观看| 日韩一级大片在线| 国产精品久久夜| 日本在线观看不卡视频| 成人综合婷婷国产精品久久| 在线观看91视频| 国产欧美日韩另类视频免费观看| 亚洲欧洲综合另类| 激情欧美一区二区| 欧洲av一区二区嗯嗯嗯啊| 久久综合中文字幕| 天天综合天天做天天综合| 国产一级精品在线| 6080亚洲精品一区二区| 国产亚洲精品超碰| 蜜臀91精品一区二区三区| 99国产精品久久久| 欧美一级欧美三级在线观看| 国产精品对白交换视频| 久久99精品久久久久久国产越南 | 国产麻豆精品视频| 91精品国产日韩91久久久久久| 国产精品国产精品国产专区不片 |