public int deflateEnd() { if( this.dstate == null ) { return -2; } int num = this.dstate.deflateEnd(); this.dstate = null; return num; }
public int deflateEnd() { if (this.dstate == null) { return(-2); } int num = this.dstate.deflateEnd(); this.dstate = null; return(num); }
public int deflateInit( int level, int bits ) { this.dstate = new Deflate(); return this.dstate.deflateInit( this, level, bits ); }
internal void gen_bitlen(Deflate s) { int num4; short[] numArray = this.dyn_tree; short[] numArray2 = this.stat_desc.static_tree; int[] numArray3 = this.stat_desc.extra_bits; int num = this.stat_desc.extra_base; int index = this.stat_desc.max_length; int num9 = 0; int num6 = 0; while (num6 <= 15) { s.bl_count[num6] = 0; num6++; } numArray[(s.heap[s.heap_max] * 2) + 1] = 0; int num3 = s.heap_max + 1; while (num3 < HEAP_SIZE) { num4 = s.heap[num3]; num6 = numArray[(numArray[(num4 * 2) + 1] * 2) + 1] + 1; if (num6 > index) { num6 = index; num9++; } numArray[(num4 * 2) + 1] = (short)num6; if (num4 <= this.max_code) { s.bl_count[num6] = (short)(s.bl_count[num6] + 1); int num7 = 0; if (num4 >= num) { num7 = numArray3[num4 - num]; } short num8 = numArray[num4 * 2]; s.opt_len += num8 * (num6 + num7); if (numArray2 != null) { s.static_len += num8 * (numArray2[(num4 * 2) + 1] + num7); } } num3++; } if (num9 != 0) { do { num6 = index - 1; while (s.bl_count[num6] == 0) { num6--; } s.bl_count[num6] = (short)(s.bl_count[num6] - 1); s.bl_count[num6 + 1] = (short)(s.bl_count[num6 + 1] + 2); s.bl_count[index] = (short)(s.bl_count[index] - 1); num9 -= 2; }while(num9 > 0); for (num6 = index; num6 != 0; num6--) { num4 = s.bl_count[num6]; while (num4 != 0) { int num5 = s.heap[--num3]; if (num5 <= this.max_code) { if (numArray[(num5 * 2) + 1] != num6) { s.opt_len += (num6 - numArray[(num5 * 2) + 1]) * numArray[num5 * 2]; numArray[(num5 * 2) + 1] = (short)num6; } num4--; } } } } }
internal void build_tree(Deflate s) { int num2; int num5; short[] tree = this.dyn_tree; short[] numArray2 = this.stat_desc.static_tree; int elems = this.stat_desc.elems; int num4 = -1; s.heap_len = 0; s.heap_max = HEAP_SIZE; for (num2 = 0; num2 < elems; num2++) { if (tree[num2 * 2] != 0) { s.heap[++s.heap_len] = num4 = num2; s.depth[num2] = 0; } else { tree[(num2 * 2) + 1] = 0; } } while (s.heap_len < 2) { num5 = s.heap[++s.heap_len] = (num4 < 2) ? ++num4 : 0; tree[num5 * 2] = 1; s.depth[num5] = 0; s.opt_len--; if (numArray2 != null) { s.static_len -= numArray2[(num5 * 2) + 1]; } } this.max_code = num4; num2 = s.heap_len / 2; while (num2 >= 1) { s.pqdownheap(tree, num2); num2--; } num5 = elems; do { num2 = s.heap[1]; s.heap[1] = s.heap[s.heap_len--]; s.pqdownheap(tree, 1); int index = s.heap[1]; s.heap[--s.heap_max] = num2; s.heap[--s.heap_max] = index; tree[num5 * 2] = (short)(tree[num2 * 2] + tree[index * 2]); s.depth[num5] = (byte)(Math.Max(s.depth[num2], s.depth[index]) + 1); tree[(num2 * 2) + 1] = tree[(index * 2) + 1] = (short)num5; s.heap[1] = num5++; s.pqdownheap(tree, 1); }while(s.heap_len >= 2); s.heap[--s.heap_max] = s.heap[1]; this.gen_bitlen(s); gen_codes(tree, num4, s.bl_count); }
internal void gen_bitlen( Deflate s ) { int num4; short[] numArray = this.dyn_tree; short[] numArray2 = this.stat_desc.static_tree; int[] numArray3 = this.stat_desc.extra_bits; int num = this.stat_desc.extra_base; int index = this.stat_desc.max_length; int num9 = 0; int num6 = 0; while( num6 <= 15 ) { s.bl_count[ num6 ] = 0; num6++; } numArray[ ( s.heap[ s.heap_max ] * 2 ) + 1 ] = 0; int num3 = s.heap_max + 1; while( num3 < HEAP_SIZE ) { num4 = s.heap[ num3 ]; num6 = numArray[ ( numArray[ ( num4 * 2 ) + 1 ] * 2 ) + 1 ] + 1; if( num6 > index ) { num6 = index; num9++; } numArray[ ( num4 * 2 ) + 1 ] = (short)num6; if( num4 <= this.max_code ) { s.bl_count[ num6 ] = (short)( s.bl_count[ num6 ] + 1 ); int num7 = 0; if( num4 >= num ) { num7 = numArray3[ num4 - num ]; } short num8 = numArray[ num4 * 2 ]; s.opt_len += num8 * ( num6 + num7 ); if( numArray2 != null ) { s.static_len += num8 * ( numArray2[ ( num4 * 2 ) + 1 ] + num7 ); } } num3++; } if( num9 != 0 ) { do { num6 = index - 1; while( s.bl_count[ num6 ] == 0 ) { num6--; } s.bl_count[ num6 ] = (short)( s.bl_count[ num6 ] - 1 ); s.bl_count[ num6 + 1 ] = (short)( s.bl_count[ num6 + 1 ] + 2 ); s.bl_count[ index ] = (short)( s.bl_count[ index ] - 1 ); num9 -= 2; } while( num9 > 0 ); for( num6 = index; num6 != 0; num6-- ) { num4 = s.bl_count[ num6 ]; while( num4 != 0 ) { int num5 = s.heap[ --num3 ]; if( num5 <= this.max_code ) { if( numArray[ ( num5 * 2 ) + 1 ] != num6 ) { s.opt_len += ( num6 - numArray[ ( num5 * 2 ) + 1 ] ) * numArray[ num5 * 2 ]; numArray[ ( num5 * 2 ) + 1 ] = (short)num6; } num4--; } } } } }
internal void build_tree( Deflate s ) { int num2; int num5; short[] tree = this.dyn_tree; short[] numArray2 = this.stat_desc.static_tree; int elems = this.stat_desc.elems; int num4 = -1; s.heap_len = 0; s.heap_max = HEAP_SIZE; for( num2 = 0; num2 < elems; num2++ ) { if( tree[ num2 * 2 ] != 0 ) { s.heap[ ++s.heap_len ] = num4 = num2; s.depth[ num2 ] = 0; } else { tree[ ( num2 * 2 ) + 1 ] = 0; } } while( s.heap_len < 2 ) { num5 = s.heap[ ++s.heap_len ] = ( num4 < 2 ) ? ++num4 : 0; tree[ num5 * 2 ] = 1; s.depth[ num5 ] = 0; s.opt_len--; if( numArray2 != null ) { s.static_len -= numArray2[ ( num5 * 2 ) + 1 ]; } } this.max_code = num4; num2 = s.heap_len / 2; while( num2 >= 1 ) { s.pqdownheap( tree, num2 ); num2--; } num5 = elems; do { num2 = s.heap[ 1 ]; s.heap[ 1 ] = s.heap[ s.heap_len-- ]; s.pqdownheap( tree, 1 ); int index = s.heap[ 1 ]; s.heap[ --s.heap_max ] = num2; s.heap[ --s.heap_max ] = index; tree[ num5 * 2 ] = (short)( tree[ num2 * 2 ] + tree[ index * 2 ] ); s.depth[ num5 ] = (byte)( Math.Max( s.depth[ num2 ], s.depth[ index ] ) + 1 ); tree[ ( num2 * 2 ) + 1 ] = tree[ ( index * 2 ) + 1 ] = (short)num5; s.heap[ 1 ] = num5++; s.pqdownheap( tree, 1 ); } while( s.heap_len >= 2 ); s.heap[ --s.heap_max ] = s.heap[ 1 ]; this.gen_bitlen( s ); gen_codes( tree, num4, s.bl_count ); }
public int deflateInit(int level, int bits) { this.dstate = new Deflate(); return(this.dstate.deflateInit(this, level, bits)); }