# HG changeset patch # User Frank Benoit # Date 1214338338 -7200 # Node ID cc1d3de0e80bca92d90ab2517d57880806d9b16c # Parent 8d1948844918d03e76771b30f953f59643051368 Fix: make ImageLoader.save work diff -r 8d1948844918 -r cc1d3de0e80b dwt/dwthelper/ByteArrayOutputStream.d --- a/dwt/dwthelper/ByteArrayOutputStream.d Fri Jun 20 15:03:54 2008 +0200 +++ b/dwt/dwthelper/ByteArrayOutputStream.d Tue Jun 24 22:12:18 2008 +0200 @@ -5,25 +5,32 @@ public import dwt.dwthelper.OutputStream; import dwt.dwthelper.utils; +import tango.io.GrowBuffer; public class ByteArrayOutputStream : dwt.dwthelper.OutputStream.OutputStream { - alias dwt.dwthelper.OutputStream.OutputStream.write write; + protected GrowBuffer buffer; - protected byte[] buf; - protected int count; public this (){ + buffer = new GrowBuffer(); } public this ( int par_size ){ + buffer = new GrowBuffer(par_size); } - public synchronized void write( int b ){ - implMissing( __FILE__, __LINE__ ); + public synchronized override void write( int b ){ + byte[1] a; + a[0] = b & 0xFF; + buffer.append(a); } - public synchronized void write( byte[] b, int off, int len ){ - implMissing( __FILE__, __LINE__ ); + public synchronized override void write( byte[] b, int off, int len ){ + buffer.append( b[ off .. off + len ]); + } + + public synchronized override void write( byte[] b ){ + buffer.append( b ); } public synchronized void writeTo( dwt.dwthelper.OutputStream.OutputStream out_KEYWORDESCAPE ){ @@ -35,8 +42,7 @@ } public synchronized byte[] toByteArray(){ - implMissing( __FILE__, __LINE__ ); - return null; + return cast(byte[])buffer.slice(); } public int size(){ @@ -62,8 +68,6 @@ public override void close(){ implMissing( __FILE__, __LINE__ ); } - - } diff -r 8d1948844918 -r cc1d3de0e80b dwt/dwthelper/FileOutputStream.d --- a/dwt/dwthelper/FileOutputStream.d Fri Jun 20 15:03:54 2008 +0200 +++ b/dwt/dwthelper/FileOutputStream.d Tue Jun 24 22:12:18 2008 +0200 @@ -8,41 +8,38 @@ import dwt.dwthelper.utils; +import tango.io.FileConduit; + public class FileOutputStream : dwt.dwthelper.OutputStream.OutputStream { alias dwt.dwthelper.OutputStream.OutputStream.write write; alias dwt.dwthelper.OutputStream.OutputStream.close close; - + FileConduit fc; + public this ( String name ){ - implMissing( __FILE__, __LINE__ ); + fc = new FileConduit( name, FileConduit.WriteCreate ); } public this ( String name, bool append ){ - implMissing( __FILE__, __LINE__ ); + fc = new FileConduit( name, append ? FileConduit.WriteAppending : FileConduit.WriteCreate ); } public this ( dwt.dwthelper.File.File file ){ - implMissing( __FILE__, __LINE__ ); + this( file.toString ); } public this ( dwt.dwthelper.File.File file, bool append ){ - implMissing( __FILE__, __LINE__ ); - } - - public void write( int b ){ - implMissing( __FILE__, __LINE__ ); + this( file.toString, append ); } - public void write( byte[] b ){ - implMissing( __FILE__, __LINE__ ); + public override void write( int b ){ + ubyte[1] a; + a[0] = b & 0xFF; + fc.write(a); } - public void write( byte[] b, int off, int len ){ - implMissing( __FILE__, __LINE__ ); - } - - public void close(){ - implMissing( __FILE__, __LINE__ ); + public override void close(){ + fc.close(); } public void finalize(){ diff -r 8d1948844918 -r cc1d3de0e80b dwt/dwthelper/OutputStream.d --- a/dwt/dwthelper/OutputStream.d Fri Jun 20 15:03:54 2008 +0200 +++ b/dwt/dwthelper/OutputStream.d Tue Jun 24 22:12:18 2008 +0200 @@ -4,47 +4,29 @@ module dwt.dwthelper.OutputStream; import dwt.dwthelper.utils; -static import tango.io.model.IConduit; public abstract class OutputStream { - private tango.io.model.IConduit.OutputStream ostr; - public this(){ } - protected this( tango.io.model.IConduit.OutputStream aOutStream) { - this.ostr = aOutStream; - } - - protected this(OutputStream rhs) { - ostr = rhs.ostr; - } - public abstract void write( int b ); public void write( byte[] b ){ - ostr.write(b); - } - - public void write(String c) { - ostr.write(c); + foreach( bv; b ){ + write(bv); + } } public void write( byte[] b, int off, int len ){ - implMissing( __FILE__, __LINE__ ); + write(b[off .. off+len]); } public void flush(){ - ostr.flush(); } public void close(){ - ostr.flush(); - implMissing( __FILE__, __LINE__ ); } - - }