* on Carbon color  DC bitmaps are always 32bpp, our description specifies this, bitmapinfo should skip alpha when no alpha present
* only reduce bitsperpixel to 24bit on win32

git-svn-id: trunk@15714 -
This commit is contained in:
marc 2008-07-09 00:10:47 +00:00
parent 772684f5d0
commit c1820846a9
4 changed files with 11 additions and 16 deletions

View File

@ -300,14 +300,7 @@ begin
end
else begin
if (Desc.Depth = 32) and (ADesc.Format = ricfRGBA)
then begin
ADesc.Depth := 24;
//---
// maybe move this to win32 only
if Desc.AlphaShift = 24
then ADesc.BitsPerPixel := 24;
//---
end;
then ADesc.Depth := 24;
end;
if riqfMask in AFlags

View File

@ -375,9 +375,9 @@ const
BITMAPINFOMAP: array[TCarbonBitmapType] of CGBitmapInfo = (
{cbtMask} kCGImageAlphaNone,
{cbtGray} kCGImageAlphaNone,
{cbtRGB} kCGImageAlphaNone,
{cbtRGB} kCGImageAlphaNoneSkipFirst,
{cbtARGB} kCGImageAlphaFirst,
{cbtBGR} kCGImageAlphaNone or kCGBitmapByteOrder32Little,
{cbtBGR} kCGImageAlphaNoneSkipFirst or kCGBitmapByteOrder32Little,
{cbtBGRA} kCGImageAlphaFirst or kCGBitmapByteOrder32Little
);

View File

@ -130,10 +130,13 @@ end;
Returns:
------------------------------------------------------------------------------}
//function TWin32WidgetSet.RawImage_QueryDescription(AFlags: TRawImageQueryFlags; out ADesc: TRawImageDescription): Boolean;
//begin
// // override only when queried formats are different from screen description
//end;
function TWin32WidgetSet.RawImage_QueryDescription(AFlags: TRawImageQueryFlags; out ADesc: TRawImageDescription): Boolean;
begin
Result := inherited RawImage_QueryDescription(AFlags, ADesc);
// reduce mem
if Result and (ADesc.Depth = 24)
then ADesc.BitsPerPixel := 24;
end;
procedure TWin32WidgetSet.RemoveProcessEventHandler(var AHandler: PProcessEventHandler);
var

View File

@ -60,8 +60,7 @@ function RawImage_DescriptionFromBitmap(ABitmap: HBITMAP; out ADesc: TRawImageDe
function RawImage_DescriptionFromDevice(ADC: HDC; out ADesc: TRawImageDescription): Boolean; override;
function RawImage_FromBitmap(out ARawImage: TRawImage; ABitmap, AMask: HBITMAP; ARect: PRect = nil): Boolean; override;
function RawImage_FromDevice(out ARawImage: TRawImage; ADC: HDC; const ARect: TRect): Boolean; override;
// override only when queried formats are different from screen description
//function RawImage_QueryDescription(AFlags: TRawImageQueryFlags; out ADesc: TRawImageDescription): Boolean; override;
function RawImage_QueryDescription(AFlags: TRawImageQueryFlags; out ADesc: TRawImageDescription): Boolean; override;
procedure RemoveEventHandler(var AHandler: PEventHandler); override;
procedure RemovePipeEventHandler(var AHandler: PPipeEventHandler); override;