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

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

?? frontend.c

?? PDF417編碼的算法的源程序
?? C
?? 第 1 頁 / 共 5 頁
字號:
        {
          line_data[jj] = 127;
        }
      else
	{
	  line_data[jj] = 0;
        }
    }

  
  if ( debug) 
    {
      printf("End smooth line \n");
    }
}

/**************************************************************************
 *  line_fast                                                             *
 *    gets a line using Bresenham's line-drawing algorithm, which uses   *
 *    no multiplication or division.                                      *
 *    gets data from pixel array and puts in line_data                    *
 **************************************************************************/

void line_fast(int x1, int y1, int x2, int y2)
{
  int i,dx,dy,sdx,sdy,dxabs,dyabs,x,y,px,py;

  dx=x2-x1;      /* the horizontal distance of the line */
  dy=y2-y1;      /* the vertical distance of the line */
  dxabs=abs(dx);
  dyabs=abs(dy);
  sdx=sgn(dx);
  sdy=sgn(dy);
  x=dyabs>>1;
  y=dxabs>>1;
  px=x1;
  py=y1;

  pixel_cnt = 0;

  get_pixel(px,py);

  if (dxabs>=dyabs) /* the line is more horizontal than vertical */
  {
    for(i=0;i<dxabs;i++)
    {
      y+=dyabs;
      if (y>=dxabs)
      {
        y-=dxabs;
        py+=sdy;
      }
      px+=sdx;
      get_pixel(px,py);
    }
  }
  else /* the line is more vertical than horizontal */
  {
    for(i=0;i<dyabs;i++)
    {
      x+=dxabs;
      if (x>=dyabs)
      {
        x-=dyabs;
        px+=sdx;
      }
      py+=sdy;
      get_pixel(px,py);
    }
  }
}

/**************************************************************************
 *  line_fast_post                                                       *
 *    gets a line using Bresenham's line-drawing algorithm, which uses   *
 *    no multiplication or division.                                      *
 *   get data from the pix_out and puts it in post_line_data              *
 **************************************************************************/

void line_fast_post(int x1, int y1, int x2, int y2)
{
  int i,dx,dy,sdx,sdy,dxabs,dyabs,x,y,px,py;

  dx=x2-x1;      /* the horizontal distance of the line */
  dy=y2-y1;      /* the vertical distance of the line */
  dxabs=abs(dx);
  dyabs=abs(dy);
  sdx=sgn(dx);
  sdy=sgn(dy);
  x=dyabs>>1;
  y=dxabs>>1;
  px=x1;
  py=y1;

  post_pixel_cnt = 0;

  get_pixel_post(px,py);

  if (dxabs>=dyabs) /* the line is more horizontal than vertical */
  {
    for(i=0;i<dxabs;i++)
    {
      y+=dyabs;
      if (y>=dxabs)
      {
        y-=dxabs;
        py+=sdy;
      }
      px+=sdx;
      get_pixel_post(px,py);
    }
  }
  else /* the line is more vertical than horizontal */
  {
    for(i=0;i<dyabs;i++)
    {
      x+=dxabs;
      if (x>=dyabs)
      {
        x-=dyabs;
        px+=sdx;
      }
      py+=sdy;
      get_pixel_post(px,py);
    }
  }
}

/**************************************************************************
 *  line_fast norm                                                      *
 *    gets a line using Bresenham's line-drawing algorithm, which uses   *
 *    no multiplication or division.                                      *
 *    gets data from pixel_array but puts result in norm_line_data        *
 **************************************************************************/

