diff options
Diffstat (limited to 'Build/source/texk/dvipsk/unpack.c')
-rw-r--r-- | Build/source/texk/dvipsk/unpack.c | 180 |
1 files changed, 90 insertions, 90 deletions
diff --git a/Build/source/texk/dvipsk/unpack.c b/Build/source/texk/dvipsk/unpack.c index 865e9a13a61..493d6d7cb99 100644 --- a/Build/source/texk/dvipsk/unpack.c +++ b/Build/source/texk/dvipsk/unpack.c @@ -1,5 +1,5 @@ /* - * Unpacks the raster data from the packed buffer. This code was + * Unpacks the raster data from the packed buffer. This code was * translated from pktopx.web using an automatic translator, then * converted for this purpose. This little routine can be very useful * in other drivers as well. @@ -14,10 +14,10 @@ /* * Some statics for use here. */ -static halfword bitweight; +static halfword bitweight; static halfword dynf; static halfword gpower[17] = { 0 , 1 , 3 , 7 , 15 , 31 , 63 , 127 , - 255 , 511 , 1023 , 2047 , 4095 , 8191 , 16383 , 32767 , 65535 }; + 255 , 511 , 1023 , 2047 , 4095 , 8191 , 16383 , 32767 , 65535 }; static long repeatcount; static quarterword *p; @@ -26,56 +26,56 @@ static quarterword *p; * packed data structure. */ -shalfword +static shalfword getnyb(void) { - if ( bitweight == 0 ) - { bitweight = 16; + if ( bitweight == 0 ) + { bitweight = 16; return(*p++ & 15); } else { bitweight = 0; return(*p >> 4); } -} +} -Boolean +static Boolean getbit(void) { - bitweight >>= 1; - if ( bitweight == 0 ) + bitweight >>= 1; + if ( bitweight == 0 ) { p++; bitweight = 128; - } + } return(*p & bitweight); -} +} -long +static long pkpackednum(void) { register halfword i; - register long j; - i = getnyb (); + register long j; + i = getnyb (); if ( i == 0 ) { - do { j = getnyb (); - i++; - } while ( j == 0 ); + do { j = getnyb (); + i++; + } while ( j == 0 ); while ( i != 0 ) { - j = j * 16 + ((long) getnyb ()); - i--; - } - return ( j - 15 + ( 13 - dynf ) * 16 + dynf ); + j = j * 16 + ((long) getnyb ()); + i--; + } + return ( j - 15 + ( 13 - dynf ) * 16 + dynf ); } - else if ( i <= dynf ) return ( i ); - else if ( i < 14 ) return ( ( i - dynf - 1 )*16 + getnyb() + dynf + 1 ); + else if ( i <= dynf ) return ( i ); + else if ( i < 14 ) return ( ( i - dynf - 1 )*16 + getnyb() + dynf + 1 ); else { if (repeatcount != 0) error("! recursive repeat count in pk file"); repeatcount = 1; - if ( i == 14 ) repeatcount = pkpackednum (); + if ( i == 14 ) repeatcount = pkpackednum (); return ( pkpackednum() ); - } -} + } +} -void +static void flip(register char *s, register long howmany) { register char t; @@ -95,86 +95,86 @@ static halfword bftest = 1; long unpack(quarterword *pack, halfword *raster, halfword cwidth, halfword cheight, halfword cmd) -{ - register integer i, j; - shalfword wordwidth; +{ + register integer i, j; + shalfword wordwidth; register halfword word, wordweight; - shalfword rowsleft; - Boolean turnon; - shalfword hbit, ww; - long count; + shalfword rowsleft; + Boolean turnon; + shalfword hbit, ww; + long count; halfword *oraster; oraster = raster; p = pack; - dynf = cmd / 16; - turnon = cmd & 8; + dynf = cmd / 16; + turnon = cmd & 8; wordwidth = (cwidth + 15)/16; - if ( dynf == 14 ) - { bitweight = 256; - for ( i = 1; i <= cheight; i ++ ) - { word = 0; - wordweight = 32768; - for ( j = 1; j <= cwidth; j ++ ) - { if ( getbit () ) word += wordweight; + if ( dynf == 14 ) + { bitweight = 256; + for ( i = 1; i <= cheight; i ++ ) + { word = 0; + wordweight = 32768; + for ( j = 1; j <= cwidth; j ++ ) + { if ( getbit () ) word += wordweight; wordweight >>= 1; - if ( wordweight == 0 ) - { *raster++ = word; + if ( wordweight == 0 ) + { *raster++ = word; word = 0; - wordweight = 32768; - } - } - if ( wordweight != 32768 ) - *raster++ = word; - } + wordweight = 32768; + } + } + if ( wordweight != 32768 ) + *raster++ = word; + } } else { - rowsleft = cheight; - hbit = cwidth; - repeatcount = 0; - ww = 16; - word = 0; + rowsleft = cheight; + hbit = cwidth; + repeatcount = 0; + ww = 16; + word = 0; bitweight = 16; - while ( rowsleft > 0 ) - { count = pkpackednum(); - while ( count != 0 ) - { if ( ( count <= ww ) && ( count < hbit ) ) - { if ( turnon ) word += gpower [ ww ] - gpower - [ ww - count ]; - hbit -= count; - ww -= count; - count = 0; - } - else if ( ( count >= hbit ) && ( hbit <= ww ) ) + while ( rowsleft > 0 ) + { count = pkpackednum(); + while ( count != 0 ) + { if ( ( count <= ww ) && ( count < hbit ) ) + { if ( turnon ) word += gpower [ ww ] - gpower + [ ww - count ]; + hbit -= count; + ww -= count; + count = 0; + } + else if ( ( count >= hbit ) && ( hbit <= ww ) ) { if ( turnon ) - word += gpower[ww] - gpower[ww-hbit]; - *raster++ = word; + word += gpower[ww] - gpower[ww-hbit]; + *raster++ = word; for ( i = 1; i <= repeatcount; i ++ ) { for ( j = 1; j <= wordwidth; j ++ ) { *raster = *(raster - wordwidth); raster++; } } - rowsleft -= repeatcount + 1; - repeatcount = 0; - word = 0; - ww = 16; - count -= hbit; - hbit = cwidth; - } - else - { if ( turnon ) word += gpower [ ww ]; + rowsleft -= repeatcount + 1; + repeatcount = 0; + word = 0; + ww = 16; + count -= hbit; + hbit = cwidth; + } + else + { if ( turnon ) word += gpower [ ww ]; *raster++ = word; - word = 0; - count -= ww; - hbit -= ww; - ww = 16; - } - } - turnon = ! turnon; - } - if ( ( rowsleft != 0 ) || ( (unsigned)hbit != cwidth ) ) - error ( "! error while unpacking; more bits than required" ); - } + word = 0; + count -= ww; + hbit -= ww; + ww = 16; + } + } + turnon = ! turnon; + } + if ( ( rowsleft != 0 ) || ( (unsigned)hbit != cwidth ) ) + error ( "! error while unpacking; more bits than required" ); + } if (*(char *)&bftest) /* is the hardware LittleEndian? */ flip((char *)oraster, ((cwidth + 15) >> 4) * (long)cheight); return(p-pack); |