Mercurial > projects > dwt-linux
annotate dwt/dwthelper/InflaterInputStream.d @ 262:e10de397beb1
ADD version TANGOSVN
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Sun, 06 Jul 2008 15:33:12 +0200 |
parents | 116d23207a86 |
children | d472fae79005 |
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; | |
132
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
8 import tango.io.Stdout; |
134
116d23207a86
changed PNG loader to use internal inflating
Frank Benoit <benoit@tionex.de>
parents:
132
diff
changeset
|
9 import tango.io.compress.ZlibStream; |
262 | 10 version(TANGOSVN) |
11 import tango.io.Conduit; | |
12 } | |
132
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
13 class InputStreamWrapper : tango.io.model.IConduit.InputStream { |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
14 |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
15 dwt.dwthelper.InputStream.InputStream istr; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
16 |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
17 this( dwt.dwthelper.InputStream.InputStream istr ){ |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
18 this.istr = istr; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
19 } |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
20 |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
21 uint read (void[] dst){ |
134
116d23207a86
changed PNG loader to use internal inflating
Frank Benoit <benoit@tionex.de>
parents:
132
diff
changeset
|
22 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
|
23 return res; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
24 } |
262 | 25 version(TANGOSVN) |
26 void[] load (void[] dst = null) { | |
27 return Conduit.load (this, dst); | |
28 } | |
29 } | |
30 | |
132
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
31 |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
32 tango.io.model.IConduit.InputStream clear (){ |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
33 return this; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
34 } |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
35 |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
36 tango.io.model.IConduit.IConduit conduit (){ |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
37 return null; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
38 } |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
39 |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
40 void close (){ |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
41 istr.close(); |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
42 } |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
43 } |
12 | 44 |
45 public class InflaterInputStream : dwt.dwthelper.InputStream.InputStream { | |
46 | |
47 alias dwt.dwthelper.InputStream.InputStream.read read; | |
48 alias dwt.dwthelper.InputStream.InputStream.skip skip; | |
49 alias dwt.dwthelper.InputStream.InputStream.available available; | |
50 alias dwt.dwthelper.InputStream.InputStream.close close; | |
51 alias dwt.dwthelper.InputStream.InputStream.mark mark; | |
52 alias dwt.dwthelper.InputStream.InputStream.reset reset; | |
53 alias dwt.dwthelper.InputStream.InputStream.markSupported markSupported; | |
54 | |
55 protected byte[] buf; | |
56 protected int len; | |
57 package bool usesDefaultInflater = false; | |
58 | |
134
116d23207a86
changed PNG loader to use internal inflating
Frank Benoit <benoit@tionex.de>
parents:
132
diff
changeset
|
59 ZlibInput tangoIstr; |
132
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
60 |
12 | 61 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
|
62 tangoIstr = new ZlibInput( new InputStreamWrapper(istr )); |
12 | 63 } |
64 | |
65 public int read(){ | |
132
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
66 ubyte[1] data; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
67 uint res = tangoIstr.read( data ); |
134
116d23207a86
changed PNG loader to use internal inflating
Frank Benoit <benoit@tionex.de>
parents:
132
diff
changeset
|
68 if( res !is 1 ){ |
132
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
69 return data[0] & 0xFF; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
70 } |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
71 return -1; |
12 | 72 } |
73 | |
74 public int read( byte[] b, int off, int len ){ | |
75 implMissing( __FILE__, __LINE__ ); | |
76 return 0; | |
77 } | |
78 | |
79 public int available(){ | |
80 implMissing( __FILE__, __LINE__ ); | |
81 return 0; | |
82 } | |
83 | |
84 public long skip( long n ){ | |
85 implMissing( __FILE__, __LINE__ ); | |
86 return 0L; | |
87 } | |
88 | |
89 public void close(){ | |
90 implMissing( __FILE__, __LINE__ ); | |
91 } | |
92 | |
93 public void fill(){ | |
94 implMissing( __FILE__, __LINE__ ); | |
95 } | |
96 | |
97 public bool markSupported(){ | |
98 implMissing( __FILE__, __LINE__ ); | |
99 return false; | |
100 } | |
101 | |
102 public synchronized void mark( int readlimit ){ | |
103 implMissing( __FILE__, __LINE__ ); | |
104 } | |
105 | |
106 public synchronized void reset(){ | |
107 implMissing( __FILE__, __LINE__ ); | |
108 } | |
109 } | |
110 | |
111 |