Namespaces
Variants
Actions
(Difference between revisions)

Archived:Drawing with monochrome masks may produce incorrect results on S60 3rd Edition FP2 (Known Issue)

Jump to: navigation, search
m (Hamishwillee - Add Abstract. Tidy wiki text.)

Revision as of 08:28, 24 February 2012

Drawing masked bitmaps using a monochrome (1 bit per pixel) bitmap as a mask may produce incorrect output on S60 3rd Edition, Feature Pack 2 devices.

Article Metadata

Tested with
Devices(s): Reported against Nokia N85, Nokia N96

Compatibility
Platform(s): S60 3rd Edition, Feature Pack 2

Article
Keywords: BitBltMasked, EGray2
Created: User:Technical writer 1 (11 Nov 2008)
Last edited: hamishwillee (24 Feb 2012)
Archived.png
Archived: This article is archived because it is not considered relevant for third-party developers creating commercial solutions today. If you think this article is still relevant, let us know by adding the template {{ReviewForRemovalFromArchive|user=~~~~|write your reason here}}.

How to reproduce

Create or load a bitmap (CFbsBitmap) with the same colour depth as the screen device (screen display mode, typically EColor16MU) and an accompanying monochrome bitmap (display mode EGray2) with the identical size.

Draw the bitmap using a masked blit as follows:

 void CMyContainerControl::Draw( const TRect& aRect ) const
{
CWindowGc& gc = SystemGc();
TRect rect( Rect() );
gc.BitBltMasked(rect.iTl, iBitmapEColor16MU, rect, iMaskEGray2, EFalse);
}

On some devices, such as the Nokia N85, the monochrome mask does not work correctly but displays vertical stripes instead.

Solution

This problem does not occur when using masks with the colour depth identical to the parent bitmap. However, this consumes significantly more RAM memory compared to using 1-bpp monochrome bitmaps.

However, inverting the monochrome mask seems to produce correct results:

   gc.BitBltMasked(rect.iTl, iBitmapEColor16MU, rect, iMaskEGray2, '''ETrue''');

As a workaround for monochrome bitmaps, each mask could be inverted and drawn with the 5th parameter of BitBltMasked() (aInvertMask) set to ETrue.

157 page views in the last 30 days.
Nokia Developer aims to help you create apps and publish them so you can connect with users around the world.

京ICP备05048969号  © Copyright Nokia 2013 All rights reserved