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);