Patch from Tom Gregorovic to allow selecting image reader in LazRGBGraphics

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1936 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
sekelsenmat
2011-09-11 14:14:07 +00:00
parent d39395b26d
commit 438eec778d

View File

@ -191,7 +191,12 @@ type
constructor CreateFromLazIntfImage(AImage: TLazIntfImage); override;
constructor CreateFromFile(const FileName: String); virtual;
constructor CreateFromFile(const FileName: String; AReaderClass: TFPCustomImageReaderClass); virtual;
constructor CreateFromFile(const FileName: String; AReader: TFPCustomImageReader); virtual;
constructor CreateFromBitmap(ABitmap: TRasterImage); virtual;
constructor CreateFromStream(AStream: TStream); virtual;
constructor CreateFromStream(AStream: TStream; AReaderClass: TFPCustomImageReaderClass); virtual;
constructor CreateFromStream(AStream: TStream; AReader: TFPCustomImageReader); virtual;
destructor Destroy; override;
procedure Assign(Source: TPersistent); override;
@ -203,7 +208,13 @@ type
procedure SaveToStream(Stream: TStream; const ARect: TRect;
AWriterClass: TFPCustomImageWriterClass); virtual;
procedure SaveToStream(Stream: TStream; AWriter: TFPCustomImageWriter); virtual;
procedure SaveToStream(Stream: TStream; const ARect: TRect;
AWriter: TFPCustomImageWriter); virtual;
procedure SaveToFile(const FileName: String); virtual;
procedure SaveToFile(const FileName: String; AWriterClass: TFPCustomImageWriterClass); virtual;
procedure SaveToFile(const FileName: String; AWriter: TFPCustomImageWriter); virtual;
procedure SaveToLazarusResource(const FileName, Name: String); virtual;
public
procedure Draw(X, Y: Integer; ABitmap: TRGB32Bitmap);
@ -297,6 +308,36 @@ begin
end;
end;
constructor TRGB32Bitmap.CreateFromFile(const FileName: String;
AReaderClass: TFPCustomImageReaderClass);
var
Image: TLazIntfImage;
Reader: TFPCustomImageReader;
begin
Reader := AReaderClass.Create;
Image := CreateDefaultLazIntfImage;
try
Image.LoadFromFile(FileName, Reader);
CreateFromLazIntfImage(Image);
finally
Image.Free;
Reader.Free;
end;
end;
constructor TRGB32Bitmap.CreateFromFile(const FileName: String; AReader: TFPCustomImageReader);
var
Image: TLazIntfImage;
begin
Image := CreateDefaultLazIntfImage;
try
Image.LoadFromFile(FileName, AReader);
CreateFromLazIntfImage(Image);
finally
Image.Free;
end;
end;
constructor TRGB32Bitmap.CreateFromBitmap(ABitmap: TRasterImage);
var
Image: TLazIntfImage;
@ -309,6 +350,48 @@ begin
end;
end;
constructor TRGB32Bitmap.CreateFromStream(AStream: TStream);
var
Image: TLazIntfImage;
begin
Image := CreateDefaultLazIntfImage;
try
Image.LoadFromStream(AStream);
CreateFromLazIntfImage(Image);
finally
Image.Free;
end;
end;
constructor TRGB32Bitmap.CreateFromStream(AStream: TStream; AReaderClass: TFPCustomImageReaderClass);
var
Image: TLazIntfImage;
Reader: TFPCustomImageReader;
begin
Reader := AReaderClass.Create;
Image := CreateDefaultLazIntfImage;
try
Image.LoadFromStream(AStream, Reader);
CreateFromLazIntfImage(Image);
finally
Image.Free;
Reader.Free;
end;
end;
constructor TRGB32Bitmap.CreateFromStream(AStream: TStream; AReader: TFPCustomImageReader);
var
Image: TLazIntfImage;
begin
Image := CreateDefaultLazIntfImage;
try
Image.LoadFromStream(AStream, AReader);
CreateFromLazIntfImage(Image);
finally
Image.Free;
end;
end;
destructor TRGB32Bitmap.Destroy;
begin
FCanvas.Free;
@ -368,6 +451,25 @@ begin
end;
end;
procedure TRGB32Bitmap.SaveToStream(Stream: TStream; AWriter: TFPCustomImageWriter);
begin
SaveToStream(Stream, Bounds(0, 0, Width, Height), AWriter);
end;
procedure TRGB32Bitmap.SaveToStream(Stream: TStream; const ARect: TRect;
AWriter: TFPCustomImageWriter);
var
Image: TLazIntfImage;
begin
Image := CreateDefaultLazIntfImage;
try
SaveToLazIntfImage(Image, ARect);
Image.SaveToStream(Stream, AWriter);
finally
Image.Free;
end;
end;
procedure TRGB32Bitmap.SaveToFile(const FileName: String);
var
Image: TLazIntfImage;
@ -381,6 +483,35 @@ begin
end;
end;
procedure TRGB32Bitmap.SaveToFile(const FileName: String; AWriterClass: TFPCustomImageWriterClass);
var
Image: TLazIntfImage;
Writer: TFPCustomImageWriter;
begin
Writer := AWriterClass.Create;
Image := CreateDefaultLazIntfImage;
try
inherited SaveToLazIntfImage(Image);
Image.SaveToFile(FileName, Writer);
finally
Image.Free;
Writer.Free;
end;
end;
procedure TRGB32Bitmap.SaveToFile(const FileName: String; AWriter: TFPCustomImageWriter);
var
Image: TLazIntfImage;
begin
Image := CreateDefaultLazIntfImage;
try
inherited SaveToLazIntfImage(Image);
Image.SaveToFile(FileName, AWriter);
finally
Image.Free;
end;
end;
procedure TRGB32Bitmap.SaveToLazarusResource(const FileName, Name: String);
var
PixmapStream, ResourceStream: TMemoryStream;