mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-06-15 11:48:43 +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
|
uses
|
||||||
SysUtils, Classes,
|
SysUtils, Classes,
|
||||||
|
{$IFDEF UseFPImage}
|
||||||
|
FPImage, FPReadPNG, FPWritePNG, FPWriteBMP, IntfGraphics,
|
||||||
|
{$ENDIF}
|
||||||
LCLStrConsts, vclGlobals, LMessages, LCLType, LCLProc, LCLLinux, LResources,
|
LCLStrConsts, vclGlobals, LMessages, LCLType, LCLProc, LCLLinux, LResources,
|
||||||
GraphType, GraphMath
|
GraphType, GraphMath;
|
||||||
{$IFDEF UseFPImage}, FPImage, FPReadPNG, FPWritePNG, IntfGraphics{$ENDIF}
|
|
||||||
;
|
|
||||||
|
|
||||||
type
|
type
|
||||||
PColor = ^TColor;
|
PColor = ^TColor;
|
||||||
@ -1198,6 +1199,9 @@ end.
|
|||||||
{ =============================================================================
|
{ =============================================================================
|
||||||
|
|
||||||
$Log$
|
$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
|
Revision 1.88 2003/09/08 12:21:48 mattias
|
||||||
added fpImage reader/writer hooks to TBitmap
|
added fpImage reader/writer hooks to TBitmap
|
||||||
|
|
||||||
|
@ -496,6 +496,13 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TBitmap.WriteStream(Stream: TStream; WriteSize: Boolean);
|
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
|
Type
|
||||||
TBITMAPHEADER = packed record
|
TBITMAPHEADER = packed record
|
||||||
FileHeader : tagBitmapFileHeader;
|
FileHeader : tagBitmapFileHeader;
|
||||||
@ -641,6 +648,7 @@ begin
|
|||||||
MemStream.Free;
|
MemStream.Free;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
procedure TBitmap.StoreOriginalStream(Stream: TStream);
|
procedure TBitmap.StoreOriginalStream(Stream: TStream);
|
||||||
var
|
var
|
||||||
@ -735,6 +743,7 @@ begin
|
|||||||
MemStream.Position:=0;
|
MemStream.Position:=0;
|
||||||
FreeAndNil(FImage.FSaveStream);
|
FreeAndNil(FImage.FSaveStream);
|
||||||
FImage.SaveStream:=MemStream;
|
FImage.SaveStream:=MemStream;
|
||||||
|
FImage.SaveStreamType:=bnNone;
|
||||||
MemStream:=nil;
|
MemStream:=nil;
|
||||||
// copy savestream to destination stream
|
// copy savestream to destination stream
|
||||||
Stream.CopyFrom(FImage.SaveStream,FImage.SaveStream.Size);
|
Stream.CopyFrom(FImage.SaveStream,FImage.SaveStream.Size);
|
||||||
@ -879,6 +888,9 @@ end;
|
|||||||
{ =============================================================================
|
{ =============================================================================
|
||||||
|
|
||||||
$Log$
|
$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
|
Revision 1.44 2003/09/08 12:21:48 mattias
|
||||||
added fpImage reader/writer hooks to TBitmap
|
added fpImage reader/writer hooks to TBitmap
|
||||||
|
|
||||||
|
@ -270,55 +270,10 @@ end;
|
|||||||
|
|
||||||
procedure TPixmap.WriteStream(Stream: TStream; WriteSize: Boolean);
|
procedure TPixmap.WriteStream(Stream: TStream; WriteSize: Boolean);
|
||||||
{$IFDEF UseFPImage}
|
{$IFDEF UseFPImage}
|
||||||
|
|
||||||
Procedure DoWriteStreamSize(DestStream: TStream; Size: longint);
|
|
||||||
begin
|
begin
|
||||||
if WriteSize then
|
WriteStreamWithFPImage(Stream,WriteSize,TFPWriterBMP);
|
||||||
DestStream.WriteBuffer(Size, SizeOf(Size));
|
if (FImage.SaveStream<>nil) and (FImage.SaveStreamType=bnNone) then
|
||||||
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;
|
|
||||||
FImage.SaveStreamType:=bnXPixmap;
|
FImage.SaveStreamType:=bnXPixmap;
|
||||||
// copy savestream to destination stream
|
|
||||||
Stream.CopyFrom(FImage.SaveStream,FImage.SaveStream.Size);
|
|
||||||
finally
|
|
||||||
MemStream.Free;
|
|
||||||
IntfImg.Free;
|
|
||||||
XPMWriter.Free;
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
{$ELSE}
|
{$ELSE}
|
||||||
begin
|
begin
|
||||||
@ -331,6 +286,9 @@ end;
|
|||||||
{ =============================================================================
|
{ =============================================================================
|
||||||
|
|
||||||
$Log$
|
$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
|
Revision 1.21 2003/09/02 21:32:56 mattias
|
||||||
implemented TOpenPictureDialog
|
implemented TOpenPictureDialog
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user