1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
|
{%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
|