mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-08 14:18:17 +02:00
TBitmap now uses fpImage for writing bitmaps
git-svn-id: trunk@4582 -
This commit is contained in:
parent
bf6c4c8362
commit
bc88b6e8ef
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user