(strm, level, method, windowBits, memLevel, strategy)
| 19548 | |
| 19549 | |
| 19550 | function deflateInit2(strm, level, method, windowBits, memLevel, strategy) { |
| 19551 | if (!strm) { // === Z_NULL |
| 19552 | return Z_STREAM_ERROR; |
| 19553 | } |
| 19554 | var wrap = 1; |
| 19555 | |
| 19556 | if (level === Z_DEFAULT_COMPRESSION) { |
| 19557 | level = 6; |
| 19558 | } |
| 19559 | |
| 19560 | if (windowBits < 0) { /* suppress zlib wrapper */ |
| 19561 | wrap = 0; |
| 19562 | windowBits = -windowBits; |
| 19563 | } |
| 19564 | |
| 19565 | else if (windowBits > 15) { |
| 19566 | wrap = 2; /* write gzip wrapper instead */ |
| 19567 | windowBits -= 16; |
| 19568 | } |
| 19569 | |
| 19570 | |
| 19571 | if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED || |
| 19572 | windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || |
| 19573 | strategy < 0 || strategy > Z_FIXED) { |
| 19574 | return err(strm, Z_STREAM_ERROR); |
| 19575 | } |
| 19576 | |
| 19577 | |
| 19578 | if (windowBits === 8) { |
| 19579 | windowBits = 9; |
| 19580 | } |
| 19581 | /* until 256-byte window bug fixed */ |
| 19582 | |
| 19583 | var s = new DeflateState(); |
| 19584 | |
| 19585 | strm.state = s; |
| 19586 | s.strm = strm; |
| 19587 | |
| 19588 | s.wrap = wrap; |
| 19589 | s.gzhead = null; |
| 19590 | s.w_bits = windowBits; |
| 19591 | s.w_size = 1 << s.w_bits; |
| 19592 | s.w_mask = s.w_size - 1; |
| 19593 | |
| 19594 | s.hash_bits = memLevel + 7; |
| 19595 | s.hash_size = 1 << s.hash_bits; |
| 19596 | s.hash_mask = s.hash_size - 1; |
| 19597 | s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH); |
| 19598 | |
| 19599 | s.window = new utils.Buf8(s.w_size * 2); |
| 19600 | s.head = new utils.Buf16(s.hash_size); |
| 19601 | s.prev = new utils.Buf16(s.w_size); |
| 19602 | |
| 19603 | // Don't need mem init magic for JS. |
| 19604 | //s.high_water = 0; /* nothing written to s->window yet */ |
| 19605 | |
| 19606 | s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */ |
| 19607 |
no test coverage detected