Mercurial > projects > dwt-win
comparison dwt/internal/image/PngDeflater.d @ 213:36f5cb12e1a2
Update to SWT 3.4M7
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Sat, 17 May 2008 17:34:28 +0200 |
parents | 1801ddeb8f32 |
children | fd9c62a2998e |
comparison
equal
deleted
inserted
replaced
212:ab60f3309436 | 213:36f5cb12e1a2 |
---|---|
1 /******************************************************************************* | 1 /******************************************************************************* |
2 * Copyright (c) 2000, 2006 IBM Corporation and others. | 2 * Copyright (c) 2000, 2006 IBM Corporation and others. |
3 * All rights reserved. This program and the accompanying materials | 3 * All rights reserved. This program and the accompanying materials |
4 * are made available under the terms of the Eclipse Public License v1.0 | 4 * are made available under the terms of the Eclipse Public License v1.0 |
5 * which accompanies this distribution, and is available at | 5 * which accompanies this distribution, and is available at |
6 * http://www.eclipse.org/legal/epl-v10.html | 6 * http://www.eclipse.org/legal/epl-v10.html |
34 Link[HASH] hashtable;// = new Link[HASH]; | 34 Link[HASH] hashtable;// = new Link[HASH]; |
35 Link[WINDOW] window;// = new Link[WINDOW]; | 35 Link[WINDOW] window;// = new Link[WINDOW]; |
36 int nextWindow; | 36 int nextWindow; |
37 | 37 |
38 public this(){ | 38 public this(){ |
39 static_this(); | |
40 bytes = new ByteArrayOutputStream(1024); | 39 bytes = new ByteArrayOutputStream(1024); |
41 } | 40 } |
42 | 41 |
43 class Link { | 42 class Link { |
44 | 43 |
54 | 53 |
55 } | 54 } |
56 | 55 |
57 } | 56 } |
58 | 57 |
59 class Match { | 58 static class Match { |
60 | 59 |
61 int length, distance; | 60 int length, distance; |
62 | 61 |
63 this(int length, int distance) { | 62 this(int length, int distance) { |
64 | 63 |
119 | 118 |
120 } | 119 } |
121 | 120 |
122 } | 121 } |
123 | 122 |
124 private static /+const+/ Code lengthCodes[]; | 123 static const Code lengthCodes[]; |
125 private static /+const+/ Code distanceCodes[]; | 124 static const Code distanceCodes[]; |
126 | 125 |
127 private static bool static_this_completed = false; | 126 static this() { |
128 private static void static_this() { | 127 lengthCodes = [ |
129 if( static_this_completed ){ | 128 new Code(257, 0, 3, 3), |
130 return; | 129 new Code(258, 0, 4, 4), |
131 } | 130 new Code(259, 0, 5, 5), |
132 synchronized { | 131 new Code(260, 0, 6, 6), |
133 if( static_this_completed ){ | 132 new Code(261, 0, 7, 7), |
134 return; | 133 new Code(262, 0, 8, 8), |
135 } | 134 new Code(263, 0, 9, 9), |
136 lengthCodes = [ | 135 new Code(264, 0, 10, 10), |
137 new Code(257, 0, 3, 3), | 136 new Code(265, 1, 11, 12), |
138 new Code(258, 0, 4, 4), | 137 new Code(266, 1, 13, 14), |
139 new Code(259, 0, 5, 5), | 138 new Code(267, 1, 15, 16), |
140 new Code(260, 0, 6, 6), | 139 new Code(268, 1, 17, 18), |
141 new Code(261, 0, 7, 7), | 140 new Code(269, 2, 19, 22), |
142 new Code(262, 0, 8, 8), | 141 new Code(270, 2, 23, 26), |
143 new Code(263, 0, 9, 9), | 142 new Code(271, 2, 27, 30), |
144 new Code(264, 0, 10, 10), | 143 new Code(272, 2, 31, 34), |
145 new Code(265, 1, 11, 12), | 144 new Code(273, 3, 35, 42), |
146 new Code(266, 1, 13, 14), | 145 new Code(274, 3, 43, 50), |
147 new Code(267, 1, 15, 16), | 146 new Code(275, 3, 51, 58), |
148 new Code(268, 1, 17, 18), | 147 new Code(276, 3, 59, 66), |
149 new Code(269, 2, 19, 22), | 148 new Code(277, 4, 67, 82), |
150 new Code(270, 2, 23, 26), | 149 new Code(278, 4, 83, 98), |
151 new Code(271, 2, 27, 30), | 150 new Code(279, 4, 99, 114), |
152 new Code(272, 2, 31, 34), | 151 new Code(280, 4, 115, 130), |
153 new Code(273, 3, 35, 42), | 152 new Code(281, 5, 131, 162), |
154 new Code(274, 3, 43, 50), | 153 new Code(282, 5, 163, 194), |
155 new Code(275, 3, 51, 58), | 154 new Code(283, 5, 195, 226), |
156 new Code(276, 3, 59, 66), | 155 new Code(284, 5, 227, 257), |
157 new Code(277, 4, 67, 82), | 156 new Code(285, 0, 258, 258)]; |
158 new Code(278, 4, 83, 98), | 157 |
159 new Code(279, 4, 99, 114), | 158 distanceCodes = [ |
160 new Code(280, 4, 115, 130), | 159 new Code(0, 0, 1, 1), |
161 new Code(281, 5, 131, 162), | 160 new Code(1, 0, 2, 2), |
162 new Code(282, 5, 163, 194), | 161 new Code(2, 0, 3, 3), |
163 new Code(283, 5, 195, 226), | 162 new Code(3, 0, 4, 4), |
164 new Code(284, 5, 227, 257), | 163 new Code(4, 1, 5, 6), |
165 new Code(285, 0, 258, 258)]; | 164 new Code(5, 1, 7, 8), |
166 | 165 new Code(6, 2, 9, 12), |
167 distanceCodes = [ | 166 new Code(7, 2, 13, 16), |
168 new Code(0, 0, 1, 1), | 167 new Code(8, 3, 17, 24), |
169 new Code(1, 0, 2, 2), | 168 new Code(9, 3, 25, 32), |
170 new Code(2, 0, 3, 3), | 169 new Code(10, 4, 33, 48), |
171 new Code(3, 0, 4, 4), | 170 new Code(11, 4, 49, 64), |
172 new Code(4, 1, 5, 6), | 171 new Code(12, 5, 65, 96), |
173 new Code(5, 1, 7, 8), | 172 new Code(13, 5, 97, 128), |
174 new Code(6, 2, 9, 12), | 173 new Code(14, 6, 129, 192), |
175 new Code(7, 2, 13, 16), | 174 new Code(15, 6, 193, 256), |
176 new Code(8, 3, 17, 24), | 175 new Code(16, 7, 257, 384), |
177 new Code(9, 3, 25, 32), | 176 new Code(17, 7, 385, 512), |
178 new Code(10, 4, 33, 48), | 177 new Code(18, 8, 513, 768), |
179 new Code(11, 4, 49, 64), | 178 new Code(19, 8, 769, 1024), |
180 new Code(12, 5, 65, 96), | 179 new Code(20, 9, 1025, 1536), |
181 new Code(13, 5, 97, 128), | 180 new Code(21, 9, 1537, 2048), |
182 new Code(14, 6, 129, 192), | 181 new Code(22, 10, 2049, 3072), |
183 new Code(15, 6, 193, 256), | 182 new Code(23, 10, 3073, 4096), |
184 new Code(16, 7, 257, 384), | 183 new Code(24, 11, 4097, 6144), |
185 new Code(17, 7, 385, 512), | 184 new Code(25, 11, 6145, 8192), |
186 new Code(18, 8, 513, 768), | 185 new Code(26, 12, 8193, 12288), |
187 new Code(19, 8, 769, 1024), | 186 new Code(27, 12, 12289, 16384), |
188 new Code(20, 9, 1025, 1536), | 187 new Code(28, 13, 16385, 24576), |
189 new Code(21, 9, 1537, 2048), | 188 new Code(29, 13, 24577, 32768)]; |
190 new Code(22, 10, 2049, 3072), | |
191 new Code(23, 10, 3073, 4096), | |
192 new Code(24, 11, 4097, 6144), | |
193 new Code(25, 11, 6145, 8192), | |
194 new Code(26, 12, 8193, 12288), | |
195 new Code(27, 12, 12289, 16384), | |
196 new Code(28, 13, 16385, 24576), | |
197 new Code(29, 13, 24577, 32768)]; | |
198 static_this_completed = true; | |
199 } | |
200 } | 189 } |
201 | 190 |
202 void writeShortLSB(ByteArrayOutputStream baos, int theShort) { | 191 void writeShortLSB(ByteArrayOutputStream baos, int theShort) { |
203 | 192 |
204 byte byte1 = cast(byte) (theShort & 0xff); | 193 byte byte1 = cast(byte) (theShort & 0xff); |