MFormCustomDraw Class Reference

class MFormCustomDraw

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.

Public Member Functions
IMPORT_C void DrawBackground (const TParam &, const TRgb &, TRect &)
IMPORT_C void DrawLineGraphics (const TParam &, const TLineInfo &)
IMPORT_C void DrawText (const TParam &, const TLineInfo &, const TCharFormat &, const TDesC &, const TPoint &, TInt )
IMPORT_C void DrawText (const TParam &, const TLineInfo &, const TCharFormat &, const TDesC &, const TInt , const TInt , const TPoint &, TInt )
IMPORT_C void MFormCustomDraw_Reserved_2 ()
IMPORT_C TRgb SystemColor ( TUint , TRgb )

Member Functions Documentation

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

IMPORT_C void DrawBackground ( 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

const TParam & aParam Contains 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.
const TRgb & aBackground The 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.
TRect & aDrawn Must 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 void DrawLineGraphics ( 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

const TParam & aParam Contains the drawing parameters. You should only draw to aParam.iDrawRect. There is no need to fill aParam.iDrawRect or to indicate the rectangle drawn.
const TLineInfo & aLineInfo Contains 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 void DrawText ( const TParam & aParam,
const TLineInfo & aLineInfo,
const TCharFormat & aFormat,
const TDesC & aText,
const TPoint & aTextOrigin,
TInt aExtraPixels
) 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

const TParam & aParam Contains the drawing parameters. Drawing can only occur within aParam.iDrawRect.
const TLineInfo & aLineInfo Contains the line metrics.
const TCharFormat & aFormat Specifies the character formatting to apply to the text, including the type of text highlighting.
const TDesC & aText The text string to be drawn.
const TPoint & aTextOrigin The point at which the left end of the baseline of the text should be drawn.
TInt aExtraPixels The 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 void DrawText ( const TParam & aParam,
const TLineInfo & aLineInfo,
const TCharFormat & aFormat,
const TDesC & aText,
const TInt aStart,
const TInt aEnd,
const TPoint & aTextOrigin,
TInt aExtraPixels
) const [virtual]

Parameters

const TParam & aParam
const TLineInfo & aLineInfo
const TCharFormat & aFormat
const TDesC & aText
const TInt aStart
const TInt aEnd
const TPoint & aTextOrigin
TInt aExtraPixels

MFormCustomDraw_Reserved_2()

IMPORT_C void MFormCustomDraw_Reserved_2 ( ) [virtual]

SystemColor(TUint, TRgb)

IMPORT_C TRgb SystemColor ( TUint aColorIndex,
TRgb aDefaultColor
) 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.

Parameters

TUint aColorIndex
TRgb aDefaultColor