fixed loading, saving and copying as suggested by Jesus Reyes A.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@289 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
tomb0 2007-12-01 12:19:48 +00:00
parent 9c8ba59429
commit 7f599c8e95
2 changed files with 28 additions and 10 deletions

View File

@ -1,6 +1,6 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<CONFIG> <CONFIG>
<Package Version="2"> <Package Version="3">
<PathDelim Value="\"/> <PathDelim Value="\"/>
<Name Value="LazRGBGraphics"/> <Name Value="LazRGBGraphics"/>
<Author Value="Tom Gregorovic (_tom_@centrum.cz)"/> <Author Value="Tom Gregorovic (_tom_@centrum.cz)"/>
@ -29,7 +29,7 @@
"/> "/>
<License Value="Modified LGPL <License Value="Modified LGPL
"/> "/>
<Version Minor="2"/> <Version Minor="2" Release="1"/>
<Files Count="7"> <Files Count="7">
<Item1> <Item1>
<Filename Value="rgbgraphics.pas"/> <Filename Value="rgbgraphics.pas"/>
@ -65,11 +65,11 @@
</Files> </Files>
<RequiredPkgs Count="2"> <RequiredPkgs Count="2">
<Item1> <Item1>
<PackageName Value="FCL"/> <PackageName Value="LCL"/>
<MinVersion Major="1" Valid="True"/>
</Item1> </Item1>
<Item2> <Item2>
<PackageName Value="LCL"/> <PackageName Value="FCL"/>
<MinVersion Major="1" Valid="True"/>
</Item2> </Item2>
</RequiredPkgs> </RequiredPkgs>
<UsageOptions> <UsageOptions>

View File

@ -34,7 +34,7 @@ interface
uses uses
Classes, SysUtils, LCLIntf, Classes, SysUtils, LCLIntf,
LCLType, LCLProc, FPImage, LResources, IntfGraphics, LCLType, LCLProc, FPImage, LResources, IntfGraphics,
Graphics, Forms, Math, Clipbrd, GraphType, Graphics, Forms, Math, Clipbrd,
RGBTypes, RGBRoutines, RGBUtils; RGBTypes, RGBRoutines, RGBUtils;
@ -179,6 +179,8 @@ type
private private
FCanvas: TRGB32Canvas; FCanvas: TRGB32Canvas;
FMask: TRGBMask; FMask: TRGBMask;
protected
function CreateDefaultLazIntfImage: TLazIntfImage;
public public
constructor Create(AWidth, AHeight: Integer); override; constructor Create(AWidth, AHeight: Integer); override;
constructor CreateAsCopy(ABitmap: TRGBBitmapCore); override; constructor CreateAsCopy(ABitmap: TRGBBitmapCore); override;
@ -239,6 +241,22 @@ end;
{ TRGB32Bitmap } { TRGB32Bitmap }
function TRGB32Bitmap.CreateDefaultLazIntfImage: TLazIntfImage;
var
RID: TRawImageDescription;
DC: HDC;
begin
DC := GetDC(0);
try
RawImage_DescriptionFromDevice(DC, RID);
finally
ReleaseDC(0, DC);
end;
Result := TLazIntfImage.Create(0, 0);
Result.DataDescription := RID;
end;
constructor TRGB32Bitmap.Create(AWidth, AHeight: Integer); constructor TRGB32Bitmap.Create(AWidth, AHeight: Integer);
begin begin
inherited; inherited;
@ -267,7 +285,7 @@ var
Image: TLazIntfImage; Image: TLazIntfImage;
Reader: TFPCustomImageReader; Reader: TFPCustomImageReader;
begin begin
Image := TLazIntfImage.Create(0, 0); Image := CreateDefaultLazIntfImage;
Reader := GetFPImageReaderForFileExtension(ExtractFileExt(FileName)).Create; Reader := GetFPImageReaderForFileExtension(ExtractFileExt(FileName)).Create;
try try
Image.LoadFromFile(FileName, Reader); Image.LoadFromFile(FileName, Reader);
@ -338,7 +356,7 @@ var
Image: TLazIntfImage; Image: TLazIntfImage;
Writer: TFPCustomImageWriter; Writer: TFPCustomImageWriter;
begin begin
Image := TLazIntfImage.Create(0, 0); Image := CreateDefaultLazIntfImage;
Writer := AWriterClass.Create; Writer := AWriterClass.Create;
try try
SaveToLazIntfImage(Image, ARect); SaveToLazIntfImage(Image, ARect);
@ -354,7 +372,7 @@ var
Image: TLazIntfImage; Image: TLazIntfImage;
Writer: TFPCustomImageWriter; Writer: TFPCustomImageWriter;
begin begin
Image := TLazIntfImage.Create(0, 0); Image := CreateDefaultLazIntfImage;
Writer := GetFPImageWriterForFileExtension(ExtractFileExt(FileName)).Create; Writer := GetFPImageWriterForFileExtension(ExtractFileExt(FileName)).Create;
try try
inherited SaveToLazIntfImage(Image); inherited SaveToLazIntfImage(Image);
@ -441,7 +459,7 @@ var
begin begin
PixmapStream := TMemoryStream.Create; PixmapStream := TMemoryStream.Create;
BitmapStream := TMemoryStream.Create; BitmapStream := TMemoryStream.Create;
Image := TLazIntfImage.Create(0, 0); Image := CreateDefaultLazIntfImage;
PixmapWriter := TPixmap.GetDefaultFPWriter.Create; PixmapWriter := TPixmap.GetDefaultFPWriter.Create;
BitmapWriter := TBitmap.GetDefaultFPWriter.Create; BitmapWriter := TBitmap.GetDefaultFPWriter.Create;
try try