TBitmap now uses fpImage for writing bitmaps

git-svn-id: trunk@4582 -
This commit is contained in:
mattias 2003-09-08 13:07:17 +00:00
parent bf6c4c8362
commit bc88b6e8ef
3 changed files with 24 additions and 50 deletions

View File

@ -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

View File

@ -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

View File

@ -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