mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-06-01 09:53:20 +02:00
* fixed compatebility with 32bpp bitmaps and alpha channel (issue #13917)
git-svn-id: trunk@20498 -
This commit is contained in:
parent
bcedde9431
commit
9601319387
@ -5212,9 +5212,22 @@ begin
|
||||
GetMaskShiftSize(FDibInfo.PixelMasks.A, FDibInfo.MaskShift.A, FDibInfo.MaskSize.A);
|
||||
end
|
||||
else begin
|
||||
FDibInfo.PixelMasks.A := 0;
|
||||
FDibInfo.MaskShift.A := 0;
|
||||
FDibInfo.MaskSize.A := 0;
|
||||
// officially no alpha support, but that breaks older LCL compatebility
|
||||
// so add it
|
||||
if Info.BitCount = 32
|
||||
then begin
|
||||
{$ifdef ENDIAN_BIG}
|
||||
FDibInfo.PixelMasks.A := $000000FF;
|
||||
{$else}
|
||||
FDibInfo.PixelMasks.A := $FF000000;
|
||||
{$endif}
|
||||
GetMaskShiftSize(FDibInfo.PixelMasks.A, FDibInfo.MaskShift.A, FDibInfo.MaskSize.A);
|
||||
end
|
||||
else begin
|
||||
FDibInfo.PixelMasks.A := 0;
|
||||
FDibInfo.MaskShift.A := 0;
|
||||
FDibInfo.MaskSize.A := 0;
|
||||
end;
|
||||
end;
|
||||
|
||||
if Info.Encoding = lrdeBitfield
|
||||
@ -5223,6 +5236,14 @@ begin
|
||||
then begin
|
||||
// not read yet
|
||||
TheStream.Read(FDibInfo.PixelMasks, 3 * SizeOf(FDibInfo.PixelMasks.R));
|
||||
// check if added mask is valid
|
||||
if (Info.PixelMasks.R or Info.PixelMasks.G or Info.PixelMasks.B) and Info.PixelMasks.A <> 0
|
||||
then begin
|
||||
// Alpha mask overlaps others
|
||||
FDibInfo.PixelMasks.A := 0;
|
||||
FDibInfo.MaskShift.A := 0;
|
||||
FDibInfo.MaskSize.A := 0;
|
||||
end;
|
||||
end;
|
||||
GetMaskShiftSize(FDibInfo.PixelMasks.R, FDibInfo.MaskShift.R, FDibInfo.MaskSize.R);
|
||||
GetMaskShiftSize(FDibInfo.PixelMasks.G, FDibInfo.MaskShift.G, FDibInfo.MaskSize.G);
|
||||
|
Loading…
Reference in New Issue
Block a user