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

View File

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