void line_fast_norm(int x1, int y1, int x2, int y2)
{
  int i,dx,dy,sdx,sdy,dxabs,dyabs,x,y,px,py;

  dx=x2-x1;      /* the horizontal distance of the line */
  dy=y2-y1;      /* the vertical distance of the line */
  dxabs=abs(dx);
  dyabs=abs(dy);
  sdx=sgn(dx);
  sdy=sgn(dy);
  x=dyabs>>1;
  y=dxabs>>1;
  px=x1;
  py=y1;

  pixel_cnt = 0;

  get_pixel_norm(px,py);

  if (dxabs>=dyabs) /* the line is more horizontal than vertical */
  {
    for(i=0;i<dxabs;i++)
    {
      y+=dyabs;
      if (y>=dxabs)
      {
        y-=dxabs;
        py+=sdy;
      }
      px+=sdx;
      get_pixel_norm(px,py);
    }
  }
  else /* the line is more vertical than horizontal */
  {
    for(i=0;i<dyabs;i++)
    {
      x+=dxabs;
      if (x>=dyabs)
      {
        x-=dyabs;
        px+=sdx;
      }
      py+=sdy;
      get_pixel_norm(px,py);
    }
  }
}

// draw a normal at a point

void draw_normal(int nx, int ny, int nslope, int ndir, int ylen)
{
  int ii;
  int xinc, yinc;
  int dark_percent;

  int bits_on_cnt;
  int num_dark;
  int first_dark;
  int first_dark_ind;
  int debug;

  debug = 0;

  if (debug)
    {
     printf("In draw normal , x,y = %d %d \n",nx, ny );
     printf("Slope = %d \n", nslope);
     printf("ylen = %d \n", ylen);
     printf("dir = %d \n",ndir);
    }


  if ( ndir == 1)  // positive x and positive y incr
    {
       yinc = (ylen);
       xinc = (((ylen) * slope) / 100);
      
      line_fast_norm(nx, ny, nx + xinc, ny+yinc);
    }

  if ( ndir == -1)   // negative x incr and positive y incr
    {
       yinc = (ylen);
       xinc = 0- (( (ylen) * slope) / 100);

      line_fast_norm(nx, ny, nx + xinc, ny+yinc);
    }

  num_dark = 0;

  first_dark = FALSE;
  first_dark_ind = -1;

  for ( ii = 0; ii < pixel_cnt; ii += 1)
    {
      if ( norm_line_data[ii] > dark_threshold)
	{
          if ( first_dark == FALSE)
	    {
	      first_dark = TRUE;
              first_dark_ind = ii;
            }
         
	  num_dark += 1;
        }
      if (debug) {  printf("norm line %d = %d \n",ii, norm_line_data[ii]); }

    }

  if (debug)
    {
      printf("num_dark = %d \n",num_dark);
      printf("First dark at = %d \n",first_dark_ind);
    }

  dark_percent = (num_dark * 100) / pixel_cnt;

  if (debug) { printf("Dark percent = %d \n", dark_percent); }

  norm_fdark_ind = first_dark_ind;
  
}


 // use a binary search to find the index in the
 // bit_array of the pdf barcode
 //
 int find_index( long inbits, int code_in, int column, int row)
 {

   int ii;
   int found_index;
   int bit_index;
   int bit_increment;
   int found;
   int less_than_flag;

   int debug;

   bit_index = 1392;

   bit_increment = 696;

   found = FALSE;

   less_than_flag = FALSE;

   debug = 0;

   if ( debug) { printf("Inbits = %x \n", inbits); }

   while (( found == FALSE ) && (bit_increment > 11 ))
     {
       if (debug)
	 {
	     printf(" bit_array val = %x , inbits = %x \n",
				  bit_array[bit_index], inbits); 
	 }
      if (bit_array[bit_index] > inbits)
	{
	 bit_index = bit_index - bit_increment;
	 less_than_flag = FALSE;
	}
      else
	{
	  if (bit_array[bit_index] == inbits)
	    {
	      found = TRUE;
	      found_index = bit_index;
	    }
	  else  // less than 
	    {
	     bit_index = bit_index + bit_increment;
	     less_than_flag = TRUE;
	    }
	}

      bit_increment = bit_increment / 2;

      if (debug)
	{
	 printf("In find loop , bit_increment = %d \n", bit_increment);
	 printf("In find loop , bit_index = %d \n", bit_index);
	}

     }

  if ( found == FALSE)
    {
      ii = 0;
      if ( debug) { printf("no less than flag , bit_index = %d \n",bit_index); }
      while (( found == FALSE) && ( ii < 25) && ( bit_index < 2759))
	{
	   if (bit_array[bit_index + ii] == inbits)
	     {
	      found = TRUE;
	      found_index = bit_index + ii;
	     }
	   ii += 1;        
	}
    }

  if ( found == FALSE)
    {
      ii = 0;
      if (debug) { printf("less than flag , bit_index = %d \n",bit_index); }
      while (( found == FALSE) && ( ii > -25) && ( bit_index > 26))
	{
	  if ( bit_index + ii > 0)
	   {
	    if (bit_array[bit_index + ii] == inbits)
	     {
	      found = TRUE;
	      found_index = bit_index + ii;
	     }
	   }
	   ii -= 1;        
	}
    }

  if (found == FALSE)
    {

      // do an exhaustive search

     ii = 0;

     if (debug) { printf("Doing exhaustive search \n"); }

     while ( ( ii < 2784 ) && (found == FALSE))
       {
	  if ( bit_array[ii] == inbits)
	    {
	     found = TRUE;
	     found_index = ii;
	    }
	   ii += 1;
       }
    }

    if (found == FALSE)
      {
	if (code_in == 0)
	  {
           printf(" Top left module not found in bit_array = 0x%x \n", inbits);
          }

	if (code_in == 1)
	  {
           printf(" Bottom left module not found in bit_array = 0x%x \n", inbits);
          }
	if (code_in == 2)
	  {
	    if ( debug) 
              {
               printf(" Column,row module not found in bit_array = 0x%x \n", inbits);
               printf(" Column = %d row = %d\n", column, row);
              }
          }
       return(-1);
      }
    else
      {
       return( found_index );
      }

 }


