bitblt.c

changeset 96
25c6b1a63f93
parent 72
cddd6226b509
child 109
663da96ad2bc
     1.1 --- a/bitblt.c	Tue Mar 11 11:14:39 2003 +0000
     1.2 +++ b/bitblt.c	Wed Mar 12 06:02:46 2003 +0000
     1.3 @@ -4,7 +4,7 @@
     1.4   *      will be compressed using ITU-T T.6 (G4) fax encoding.
     1.5   *
     1.6   * bitblt routines
     1.7 - * $Id: bitblt.c,v 1.13 2003/02/23 09:40:41 eric Exp $
     1.8 + * $Id: bitblt.c,v 1.14 2003/03/11 22:02:46 eric Exp $
     1.9   * Copyright 2001, 2002, 2003 Eric Smith <eric@brouhaha.com>
    1.10   *
    1.11   * This program is free software; you can redistribute it and/or modify
    1.12 @@ -726,87 +726,3 @@
    1.13  }
    1.14  
    1.15  
    1.16 -int32_t get_row_run_lengths (Bitmap *src,
    1.17 -			     int32_t y,
    1.18 -			     int32_t min_x, int32_t max_x,
    1.19 -			     int32_t max_runs,
    1.20 -			     run_t *runs)
    1.21 -{
    1.22 -  uint8_t *byte_ptr;
    1.23 -  uint8_t byte;
    1.24 -  int bit_pos;
    1.25 -
    1.26 -  uint32_t byte_cnt;
    1.27 -  int last_bits;
    1.28 -  bool last_flag = 0;
    1.29 -
    1.30 -  uint8_t pol = 0x00;  /* 0x00 = counting zeros (white),
    1.31 -			  0xff = counting ones (black) */
    1.32 -  int32_t left = 0;  /* left x coordinate of current run, relative */
    1.33 -
    1.34 -  uint32_t rl;
    1.35 -  int32_t i = 0;
    1.36 -
    1.37 -  /* adjust coordinate system */
    1.38 -  y -= src->rect.min.y;
    1.39 -  min_x -= src->rect.min.x;
    1.40 -  max_x -= src->rect.min.x;
    1.41 -
    1.42 -  byte_ptr = (uint8_t *) (src->bits + y * src->row_words);
    1.43 -  byte_cnt = (max_x / 8) + 1 - (min_x / 8);
    1.44 -  last_bits = max_x % 8;
    1.45 -
    1.46 -  rl = 0;
    1.47 -  pol = 0x00;  /* initially count white pixels */
    1.48 -
    1.49 -  byte_ptr += min_x / 8;
    1.50 -  bit_pos = min_x % 8;
    1.51 -  byte = *(byte_ptr++);
    1.52 -
    1.53 -  /* is the first byte also the last? */
    1.54 -  if (--byte_cnt == 0)
    1.55 -    {
    1.56 -      byte <<= (7 - last_bits);	  /* last byte may be partial */
    1.57 -      bit_pos += (7 - last_bits);
    1.58 -      last_flag = 1;
    1.59 -    }
    1.60 -
    1.61 -  for (;;)
    1.62 -    {
    1.63 -      int b2 = rle_tab [bit_pos] [pol ^ byte];
    1.64 -      rl += b2;
    1.65 -      bit_pos += b2;
    1.66 -      if (bit_pos == 8)
    1.67 -	{
    1.68 -	  if (last_flag)
    1.69 -	    {
    1.70 -	      if (rl)
    1.71 -		{
    1.72 -		  runs [i].value = pol;
    1.73 -		  runs [i].left = left;
    1.74 -		  runs [i++].width = rl;
    1.75 -		}
    1.76 -	      return (i);
    1.77 -	    }
    1.78 -	  bit_pos = 0;
    1.79 -	  byte = *(byte_ptr++);
    1.80 -	  if (--byte_cnt == 0)
    1.81 -	    {
    1.82 -	      byte <<= (7 - last_bits);	  /* last byte may be partial */
    1.83 -	      bit_pos += (7 - last_bits);
    1.84 -	      last_flag = 1;
    1.85 -	    }
    1.86 -	}
    1.87 -      else
    1.88 -	{
    1.89 -	  runs [i].value = pol;
    1.90 -	  runs [i].left = left;
    1.91 -	  runs [i++].width = rl;
    1.92 -	  left += rl;
    1.93 -	  if (i == max_runs)
    1.94 -	    return (-i);
    1.95 -	  rl = 0;
    1.96 -	  pol ^= 0xff;
    1.97 -	}
    1.98 -    }
    1.99 -}