diff --git a/lcl/graphics.pp b/lcl/graphics.pp index fa64c7b99c..63756c7f87 100644 --- a/lcl/graphics.pp +++ b/lcl/graphics.pp @@ -33,10 +33,11 @@ interface uses SysUtils, Classes, + {$IFDEF UseFPImage} + FPImage, FPReadPNG, FPWritePNG, FPWriteBMP, IntfGraphics, + {$ENDIF} LCLStrConsts, vclGlobals, LMessages, LCLType, LCLProc, LCLLinux, LResources, - GraphType, GraphMath - {$IFDEF UseFPImage}, FPImage, FPReadPNG, FPWritePNG, IntfGraphics{$ENDIF} - ; + GraphType, GraphMath; type PColor = ^TColor; @@ -1198,6 +1199,9 @@ end. { ============================================================================= $Log$ + Revision 1.89 2003/09/08 13:07:17 mattias + TBitmap now uses fpImage for writing bitmaps + Revision 1.88 2003/09/08 12:21:48 mattias added fpImage reader/writer hooks to TBitmap diff --git a/lcl/include/bitmap.inc b/lcl/include/bitmap.inc index b983a530b8..8804e39112 100644 --- a/lcl/include/bitmap.inc +++ b/lcl/include/bitmap.inc @@ -496,6 +496,13 @@ begin end; procedure TBitmap.WriteStream(Stream: TStream; WriteSize: Boolean); +{$IFDEF UseFPImage} +begin + WriteStreamWithFPImage(Stream,WriteSize,TFPWriterBMP); + if (FImage.SaveStream<>nil) and (FImage.SaveStreamType=bnNone) then + FImage.SaveStreamType:=bnWinBitmap; +end; +{$ELSE} Type TBITMAPHEADER = packed record FileHeader : tagBitmapFileHeader; @@ -641,6 +648,7 @@ begin MemStream.Free; end; end; +{$ENDIF} procedure TBitmap.StoreOriginalStream(Stream: TStream); var @@ -735,6 +743,7 @@ begin MemStream.Position:=0; FreeAndNil(FImage.FSaveStream); FImage.SaveStream:=MemStream; + FImage.SaveStreamType:=bnNone; MemStream:=nil; // copy savestream to destination stream Stream.CopyFrom(FImage.SaveStream,FImage.SaveStream.Size); @@ -879,6 +888,9 @@ end; { ============================================================================= $Log$ + Revision 1.45 2003/09/08 13:07:17 mattias + TBitmap now uses fpImage for writing bitmaps + Revision 1.44 2003/09/08 12:21:48 mattias added fpImage reader/writer hooks to TBitmap diff --git a/lcl/include/pixmap.inc b/lcl/include/pixmap.inc index 5861c58833..0e72d9a6a4 100644 --- a/lcl/include/pixmap.inc +++ b/lcl/include/pixmap.inc @@ -270,55 +270,10 @@ end; procedure TPixmap.WriteStream(Stream: TStream; WriteSize: Boolean); {$IFDEF UseFPImage} - - Procedure DoWriteStreamSize(DestStream: TStream; Size: longint); - begin - if WriteSize then - DestStream.WriteBuffer(Size, SizeOf(Size)); - end; - - procedure DoWriteOriginal; - begin - DoWriteStreamSize(Stream,FImage.SaveStream.Size); - FImage.SaveStream.Position:=0; - Stream.CopyFrom(FImage.SaveStream,FImage.SaveStream.Size); - end; - -var - MemStream: TMemoryStream; - IntfImg: TLazIntfImage; - XPMWriter: TLazWriterXPM; begin - if (FImage.SaveStream<>nil) and (FImage.SaveStream.Size>0) - and (FImage.SaveStreamType=bnXPixmap) then begin - DoWriteOriginal; - exit; - end; - - // write image in XPM format to temporary stream - MemStream:=TMemoryStream.Create; - IntfImg:=nil; - XPMWriter:=nil; - try - IntfImg:=TLazIntfImage.Create(0,0); - IntfImg.LoadFromBitmap(Handle,0); - XPMWriter:=TLazWriterXPM.Create; - IntfImg.SaveToStream(MemStream,XPMWriter); - FreeAndNil(XPMWriter); - FreeAndNil(IntfImg); - // save stream, so that further saves will be fast - MemStream.Position:=0; - FreeAndNil(FImage.FSaveStream); - FImage.SaveStream:=MemStream; - MemStream:=nil; + WriteStreamWithFPImage(Stream,WriteSize,TFPWriterBMP); + if (FImage.SaveStream<>nil) and (FImage.SaveStreamType=bnNone) then FImage.SaveStreamType:=bnXPixmap; - // copy savestream to destination stream - Stream.CopyFrom(FImage.SaveStream,FImage.SaveStream.Size); - finally - MemStream.Free; - IntfImg.Free; - XPMWriter.Free; - end; end; {$ELSE} begin @@ -331,6 +286,9 @@ end; { ============================================================================= $Log$ + Revision 1.22 2003/09/08 13:07:17 mattias + TBitmap now uses fpImage for writing bitmaps + Revision 1.21 2003/09/02 21:32:56 mattias implemented TOpenPictureDialog