mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-22 03:59:14 +02:00
correct TBitmap ReleaseHandle, ReleaseMaskHandle and ReleasePalette
git-svn-id: trunk@13308 -
This commit is contained in:
parent
2e413c5941
commit
0383724536
@ -1079,8 +1079,10 @@ type
|
||||
protected
|
||||
procedure FreeHandle; override;
|
||||
procedure FreeMaskHandle;
|
||||
procedure FreePalette;
|
||||
function ReleaseHandle: HBITMAP;
|
||||
function ReleaseMaskHandle: HBITMAP;
|
||||
function ReleasePalette: HPALETTE;
|
||||
function IsEmpty: boolean;
|
||||
function GetPixelFormat: TPixelFormat;
|
||||
public
|
||||
|
@ -560,7 +560,10 @@ end;
|
||||
|
||||
procedure TBitMap.PaletteNeeded;
|
||||
begin
|
||||
if (FImage.FPalette <> 0) then exit;
|
||||
|
||||
// ToDo
|
||||
//CreatePalette;
|
||||
end;
|
||||
|
||||
procedure TBitmap.UnshareImage(CopyContent: boolean);
|
||||
@ -1091,13 +1094,14 @@ end;
|
||||
// useful for creating a HBitmap
|
||||
function TBitmap.ReleaseHandle: HBITMAP;
|
||||
begin
|
||||
//HandleNeeded; Delphi creates a handle. Why?
|
||||
HandleNeeded;
|
||||
FreeCanvasContext;
|
||||
Result := FImage.ReleaseHandle;
|
||||
end;
|
||||
|
||||
function TBitmap.ReleaseMaskHandle: HBITMAP;
|
||||
begin
|
||||
MaskHandleNeeded;
|
||||
FreeCanvasContext;
|
||||
Result := FImage.ReleaseMaskHandle;
|
||||
end;
|
||||
@ -1105,6 +1109,11 @@ end;
|
||||
function TBitmap.ReleasePalette: HPALETTE;
|
||||
begin
|
||||
// ToDo
|
||||
{
|
||||
PaletteNeeded;
|
||||
FreeCanvasContext;
|
||||
Result := FImage.ReleasePaletteHandle;
|
||||
}
|
||||
Result := 0;
|
||||
end;
|
||||
|
||||
@ -1252,7 +1261,8 @@ end;
|
||||
|
||||
function TBitmap.GetPalette: HPALETTE;
|
||||
begin
|
||||
Result:=inherited GetPalette;
|
||||
PaletteNeeded;
|
||||
Result := FImage.FPalette;
|
||||
end;
|
||||
|
||||
function TBitmap.GetWidth: Integer;
|
||||
|
@ -32,7 +32,7 @@ end;
|
||||
|
||||
function TBitmapImage.HandleAllocated: boolean;
|
||||
begin
|
||||
Result:=FHandle<>0;
|
||||
Result := FHandle <> 0;
|
||||
end;
|
||||
|
||||
function TBitmapImage.GetHandleType: TBitmapHandleType;
|
||||
@ -52,12 +52,12 @@ end;
|
||||
procedure TBitmapImage.FreeHandle;
|
||||
begin
|
||||
FreeMaskHandle;
|
||||
FreePalette;
|
||||
if (FHandle <> 0) and (FHandle <> FDIBHandle) then
|
||||
begin
|
||||
DeleteObject(FHandle);
|
||||
end;
|
||||
FHandle := 0;
|
||||
FPalette := 0;
|
||||
end;
|
||||
|
||||
procedure TBitmapImage.FreeMaskHandle;
|
||||
@ -69,16 +69,25 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TBitmapImage.FreePalette;
|
||||
begin
|
||||
if FPalette <> 0 then
|
||||
begin
|
||||
DeleteObject(FPalette);
|
||||
FPalette := 0;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TBitmapImage.ReleaseHandle: HBITMAP;
|
||||
// simply return the current handle and set to 0 without freeing handles
|
||||
begin
|
||||
Result:=FHandle;
|
||||
Result := FHandle;
|
||||
if FHandle = FDIBHandle then
|
||||
begin
|
||||
FDIBHandle := 0;
|
||||
FDIB.dsbm.bmBits := nil;
|
||||
end;
|
||||
FHandle:=0;
|
||||
FHandle := 0;
|
||||
end;
|
||||
|
||||
function TBitmapImage.ReleaseMaskHandle: HBITMAP;
|
||||
@ -87,10 +96,15 @@ begin
|
||||
FMaskHandle := 0;
|
||||
end;
|
||||
|
||||
function TBitmapImage.ReleasePalette: HPALETTE;
|
||||
begin
|
||||
Result := FPalette;
|
||||
FPalette := 0;
|
||||
end;
|
||||
|
||||
function TBitmapImage.IsEmpty: boolean;
|
||||
begin
|
||||
Result := (FHandle = 0) and (FDIBHandle = 0)
|
||||
and (SaveStream=nil);
|
||||
Result := (FHandle = 0) and (FDIBHandle = 0) and (SaveStream=nil);
|
||||
end;
|
||||
|
||||
function TBitmapImage.GetPixelFormat: TPixelFormat;
|
||||
|
Loading…
Reference in New Issue
Block a user