Symbian
Symbian OS Library

SYMBIAN OS V9.3

[Index] [Spacer] [Previous] [Next]



Location: TAGMA.H
Link against: tagma.lib

Class MTmCustom

class MTmCustom : public MLineBreaker;

Description

The text customization interface. You can customize the colors, word spacing, line breaking, line height calculation, background drawing, and text appearance, of a text object by supplying an implementation of the MTmCustom class, either directly (as in CTmText::CustomizeL, which takes a pointer to MTmCustom) or indirectly, making use of the fact that MTmSource is derived from MTmCustom (as in CTmTextLayout::SetTextL, which takes a reference to MTmSource).

Derivation

Members

Defined in MTmCustom:
DrawBackground(), DrawLineGraphics(), DrawPicture(), DrawText(), EAiLineBreakClass, EAlLineBreakClass, EB2LineBreakClass, EBaLineBreakClass, EBbLineBreakClass, EBkLineBreakClass, ECbLineBreakClass, EClLineBreakClass, ECmLineBreakClass, ECrLineBreakClass, EExLineBreakClass, EGlLineBreakClass, EHyLineBreakClass, EIdLineBreakClass, EInLineBreakClass, EIsLineBreakClass, ELfLineBreakClass, ELineBreakClasses, ENsLineBreakClass, ENuLineBreakClass, EOpLineBreakClass, EPoLineBreakClass, EPrLineBreakClass, EQuLineBreakClass, ESaLineBreakClass, ESgLineBreakClass, ESpLineBreakClass, ESyLineBreakClass, EXxLineBreakClass, EZwLineBreakClass, GetLineBreakInContext(), IsHangingCharacter(), LineBreakClass(), LineBreakPossible(), Map(), SetBrushColor(), SetLineHeight(), SetPenColor(), Stretch(), SystemColor(), SystemColor(), TLineHeightParam, anonymous

Inherited from MLineBreaker:
ExtendedInterface(), GetLineBreak(), GetLineBreakL()


Member functions


SystemColor()

virtual IMPORT_C TRgb SystemColor(TUint aColorIndex, TRgb aDefaultColor) const;

Description

Convert a system colour index to a system colour, using or modifying the supplied default colour if desired.

Parameters

TUint aColorIndex

TRgb aDefaultColor

Return value

TRgb


Stretch()

virtual IMPORT_C TInt Stretch(TUint aChar) const;

Description

Return the level of stretchability; the relative desirability of inserting space after a character when fully justifying. A value of zero means that the character cannot be stretched. Higher values mean greater stretchability.

Parameters

TUint aChar

Return value

TInt


Map()

virtual IMPORT_C TUint Map(TUint aChar) const;

Description

The default function to map a character to the character drawn, or to 0xFFFF if the character is not to be drawn.

Parameters

TUint aChar

Return value

TUint


SetLineHeight()

virtual IMPORT_C void SetLineHeight(const TLineHeightParam &aParam, TInt &aAscent, TInt &aDescent) const;

Description

The default function to set the line height.

Parameters

const TLineHeightParam &aParam

TInt &aAscent

TInt &aDescent


DrawBackground()

virtual IMPORT_C void DrawBackground(CGraphicsContext &aGc, const TPoint &aTextLayoutTopLeft, const TRect &aRect, const TLogicalRgb &aBackground, TRect &aRectDrawn) const;

Description

The default function to drawn the background. It fills the supplied rectangle with the background colour.

Parameters

CGraphicsContext &aGc

const TPoint &aTextLayoutTopLeft

const TRect &aRect

const TLogicalRgb &aBackground

TRect &aRectDrawn


DrawLineGraphics()

virtual IMPORT_C void DrawLineGraphics(CGraphicsContext &aGc, const TPoint &aTextLayoutTopLeft, const TRect &aRect, const TTmLineInfo &aLineInfo) const;

Description

By default no line graphics are drawn.

Parameters

CGraphicsContext &aGc

const TPoint &aTextLayoutTopLeft

const TRect &aRect

const TTmLineInfo &aLineInfo


DrawText()

virtual IMPORT_C void DrawText(CGraphicsContext &aGc, const TPoint &aTopLeft, const TRect &aRect, const TTmLineInfo &aLineInfo, const TTmCharFormat &aFormat, const TDesC &aText, const TPoint &aTextOrigin, TInt aExtraPixels) const;

Description

Draw text and its highlit background if any. The text should be drawn with its origin at aTextOrigin after optionally drawing the background in aRect; and the text should be expanded in width by aExtraPixels, normally by using letterspacing. The default function draws the text with no special effects and supports standard and rounded highlighting only. The font, colour, and text style, which are specified in aFormat, have already been selected into the graphics context.

Parameters

CGraphicsContext &aGc

const TPoint &aTopLeft

const TRect &aRect

const TTmLineInfo &aLineInfo

const TTmCharFormat &aFormat

const TDesC &aText

const TPoint &aTextOrigin

TInt aExtraPixels


DrawPicture()

