mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-08 17:41:26 +02:00
104 lines
2.1 KiB
PHP
104 lines
2.1 KiB
PHP
{%MainUnit ../graphics.pp}
|
|
|
|
{ TSharedCustomBitmap
|
|
|
|
*****************************************************************************
|
|
This file is part of the Lazarus Component Library (LCL)
|
|
|
|
See the file COPYING.modifiedLGPL.txt, included in this distribution,
|
|
for details about the license.
|
|
*****************************************************************************
|
|
}
|
|
|
|
constructor TSharedCustomBitmap.Create;
|
|
begin
|
|
inherited Create;
|
|
FImage.Init;
|
|
end;
|
|
|
|
destructor TSharedCustomBitmap.Destroy;
|
|
begin
|
|
FreeAndNil(FSaveStream);
|
|
FreeHandle;
|
|
FreeImage;
|
|
inherited Destroy;
|
|
end;
|
|
|
|
procedure TSharedCustomBitmap.FreeHandle;
|
|
begin
|
|
FreePalette;
|
|
inherited FreeHandle;
|
|
end;
|
|
|
|
procedure TSharedCustomBitmap.FreeImage;
|
|
begin
|
|
FImage.FreeData;
|
|
FImage.Description.Format := ricfNone;
|
|
end;
|
|
|
|
procedure TSharedCustomBitmap.FreePalette;
|
|
begin
|
|
if FPalette = 0 then Exit;
|
|
|
|
DeleteObject(FPalette);
|
|
FPalette := 0;
|
|
end;
|
|
|
|
function TSharedCustomBitmap.GetHeight: Integer;
|
|
begin
|
|
if FImage.Description.Format = ricfNone
|
|
then Result := 0
|
|
else Result := FImage.Description.Height;
|
|
end;
|
|
|
|
function TSharedCustomBitmap.HandleAllocated: boolean;
|
|
begin
|
|
Result := FHandle <> 0;
|
|
end;
|
|
|
|
function TSharedCustomBitmap.ImageAllocated: boolean;
|
|
begin
|
|
Result := FImage.Description.Format <> ricfNone;
|
|
end;
|
|
|
|
function TSharedCustomBitmap.ReleasePalette: HPALETTE;
|
|
begin
|
|
Result := FPalette;
|
|
FPalette := 0;
|
|
end;
|
|
|
|
function TSharedCustomBitmap.GetPixelFormat: TPixelFormat;
|
|
begin
|
|
if FImage.Description.Format = ricfNone then Exit(pfDevice);
|
|
|
|
case FImage.Description.Depth of
|
|
1: Exit(pf1Bit);
|
|
4: Exit(pf4Bit);
|
|
8: Exit(pf8Bit);
|
|
15: Exit(pf15Bit);
|
|
16: Exit(pf16Bit);
|
|
24: Exit(pf24Bit);
|
|
32: Exit(pf32Bit);
|
|
end;
|
|
Result := pfCustom;
|
|
end;
|
|
|
|
function TSharedCustomBitmap.IsEmpty: boolean;
|
|
begin
|
|
Result := inherited IsEmpty and not
|
|
(
|
|
(FImage.Description.Format <> ricfNone) and
|
|
(FImage.Data <> nil) and
|
|
(FImage.DataSize <> 0)
|
|
);
|
|
end;
|
|
|
|
function TSharedCustomBitmap.GetWidth: Integer;
|
|
begin
|
|
if FImage.Description.Format = ricfNone
|
|
then Result := 0
|
|
else Result := FImage.Description.Width;
|
|
end;
|
|
|
|
// included by graphics.pp
|