* fixed maskhandlecreation before bitmaphandle was created

git-svn-id: trunk@16248 -
This commit is contained in:
marc 2008-08-25 23:14:30 +00:00
parent 6dac5ad9bc
commit 97be08d811

View File

@ -106,10 +106,44 @@ begin
end;
procedure TCustomBitmap.MaskHandleNeeded;
var
ImagePtr: PRawImage;
MaskImage: TRawImage;
msk, dummy: HBITMAP;
begin
if FMaskHandle <> 0 then Exit;
if Masked
then CreateMask;
if not Masked then Exit;
if not BitmapHandleAllocated
then BitmapHandleNeeded; // create together with bitmaphandle
if FMaskHandle <> 0 then Exit;
ImagePtr := GetRawImagePtr;
if ImagePtr^.Description.Format = ricfNone then Exit;
// check if we have mask data
if (ImagePtr^.Description.MaskBitsPerPixel <> 0)
and (ImagePtr^.Mask <> nil)
and (ImagePtr^.MaskSize <> 0)
then begin
// move mask to image data, so we only have to create one handle
// (and don't have to think about imahehandle format)
MaskImage.Description := ImagePtr^.Description.GetDescriptionFromMask;
MaskImage.DataSize := ImagePtr^.MaskSize;
MaskImage.Data := ImagePtr^.Mask;
if RawImage_CreateBitmaps(MaskImage, msk, dummy, False)
then begin
if BitmapHandleAllocated
then UpdateHandles(BitmapHandle, msk)
else UpdateHandles(0, msk);
Exit;
end;
end;
// no data, create ourselves
CreateMask;
end;
function TCustomBitmap.PaletteAllocated: boolean;