From 36feee63d69a8ddba9f45a5da6970058849eddd6 Mon Sep 17 00:00:00 2001 From: paul Date: Wed, 25 Jun 2008 05:04:47 +0000 Subject: [PATCH] lcl: - fix Init_BPP32_B8G8R8A8_M1_BIO_TTB - fix PngReader - it now handles 1 color transparent png images git-svn-id: trunk@15571 - --- lcl/graphtype.pp | 2 +- lcl/include/fpimagebitmap.inc | 2 +- lcl/include/graphic.inc | 2 +- lcl/intfgraphics.pas | 10 +++++++--- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/lcl/graphtype.pp b/lcl/graphtype.pp index af88bb9f32..919a49c71f 100644 --- a/lcl/graphtype.pp +++ b/lcl/graphtype.pp @@ -784,7 +784,7 @@ end; procedure TRawImageDescription.Init_BPP32_B8G8R8A8_M1_BIO_TTB(AWidth, AHeight: integer); begin - Init_BPP32_B8G8R8A8_BIO_TTB(Width, Height); + Init_BPP32_B8G8R8A8_BIO_TTB(AWidth, AHeight); MaskBitsPerPixel := 1; MaskBitOrder := riboBitsInOrder; diff --git a/lcl/include/fpimagebitmap.inc b/lcl/include/fpimagebitmap.inc index 463832d899..9a8723f5ff 100644 --- a/lcl/include/fpimagebitmap.inc +++ b/lcl/include/fpimagebitmap.inc @@ -125,7 +125,7 @@ begin SCB.FImage.FreeData; IntfImg.GetRawImage(SCB.FImage, True); SCB.FHasMask := IntfImg.HasMask; - if not IntfImg.HasMask + if not SCB.FHasMask then SCB.FImage.Description.MaskBitsPerPixel := 0; finally LazReader := nil; diff --git a/lcl/include/graphic.inc b/lcl/include/graphic.inc index cfc50a7ee9..2d26b5af17 100644 --- a/lcl/include/graphic.inc +++ b/lcl/include/graphic.inc @@ -18,7 +18,7 @@ constructor TGraphic.Create; begin - Inherited Create; + inherited Create; end; procedure TGraphic.Clear; diff --git a/lcl/intfgraphics.pas b/lcl/intfgraphics.pas index 31605deb9d..f435ef2d18 100644 --- a/lcl/intfgraphics.pas +++ b/lcl/intfgraphics.pas @@ -2924,7 +2924,7 @@ end; function TLazIntfImage.HasMask: boolean; begin - Result := FMaskSet; + Result := FMaskSet or FRawImage.IsMasked(False); end; constructor TLazIntfImage.Create(AWidth, AHeight: integer); @@ -5101,10 +5101,14 @@ begin if FUpdateDescription and (theImage is TLazIntfImage) then begin // init some default - Desc.Init_BPP32_B8G8R8A8_BIO_TTB(Header.Width, Header.height); IsGray := Header.ColorType and 3 = 0; - IsAlpha := (Header.ColorType and 4 <> 0) or FAlphaPalette; + // Paul: todo - remove UseTransparent and use mask if no alpha + IsAlpha := (Header.ColorType and 4 <> 0) or FAlphaPalette or UseTransparent; + + if not IsAlpha and UseTransparent + then Desc.Init_BPP32_B8G8R8A8_M1_BIO_TTB(Header.Width, Header.height) + else Desc.Init_BPP32_B8G8R8A8_BIO_TTB(Header.Width, Header.height); if IsGray then Desc.Format := ricfGray;