]>
Commit | Line | Data |
---|---|---|
0763e16d JW |
1 | /* -*-mode:java; c-basic-offset:2; -*- */ |
2 | /* | |
3 | Copyright (c) 2000,2001,2002,2003 ymnk, JCraft,Inc. All rights reserved. | |
4 | ||
5 | Redistribution and use in source and binary forms, with or without | |
6 | modification, are permitted provided that the following conditions are met: | |
7 | ||
8 | 1. Redistributions of source code must retain the above copyright notice, | |
9 | this list of conditions and the following disclaimer. | |
10 | ||
11 | 2. Redistributions in binary form must reproduce the above copyright | |
12 | notice, this list of conditions and the following disclaimer in | |
13 | the documentation and/or other materials provided with the distribution. | |
14 | ||
15 | 3. The names of the authors may not be used to endorse or promote products | |
16 | derived from this software without specific prior written permission. | |
17 | ||
18 | THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, | |
19 | INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | |
20 | FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT, | |
21 | INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, | |
22 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |
23 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, | |
24 | OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |
25 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING | |
26 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, | |
27 | EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
28 | */ | |
29 | /* | |
30 | * This program is based on zlib-1.1.3, so all credit should go authors | |
31 | * Jean-loup Gailly(jloup@gzip.org) and Mark Adler(madler@alumni.caltech.edu) | |
32 | * and contributors of zlib. | |
33 | */ | |
34 | ||
35 | package com.jcraft.jzlib; | |
36 | ||
37 | final class StaticTree{ | |
38 | static final private int MAX_BITS=15; | |
39 | ||
40 | static final private int BL_CODES=19; | |
41 | static final private int D_CODES=30; | |
42 | static final private int LITERALS=256; | |
43 | static final private int LENGTH_CODES=29; | |
44 | static final private int L_CODES=(LITERALS+1+LENGTH_CODES); | |
45 | ||
46 | // Bit length codes must not exceed MAX_BL_BITS bits | |
47 | static final int MAX_BL_BITS=7; | |
48 | ||
49 | static final short[] static_ltree = { | |
50 | 12, 8, 140, 8, 76, 8, 204, 8, 44, 8, | |
51 | 172, 8, 108, 8, 236, 8, 28, 8, 156, 8, | |
52 | 92, 8, 220, 8, 60, 8, 188, 8, 124, 8, | |
53 | 252, 8, 2, 8, 130, 8, 66, 8, 194, 8, | |
54 | 34, 8, 162, 8, 98, 8, 226, 8, 18, 8, | |
55 | 146, 8, 82, 8, 210, 8, 50, 8, 178, 8, | |
56 | 114, 8, 242, 8, 10, 8, 138, 8, 74, 8, | |
57 | 202, 8, 42, 8, 170, 8, 106, 8, 234, 8, | |
58 | 26, 8, 154, 8, 90, 8, 218, 8, 58, 8, | |
59 | 186, 8, 122, 8, 250, 8, 6, 8, 134, 8, | |
60 | 70, 8, 198, 8, 38, 8, 166, 8, 102, 8, | |
61 | 230, 8, 22, 8, 150, 8, 86, 8, 214, 8, | |
62 | 54, 8, 182, 8, 118, 8, 246, 8, 14, 8, | |
63 | 142, 8, 78, 8, 206, 8, 46, 8, 174, 8, | |
64 | 110, 8, 238, 8, 30, 8, 158, 8, 94, 8, | |
65 | 222, 8, 62, 8, 190, 8, 126, 8, 254, 8, | |
66 | 1, 8, 129, 8, 65, 8, 193, 8, 33, 8, | |
67 | 161, 8, 97, 8, 225, 8, 17, 8, 145, 8, | |
68 | 81, 8, 209, 8, 49, 8, 177, 8, 113, 8, | |
69 | 241, 8, 9, 8, 137, 8, 73, 8, 201, 8, | |
70 | 41, 8, 169, 8, 105, 8, 233, 8, 25, 8, | |
71 | 153, 8, 89, 8, 217, 8, 57, 8, 185, 8, | |
72 | 121, 8, 249, 8, 5, 8, 133, 8, 69, 8, | |
73 | 197, 8, 37, 8, 165, 8, 101, 8, 229, 8, | |
74 | 21, 8, 149, 8, 85, 8, 213, 8, 53, 8, | |
75 | 181, 8, 117, 8, 245, 8, 13, 8, 141, 8, | |
76 | 77, 8, 205, 8, 45, 8, 173, 8, 109, 8, | |
77 | 237, 8, 29, 8, 157, 8, 93, 8, 221, 8, | |
78 | 61, 8, 189, 8, 125, 8, 253, 8, 19, 9, | |
79 | 275, 9, 147, 9, 403, 9, 83, 9, 339, 9, | |
80 | 211, 9, 467, 9, 51, 9, 307, 9, 179, 9, | |
81 | 435, 9, 115, 9, 371, 9, 243, 9, 499, 9, | |
82 | 11, 9, 267, 9, 139, 9, 395, 9, 75, 9, | |
83 | 331, 9, 203, 9, 459, 9, 43, 9, 299, 9, | |
84 | 171, 9, 427, 9, 107, 9, 363, 9, 235, 9, | |
85 | 491, 9, 27, 9, 283, 9, 155, 9, 411, 9, | |
86 | 91, 9, 347, 9, 219, 9, 475, 9, 59, 9, | |
87 | 315, 9, 187, 9, 443, 9, 123, 9, 379, 9, | |
88 | 251, 9, 507, 9, 7, 9, 263, 9, 135, 9, | |
89 | 391, 9, 71, 9, 327, 9, 199, 9, 455, 9, | |
90 | 39, 9, 295, 9, 167, 9, 423, 9, 103, 9, | |
91 | 359, 9, 231, 9, 487, 9, 23, 9, 279, 9, | |
92 | 151, 9, 407, 9, 87, 9, 343, 9, 215, 9, | |
93 | 471, 9, 55, 9, 311, 9, 183, 9, 439, 9, | |
94 | 119, 9, 375, 9, 247, 9, 503, 9, 15, 9, | |
95 | 271, 9, 143, 9, 399, 9, 79, 9, 335, 9, | |
96 | 207, 9, 463, 9, 47, 9, 303, 9, 175, 9, | |
97 | 431, 9, 111, 9, 367, 9, 239, 9, 495, 9, | |
98 | 31, 9, 287, 9, 159, 9, 415, 9, 95, 9, | |
99 | 351, 9, 223, 9, 479, 9, 63, 9, 319, 9, | |
100 | 191, 9, 447, 9, 127, 9, 383, 9, 255, 9, | |
101 | 511, 9, 0, 7, 64, 7, 32, 7, 96, 7, | |
102 | 16, 7, 80, 7, 48, 7, 112, 7, 8, 7, | |
103 | 72, 7, 40, 7, 104, 7, 24, 7, 88, 7, | |
104 | 56, 7, 120, 7, 4, 7, 68, 7, 36, 7, | |
105 | 100, 7, 20, 7, 84, 7, 52, 7, 116, 7, | |
106 | 3, 8, 131, 8, 67, 8, 195, 8, 35, 8, | |
107 | 163, 8, 99, 8, 227, 8 | |
108 | }; | |
109 | ||
110 | static final short[] static_dtree = { | |
111 | 0, 5, 16, 5, 8, 5, 24, 5, 4, 5, | |
112 | 20, 5, 12, 5, 28, 5, 2, 5, 18, 5, | |
113 | 10, 5, 26, 5, 6, 5, 22, 5, 14, 5, | |
114 | 30, 5, 1, 5, 17, 5, 9, 5, 25, 5, | |
115 | 5, 5, 21, 5, 13, 5, 29, 5, 3, 5, | |
116 | 19, 5, 11, 5, 27, 5, 7, 5, 23, 5 | |
117 | }; | |
118 | ||
119 | static StaticTree static_l_desc = | |
120 | new StaticTree(static_ltree, Tree.extra_lbits, | |
121 | LITERALS+1, L_CODES, MAX_BITS); | |
122 | ||
123 | static StaticTree static_d_desc = | |
124 | new StaticTree(static_dtree, Tree.extra_dbits, | |
125 | 0, D_CODES, MAX_BITS); | |
126 | ||
127 | static StaticTree static_bl_desc = | |
128 | new StaticTree(null, Tree.extra_blbits, | |
129 | 0, BL_CODES, MAX_BL_BITS); | |
130 | ||
131 | short[] static_tree; // static tree or null | |
132 | int[] extra_bits; // extra bits for each code or null | |
133 | int extra_base; // base index for extra_bits | |
134 | int elems; // max number of elements in the tree | |
135 | int max_length; // max bit length for the codes | |
136 | ||
137 | StaticTree(short[] static_tree, | |
138 | int[] extra_bits, | |
139 | int extra_base, | |
140 | int elems, | |
141 | int max_length | |
142 | ){ | |
143 | this.static_tree=static_tree; | |
144 | this.extra_bits=extra_bits; | |
145 | this.extra_base=extra_base; | |
146 | this.elems=elems; | |
147 | this.max_length=max_length; | |
148 | } | |
149 | } |