MFormCustomDraw Class Reference

#include <frmtlay.h>

class MFormCustomDraw
Public Member Functions
virtual IMPORT_C voidDrawBackground(const TParam &, const TRgb &, TRect &)
virtual IMPORT_C voidDrawLineGraphics(const TParam &, const TLineInfo &)
virtual IMPORT_C voidDrawText(const TParam &, const TLineInfo &, const TCharFormat &, const TDesC &, const TPoint &, TInt)
virtual IMPORT_C voidDrawText(const TParam &, const TLineInfo &, const TCharFormat &, const TDesC &, const TInt, const TInt, const TPoint &, TInt)
virtual IMPORT_C voidMFormCustomDraw_Reserved_2()
virtual IMPORT_C TRgbSystemColor(TUint, TRgb)

Detailed Description

An abstract class which specifies the protocol for customising the way text and its background are drawn.

Common uses for this are to implement custom highlighting or to draw a background bitmap. You must create an object of a class derived from this class and call CTextLayout::SetCustomDraw(), passing a pointer to the object. All of these functions have default implementations. Your class can override any of the virtual functions listed below.

Member Function Documentation

DrawBackground ( const TParam &, const TRgb &, TRect & )

IMPORT_C voidDrawBackground(const TParam &aParam,
const TRgb &aBackground,
TRect &aDrawn
)const [virtual]

This function is called whenever part of the background of a CTextLayout or CTextView object needs to be drawn. The default implementation fills aParam.iDrawRect with the colour specified in aBackground.

The default background colour is contained in aBackground. This is the background colour of the paragraph if drawing text, or the background colour specified in the TDrawTextLayoutContext object passed to CTextLayout::DrawL() if drawing outside the text area.

The rectangle which is drawn by this function, (this may not be the whole of aParam.iDrawRect) must be returned in aDrawn; areas not drawn by you are automatically filled using the colour aBackground.

Parameters
aParamContains the drawing parameters: aParam.iGc is the graphics context to use. aParam.iMap is the graphics device map, which allows you to convert between pixels and twips and create fonts. aParam.iTextLayoutTopLeft is the origin of the text; bitmaps and other graphics must be drawn relative to this position. aParam.iDrawRect is the area to be drawn; do not draw outside this rectangle.
aBackgroundThe default background colour. This is the background colour of the paragraph if drawing text, or the background colour specified in the TDrawTextLayoutContext object passed to CTextLayout::DrawL() if drawing outside the text area.
aDrawnMust return the rectangle you actually draw. This may not be the whole of aParam.iDrawRect (for instance, if you are drawing a non-tiled bitmap that occupies only part of aRect).

DrawLineGraphics ( const TParam &, const TLineInfo & )

IMPORT_C voidDrawLineGraphics(const TParam &aParam,
const TLineInfo &aLineInfo
)const [virtual]

This function is called after the background has been drawn by DrawBackground(), and before drawing the text. This function might be used to draw a ruled line under each line of text.

The default implementation of this function does nothing.

Parameters
aParamContains the drawing parameters. You should only draw to aParam.iDrawRect. There is no need to fill aParam.iDrawRect or to indicate the rectangle drawn.
aLineInfoContains the line metrics: aLineInfo.iOuterLineRect specifies the bounding rectangle of the line, including margins, indents and automatic space above and below paragraphs, aLineInfo.iInnerLineRect specifies the bounds of the text only, aLineInfo.iBaseline specifies the baseline of the text.

DrawText ( const TParam &, const TLineInfo &, const TCharFormat &, const TDesC &, const TPoint &, TInt )

IMPORT_C voidDrawText(const TParam &aParam,
const TLineInfo &aLineInfo,
const TCharFormat &aFormat,
const TDesC &aText,
const TPoint &aTextOrigin,
TIntaExtraPixels
)const [virtual]

This function is called to draw the text and its highlighted background, if any, after bidirectional reordering and other character mappings have taken place.

The default implementation of this function draws the text with no special effects and supports standard, round-cornered and shadowed highlighting only. The text is drawn with the left end of its baseline located at aTextOrigin after drawing the background, if any, in aParam.iDrawRect.

The main reason to override this function is to apply custom text highlighting, (for this, aFormat.iFontPresentation.iHighlightStyle should be in the range EFontHighlightFirstCustomStyle to EFontHighlightLastCustomStyle).

The horizontal spacing between the characters in the text string is increased by the number of pixels specified in aExtraPixels. The standard way to do this is by calling CGraphicsContext::SetCharJustification().

The font and other graphics parameters (e.g. pen colour, font style), are specified in aParam.iGc but a character format container (aFormat) is supplied so that a different font can be used. Note that any graphics drawn cannot exceed the bounds of aParam.iDrawRect, so changes are usually restricted to drawing shadows, outlines, etc. if custom highlighting is in use.

Parameters
aParamContains the drawing parameters. Drawing can only occur within aParam.iDrawRect.
aLineInfoContains the line metrics.
aFormatSpecifies the character formatting to apply to the text, including the type of text highlighting.
aTextThe text string to be drawn.
aTextOriginThe point at which the left end of the baseline of the text should be drawn.
aExtraPixelsThe number of additional pixels to insert between the characters in the text string, in order to increase its length.

DrawText ( const TParam &, const TLineInfo &, const TCharFormat &, const TDesC &, const TInt, const TInt, const TPoint &, TInt )

IMPORT_C voidDrawText(const TParam &aParam,
const TLineInfo &aLineInfo,
const TCharFormat &aFormat,
const TDesC &aText,
const TIntaStart,
const TIntaEnd,
const TPoint &aTextOrigin,
TIntaExtraPixels
)const [virtual]

MFormCustomDraw_Reserved_2 ( )

IMPORT_C voidMFormCustomDraw_Reserved_2()[virtual]

SystemColor ( TUint, TRgb )

IMPORT_C TRgbSystemColor(TUintaColorIndex,
TRgbaDefaultColor
)const [virtual]

This function translates logical colours specified in FORM objects into real colours. The default implementation just returns the default colour that is passed in and ignores aColorIndex.

Overriding implementations may use aColorIndex in any desired way, either to replace or modify aDefaultColor. The values used in aColorIndex are taken from the top byte of a TLogicalRgb object and are thus in the range 0...255. The TLogicalRgb class defines two reserved values: TLogicalRgb::ESystemForegroundIndex = 254 and TLogicalRgb::ESystemBackgroundIndex = 255.