// find the differences in the x ( row ) grey values 
//  for each y location in pix_col data
//

void do_pixcol_diffy(int inwidth, int inheight)
{
  int ii;
  int jj;
  int kk;
  int diff_data[OUT_MAX_X_PIXEL];
  int diff_tots[OUT_MAX_X_PIXEL];
  int first_deriv[OUT_MAX_X_PIXEL];
  int diff_tots_sorted[OUT_MAX_X_PIXEL];
  int total_diff;
  int prev_total;
  long cum_total;
  long avg_total;
  int prev_line;
  int x_space;
  int est_bar_width;
  int debug;


  debug = 0;

  diff_data[0] = 0;
  diff_data[1] = 0;
  diff_data[2] = 0;

  cum_total = 0;
  total_diff = 0;
  prev_total = 0;
  if (debug)
    {
       printf(" In do pix_col_diffy, inwidth, inheight = %d %d \n",
                           inwidth, inheight);
    }
  for ( jj = 3; jj < inwidth; jj += 1)
    {
      total_diff = 0;
      for ( ii = 0; ii < inheight ; ii += 1)
	{
      diff_data[ii] = abs(pix_cols[jj][ii].greyval - pix_cols[jj-3][ii].greyval);
      total_diff = total_diff + diff_data[ii];
        }
      diff_tots[jj]= total_diff;
      cum_total = total_diff + cum_total;
      first_deriv[jj] = total_diff - prev_total;
      prev_total = total_diff;
     }  

  if ( inwidth != 0)
    {
     avg_total = cum_total/inwidth;
    }
  else
    {
      printf("In pixcol_diff_y, inwidth = 0 , internal error \n");
      exit(0);
    }


  if (debug)
    { printf("avg total = %d \n", avg_total); }

  for ( jj = 0; jj < inwidth; jj += 1)
    {
      if (debug)
        {
      printf(" jj = %d diff_tots = %d 1st deriv = %d \n",jj, diff_tots[jj],
                first_deriv[jj]);
        }
    }

  kk = 0;
  prev_line = 0;
  for ( jj = 5; jj < inwidth; jj += 1)
    {
      if (( first_deriv[jj] > 0) && ( first_deriv[jj+1] < 0))
        {
          if ( (long) diff_tots[jj] > (avg_total/2 ))
            {
             
              if ( kk < MAX_LINES_X)
		{
		  if ( kk > 0)
                    {
                     if (( jj - pix_col_xline[kk-1]) > (int) (best_onewf /2))
		      {
		       pix_col_xline[kk] = jj;
                       x_space = jj - prev_line;
                       prev_line = jj;  
                       kk += 1;
		      }
                    }
                  else
                    {
                    if ( jj  > (int) (best_onewf /2))
		      {
		       pix_col_xline[kk] = jj;
                       x_space = jj - prev_line;
                       prev_line = jj;  
                       kk += 1;
		      }
                    }
                }
              else
		{
		  printf("Too many vertical lines in pix_col \n");
                }
              if (debug)
                {
                 printf("Candidate at jj = %d  x_space = %d \n",jj, x_space);
                }
            }
        }
    }
    
  vert_line_cnt = kk;

  if ( kk != 0)
    {
     est_bar_width = (inwidth * 10 )/ kk;
    }
  else
    {
      est_bar_width = 1;
    }

  if (debug)
    {
     printf("est_bar_width = %d \n", est_bar_width);
     for ( kk = 0; kk < vert_line_cnt; kk += 1) 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美tickling网站挠脚心| 亚洲国产日韩a在线播放 | 337p日本欧洲亚洲大胆色噜噜| 亚洲欧美日韩国产成人精品影院 | 欧美丰满一区二区免费视频| 一区二区免费看| 色综合久久综合网97色综合| 国产精品久久久久一区二区三区共| 国产成人午夜电影网| 国产三级三级三级精品8ⅰ区| 国产一区欧美日韩| 久久亚洲一区二区三区四区| 国产一区二区三区黄视频 | 欧美三级日韩在线| 亚洲一区二区三区四区在线观看| 色婷婷综合久久久中文字幕| 亚洲精品一二三| a级精品国产片在线观看| 久久久精品中文字幕麻豆发布| 国产伦精一区二区三区| 国产嫩草影院久久久久| 波多野结衣91| 亚洲一区欧美一区| 91.com视频| 久久成人久久爱| 国产精品色一区二区三区| 日本精品一区二区三区高清 | 成人污污视频在线观看| 国产三区在线成人av| 色综合天天综合色综合av| 亚洲一区二区三区四区在线| 这里是久久伊人| 国产很黄免费观看久久| 《视频一区视频二区| 欧美日本免费一区二区三区| 久久av资源网| 亚洲视频精选在线| 欧美日韩精品电影| 免费看欧美美女黄的网站| 久久久久久久久久久黄色| 99久久777色| 日本午夜一本久久久综合| 91精品国产综合久久久久久久| 国产在线观看一区二区| 亚洲日韩欧美一区二区在线| 日韩一级免费一区| 国产日韩欧美精品在线| 成人在线视频一区二区| 国产精品久久久久影院老司| 亚洲高清视频的网址| 国产精品一级片在线观看| 日韩欧美国产综合| 国产精品77777竹菊影视小说| 欧美日韩一区二区三区免费看| 一区二区三区影院| 日韩欧美一级特黄在线播放| 麻豆极品一区二区三区| 久久五月婷婷丁香社区| www.成人网.com| 免费观看一级特黄欧美大片| 色天天综合色天天久久| 亚洲男同性视频| 97久久超碰国产精品电影| 日韩欧美一区二区在线视频| 国产乱码精品一区二区三区av | 91视频你懂的| 午夜精品久久久久久久99水蜜桃 | 7777精品伊人久久久大香线蕉完整版| 亚洲精品免费在线观看| 久久99精品国产| 亚洲综合成人在线视频| 久久奇米777| 色噜噜狠狠一区二区三区果冻| 国产福利一区二区三区在线视频| 亚洲一区欧美一区| 一区二区三区在线免费| 欧美日韩免费不卡视频一区二区三区| 性欧美疯狂xxxxbbbb| 一区二区三区精密机械公司| 亚洲精品久久7777| 久久久国产一区二区三区四区小说| 国产麻豆精品视频| 一区二区三区在线视频播放 | 成人黄色av网站在线| 在线中文字幕不卡| 欧美天堂一区二区三区| 中文字幕欧美激情| 伊人夜夜躁av伊人久久| 日韩成人av影视| 在线视频一区二区免费| 久久夜色精品国产噜噜av| 中文字幕在线观看不卡视频| 欧美va亚洲va在线观看蝴蝶网| 在线观看日韩电影| www.激情成人| av中文字幕在线不卡| 色猫猫国产区一区二在线视频| 欧美性猛交一区二区三区精品| 成人av免费在线观看| 国产精品资源网| 成人av网址在线观看| 99re亚洲国产精品| 成人免费视频视频在线观看免费| 亚洲激情男女视频| 中文字幕免费不卡| 亚洲va欧美va人人爽| 成人一区二区三区在线观看| 91久久久免费一区二区| 亚洲免费观看高清完整版在线观看熊 | 久久久综合网站| 日本亚洲三级在线| 91小视频免费看| 欧美sm美女调教| 午夜一区二区三区视频| 99久久99久久精品国产片果冻| 欧美日韩国产精品成人| 亚洲欧美一区二区不卡| 国产麻豆欧美日韩一区| 在线看日本不卡| 亚洲视频在线一区观看| 国产一区二区三区免费播放| 欧美大白屁股肥臀xxxxxx| 国产成人免费视频一区| 在线观看av不卡| 国产亚洲欧洲一区高清在线观看| 无码av中文一区二区三区桃花岛| 欧美午夜在线观看| 九九热在线视频观看这里只有精品| 日本韩国一区二区三区| 欧美成人精品福利| 亚洲视频免费看| 国产乱码精品1区2区3区| 精品久久久久久久人人人人传媒| 日本亚洲免费观看| 久久久久免费观看| 精品盗摄一区二区三区| 激情久久五月天| 日本欧洲一区二区| 亚洲精品久久久蜜桃| 久久综合999| 久久精品夜夜夜夜久久| 久久久不卡网国产精品一区| 欧美不卡视频一区| 欧美一二三四区在线| a美女胸又www黄视频久久| 一区二区三区日韩在线观看| 欧美日免费三级在线| 爽好久久久欧美精品| 国产日韩欧美精品一区| 99r精品视频| 日韩制服丝袜av| 亚洲欧美自拍偷拍| 欧美日韩黄视频| 国产v综合v亚洲欧| 18欧美乱大交hd1984| 6080亚洲精品一区二区| 成人久久视频在线观看| 911国产精品| 国产一区二区在线影院| 国产精品激情偷乱一区二区∴| 欧美日韩国产成人在线免费| 99在线精品视频| 懂色av中文一区二区三区| 成人激情av网| 91视频在线观看| 欧美性大战久久久久久久蜜臀 | 欧美一级久久久| 久久久不卡网国产精品一区| 亚洲bdsm女犯bdsm网站| 蜜臀av一区二区| 麻豆成人免费电影| 亚洲人成电影网站色mp4| 精品成人一区二区| 日韩免费性生活视频播放| 欧美一级黄色大片| 欧美xxx久久| 久久久久久亚洲综合| 精品日韩一区二区三区| 国产午夜精品一区二区三区视频 | 亚洲第一主播视频| 精品视频一区二区三区免费| 欧美性欧美巨大黑白大战| 欧美情侣在线播放| 久久久777精品电影网影网| 亚洲欧洲成人av每日更新| 极品少妇xxxx精品少妇| 欧美亚洲动漫精品| 国产欧美日韩在线观看| 蜜臀91精品一区二区三区 | 自拍偷自拍亚洲精品播放| 婷婷夜色潮精品综合在线| 91亚洲精品久久久蜜桃| 欧美女孩性生活视频| 日韩欧美三级在线| 国产精品无圣光一区二区| 亚洲美女精品一区| 日韩中文字幕不卡| 懂色av一区二区三区蜜臀| 波多野结衣亚洲| 欧美日韩激情在线|