Index: sdk/lib/io/data_transformer.dart |
diff --git a/sdk/lib/io/data_transformer.dart b/sdk/lib/io/data_transformer.dart |
index 79df03cc140dfac3b857a07f297157d3dd0f219d..3d7704712b86fbda59a9cb9f00f48f51a8ced04c 100644 |
--- a/sdk/lib/io/data_transformer.dart |
+++ b/sdk/lib/io/data_transformer.dart |
@@ -22,23 +22,35 @@ class ZLibCodec extends Codec<List<int>, List<int>> { |
final int level; |
/** |
+ * The windowBits parameter is the base two logarithm of the window size (the |
+ * size of the history buffer). It should be in the range 8..15. Larger values |
+ * of this parameter result in better compression at the expense of memory |
+ * usage. The default value is 15 |
+ */ |
+ final int windowBits; |
+ |
+ final bool raw; |
+ |
+ /** |
* Get a [Converter] for encoding to `ZLib` compressed data. |
*/ |
Converter<List<int>, List<int>> get encoder => |
- new ZLibEncoder(gzip: false, level: level); |
+ new ZLibEncoder(gzip: false, level: level, windowBits: windowBits, |
+ raw: raw); |
/** |
* Get a [Converter] for decoding `ZLib` compressed data. |
*/ |
- Converter<List<int>, List<int>> get decoder => const ZLibDecoder(); |
+ Converter<List<int>, List<int>> get decoder => new ZLibDecoder( |
+ windowBits: windowBits, raw: raw); |
/** |
- * The compression-[level] can be set in the range of `1..10`, with `6` being |
+ * The compression-[level] can be set in the range of `-1..9`, with `6` being |
* the default compression level. Levels above 6 will have higher compression |
* rates at the cost of more CPU and memory usage. Levels below 6 will use |
* less CPU and memory, but at the cost of lower compression rates. |
*/ |
- const ZLibCodec({this.level: 6}); |
+ const ZLibCodec({this.level: 6, this.windowBits: 15, this.raw: false}); |
vicb
2014/01/09 09:48:27
Adding some checks here would imply removing the '
|
} |
@@ -62,23 +74,36 @@ class GZipCodec extends Codec<List<int>, List<int>> { |
final int level; |
/** |
+ * The windowBits parameter is the base two logarithm of the window size (the |
+ * size of the history buffer). It should be in the range 8..15. Larger values |
+ * of this parameter result in better compression at the expense of memory |
+ * usage. The default value is 15 |
+ */ |
+ final int windowBits; |
+ |
+ final bool raw; |
+ |
+ /** |
* Get a [Converter] for encoding to `GZip` compressed data. |
*/ |
Converter<List<int>, List<int>> get encoder => |
- new ZLibEncoder(gzip: true, level: level); |
+ new ZLibEncoder(gzip: true, level: level, windowBits: windowBits, |
+ raw: raw); |
/** |
* Get a [Converter] for decoding `GZip` compressed data. |
*/ |
- Converter<List<int>, List<int>> get decoder => const ZLibDecoder(); |
+ Converter<List<int>, List<int>> get decoder => new ZLibDecoder( |
+ windowBits: windowBits, raw: raw); |
/** |
- * The compression-[level] can be set in the range of `1..10`, with `6` being |
- * the default compression level. Levels above 6 will have higher compression |
- * rates at the cost of more CPU and memory usage. Levels below 6 will use |
- * less CPU and memory, but at the cost of lower compression rates. |
+ * The compression-[level] can be set in the range of `-1..9`, with `6` being |
+ * the default compression level. Levels above `6` will have higher |
+ * compression rates at the cost of more CPU and memory usage. Levels below |
+ * `6` will use less CPU and memory, but at the cost of lower compression |
+ * rates. |
*/ |
- const GZipCodec({this.level: 6}); |
+ const GZipCodec({this.level: 6, this.windowBits: 15, this.raw: false}); |
} |
@@ -98,11 +123,21 @@ class ZLibEncoder extends Converter<List<int>, List<int>> { |
final int level; |
/** |
+ * The windowBits parameter is the base two logarithm of the window size (the |
+ * size of the history buffer). It should be in the range 8..15. Larger values |
+ * of this parameter result in better compression at the expense of memory |
+ * usage. The default value is 15 |
+ */ |
+ final int windowBits; |
+ |
+ final bool raw; |
+ |
+ /** |
* Create a new [ZLibEncoder] converter. If the [gzip] flag is set, the |
* encoder will wrap the encoded ZLib data in GZip frames. |
*/ |
- const ZLibEncoder({this.gzip: false, this.level: 6}); |
- |
+ const ZLibEncoder({this.gzip: false, this.level: 6, this.windowBits: 15, |
+ this.raw: false}); |
/** |
* Convert a list of bytes using the options given to the [ZLibEncoder] |
@@ -127,7 +162,7 @@ class ZLibEncoder extends Converter<List<int>, List<int>> { |
if (sink is! ByteConversionSink) { |
sink = new ByteConversionSink.from(sink); |
} |
- return new _ZLibEncoderSink(sink, gzip, level); |
+ return new _ZLibEncoderSink(sink, gzip, level, windowBits, raw); |
} |
} |
@@ -137,11 +172,20 @@ class ZLibEncoder extends Converter<List<int>, List<int>> { |
* decompress data. |
*/ |
class ZLibDecoder extends Converter<List<int>, List<int>> { |
+ /** |
+ * The windowBits parameter is the base two logarithm of the window size (the |
+ * size of the history buffer). It should be in the range 8..15. Larger values |
+ * of this parameter result in better compression at the expense of memory |
+ * usage. The default value is 15 |
+ */ |
+ final int windowBits; |
+ |
+ final bool raw; |
/** |
- * Create a new [ZLibEncoder] converter. |
+ * Create a new [ZLibDecoder] converter. |
*/ |
- const ZLibDecoder(); |
+ const ZLibDecoder({this.windowBits: 15, this.raw: false}); |
/** |
* Convert a list of bytes using the options given to the [ZLibDecoder] |
@@ -165,7 +209,7 @@ class ZLibDecoder extends Converter<List<int>, List<int>> { |
if (sink is! ByteConversionSink) { |
sink = new ByteConversionSink.from(sink); |
} |
- return new _ZLibDecoderSink(sink); |
+ return new _ZLibDecoderSink(sink, windowBits, raw); |
} |
} |
@@ -191,14 +235,15 @@ class _BufferSink extends ByteConversionSink { |
class _ZLibEncoderSink extends _FilterSink { |
- _ZLibEncoderSink(ByteConversionSink sink, bool gzip, int level) |
- : super(sink, _Filter.newZLibDeflateFilter(gzip, level)); |
+ _ZLibEncoderSink(ByteConversionSink sink, bool gzip, int level, |
+ int windowBits, bool raw) |
+ : super(sink, _Filter.newZLibDeflateFilter(gzip, level, windowBits, raw)); |
} |
class _ZLibDecoderSink extends _FilterSink { |
- _ZLibDecoderSink(ByteConversionSink sink) |
- : super(sink, _Filter.newZLibInflateFilter()); |
+ _ZLibDecoderSink(ByteConversionSink sink, int windowBits, bool raw) |
+ : super(sink, _Filter.newZLibInflateFilter(windowBits, raw)); |
} |
@@ -208,7 +253,7 @@ class _FilterSink extends ByteConversionSink { |
bool _closed = false; |
bool _empty = true; |
- _FilterSink(ByteConversionSink this._sink, _Filter this._filter); |
+ _FilterSink(this._sink, this._filter); |
void add(List<int> data) { |
addSlice(data, 0, data.length, false); |
@@ -286,6 +331,7 @@ abstract class _Filter { |
*/ |
void end(); |
- external static _Filter newZLibDeflateFilter(bool gzip, int level); |
- external static _Filter newZLibInflateFilter(); |
+ external static _Filter newZLibDeflateFilter(bool gzip, int level, |
+ int windowBits, bool raw); |
+ external static _Filter newZLibInflateFilter(int windowBits, bool raw); |
} |