virtual IMPORT_C void DrawPicture(CGraphicsContext &aGc, const TPoint &aTextLayoutTopLeft, const TRect &aRect, MGraphicsDeviceMap &aDevice, const CPicture &aPicture) const;

Description

Draw the picture onto the graphics context.

Parameters

CGraphicsContext &aGc

The graphics context.

const TPoint &aTextLayoutTopLeft

Coordinates of the top left corner pixel of the picture.

const TRect &aRect

A clipping rectangle that defines the area to draw the picture.

MGraphicsDeviceMap &aDevice

The device map for the graphics device. It provides the scaling to apply to the picture.

const CPicture &aPicture

The drawable object.


LineBreakClass()

virtual IMPORT_C TUint LineBreakClass(TUint aCode, TUint &aRangeStart, TUint &aRangeEnd) const;

Description

Converts Unicode character into line breaking class.

Parameters

TUint aCode

Input Unicode value.

TUint &aRangeStart

Returns the start of the contiguous range of characters including aCode that have the returned line breaking class.

TUint &aRangeEnd

Returns the end of the contiguous range of characters including aCode that have the returned line breaking class.

Return value

TUint

The line breaking class for aCode.

See also:


LineBreakPossible()

virtual IMPORT_C TBool LineBreakPossible(TUint aPrevClass, TUint aNextClass, TBool aHaveSpaces) const;

Description

Returns whether line break is possible between two characters.

Parameters

TUint aPrevClass

The class before the potential line break.

TUint aNextClass

The class after the potential line break.

TBool aHaveSpaces

Whether spaces separate the characters.

Return value

TBool

ETrue if a line break is possible between characters with the two line break classes, EFalse if not.

See also:


GetLineBreakInContext()

virtual IMPORT_C TBool GetLineBreakInContext(const TDesC &aText, TInt aMinBreakPos, TInt aMaxBreakPos, TBool aForwards, TInt &aBreakPos) const;

Description

Gets the position of the first or last possible line break position in a text string. This function is called instead of LineBreakPossible() for runs of characters of class ESaLineBreakClass. It is used for languages like Thai, Lao and Khmer that have no spaces between words, so that line breaks must be calculated using dictionary lookup or a linguistic algorithm. Only the Thai language is supported in this implementation, i.e. this function will return false for other languages.

Parameters

const TDesC &aText

A string containing characters of class ESaLineBreakClass.

TInt aMinBreakPos

A position within aText at which to begin searching for a possible line break position.

TInt aMaxBreakPos

A position within aText at which to stop searching for a possible line break position.

TBool aForwards

If ETrue, the function gets the first possible line break position (searches forwards from aMinBreakPos); if EFalse, gets the last one (searches backwards from aMaxBreakPos).

TInt &aBreakPos

On return, the position of the first or last possible line break within aText. This must be greater than zero and less than aText.Length()

Return value

TBool

ETrue if a possible line break position is found, EFalse if not.

See also:


IsHangingCharacter()

virtual IMPORT_C TBool IsHangingCharacter(TUint aChar) const;

Description

Tests whether a character may be positioned outside the right margin. This function is provided to allow customisation of the line breaking behaviour for closing punctuation in Japanese. Any characters for which this function returns ETrue are allowed to overhang the right margin. The rest will be moved to the next line.

The default implementation of this function just returns false.

Parameters

TUint aChar

The Unicode character code of interest.

Return value

TBool

ETrue if the character specified can overhang the right margin, EFalse if not.

See also:


SetPenColor()

IMPORT_C void SetPenColor(CGraphicsContext &aGc, TLogicalRgb aColor) const;

Description

Sets the pen colour. The pen is used to draw lines, the outlines of filled shapes, and text.

Parameters

CGraphicsContext &aGc

TLogicalRgb aColor

The logical colour for the pen.

See also:


SetBrushColor()

IMPORT_C void SetBrushColor(CGraphicsContext &aGc, TLogicalRgb aColor) const;

Description

Sets the brush colour. The brush is used for filling shapes and the background of text boxes. The brush has colour, style, pattern and pattern origin parameters. If no brush colour has been set, it defaults to white. However the default brush style is null, so when drawing to a window the default appears to be the window's background colour.

Parameters

CGraphicsContext &aGc

TLogicalRgb aColor

The logical colour for the brush.

See also:


SystemColor()

IMPORT_C TRgb SystemColor(TLogicalRgb aColor) const;

Description

This function translates logical colours specified in FORM objects into real colours. It extracts the logical colour index stored in TLogicalRgb and invokes MtmCustom::SystemColor(TUint, TRgb) to convert the logical colour to real colour.

Parameters

TLogicalRgb aColor

The logical colour to translate.

Return value

TRgb

The real colour represesented by the logical colour.

[Top]


Member classes


Class TLineHeightParam

class TLineHeightParam;

Description

TLineHeightParam structure is used in MTmCustom::SetLineHeight() method to set text line height related parameters such as max character height, max ascent and descent, height and depth of the tallest pictures (top-aligned, bottom-aligned or centered).

Members

