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