Mercurial > projects > dwt-linux
annotate dwt/dwthelper/InflaterInputStream.d @ 361:4bffbf81e2d6
redirect direct prints to DwtLogger
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Fri, 20 Mar 2009 21:00:06 +0100 |
parents | ee1dd551f5b1 |
children | 5f6d9bb33a53 |
rev | line source |
---|---|
12 | 1 /** |
2 * Authors: Frank Benoit <keinfarbton@googlemail.com> | |
3 */ | |
4 module dwt.dwthelper.InflaterInputStream; | |
5 | |
6 public import dwt.dwthelper.InputStream; | |
7 import dwt.dwthelper.utils; | |
134
116d23207a86
changed PNG loader to use internal inflating
Frank Benoit <benoit@tionex.de>
parents:
132
diff
changeset
|
8 import tango.io.compress.ZlibStream; |
307 | 9 version(Windows){ |
10 version(build){ | |
11 pragma(link,"zlib"); | |
12 } | |
13 } | |
316 | 14 version(TANGOSVN){ |
15 import tango.io.device.Conduit; | |
16 } else { | |
17 import tango.io.Conduit; | |
18 } | |
276
9d67c3170a58
Removed version=TANGOSVN for release 0.99.7
Frank Benoit <benoit@tionex.de>
parents:
271
diff
changeset
|
19 |
132
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
20 class InputStreamWrapper : tango.io.model.IConduit.InputStream { |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
21 |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
22 dwt.dwthelper.InputStream.InputStream istr; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
23 |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
24 this( dwt.dwthelper.InputStream.InputStream istr ){ |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
25 this.istr = istr; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
26 } |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
27 |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
28 uint read (void[] dst){ |
134
116d23207a86
changed PNG loader to use internal inflating
Frank Benoit <benoit@tionex.de>
parents:
132
diff
changeset
|
29 int res = istr.read( cast(byte[])dst ); |
132
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
30 return res; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
31 } |
360
ee1dd551f5b1
Make compilable for tango 0.99.8
Frank Benoit <benoit@tionex.de>
parents:
356
diff
changeset
|
32 |
ee1dd551f5b1
Make compilable for tango 0.99.8
Frank Benoit <benoit@tionex.de>
parents:
356
diff
changeset
|
33 IOStream flush () { |
ee1dd551f5b1
Make compilable for tango 0.99.8
Frank Benoit <benoit@tionex.de>
parents:
356
diff
changeset
|
34 return this; |
ee1dd551f5b1
Make compilable for tango 0.99.8
Frank Benoit <benoit@tionex.de>
parents:
356
diff
changeset
|
35 } |
ee1dd551f5b1
Make compilable for tango 0.99.8
Frank Benoit <benoit@tionex.de>
parents:
356
diff
changeset
|
36 |
ee1dd551f5b1
Make compilable for tango 0.99.8
Frank Benoit <benoit@tionex.de>
parents:
356
diff
changeset
|
37 void[] load ( size_t max = -1 ) { |
ee1dd551f5b1
Make compilable for tango 0.99.8
Frank Benoit <benoit@tionex.de>
parents:
356
diff
changeset
|
38 return Conduit.load (this, max); |
262 | 39 } |
132
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
40 |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
41 tango.io.model.IConduit.InputStream clear (){ |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
42 return this; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
43 } |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
44 |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
45 tango.io.model.IConduit.IConduit conduit (){ |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
46 return null; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
47 } |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
48 |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
49 void close (){ |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
50 istr.close(); |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
51 } |
360
ee1dd551f5b1
Make compilable for tango 0.99.8
Frank Benoit <benoit@tionex.de>
parents:
356
diff
changeset
|
52 tango.io.model.IConduit.InputStream input (){ |
ee1dd551f5b1
Make compilable for tango 0.99.8
Frank Benoit <benoit@tionex.de>
parents:
356
diff
changeset
|
53 return null; |
ee1dd551f5b1
Make compilable for tango 0.99.8
Frank Benoit <benoit@tionex.de>
parents:
356
diff
changeset
|
54 } |
ee1dd551f5b1
Make compilable for tango 0.99.8
Frank Benoit <benoit@tionex.de>
parents:
356
diff
changeset
|
55 long seek (long offset, Anchor anchor = Anchor.Begin){ |
ee1dd551f5b1
Make compilable for tango 0.99.8
Frank Benoit <benoit@tionex.de>
parents:
356
diff
changeset
|
56 return 0; |
356
8ebacc5c07dc
Fixes for TANGOSVN r4235 -- still some warnings but builds
John Reimer <terminal.node@gmail.com>
parents:
316
diff
changeset
|
57 } |
132
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
58 } |
12 | 59 |
60 public class InflaterInputStream : dwt.dwthelper.InputStream.InputStream { | |
61 | |
62 alias dwt.dwthelper.InputStream.InputStream.read read; | |
63 alias dwt.dwthelper.InputStream.InputStream.skip skip; | |
64 alias dwt.dwthelper.InputStream.InputStream.available available; | |
65 alias dwt.dwthelper.InputStream.InputStream.close close; | |
66 alias dwt.dwthelper.InputStream.InputStream.mark mark; | |
67 alias dwt.dwthelper.InputStream.InputStream.reset reset; | |
68 alias dwt.dwthelper.InputStream.InputStream.markSupported markSupported; | |
69 | |
70 protected byte[] buf; | |
71 protected int len; | |
72 package bool usesDefaultInflater = false; | |
73 | |
134
116d23207a86
changed PNG loader to use internal inflating
Frank Benoit <benoit@tionex.de>
parents:
132
diff
changeset
|
74 ZlibInput tangoIstr; |
132
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
75 |
12 | 76 public this ( dwt.dwthelper.InputStream.InputStream istr ){ |
134
116d23207a86
changed PNG loader to use internal inflating
Frank Benoit <benoit@tionex.de>
parents:
132
diff
changeset
|
77 tangoIstr = new ZlibInput( new InputStreamWrapper(istr )); |
12 | 78 } |
79 | |
80 public int read(){ | |
132
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
81 ubyte[1] data; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
82 uint res = tangoIstr.read( data ); |
134
116d23207a86
changed PNG loader to use internal inflating
Frank Benoit <benoit@tionex.de>
parents:
132
diff
changeset
|
83 if( res !is 1 ){ |
132
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
84 return data[0] & 0xFF; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
85 } |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
86 return -1; |
12 | 87 } |
88 | |
89 public int read( byte[] b, int off, int len ){ | |
90 implMissing( __FILE__, __LINE__ ); | |
91 return 0; | |
92 } | |
93 | |
94 public int available(){ | |
95 implMissing( __FILE__, __LINE__ ); | |
96 return 0; | |
97 } | |
98 | |
99 public long skip( long n ){ | |
100 implMissing( __FILE__, __LINE__ ); | |
101 return 0L; | |
102 } | |
103 | |
104 public void close(){ | |
105 implMissing( __FILE__, __LINE__ ); | |
106 } | |
107 | |
108 public void fill(){ | |
109 implMissing( __FILE__, __LINE__ ); | |
110 } | |
111 | |
112 public bool markSupported(){ | |
113 implMissing( __FILE__, __LINE__ ); | |
114 return false; | |
115 } | |
116 | |
117 public synchronized void mark( int readlimit ){ | |
118 implMissing( __FILE__, __LINE__ ); | |
119 } | |
120 | |
121 public synchronized void reset(){ | |
122 implMissing( __FILE__, __LINE__ ); | |
123 } | |
124 } | |
125 | |
126 |