(strm, level, method, windowBits, memLevel, strategy)
| 7458 | |
| 7459 | |
| 7460 | function deflateInit2(strm, level, method, windowBits, memLevel, strategy) { |
| 7461 | if (!strm) { // === Z_NULL |
| 7462 | return Z_STREAM_ERROR; |
| 7463 | } |
| 7464 | var wrap = 1; |
| 7465 | |
| 7466 | if (level === Z_DEFAULT_COMPRESSION) { |
| 7467 | level = 6; |
| 7468 | } |
| 7469 | |
| 7470 | if (windowBits < 0) { /* suppress zlib wrapper */ |
| 7471 | wrap = 0; |
| 7472 | windowBits = -windowBits; |
| 7473 | } |
| 7474 | |
| 7475 | else if (windowBits > 15) { |
| 7476 | wrap = 2; /* write gzip wrapper instead */ |
| 7477 | windowBits -= 16; |
| 7478 | } |
| 7479 | |
| 7480 | |
| 7481 | if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED || |
| 7482 | windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || |
| 7483 | strategy < 0 || strategy > Z_FIXED) { |
| 7484 | return err(strm, Z_STREAM_ERROR); |
| 7485 | } |
| 7486 | |
| 7487 | |
| 7488 | if (windowBits === 8) { |
| 7489 | windowBits = 9; |
| 7490 | } |
| 7491 | /* until 256-byte window bug fixed */ |
| 7492 | |
| 7493 | var s = new DeflateState(); |
| 7494 | |
| 7495 | strm.state = s; |
| 7496 | s.strm = strm; |
| 7497 | |
| 7498 | s.wrap = wrap; |
| 7499 | s.gzhead = null; |
| 7500 | s.w_bits = windowBits; |
| 7501 | s.w_size = 1 << s.w_bits; |
| 7502 | s.w_mask = s.w_size - 1; |
| 7503 | |
| 7504 | s.hash_bits = memLevel + 7; |
| 7505 | s.hash_size = 1 << s.hash_bits; |
| 7506 | s.hash_mask = s.hash_size - 1; |
| 7507 | s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH); |
| 7508 | |
| 7509 | s.window = new utils.Buf8(s.w_size * 2); |
| 7510 | s.head = new utils.Buf16(s.hash_size); |
| 7511 | s.prev = new utils.Buf16(s.w_size); |
| 7512 | |
| 7513 | // Don't need mem init magic for JS. |
| 7514 | //s.high_water = 0; /* nothing written to s->window yet */ |
| 7515 | |
| 7516 | s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */ |
| 7517 |
no test coverage detected