Location:
FRMTLAY.H
Link against: form.lib
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.
Defined in MFormCustomDraw
:
DrawBackground()
, DrawLineGraphics()
, DrawText()
, SystemColor()
, TLineInfo
, TParam
virtual IMPORT_C void DrawBackground(const TParam &aParam, const TRgb &aBackground, TRect &aDrawn) const;
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.
|
virtual IMPORT_C void DrawLineGraphics(const TParam &aParam, const TLineInfo &aLineInfo) const;
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.
|
virtual IMPORT_C void DrawText(const TParam &aParam, const TLineInfo &aLineInfo, const TCharFormat &aFormat, const TDesC &aText,
const TPoint &aTextOrigin, TInt aExtraPixels) const;
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.
|
virtual IMPORT_C TRgb SystemColor(TUint aColorIndex, TRgb aDefaultColor) const;
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.
|
|
class TParam;
Parameters used by several custom draw functions
Defined in MFormCustomDraw::TParam
:
TParam()
, iDrawRect
, iGc
, iMap
, iTextLayoutTopLeft
TParam()
inline TParam(CGraphicsContext &aGc, MGraphicsDeviceMap &aMap, const TPoint &aTextLayoutTopLeft, const TRect &aDrawRect);
|
iGc
CGraphicsContext & iGc;
iMap
MGraphicsDeviceMap & iMap;
iTextLayoutTopLeft
const TPoint & iTextLayoutTopLeft;
iDrawRect
const TRect & iDrawRect;
class TLineInfo;
Contains the line metrics.
Defined in MFormCustomDraw::TLineInfo
:
TLineInfo()
, iBaseline
, iInnerRect
, iOuterRect
TLineInfo()
inline TLineInfo(const TRect &aOuterRect, const TRect &aInnerRect, TInt aBaseline);
|
iOuterRect
const TRect & iOuterRect;
iInnerRect
const TRect & iInnerRect;
iBaseline
TInt iBaseline;