Defined in MTmCustom::TLineHeightParam:
TLineHeightParam(), iDesiredLineHeight, iExactLineHeight, iFontMaxAscent, iFontMaxCharDepth, iFontMaxCharHeight, iFontMaxDescent, iMaxBottomPictureHeight, iMaxCenterPictureHeight, iMaxCharDepth, iMaxCharHeight, iMaxTopPictureHeight

See also:

Construction and destruction


TLineHeightParam()

inline TLineHeightParam();

Description

Constructs a line height parameter structure, setting all the data members to zero.

Member data


iMaxCharHeight

TInt iMaxCharHeight;

Description

Height of the highest character in the line.


iMaxCharDepth

TInt iMaxCharDepth;

Description

Depth of the deepest character in the line.


iMaxTopPictureHeight

TInt iMaxTopPictureHeight;

Description

Height plus depth of the tallest top-aligned picture.


iMaxBottomPictureHeight

TInt iMaxBottomPictureHeight;

Description

Height plus depth of the tallest bottom-aligned picture.


iMaxCenterPictureHeight

TInt iMaxCenterPictureHeight;

Description

Height plus depth of the tallest centred picture.


iFontMaxCharHeight

TInt iFontMaxCharHeight;

Description

Height of the tallest character of any in the fonts in the line.


iFontMaxCharDepth

TInt iFontMaxCharDepth;

Description

Depth of the deepest character of any in the fonts in the line.


iFontMaxAscent

TInt iFontMaxAscent;

Description

Maximum ascent of the fonts in the line.


iFontMaxDescent

TInt iFontMaxDescent;

Description

Maximum descent of the fonts in the line.


iDesiredLineHeight

TInt iDesiredLineHeight;

Description

Desired precise or minimum line height.


iExactLineHeight

TBool iExactLineHeight;

Description

True if the line height must be precise.

[Top]


Member enumerations


Enum anonymous

n/a

Description

The Unicode line breaking classes; see Unicode Technical Report 14. Not a named enumerated type, so that overriding applications can add new line breaking classes freely. The description of each constant gives the name of the line-breaking class, an example and a brief, imprecise description of the default behaviour of characters of that class.

EOpLineBreakClass

Opening Punctuation (e.g. '['). Breaking after prohibited.

EClLineBreakClass

Closing Punctuation (e.g. ']'). Breaking before prohibited.

EQuLineBreakClass

Ambiguous Quotes (e.g. '"'). Breaking before and after prohibited.

EGlLineBreakClass

Glue (e.g. Non-breaking space). Breaking before and after prohibited unless spaces are present.

ENsLineBreakClass

Non-Starter (e.g. small Japanese kana). Breaking before prohibited if no spaces present.

EExLineBreakClass

Exclamation or Interrogation (e.g. '?'). Like closing punctuation except before Postfix or Non-starter.

ESyLineBreakClass

Symbol (e.g. '/'. Like Alphabetic, but allows breaking before Alphabetic.

EIsLineBreakClass

Numeric Infix Separator (e.g. ','). Forbids breaking after any and before Numeric.

EPrLineBreakClass

Numeric Prefix (e.g. '$'). Forbids breaking before Numeric.

EPoLineBreakClass

Numeric Postfix (e.g. '%'). Forbids breaking after Numeric.

ENuLineBreakClass

Numeric (e.g. '1').

EAlLineBreakClass

Alphabetic (e.g. 'a').

EIdLineBreakClass

Ideographic (e.g. Japanese Kanji). Generally break before or after

EInLineBreakClass

Inseparable (e.g. ellipsis). Forbid breaks between Inseparables.

EHyLineBreakClass

Hyphen (e.g. '-'). Allows a break after except before Numeric.

EBaLineBreakClass

Break After. Generally allow a break after. Breaking between Break Afters not separated by spaces is prohibited.

EBbLineBreakClass

Break Before. Generally allow a break before. Breaking between Break Befores not separated by spaces is prohibited.

EB2LineBreakClass

Break Before and After. Generally allow a break before or after. Breaking between Break Before and Afters is prohibited, even if spaces are present.

EZwLineBreakClass

Zero-Width Space. Allow a break.

ECmLineBreakClass

Combining Mark. Takes on the class of its base class.

EBkLineBreakClass

Mandatory Break.

ECrLineBreakClass

Carriage Return. Break after unless part of a CRLF pair.

ELfLineBreakClass

Line Feed. Break after.

ESgLineBreakClass

Surrogate. Half of a surrogate pair.

ECbLineBreakClass

Contingent Break (e.g. embedded pictures). Uses external information

ESpLineBreakClass

Space. Intervening characters of class Space are indicated by aHaveSpaces in LineBreakPossible.

ESaLineBreakClass

Complex Context (e.g. Thai). Runs of Complex Context are passed to GetLineBreakInContext.

EAiLineBreakClass

Ambiguous. Characters of ambiguous East Asian width are treated as Alphabetic, unless they are resolved as being "Wide", in which case they are treated as Ideographic.

EXxLineBreakClass

The Xx class is used when the class is unknown; e.g.; outside the provided context.

ELineBreakClasses

The number of Unicode line break classes.