fontservices/textbase/inc/textbase.h
author hgs
Mon, 12 Jul 2010 14:38:26 +0800
changeset 45 662fa7de7023
child 71 6cc5529d4a89
permissions -rw-r--r--
201024_05
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
45
662fa7de7023 201024_05
hgs
parents:
diff changeset
     1
// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
662fa7de7023 201024_05
hgs
parents:
diff changeset
     2
// All rights reserved.
662fa7de7023 201024_05
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
662fa7de7023 201024_05
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
662fa7de7023 201024_05
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
662fa7de7023 201024_05
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
662fa7de7023 201024_05
hgs
parents:
diff changeset
     7
//
662fa7de7023 201024_05
hgs
parents:
diff changeset
     8
// Initial Contributors:
662fa7de7023 201024_05
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
662fa7de7023 201024_05
hgs
parents:
diff changeset
    10
//
662fa7de7023 201024_05
hgs
parents:
diff changeset
    11
// Contributors:
662fa7de7023 201024_05
hgs
parents:
diff changeset
    12
//
662fa7de7023 201024_05
hgs
parents:
diff changeset
    13
// Description:
662fa7de7023 201024_05
hgs
parents:
diff changeset
    14
// This file is a subset of original gdi.h.
662fa7de7023 201024_05
hgs
parents:
diff changeset
    15
//
662fa7de7023 201024_05
hgs
parents:
diff changeset
    16
// IMPORTANT NOTE to maintainer:
662fa7de7023 201024_05
hgs
parents:
diff changeset
    17
//     If you add new exports, to make sure they are exported by GDI.DLL,
662fa7de7023 201024_05
hgs
parents:
diff changeset
    18
//     remember to update /graphics/graphicsdeviceinterface/gdi/sgdi/TextBaseStub.cpp.
662fa7de7023 201024_05
hgs
parents:
diff changeset
    19
//
662fa7de7023 201024_05
hgs
parents:
diff changeset
    20
// Text related types/consts are moved from gdi.h to this file, as listed below.
662fa7de7023 201024_05
hgs
parents:
diff changeset
    21
//
662fa7de7023 201024_05
hgs
parents:
diff changeset
    22
// enum TFontPosture
662fa7de7023 201024_05
hgs
parents:
diff changeset
    23
// enum TFontStrokeWeight
662fa7de7023 201024_05
hgs
parents:
diff changeset
    24
// enum TFontPrintPosition
662fa7de7023 201024_05
hgs
parents:
diff changeset
    25
//
662fa7de7023 201024_05
hgs
parents:
diff changeset
    26
// const KMaxTypefaceNameLength
662fa7de7023 201024_05
hgs
parents:
diff changeset
    27
// class TTypeface
662fa7de7023 201024_05
hgs
parents:
diff changeset
    28
// enum TGlyphBitmapType
662fa7de7023 201024_05
hgs
parents:
diff changeset
    29
// class FontEffect
662fa7de7023 201024_05
hgs
parents:
diff changeset
    30
// class TFontStyle
662fa7de7023 201024_05
hgs
parents:
diff changeset
    31
// class TFontSpec
662fa7de7023 201024_05
hgs
parents:
diff changeset
    32
// class TTypefaceSupport
662fa7de7023 201024_05
hgs
parents:
diff changeset
    33
// const KSuperSubScalingPercentage
662fa7de7023 201024_05
hgs
parents:
diff changeset
    34
// const KSuperscriptOffsetPercentage
662fa7de7023 201024_05
hgs
parents:
diff changeset
    35
// const KSubscriptOffsetPercentage
662fa7de7023 201024_05
hgs
parents:
diff changeset
    36
// class CTypefaceStore
662fa7de7023 201024_05
hgs
parents:
diff changeset
    37
// const KMaxFontCacheEntries
662fa7de7023 201024_05
hgs
parents:
diff changeset
    38
// class CFontCache
662fa7de7023 201024_05
hgs
parents:
diff changeset
    39
//
662fa7de7023 201024_05
hgs
parents:
diff changeset
    40
// const KFontCapitalAscent
662fa7de7023 201024_05
hgs
parents:
diff changeset
    41
// const KFontMaxAscent
662fa7de7023 201024_05
hgs
parents:
diff changeset
    42
// const KFontStandardDescent
662fa7de7023 201024_05
hgs
parents:
diff changeset
    43
// const KFontMaxDescent
662fa7de7023 201024_05
hgs
parents:
diff changeset
    44
// const KFontLineGap
662fa7de7023 201024_05
hgs
parents:
diff changeset
    45
// const KFontGetFontTable
662fa7de7023 201024_05
hgs
parents:
diff changeset
    46
// const KFontGetGlyphOutline
662fa7de7023 201024_05
hgs
parents:
diff changeset
    47
// const KFontReleaseGlyphOutline
662fa7de7023 201024_05
hgs
parents:
diff changeset
    48
// const KFontReleaseFontTable
662fa7de7023 201024_05
hgs
parents:
diff changeset
    49
// class CFont
662fa7de7023 201024_05
hgs
parents:
diff changeset
    50
662fa7de7023 201024_05
hgs
parents:
diff changeset
    51
662fa7de7023 201024_05
hgs
parents:
diff changeset
    52
#ifndef __TEXTBASE_H__
662fa7de7023 201024_05
hgs
parents:
diff changeset
    53
#define __TEXTBASE_H__
662fa7de7023 201024_05
hgs
parents:
diff changeset
    54
662fa7de7023 201024_05
hgs
parents:
diff changeset
    55
#include <e32base.h>
662fa7de7023 201024_05
hgs
parents:
diff changeset
    56
#include <f32file.h>
662fa7de7023 201024_05
hgs
parents:
diff changeset
    57
#include <s32std.h>
662fa7de7023 201024_05
hgs
parents:
diff changeset
    58
662fa7de7023 201024_05
hgs
parents:
diff changeset
    59
class TOpenFontCharMetrics;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    60
class RShapeInfo;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    61
662fa7de7023 201024_05
hgs
parents:
diff changeset
    62
662fa7de7023 201024_05
hgs
parents:
diff changeset
    63
#ifndef __GLYPHSEL_TEXTBASE_H__
662fa7de7023 201024_05
hgs
parents:
diff changeset
    64
#define __GLYPHSEL_TEXTBASE_H__
662fa7de7023 201024_05
hgs
parents:
diff changeset
    65
/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
    66
This enumeration holds the possible panic codes that may be raised 
662fa7de7023 201024_05
hgs
parents:
diff changeset
    67
by the TextBase API on detecting an unrecoverable error. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
    68
enum TTextBasePanic
662fa7de7023 201024_05
hgs
parents:
diff changeset
    69
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
    70
	/** Not used */
662fa7de7023 201024_05
hgs
parents:
diff changeset
    71
	ETextBasePanic_Unknown				= 0,
662fa7de7023 201024_05
hgs
parents:
diff changeset
    72
	/** One or more of the input parameters to the interface were invalid */
662fa7de7023 201024_05
hgs
parents:
diff changeset
    73
	ETextBasePanic_InvalidInputParam		= 1,
662fa7de7023 201024_05
hgs
parents:
diff changeset
    74
	/** Insufficient text for successful completion of the method */
662fa7de7023 201024_05
hgs
parents:
diff changeset
    75
	ETextBasePanic_OutOfText				= 2,
662fa7de7023 201024_05
hgs
parents:
diff changeset
    76
	/** Internal failure. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
    77
	ETextBasePanic_Invariant				= 3,
662fa7de7023 201024_05
hgs
parents:
diff changeset
    78
	/** Reserved panic codes. Not to be used. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
    79
	ETextBasePanic_Reserved1				= 4,
662fa7de7023 201024_05
hgs
parents:
diff changeset
    80
	ETextBasePanic_Reserved2				= 5,
662fa7de7023 201024_05
hgs
parents:
diff changeset
    81
	/** Setting a typeface name that is too long */
662fa7de7023 201024_05
hgs
parents:
diff changeset
    82
	ETextBasePanic_TypefaceNameOverflow	= 6,
662fa7de7023 201024_05
hgs
parents:
diff changeset
    83
	};
662fa7de7023 201024_05
hgs
parents:
diff changeset
    84
#endif
662fa7de7023 201024_05
hgs
parents:
diff changeset
    85
662fa7de7023 201024_05
hgs
parents:
diff changeset
    86
662fa7de7023 201024_05
hgs
parents:
diff changeset
    87
/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
    88
Font posture flags.
662fa7de7023 201024_05
hgs
parents:
diff changeset
    89
Fonts can be either upright or italic. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
    90
@publishedAll	
662fa7de7023 201024_05
hgs
parents:
diff changeset
    91
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
    92
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
    93
enum TFontPosture
662fa7de7023 201024_05
hgs
parents:
diff changeset
    94
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
    95
	/** Font posture is normal (upright). */
662fa7de7023 201024_05
hgs
parents:
diff changeset
    96
	EPostureUpright,
662fa7de7023 201024_05
hgs
parents:
diff changeset
    97
	/** Font posture is italic. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
    98
	EPostureItalic
662fa7de7023 201024_05
hgs
parents:
diff changeset
    99
	};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   100
662fa7de7023 201024_05
hgs
parents:
diff changeset
   101
662fa7de7023 201024_05
hgs
parents:
diff changeset
   102
/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   103
Font stroke weight flags. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   104
@publishedAll	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   105
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   106
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   107
enum TFontStrokeWeight
662fa7de7023 201024_05
hgs
parents:
diff changeset
   108
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   109
	/** Font stroke weight is normal. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   110
	EStrokeWeightNormal,
662fa7de7023 201024_05
hgs
parents:
diff changeset
   111
	/** Font stroke weight is bold. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   112
	EStrokeWeightBold
662fa7de7023 201024_05
hgs
parents:
diff changeset
   113
	};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   114
662fa7de7023 201024_05
hgs
parents:
diff changeset
   115
/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   116
Font print position flags.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   117
Fonts can be normal, superscript or subscript. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   118
@publishedAll	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   119
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   120
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   121
enum TFontPrintPosition
662fa7de7023 201024_05
hgs
parents:
diff changeset
   122
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   123
	/** Font is normal. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   124
	EPrintPosNormal,
662fa7de7023 201024_05
hgs
parents:
diff changeset
   125
	/** Font is superscript. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   126
	EPrintPosSuperscript,
662fa7de7023 201024_05
hgs
parents:
diff changeset
   127
	/** Font is subscript. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   128
	EPrintPosSubscript
662fa7de7023 201024_05
hgs
parents:
diff changeset
   129
	};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   130
662fa7de7023 201024_05
hgs
parents:
diff changeset
   131
662fa7de7023 201024_05
hgs
parents:
diff changeset
   132
/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   133
The maximum length of a typeface name (in characters). 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   134
@publishedAll	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   135
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   136
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   137
const TInt KMaxTypefaceNameLength=0x18;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   138
662fa7de7023 201024_05
hgs
parents:
diff changeset
   139
662fa7de7023 201024_05
hgs
parents:
diff changeset
   140
/** Typeface name and attributes.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   141
662fa7de7023 201024_05
hgs
parents:
diff changeset
   142
This class identifies a typeface by name, and contains the combination of 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   143
attributes of the typeface. These attributes define whether it is a symbol 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   144
typeface, whether the typeface is proportional, and whether it is serif or 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   145
sans-serif. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   146
662fa7de7023 201024_05
hgs
parents:
diff changeset
   147
The combination of attributes for a typeface are stored in a bitmask, with 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   148
the various bits indicating different attributes. The bitmask is calculated 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   149
for any particular attribute combination by ORing the enumerated value for 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   150
each individual attribute. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   151
@publishedAll 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   152
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   153
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   154
class TTypeface
662fa7de7023 201024_05
hgs
parents:
diff changeset
   155
    {
662fa7de7023 201024_05
hgs
parents:
diff changeset
   156
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   157
	enum
662fa7de7023 201024_05
hgs
parents:
diff changeset
   158
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   159
		/** Typeface is a proportional typeface (e.g. Swiss)
662fa7de7023 201024_05
hgs
parents:
diff changeset
   160
		*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   161
		EProportional = 1,
662fa7de7023 201024_05
hgs
parents:
diff changeset
   162
		/** Typeface is a serif typeface (e.g. Times)
662fa7de7023 201024_05
hgs
parents:
diff changeset
   163
		*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   164
		ESerif = 2,
662fa7de7023 201024_05
hgs
parents:
diff changeset
   165
		/** Typeface is a symbol typeface (e.g. Symbol)
662fa7de7023 201024_05
hgs
parents:
diff changeset
   166
		*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   167
		ESymbol = 4,
662fa7de7023 201024_05
hgs
parents:
diff changeset
   168
		};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   169
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   170
	IMPORT_C TTypeface();
662fa7de7023 201024_05
hgs
parents:
diff changeset
   171
	IMPORT_C TBool operator==(const TTypeface& aTypeface) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   172
	IMPORT_C void InternalizeL(RReadStream& aStream);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   173
	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   174
	IMPORT_C void SetAttributes(TInt aAttributes);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   175
	IMPORT_C void SetIsProportional(TBool aIsProportional);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   176
	IMPORT_C void SetIsSerif(TBool aIsSerif);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   177
	IMPORT_C void SetIsSymbol(TBool aIsSymbol);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   178
	IMPORT_C TInt Attributes() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   179
	IMPORT_C TBool IsProportional() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   180
	IMPORT_C TBool IsSerif() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   181
	IMPORT_C TBool IsSymbol() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   182
	IMPORT_C void SetScriptTypeForMetrics(TLanguage aLanguage);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   183
	IMPORT_C void SetScriptTypeForMetrics(TInt aScript);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   184
	IMPORT_C TInt ScriptTypeForMetrics() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   185
	IMPORT_C void SetName(const TDesC& aName);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   186
	IMPORT_C const TDesC& Name() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   187
private:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   188
	void ResetAttributes();
662fa7de7023 201024_05
hgs
parents:
diff changeset
   189
	void ResetScriptType();
662fa7de7023 201024_05
hgs
parents:
diff changeset
   190
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   191
	/** The typeface name. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   192
    TBufC<KMaxTypefaceNameLength> iName;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   193
private:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   194
    TUint32 iFlags;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   195
    };
662fa7de7023 201024_05
hgs
parents:
diff changeset
   196
662fa7de7023 201024_05
hgs
parents:
diff changeset
   197
662fa7de7023 201024_05
hgs
parents:
diff changeset
   198
/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   199
An enumerated type for the format of a glyph bitmap. This type is currently 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   200
used to indicate whether glyph bitmaps for scalable fonts are drawn anti-aliased. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   201
Additional values may be defined in the future.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   202
662fa7de7023 201024_05
hgs
parents:
diff changeset
   203
@see TFontStyle::SetBitmapType()
662fa7de7023 201024_05
hgs
parents:
diff changeset
   204
@see CFbsTypefaceStore::SetDefaultBitmapType() 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   205
@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
   206
@released	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   207
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   208
enum TGlyphBitmapType
662fa7de7023 201024_05
hgs
parents:
diff changeset
   209
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   210
	/** The font store's default glyph bitmap format is used. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   211
	EDefaultGlyphBitmap = 0,
662fa7de7023 201024_05
hgs
parents:
diff changeset
   212
	/** The standard monochrome format: no anti-aliasing, 1 bit per pixel, 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   213
	run-length encoded. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   214
	EMonochromeGlyphBitmap,
662fa7de7023 201024_05
hgs
parents:
diff changeset
   215
	/** Standard 8-bits-per-pixel with anti-aliasing. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   216
	EAntiAliasedGlyphBitmap,
662fa7de7023 201024_05
hgs
parents:
diff changeset
   217
	/** The format used when sub-pixel font rendering is used. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   218
	ESubPixelGlyphBitmap,
662fa7de7023 201024_05
hgs
parents:
diff changeset
   219
	/** The format used when outline and shadow font rendering is used. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   220
662fa7de7023 201024_05
hgs
parents:
diff changeset
   221
	If the raterizer supports the outline and shadow fonts, it will set the bitmaptype as 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   222
	EFourColourBlendGlyphBitmap but only when glyph bitmap type is set as EAntiAliasedGlyphBitmap and 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   223
	when any of the EDropShadow or EOutline effect is on. Only rasterizer providers can use this enum.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   224
	*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   225
	EFourColourBlendGlyphBitmap,
662fa7de7023 201024_05
hgs
parents:
diff changeset
   226
	/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   227
	This is used for glyphs, and not fonts, and is needed to inform the font drawing routines
662fa7de7023 201024_05
hgs
parents:
diff changeset
   228
	that the character should be drawn using the overall font setting. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   229
	For Internal Use Only.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   230
	*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   231
	EGlyphBitmapTypeNotDefined,
662fa7de7023 201024_05
hgs
parents:
diff changeset
   232
	/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   233
	This is used to inform the rasterizer that the best match should be
662fa7de7023 201024_05
hgs
parents:
diff changeset
   234
	found for the bitmap type based upon its knowledge.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   235
	For Internal Use Only.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   236
	*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   237
	EAntiAliasedOrMonochromeGlyphBitmap,
662fa7de7023 201024_05
hgs
parents:
diff changeset
   238
	};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   239
662fa7de7023 201024_05
hgs
parents:
diff changeset
   240
/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   241
Defines a set of font effects flags.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   242
662fa7de7023 201024_05
hgs
parents:
diff changeset
   243
@publishedAll 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   244
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   245
WARNING: This Class is for use by system/UI software ONLY.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   246
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   247
NONSHARABLE_CLASS(FontEffect)
662fa7de7023 201024_05
hgs
parents:
diff changeset
   248
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   249
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   250
	enum TEffect
662fa7de7023 201024_05
hgs
parents:
diff changeset
   251
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   252
		ENone			= 0x0,		// No effects.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   253
		EAlgorithmicBold= 0x10,		// Font is algorithmic bold (a.k.a pseudo bold.)
662fa7de7023 201024_05
hgs
parents:
diff changeset
   254
		EDropShadow		= 0x20,		// Font has a drop shadow.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   255
		EOutline		= 0x40,		// Font is an outline font.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   256
		EEmbossed		= 0x80,		// Font is embossed.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   257
		EEngraved		= 0x100,	// Font is engraved.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   258
		ESoftEdge		= 0x200,	// Font is soft edged.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   259
		EReserved1		= 0x400,	// Reserved for Symbian use.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   260
		EReserved2		= 0x800,	// Reserved for Symbian use.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   261
		EReserved3		= 0x1000,	// Reserved for Symbian use.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   262
		EReserved4		= 0x2000,	// Reserved for Symbian use.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   263
		EReserved5		= 0x4000,	// Reserved for Symbian use.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   264
		EReserved6		= 0x8000,	// Reserved for Symbian use.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   265
		};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   266
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   267
	IMPORT_C static TBool IsEffectOn(TEffect aEffect, TUint32 aFontEffect);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   268
	IMPORT_C static void SetEffect(TEffect aEffect, TBool aOn, TUint32& aFontEffect);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   269
	};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   270
662fa7de7023 201024_05
hgs
parents:
diff changeset
   271
/** Encapsulates a font style. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   272
662fa7de7023 201024_05
hgs
parents:
diff changeset
   273
The font style information is comprised of:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   274
662fa7de7023 201024_05
hgs
parents:
diff changeset
   275
the posture of the font upright or italic
662fa7de7023 201024_05
hgs
parents:
diff changeset
   276
662fa7de7023 201024_05
hgs
parents:
diff changeset
   277
the stroke weight of the font  normal or bold
662fa7de7023 201024_05
hgs
parents:
diff changeset
   278
662fa7de7023 201024_05
hgs
parents:
diff changeset
   279
the print position of the font normal, subscript or superscript
662fa7de7023 201024_05
hgs
parents:
diff changeset
   280
662fa7de7023 201024_05
hgs
parents:
diff changeset
   281
Note that the underline and strike-through attributes are not included in 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   282
this class, but are set in the graphics context.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   283
662fa7de7023 201024_05
hgs
parents:
diff changeset
   284
@see CGraphicsContext::SetUnderlineStyle()
662fa7de7023 201024_05
hgs
parents:
diff changeset
   285
@see CGraphicsContext::SetStrikethroughStyle() 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   286
@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
   287
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   288
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   289
class TFontStyle
662fa7de7023 201024_05
hgs
parents:
diff changeset
   290
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   291
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   292
	IMPORT_C TFontStyle();
662fa7de7023 201024_05
hgs
parents:
diff changeset
   293
	IMPORT_C TFontStyle(TFontPosture aPost,TFontStrokeWeight aStrWgt,TFontPrintPosition aPrintPos);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   294
	IMPORT_C void InternalizeL(RReadStream& aStream);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   295
	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   296
	IMPORT_C TFontPosture Posture() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   297
	IMPORT_C TFontStrokeWeight StrokeWeight() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   298
	IMPORT_C TFontPrintPosition PrintPosition() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   299
	IMPORT_C void SetPosture(TFontPosture aPosture);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   300
	IMPORT_C void SetStrokeWeight(TFontStrokeWeight aStrokeWeight);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   301
	IMPORT_C void SetPrintPosition(TFontPrintPosition aPrintPosition);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   302
	inline TGlyphBitmapType BitmapType() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   303
	inline void SetBitmapType(TGlyphBitmapType aBitmapType);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   304
	IMPORT_C TBool operator==(const TFontStyle& aFontStyle) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   305
	IMPORT_C TUint32 Effects() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   306
	IMPORT_C TBool IsEffectOn(FontEffect::TEffect aEffect) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   307
	IMPORT_C void SetEffects(TUint32 aEffects);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   308
	IMPORT_C void SetEffects(FontEffect::TEffect aEffect, TBool aOn);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   309
private:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   310
	enum
662fa7de7023 201024_05
hgs
parents:
diff changeset
   311
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   312
		EItalic=0x1,
662fa7de7023 201024_05
hgs
parents:
diff changeset
   313
		EBold=0x2,
662fa7de7023 201024_05
hgs
parents:
diff changeset
   314
		ESuper=0x4,
662fa7de7023 201024_05
hgs
parents:
diff changeset
   315
		ESub=0x8
662fa7de7023 201024_05
hgs
parents:
diff changeset
   316
		};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   317
private:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   318
	TUint32 iFlags; // bitmap type - 16 bits (high), font effects - 12 bits (middle), style - 4 bits (low)
662fa7de7023 201024_05
hgs
parents:
diff changeset
   319
	TAny* iReserved1;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   320
	TAny* iReserved2;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   321
	};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   322
662fa7de7023 201024_05
hgs
parents:
diff changeset
   323
662fa7de7023 201024_05
hgs
parents:
diff changeset
   324
662fa7de7023 201024_05
hgs
parents:
diff changeset
   325
/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   326
Specifies the font specification in device independent terms.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   327
@publishedAll 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   328
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   329
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   330
class TFontSpec
662fa7de7023 201024_05
hgs
parents:
diff changeset
   331
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   332
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   333
	IMPORT_C TFontSpec();
662fa7de7023 201024_05
hgs
parents:
diff changeset
   334
	IMPORT_C TFontSpec(const TDesC& aTypefaceName,TInt aHeight);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   335
	IMPORT_C TBool operator==(const TFontSpec& aFontSpec) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   336
	IMPORT_C void InternalizeL(RReadStream& aStream);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   337
	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   338
	IMPORT_C void SetScriptTypeForMetrics(TLanguage aLanguage);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   339
	IMPORT_C TInt ScriptTypeForMetrics() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   340
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   341
	/** The typeface. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   342
	TTypeface iTypeface;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   343
	/** The height of the typeface (in twips). */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   344
	TInt iHeight;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   345
	/** The font style of the typeface. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   346
	TFontStyle iFontStyle;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   347
	};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   348
662fa7de7023 201024_05
hgs
parents:
diff changeset
   349
662fa7de7023 201024_05
hgs
parents:
diff changeset
   350
662fa7de7023 201024_05
hgs
parents:
diff changeset
   351
/** Typeface family support information.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   352
662fa7de7023 201024_05
hgs
parents:
diff changeset
   353
This data-only class includes the name and attributes of a typeface, how many 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   354
font heights are available, its minimum and maximum heights, and whether or 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   355
not it is scaleable  a typeface is scaleable if it supports heights at 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   356
fixed intervals between the minimum and maximum heights. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   357
@publishedAll 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   358
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   359
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   360
class TTypefaceSupport
662fa7de7023 201024_05
hgs
parents:
diff changeset
   361
    {
662fa7de7023 201024_05
hgs
parents:
diff changeset
   362
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   363
	/** The name and attributes of the typeface. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   364
    TTypeface iTypeface;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   365
	/** The number of distinct font heights available in the typeface. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   366
    TInt iNumHeights;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   367
	/** The typeface's minimum font height, in twips. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   368
    TInt iMinHeightInTwips;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   369
	/** The typeface's maximum font height, in twips. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   370
    TInt iMaxHeightInTwips;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   371
	/** Whether the typeface is scaleable. ETrue if it is scaleable, otherwise 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   372
	EFalse. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   373
    TBool iIsScalable; // supports heights from min to max at fixed interval
662fa7de7023 201024_05
hgs
parents:
diff changeset
   374
    };
662fa7de7023 201024_05
hgs
parents:
diff changeset
   375
662fa7de7023 201024_05
hgs
parents:
diff changeset
   376
/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   377
The percentage used to multiply a normal font height when calculating its 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   378
superscript or subscript height. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   379
@publishedAll	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   380
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   381
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   382
const TInt KSuperSubScalingPercentage=67;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   383
662fa7de7023 201024_05
hgs
parents:
diff changeset
   384
/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   385
The percentage of a font height used to calculate its baseline offset for a 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   386
superscript print position. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   387
@publishedAll	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   388
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   389
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   390
const TInt KSuperscriptOffsetPercentage=-28;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   391
662fa7de7023 201024_05
hgs
parents:
diff changeset
   392
/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   393
The percentage of a font height used to calculate its baseline offset for a 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   394
subscript print position. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   395
@publishedAll	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   396
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   397
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   398
const TInt KSubscriptOffsetPercentage=14;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   399
662fa7de7023 201024_05
hgs
parents:
diff changeset
   400
class CFont;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   401
662fa7de7023 201024_05
hgs
parents:
diff changeset
   402
/** Typeface store abstract base interface.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   403
662fa7de7023 201024_05
hgs
parents:
diff changeset
   404
This class provides the interface to a store for typefaces.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   405
662fa7de7023 201024_05
hgs
parents:
diff changeset
   406
See also CFontStore. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   407
@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
   408
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   409
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   410
class CTypefaceStore : public CBase
662fa7de7023 201024_05
hgs
parents:
diff changeset
   411
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   412
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   413
	IMPORT_C ~CTypefaceStore();
662fa7de7023 201024_05
hgs
parents:
diff changeset
   414
662fa7de7023 201024_05
hgs
parents:
diff changeset
   415
	/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   416
	Gets the font which is the nearest to the given font specification.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   417
662fa7de7023 201024_05
hgs
parents:
diff changeset
   418
	When the font is no longer needed, call @c ReleaseFont().
662fa7de7023 201024_05
hgs
parents:
diff changeset
   419
662fa7de7023 201024_05
hgs
parents:
diff changeset
   420
	Note that this deprecated function is replaced by the new @c GetNearestFontToDesignHeightInTwips() 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   421
	yielding (virtually) the same result. However clients are strongly encouraged to use the new
662fa7de7023 201024_05
hgs
parents:
diff changeset
   422
	@c GetNearestFontToMaxHeightInTwips() function instead. This will guarantee that every 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   423
	character within any given text string will fit within the given amount of twips, whereas the design 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   424
	height is an aesthetic unit decided by the font designer without strict physical meaning, which 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   425
	may result in cropped characters.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   426
662fa7de7023 201024_05
hgs
parents:
diff changeset
   427
	@param aFont On return, contains a pointer to the nearest font.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   428
	@param aFontSpec The specification of the font to be matched.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   429
	@return KErrNone if successful; a system-wide error code otherwise.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   430
	@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
   431
	@deprecated Use GetNearestFontToDesignHeightInTwips
662fa7de7023 201024_05
hgs
parents:
diff changeset
   432
	*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   433
	virtual TInt GetNearestFontInTwips(CFont*& aFont, const TFontSpec& aFontSpec) = 0;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   434
662fa7de7023 201024_05
hgs
parents:
diff changeset
   435
	/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   436
	Gets the font which is the nearest to the given font specification.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   437
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   438
	When the font is no longer needed, call @c ReleaseFont().
662fa7de7023 201024_05
hgs
parents:
diff changeset
   439
662fa7de7023 201024_05
hgs
parents:
diff changeset
   440
	This new function replaces the deprecated @c GetNearestFontInTwips() yielding (virtually) the 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   441
	same result. However clients are strongly encouraged to use the new
662fa7de7023 201024_05
hgs
parents:
diff changeset
   442
	@c GetNearestFontToMaxHeightInTwips() function instead. This will guarantee that every 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   443
	character within any given text string will fit within the given amount of twips, whereas the design 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   444
	height is an aesthetic unit decided by the font designer without strict physical meaning, which 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   445
	may result in cropped characters.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   446
662fa7de7023 201024_05
hgs
parents:
diff changeset
   447
	@param aFont On return, contains a pointer to the nearest font.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   448
	@param aFontSpec The specification of the font to be matched.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   449
	@return KErrNone if successful; a system-wide error code otherwise.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   450
	@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
   451
	@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   452
	*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   453
	virtual TInt GetNearestFontToDesignHeightInTwips(CFont*& aFont, const TFontSpec& aFontSpec) = 0;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   454
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   455
	/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   456
	Gets the font which is the nearest to the given font specification.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   457
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   458
	When the font is no longer needed, call @c ReleaseFont().
662fa7de7023 201024_05
hgs
parents:
diff changeset
   459
662fa7de7023 201024_05
hgs
parents:
diff changeset
   460
	The font and bitmap server returns a pointer to the nearest matching font 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   461
	from those available. Matches to max height of font - this does its best 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   462
	to return a font that will fit within the maximum height specified (but 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   463
	note that variations due to hinting algorithms may rarely result in this 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   464
	height being exceeded by up to one pixel). Problems can also be 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   465
	encountered with bitmap fonts where the typeface exists but doesn't have 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   466
	a font small enough.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   467
662fa7de7023 201024_05
hgs
parents:
diff changeset
   468
	@param aFont On return, contains a pointer to the nearest font.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   469
	@param aFontSpec The specification of the font to be matched.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   470
	@param aMaxHeight The maximum height within which the font must fit.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   471
	@return KErrNone if successful; a system-wide error code otherwise.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   472
	@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
   473
	@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   474
	*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   475
	virtual TInt GetNearestFontToMaxHeightInTwips(CFont*& aFont, const TFontSpec& aFontSpec, TInt aMaxHeight) = 0;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   476
662fa7de7023 201024_05
hgs
parents:
diff changeset
   477
	/** Gets the number of typefaces supported by the typeface store.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   478
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   479
	@return The number of supported typefaces. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   480
	virtual TInt NumTypefaces() const=0;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   481
662fa7de7023 201024_05
hgs
parents:
diff changeset
   482
	/** Gets typeface information for a specified typeface index.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   483
 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   484
 	This information is returned in aTypefaceSupport, and
662fa7de7023 201024_05
hgs
parents:
diff changeset
   485
	includes the typeface name and typeface attributes, the number of font
662fa7de7023 201024_05
hgs
parents:
diff changeset
   486
 	heights, the maximum and minimum font heights, and whether it is a
662fa7de7023 201024_05
hgs
parents:
diff changeset
   487
	scaleable typeface.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   488
 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   489
 	@param aTypefaceSupport On return, if the function executed successfully, 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   490
 	this object contains the typeface information.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   491
  	@param aTypefaceIndex A typeface index number, in the range: zero to
662fa7de7023 201024_05
hgs
parents:
diff changeset
   492
             (NumTypefaces() - 1). */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   493
	virtual void TypefaceSupport(TTypefaceSupport& aTypefaceSupport,TInt aTypefaceIndex) const=0;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   494
662fa7de7023 201024_05
hgs
parents:
diff changeset
   495
	/** Gets the height of the font with specified height and typeface indices, 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   496
	in twips.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   497
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   498
	The value returned is rounded up or down to the nearest font height in twips.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   499
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   500
	@param aTypefaceIndex A typeface index number, in the range: 0 to 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   501
	(NumTypefaces() - 1). 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   502
	@param aHeightIndex A font height index number.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   503
	@return The height of the font, in twips. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   504
	virtual TInt FontHeightInTwips(TInt aTypefaceIndex,TInt aHeightIndex) const=0;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   505
	IMPORT_C void ReleaseFont(CFont* aFont);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   506
	IMPORT_C static TInt BaselineOffset(TInt aHeight,TFontPrintPosition aPos);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   507
	IMPORT_C static TInt SuperSubHeight(TInt aHeight,TFontPrintPosition aPos);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   508
protected:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   509
	IMPORT_C CTypefaceStore();
662fa7de7023 201024_05
hgs
parents:
diff changeset
   510
	IMPORT_C void ConstructL();
662fa7de7023 201024_05
hgs
parents:
diff changeset
   511
	IMPORT_C void AddFontL(CFont* aFont);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   512
	IMPORT_C TBool IncrementFontCount(const CFont* aFont);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   513
private:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   514
	TBool FindFont(const CFont* aFont, TInt& aIdx) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   515
	NONSHARABLE_CLASS(TFontAccess)
662fa7de7023 201024_05
hgs
parents:
diff changeset
   516
	/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   517
	Pairs a font with a count of how many clients of the typeface store 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   518
	are accessing that font. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   519
    */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   520
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   521
	public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   522
		/** A device specific font. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   523
		CFont* iFont;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   524
		/** The number of clients accessing the font. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   525
		TInt iAccessCount;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   526
		};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   527
protected:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   528
	/** A list of fonts accessed by clients of the typeface store, which pairs 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   529
	a font with a count of the number of clients accessing the font.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   530
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   531
	Implemented as an array of TFontAccess objects.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   532
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   533
	An object is added to this array for every font accessed. If the font is 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   534
	released by all clients, and the access count drops to zero, the font is 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   535
	removed from the list. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   536
	CArrayFixFlat<TFontAccess>* iFontAccess;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   537
	};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   538
662fa7de7023 201024_05
hgs
parents:
diff changeset
   539
/** The maximum number of entries in the font cache.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   540
662fa7de7023 201024_05
hgs
parents:
diff changeset
   541
@see CFontCache */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   542
const TInt KMaxFontCacheEntries=32;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   543
662fa7de7023 201024_05
hgs
parents:
diff changeset
   544
/** Font cache. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   545
662fa7de7023 201024_05
hgs
parents:
diff changeset
   546
When a CFont* needs to be found for a particular TFontSpec, the cache can 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   547
be searched to see if the TFontSpec is already in the cache. If the TFontSpec 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   548
is in the cache, its corresponding CFont* can be returned. Otherwise 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   549
GetNearestFontInTwips() must be used to search all of the available fonts for 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   550
the nearest CFont- a procedure which takes much longer than a simple cache
662fa7de7023 201024_05
hgs
parents:
diff changeset
   551
search.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   552
662fa7de7023 201024_05
hgs
parents:
diff changeset
   553
The current font cache should be destroyed and a new cache created whenever 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   554
the zoom factor or device map changes, as these changes break the relation 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   555
between CFont and TFontSpec. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   556
@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
   557
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   558
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   559
class CFontCache : public CBase
662fa7de7023 201024_05
hgs
parents:
diff changeset
   560
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   561
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   562
	IMPORT_C CFontCache();
662fa7de7023 201024_05
hgs
parents:
diff changeset
   563
	IMPORT_C CFontCache(TInt aMaxEntries);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   564
	IMPORT_C ~CFontCache();
662fa7de7023 201024_05
hgs
parents:
diff changeset
   565
	IMPORT_C CFont* Search(const TFontSpec& aFontSpec);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   566
	IMPORT_C CFont* AddEntryL(CFont* aFont,const TFontSpec& aFontSpec);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   567
	IMPORT_C CFont* RemoveFirstEntry();
662fa7de7023 201024_05
hgs
parents:
diff changeset
   568
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   569
	/** The number of cache hits since the font cache was created i.e. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   570
	successful results from CFontCache::Search(). */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   571
	TInt iNumHits;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   572
	/** The number of cache misses since the font cache was created i.e. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   573
	unsuccessful results from CFontCache::Search(). */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   574
	TInt iNumMisses;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   575
private:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   576
	class CFontCacheEntry : public CBase
662fa7de7023 201024_05
hgs
parents:
diff changeset
   577
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   578
	public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   579
		CFontCacheEntry(CFont* aFont,const TFontSpec& aFontSpec,CFontCacheEntry* aNext);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   580
	public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   581
		CFont* iFont;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   582
		TFontSpec iSpec;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   583
		CFontCacheEntry* iNext;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   584
		};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   585
private:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   586
	TInt iNumEntries;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   587
	TInt iMaxEntries;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   588
	CFontCacheEntry* iFirst;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   589
	};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   590
662fa7de7023 201024_05
hgs
parents:
diff changeset
   591
/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   592
WARNING: this Class is for internal use ONLY.  Compatibility is not guaranteed in future releases.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   593
UIDs corresponding to the CFont API extension functions
662fa7de7023 201024_05
hgs
parents:
diff changeset
   594
@internalTechnology
662fa7de7023 201024_05
hgs
parents:
diff changeset
   595
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   596
const TUid KFontCapitalAscent	= {0x1020498E};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   597
const TUid KFontMaxAscent		= {0x10204B10};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   598
const TUid KFontStandardDescent	= {0x10204B11};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   599
const TUid KFontMaxDescent		= {0x10205AFC};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   600
const TUid KFontLineGap			= {0x10204B12};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   601
const TUid KFontGetFontTable    = {0x102872C1};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   602
const TUid KFontGetGlyphOutline = {0x102872C2};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   603
const TUid KFontReleaseGlyphOutline = {0x2002A1FD};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   604
const TUid KFontReleaseFontTable = {0x2002AC24};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   605
662fa7de7023 201024_05
hgs
parents:
diff changeset
   606
662fa7de7023 201024_05
hgs
parents:
diff changeset
   607
/** Abstract font interface.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   608
662fa7de7023 201024_05
hgs
parents:
diff changeset
   609
The CFont class provides a device-independent interface to a device-dependent 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   610
font usually obtained from a call to GetNearestFont...() on a graphics device. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   611
It is used as a handle in CGraphicsContext::UseFont() and to obtain 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   612
device-dependent information about the font - notably the pixel width of a text 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   613
string.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   614
662fa7de7023 201024_05
hgs
parents:
diff changeset
   615
@see CFbsFont
662fa7de7023 201024_05
hgs
parents:
diff changeset
   616
@see CGraphicsContext::UseFont() 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   617
@publishedAll 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   618
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   619
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   620
class CFont : public CBase
662fa7de7023 201024_05
hgs
parents:
diff changeset
   621
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   622
	friend class CTypefaceStore;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   623
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   624
662fa7de7023 201024_05
hgs
parents:
diff changeset
   625
	/** Text direction flags.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   626
662fa7de7023 201024_05
hgs
parents:
diff changeset
   627
	This enum is used in TMeasureTextInput and determines whether the text is 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   628
	drawn horizontally or vertically. Note: text is drawn vertically in some 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   629
	styles of Japanese, etc.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   630
662fa7de7023 201024_05
hgs
parents:
diff changeset
   631
	@see TMeasureTextInput */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   632
	enum TTextDirection
662fa7de7023 201024_05
hgs
parents:
diff changeset
   633
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   634
	/** Text is drawn horizontally. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   635
 		/** Text is drawn horizontally. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   636
   		EHorizontal,
662fa7de7023 201024_05
hgs
parents:
diff changeset
   637
 		/** Text is drawn vertically. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   638
		EVertical
662fa7de7023 201024_05
hgs
parents:
diff changeset
   639
		};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   640
662fa7de7023 201024_05
hgs
parents:
diff changeset
   641
	/** Complicated parameter block used for contextual glyph selection, 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   642
	ligature creation and diacritic placement when drawing text in complex 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   643
	scripts
662fa7de7023 201024_05
hgs
parents:
diff changeset
   644
662fa7de7023 201024_05
hgs
parents:
diff changeset
   645
	This class declares a constructor, another scoped class, and several other 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   646
	enums. However this class is unlikely to be useful to third party developers.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   647
662fa7de7023 201024_05
hgs
parents:
diff changeset
   648
	@see CFont::GetCharacterPosition()
662fa7de7023 201024_05
hgs
parents:
diff changeset
   649
	@see CFont::GetCharacterPosition2()
662fa7de7023 201024_05
hgs
parents:
diff changeset
   650
	@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
   651
	@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   652
	*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   653
	class TPositionParam
662fa7de7023 201024_05
hgs
parents:
diff changeset
   654
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   655
	public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   656
		/** Standard constructor. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   657
		TPositionParam():
662fa7de7023 201024_05
hgs
parents:
diff changeset
   658
			iDirection(EHorizontal),
662fa7de7023 201024_05
hgs
parents:
diff changeset
   659
			iFlags(0),
662fa7de7023 201024_05
hgs
parents:
diff changeset
   660
			iPosInText(0),
662fa7de7023 201024_05
hgs
parents:
diff changeset
   661
			iOutputGlyphs(0)
662fa7de7023 201024_05
hgs
parents:
diff changeset
   662
			{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   663
			}
662fa7de7023 201024_05
hgs
parents:
diff changeset
   664
662fa7de7023 201024_05
hgs
parents:
diff changeset
   665
		enum
662fa7de7023 201024_05
hgs
parents:
diff changeset
   666
			{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   667
			EMaxInputChars = 18,	// ligatures cannot be made from more than 18 components
662fa7de7023 201024_05
hgs
parents:
diff changeset
   668
			EMaxOutputGlyphs = 8	// output can consist of up to 8 characters (one base and 7 combining characters)
662fa7de7023 201024_05
hgs
parents:
diff changeset
   669
			};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   670
662fa7de7023 201024_05
hgs
parents:
diff changeset
   671
		/**Flags for TPositionParam::iFlags. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   672
		enum TFlags
662fa7de7023 201024_05
hgs
parents:
diff changeset
   673
			{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   674
			/** Input text is logically ordered not visually ordered. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   675
			EFLogicalOrder = 1
662fa7de7023 201024_05
hgs
parents:
diff changeset
   676
			};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   677
662fa7de7023 201024_05
hgs
parents:
diff changeset
   678
		/** Input: Orientation (EHorizontal or EVertical) in which to draw
662fa7de7023 201024_05
hgs
parents:
diff changeset
   679
		the text. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   680
		TInt16 iDirection;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   681
		/** Input: Flags from TFlags. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   682
		TUint16 iFlags;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   683
		/** Input: Text containing the characters to be positioned. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   684
		TPtrC iText;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   685
662fa7de7023 201024_05
hgs
parents:
diff changeset
   686
		/** Input and output: Position within iText to shape. On exit
662fa7de7023 201024_05
hgs
parents:
diff changeset
   687
		it will index the first character not positioned */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   688
		TInt iPosInText;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   689
		/** Input and output: Pen position. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   690
		TPoint iPen;			
662fa7de7023 201024_05
hgs
parents:
diff changeset
   691
662fa7de7023 201024_05
hgs
parents:
diff changeset
   692
		/** Output of GetCharacterPosition and GetCharacterPosition2.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   693
		@see CFont::GetCharacterPosition
662fa7de7023 201024_05
hgs
parents:
diff changeset
   694
		@see CFont::GetCharacterPosition2
662fa7de7023 201024_05
hgs
parents:
diff changeset
   695
		@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
   696
		@released */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   697
		class TOutput
662fa7de7023 201024_05
hgs
parents:
diff changeset
   698
			{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   699
		public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   700
			/** Standard constructor. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   701
			TOutput() : iBitmapSize(TSize::EUninitialized),
662fa7de7023 201024_05
hgs
parents:
diff changeset
   702
				iBounds(TRect::EUninitialized) {}
662fa7de7023 201024_05
hgs
parents:
diff changeset
   703
			/** Character or glyph code. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   704
			TUint iCode;			
662fa7de7023 201024_05
hgs
parents:
diff changeset
   705
			/** Bitmap data for the glyph, if available */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   706
			const TUint8* iBitmap;	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   707
			/** Size of the bitmap before algorithmic bolding, size 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   708
			multiplication, etc. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   709
			TSize iBitmapSize;		
662fa7de7023 201024_05
hgs
parents:
diff changeset
   710
			/** Bitmap bounds relative to the original pen position. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   711
			TRect iBounds;			
662fa7de7023 201024_05
hgs
parents:
diff changeset
   712
			};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   713
662fa7de7023 201024_05
hgs
parents:
diff changeset
   714
		/** Information about the glyphs that were output. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   715
		TOutput iOutput[EMaxOutputGlyphs];	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   716
		/** Number of glyphs actually output. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   717
		TInt iOutputGlyphs;					
662fa7de7023 201024_05
hgs
parents:
diff changeset
   718
		};	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   719
662fa7de7023 201024_05
hgs
parents:
diff changeset
   720
662fa7de7023 201024_05
hgs
parents:
diff changeset
   721
	/** Input parameter block.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   722
662fa7de7023 201024_05
hgs
parents:
diff changeset
   723
	This is optionally used by CFont::MeasureText(), which is the powerful text 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   724
	measurement function underlying all the other text measurement functions.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   725
662fa7de7023 201024_05
hgs
parents:
diff changeset
   726
	@see CFont::MeasureText() 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   727
	@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
   728
	@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   729
	*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   730
	class TMeasureTextInput
662fa7de7023 201024_05
hgs
parents:
diff changeset
   731
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   732
	public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   733
		TMeasureTextInput():
662fa7de7023 201024_05
hgs
parents:
diff changeset
   734
			iStartInputChar(0),
662fa7de7023 201024_05
hgs
parents:
diff changeset
   735
			iEndInputChar(KMaxTInt),
662fa7de7023 201024_05
hgs
parents:
diff changeset
   736
			iDirection(EHorizontal),
662fa7de7023 201024_05
hgs
parents:
diff changeset
   737
			iFlags(0),
662fa7de7023 201024_05
hgs
parents:
diff changeset
   738
			iMaxAdvance(KMaxTInt),
662fa7de7023 201024_05
hgs
parents:
diff changeset
   739
			iMaxBounds(KMaxTInt),
662fa7de7023 201024_05
hgs
parents:
diff changeset
   740
			iCharJustNum(0),
662fa7de7023 201024_05
hgs
parents:
diff changeset
   741
			iCharJustExcess(0),
662fa7de7023 201024_05
hgs
parents:
diff changeset
   742
			iWordJustNum(0),
662fa7de7023 201024_05
hgs
parents:
diff changeset
   743
			iWordJustExcess(0)
662fa7de7023 201024_05
hgs
parents:
diff changeset
   744
			{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   745
			}
662fa7de7023 201024_05
hgs
parents:
diff changeset
   746
662fa7de7023 201024_05
hgs
parents:
diff changeset
   747
		/**Flags for TMeasureTextInput::iFlags. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   748
		enum TFlags
662fa7de7023 201024_05
hgs
parents:
diff changeset
   749
			{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   750
 			/** Input text is visually ordered left-to-right. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   751
 			EFVisualOrder = 1,
662fa7de7023 201024_05
hgs
parents:
diff changeset
   752
 			/** Input text is visually ordered right-to-left.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   753
 			Overrides EFVisualOrder. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   754
 			EFVisualOrderRightToLeft = 2,
662fa7de7023 201024_05
hgs
parents:
diff changeset
   755
 			/** Flag to consider side bearings when checking bounds for line-break */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   756
 			EFIncludePenPositionInBoundsCheck = 4
662fa7de7023 201024_05
hgs
parents:
diff changeset
   757
			};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   758
662fa7de7023 201024_05
hgs
parents:
diff changeset
   759
		/** Starting index specifying first input character in iText.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   760
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   761
		Together with iEndInputChar, this allows some context before and 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   762
		after the measured text to be supplied so that shaping can work 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   763
		properly. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   764
		TInt iStartInputChar;	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   765
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   766
		/** Index specifying the final input character.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   767
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   768
		Together with iStartInputChar, this allows some context before and 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   769
		after the measured text to be supplied so that shaping can work 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   770
		properly. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   771
		TInt iEndInputChar;		
662fa7de7023 201024_05
hgs
parents:
diff changeset
   772
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   773
		/** The direction in which to draw the text. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   774
		TUint16 iDirection;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   775
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   776
		/** Flags from TFlags. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   777
		TUint16 iFlags;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   778
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   779
		/** The maximum advance. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   780
		TInt iMaxAdvance;		
662fa7de7023 201024_05
hgs
parents:
diff changeset
   781
		
662fa7de7023 201024_05
hgs
parents:
diff changeset
   782
		/** The maximum width (or height if drawing vertically) of bounds. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   783
		TInt iMaxBounds;		
662fa7de7023 201024_05
hgs
parents:
diff changeset
   784
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   785
		/** The number of glyph groups to be letter-spaced. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   786
		TInt iCharJustNum;		
662fa7de7023 201024_05
hgs
parents:
diff changeset
   787
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   788
		/** The amount of space to be used for letter spacing. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   789
		TInt iCharJustExcess;	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   790
		
662fa7de7023 201024_05
hgs
parents:
diff changeset
   791
		/** The number of spaces to be used for word spacing. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   792
		TInt iWordJustNum;		
662fa7de7023 201024_05
hgs
parents:
diff changeset
   793
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   794
		/** The amount of space to be used for word spacing. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   795
		TInt iWordJustExcess;	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   796
		};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   797
662fa7de7023 201024_05
hgs
parents:
diff changeset
   798
	/** Output parameter block.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   799
662fa7de7023 201024_05
hgs
parents:
diff changeset
   800
	This is optionally used by CFont::MeasureText(), which is the powerful text 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   801
	measurement function underlying all the other text measurement functions.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   802
662fa7de7023 201024_05
hgs
parents:
diff changeset
   803
	@see CFont::MeasureText() 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   804
	@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
   805
	@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   806
	*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   807
	class TMeasureTextOutput
662fa7de7023 201024_05
hgs
parents:
diff changeset
   808
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   809
		public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   810
		/** The number of input characters that would be drawn.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   811
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   812
		This may be less than the length of the text if a maximum advance or bounding 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   813
		box size is specified. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   814
		TInt iChars;			
662fa7de7023 201024_05
hgs
parents:
diff changeset
   815
		/** The number of glyphs that would be drawn. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   816
		TInt iGlyphs;			
662fa7de7023 201024_05
hgs
parents:
diff changeset
   817
		/** The number of groups that would be drawn.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   818
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   819
		A group is a base glyph plus one or more combining characters. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   820
		TInt iGroups;			
662fa7de7023 201024_05
hgs
parents:
diff changeset
   821
		/** The number of word spaces (U+0020) that would be drawn. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   822
		TInt iSpaces;			
662fa7de7023 201024_05
hgs
parents:
diff changeset
   823
		/** The bounding box of all the glyphs that would be drawn. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   824
		TRect iBounds;			
662fa7de7023 201024_05
hgs
parents:
diff changeset
   825
		/** The maximum width and height of any glyph. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   826
		TSize iMaxGlyphSize;	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   827
		};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   828
662fa7de7023 201024_05
hgs
parents:
diff changeset
   829
	/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   830
	Data availability flags.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   831
662fa7de7023 201024_05
hgs
parents:
diff changeset
   832
	Some fonts like printer fonts may only have width information and can return 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   833
	ECharacterWidthOnly to show this: the text drawing routines in CFont synthesize 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   834
	the rest of the data if necessary.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   835
662fa7de7023 201024_05
hgs
parents:
diff changeset
   836
	@see GetCharacterData() 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   837
	@publishedAll	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   838
	@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   839
	*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   840
	enum TCharacterDataAvailability
662fa7de7023 201024_05
hgs
parents:
diff changeset
   841
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   842
		/** No font information available. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   843
		ENoCharacterData,
662fa7de7023 201024_05
hgs
parents:
diff changeset
   844
		/** Width information only is available. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   845
		ECharacterWidthOnly,
662fa7de7023 201024_05
hgs
parents:
diff changeset
   846
		/** All character data is available. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   847
		EAllCharacterData
662fa7de7023 201024_05
hgs
parents:
diff changeset
   848
		};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   849
662fa7de7023 201024_05
hgs
parents:
diff changeset
   850
private:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   851
	// virtual functions have been made protected and public non-virtual ones
662fa7de7023 201024_05
hgs
parents:
diff changeset
   852
	// added to convert CFont to a handle-body pattern. SC is kept throught the
662fa7de7023 201024_05
hgs
parents:
diff changeset
   853
	// new functions and BC is kept by keeping the protected functions in the
662fa7de7023 201024_05
hgs
parents:
diff changeset
   854
	// same place in the class, and therefore in the same place in the vtable
662fa7de7023 201024_05
hgs
parents:
diff changeset
   855
	/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   856
	@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
   857
	WARNING: Function for internal use ONLY.  Compatibility is not guaranteed in future releases. Please see derived class for implementation.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   858
	*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   859
	virtual TUid DoTypeUid() const=0;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   860
	/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   861
	@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
   862
	WARNING: Function for internal use ONLY.  Compatibility is not guaranteed in future releases. Please see derived class for implementation.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   863
	*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   864
	virtual TInt DoHeightInPixels() const=0;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   865
	/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   866
	@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
   867
	WARNING: Function for internal use ONLY.  Compatibility is not guaranteed in future releases. Please see derived class for implementation.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   868
	*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   869
	virtual TInt DoAscentInPixels() const=0;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   870
	IMPORT_C virtual TInt DoDescentInPixels() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   871
	/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   872
	@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
   873
	WARNING: Function for internal use ONLY.  Compatibility is not guaranteed in future releases. Please see derived class for implementation.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   874
	*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   875
	virtual TInt DoCharWidthInPixels(TChar aChar) const=0;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   876
	/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   877
	@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
   878
	WARNING: Function for internal use ONLY.  Compatibility is not guaranteed in future releases. Please see derived class for implementation.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   879
	*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   880
	virtual TInt DoTextWidthInPixels(const TDesC& aText) const=0;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   881
	/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   882
	@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
   883
	WARNING: Function for internal use ONLY.  Compatibility is not guaranteed in future releases. Please see derived class for implementation.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   884
	*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   885
	virtual TInt DoBaselineOffsetInPixels() const=0;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   886
	/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   887
	@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
   888
	WARNING: Function for internal use ONLY.  Compatibility is not guaranteed in future releases. Please see derived class for implementation.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   889
	*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   890
	virtual TInt DoTextCount(const TDesC& aText,TInt aWidthInPixels) const=0;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   891
	/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   892
	@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
   893
	WARNING: Function for internal use ONLY.  Compatibility is not guaranteed in future releases. Please see derived class for implementation.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   894
	*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   895
	virtual TInt DoTextCount(const TDesC& aText,TInt aWidthInPixels,TInt& aExcessWidthInPixels) const=0;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   896
	/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   897
	@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
   898
	WARNING: Function for internal use ONLY.  Compatibility is not guaranteed in future releases. Please see derived class for implementation.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   899
	*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   900
	virtual TInt DoMaxCharWidthInPixels() const=0;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   901
	/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   902
	@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
   903
	WARNING: Function for internal use ONLY.  Compatibility is not guaranteed in future releases. Please see derived class for implementation.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   904
	*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   905
	virtual TInt DoMaxNormalCharWidthInPixels() const=0;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   906
	/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   907
	@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
   908
	WARNING: Function for internal use ONLY.  Compatibility is not guaranteed in future releases. Please see derived class for implementation.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   909
	*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   910
	virtual TFontSpec DoFontSpecInTwips() const=0;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   911
662fa7de7023 201024_05
hgs
parents:
diff changeset
   912
protected:	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   913
	IMPORT_C virtual TCharacterDataAvailability DoGetCharacterData(TUint aCode, TOpenFontCharMetrics& aMetrics,const TUint8*& aBitmap,TSize& aBitmapSize) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   914
	IMPORT_C virtual TBool DoGetCharacterPosition(TPositionParam& aParam) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   915
	IMPORT_C virtual TInt DoExtendedFunction(TUid aFunctionId, TAny* aParam = NULL) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   916
662fa7de7023 201024_05
hgs
parents:
diff changeset
   917
protected:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   918
	IMPORT_C virtual ~CFont();
662fa7de7023 201024_05
hgs
parents:
diff changeset
   919
662fa7de7023 201024_05
hgs
parents:
diff changeset
   920
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   921
	inline TInt FontCapitalAscent() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   922
	inline TInt FontMaxAscent() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   923
	inline TInt FontStandardDescent() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   924
	inline TInt FontMaxDescent() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   925
	inline TInt FontLineGap() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   926
	inline TInt FontMaxHeight() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   927
662fa7de7023 201024_05
hgs
parents:
diff changeset
   928
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   929
	/** Gets run-time identity of the actual font type. This enables safe casting to 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   930
	a derived type.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   931
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   932
	For example, if the derived type is a CFbsFont, the return value is KCFbsFontUid. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   933
	You would need to cast to a CFbsFont to get a character bounding box. Similarly, 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   934
	a CBitmapFont returns KCBitmapFontUidVal.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   935
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   936
	@return The font-type identifier. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   937
	IMPORT_C TUid TypeUid() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   938
662fa7de7023 201024_05
hgs
parents:
diff changeset
   939
	/** Gets the font height in pixels.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   940
	Note that this deprecated function is replaced by the new @c FontMaxHeight().
662fa7de7023 201024_05
hgs
parents:
diff changeset
   941
662fa7de7023 201024_05
hgs
parents:
diff changeset
   942
	@return The font height in pixels.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   943
	@see FontMaxHeight()
662fa7de7023 201024_05
hgs
parents:
diff changeset
   944
	@deprecated */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   945
	IMPORT_C TInt HeightInPixels() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   946
662fa7de7023 201024_05
hgs
parents:
diff changeset
   947
	/** Gets the font ascent in pixels.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   948
	Note that this deprecated function is replaced by the new @c FontMaxAscent()
662fa7de7023 201024_05
hgs
parents:
diff changeset
   949
	or in some cases @c FontCapitalAscent().	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   950
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   951
	@return The font ascent in pixels.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   952
	@see FontCapitalAscent()
662fa7de7023 201024_05
hgs
parents:
diff changeset
   953
	@see FontMaxAscent()
662fa7de7023 201024_05
hgs
parents:
diff changeset
   954
	@deprecated */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   955
	IMPORT_C TInt AscentInPixels() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   956
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   957
	/** Gets the font descent in pixels.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   958
	Note that this deprecated function is replaced by the new @c FontMaxDescent()
662fa7de7023 201024_05
hgs
parents:
diff changeset
   959
	or in some cases @c FontStandardDescent().	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   960
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   961
	@return The font descent in pixels.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   962
	@see FontStandardDescent() 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   963
	@see FontMaxDescent()
662fa7de7023 201024_05
hgs
parents:
diff changeset
   964
	@deprecated */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   965
	IMPORT_C TInt DescentInPixels() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   966
662fa7de7023 201024_05
hgs
parents:
diff changeset
   967
	/** Gets the width in pixels in this font of the specified character.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   968
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   969
	Note: For OpenType fonts this function returns the horizontal advance of
662fa7de7023 201024_05
hgs
parents:
diff changeset
   970
	the character, which may be different from the actual width.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   971
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   972
	@param aChar The character whose width should be determined. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   973
	@return The width in pixels of the specified character in this font. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   974
	IMPORT_C TInt CharWidthInPixels(TChar aChar) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   975
662fa7de7023 201024_05
hgs
parents:
diff changeset
   976
	/** Gets the width in pixels of the specified descriptor when displayed in this 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   977
	font.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   978
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   979
	@param aText The descriptor whose width should be determined. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   980
	@return The width of the specified descriptor when displayed in this font, 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   981
	in pixels. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   982
	IMPORT_C TInt TextWidthInPixels(const TDesC& aText) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   983
662fa7de7023 201024_05
hgs
parents:
diff changeset
   984
	/** Gets the baseline offset in pixels. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   985
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   986
	The baseline offset is how far a font is raised or lowered from its normal 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   987
	baseline.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   988
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   989
	@return Offset from normal baseline, in pixels. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   990
	IMPORT_C TInt BaselineOffsetInPixels() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   991
662fa7de7023 201024_05
hgs
parents:
diff changeset
   992
	/** Gets how much of the specified descriptor can be displayed in this font without 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   993
	exceeding the specified width.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   994
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   995
	Note:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   996
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   997
	This function does not display any of the descriptor itself - it is used 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   998
	before display, to test whether the whole descriptor can be displayed.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   999
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1000
	@param aText The descriptor. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1001
	@param aWidthInPixels The available width for character display. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1002
	@return The number of characters which will be able to be displayed without 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1003
	exceeding the specified width. The count starts from the beginning of the 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1004
	descriptor. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1005
	IMPORT_C TInt TextCount(const TDesC& aText,TInt aWidthInPixels) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1006
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1007
	/** Gets how much of the specified descriptor can be displayed in this font without 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1008
	exceeding the specified width. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1009
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1010
	It also returns the excess width - defined as the specified available width 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1011
	minus the width of the portion of the descriptor which can be displayed without 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1012
	exceeding the available width.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1013
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1014
	@param aText The descriptor. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1015
	@param aWidthInPixels The available width for character display. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1016
	@param aExcessWidthInPixels The excess width after displaying the portion of 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1017
	the descriptor, in pixels. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1018
	@return The number of characters which will be able to be displayed without 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1019
	exceeding the specified width. The count starts from the beginning of the 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1020
	descriptor. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1021
	IMPORT_C TInt TextCount(const TDesC& aText,TInt aWidthInPixels,TInt& aExcessWidthInPixels) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1022
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1023
	/** Gets the width in pixels of the widest character in this font.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1024
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1025
	@return The width of the maximum width character, in pixels. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1026
	IMPORT_C TInt MaxCharWidthInPixels() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1027
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1028
	/** Gets the width in pixels of the widest normal character in this font.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1029
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1030
	Normal characters include all character in a character set except non-alphabetic 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1031
	characters (e.g. the copyright symbol, or a block graphics symbol, for example).
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1032
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1033
	@return The width of the maximum width normal character, in pixels. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1034
	IMPORT_C TInt MaxNormalCharWidthInPixels() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1035
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1036
	/** Gets the font specification of this font in twips.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1037
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1038
	@return The font specification of this font (in twips). */
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1039
	IMPORT_C TFontSpec FontSpecInTwips() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1040
	IMPORT_C TCharacterDataAvailability GetCharacterData(TUint aCode, TOpenFontCharMetrics& aMetrics,const TUint8*& aBitmap,TSize& aBitmapSize) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1041
	IMPORT_C TBool GetCharacterPosition(TPositionParam& aParam) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1042
	IMPORT_C TInt WidthZeroInPixels() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1043
	IMPORT_C TInt MeasureText(const TDesC& aText, const TMeasureTextInput* aInput = NULL, TMeasureTextOutput* aOutput = NULL) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1044
	IMPORT_C static TBool CharactersJoin(TInt aLeftCharacter, TInt aRightCharacter);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1045
	IMPORT_C TInt ExtendedFunction(TUid aFunctionId, TAny* aParam = NULL) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1046
	IMPORT_C TBool GetCharacterPosition2(TPositionParam& aParam, RShapeInfo& aShapeInfo) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1047
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1048
	/** Gets the width in pixels of the specified descriptor when displayed in this 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1049
	font.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1050
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1051
	@param aText The descriptor whose width should be determined.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1052
	@param aParam Parameter block that controls how much of aText is measured
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1053
	@return The width of the specified descriptor when displayed in this font, 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1054
	in pixels. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1055
	IMPORT_C TInt TextWidthInPixels(const TDesC& aText,const TMeasureTextInput* aParam) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1056
	};
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1057
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1058
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1059
// inline functions from original gdi.inl
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1060
/** Gets the ascent of an ANSI capital letter in the font whether or not
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1061
there are any ANSI capitals in the font.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1062
@return The positive distance from the font baseline to the top of a
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1063
standard ANSI capital letter
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1064
@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1065
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1066
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1067
inline TInt CFont::FontCapitalAscent() const
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1068
    {
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1069
    return ExtendedFunction(KFontCapitalAscent);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1070
    }
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1071
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1072
/** Gets the max ascent of any pre-composed glyph in the font. This will
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1073
include accents or diacritics that form part of pre-composed glyphs. It is
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1074
not guaranteed to cover the max ascent of composite glyphs that have to be
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1075
created by a layout engine. This is also the recommended distance between
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1076
the top of a text box and the baseline of the first line of text. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1077
@return The positive distance from the font baseline to the top of the
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1078
highest pre-composed glyph (including accents) above the baseline
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1079
@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1080
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1081
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1082
inline TInt CFont::FontMaxAscent() const
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1083
    {
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1084
    return ExtendedFunction(KFontMaxAscent);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1085
    }
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1086
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1087
/** Gets the descent of an ANSI descending character in the font.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1088
Whether or not there are any ANSI descenders in the font.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1089
@return The positive distance from the font baseline to the bottom of the
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1090
lowest ANSI descender
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1091
@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1092
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1093
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1094
inline TInt CFont::FontStandardDescent() const
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1095
    {
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1096
    return ExtendedFunction(KFontStandardDescent);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1097
    }
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1098
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1099
/** Gets the max descent of any pre-composed glyph in the font. This will
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1100
include accents or diacritics that form part of pre-composed glyphs. It is
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1101
not guaranteed to cover the max descent of composite glyphs that have to be
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1102
created by a layout engine.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1103
@return The positive distance from the font baseline to the bottom of the
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1104
lowest pre-composed glyph (including accents) below the baseline
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1105
@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1106
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1107
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1108
inline TInt CFont::FontMaxDescent() const
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1109
    {
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1110
    return ExtendedFunction(KFontMaxDescent);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1111
    }
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1112
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1113
/** Gets the suggested line gap for the font. This is the recommended
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1114
baseline to baseline distance between successive lines of text in the font.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1115
@return The positive recommended gap between successive lines
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1116
@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1117
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1118
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1119
inline TInt CFont::FontLineGap() const
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1120
    {
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1121
    return ExtendedFunction(KFontLineGap);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1122
    }
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1123
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1124
/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1125
Gets the (positive) maximum height in pixels of the font.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1126
This may differ from the design height.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1127
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1128
@return The maximum height of the font.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1129
@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1130
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1131
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1132
inline TInt CFont::FontMaxHeight() const
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1133
    {
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1134
    return FontMaxAscent() + FontMaxDescent();
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1135
    }
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1136
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1137
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1138
// from original gdistruct.h
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1139
/*
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1140
Structure used to pass input/output parameters between RFontTable and CFbsFont.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1141
@internalTechnology
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1142
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1143
class TGetFontTableParam 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1144
    {
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1145
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1146
    TUint32 iTag;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1147
    TAny *iContent;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1148
    TInt iLength;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1149
    };
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1150
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1151
/*
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1152
Structure used to pass input/output parameters between RGlyphOutlineIterator and CFbsFont.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1153
Used when opening an outline iterator.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1154
@internalTechnology
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1155
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1156
class TGetGlyphOutlineParam 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1157
    {
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1158
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1159
    TInt iCount;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1160
    const TUint *iCodes; 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1161
    TBool iHinted;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1162
    TAny **iOutlines;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1163
    TInt *iLengths; 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1164
    };
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1165
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1166
/*
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1167
Structure used to pass input/output parameters between RGlyphOutlineIterator and CFbsFont.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1168
Used when closing an outline iterator.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1169
@internalTechnology
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1170
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1171
class TReleaseGlyphOutlineParam 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1172
    {
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1173
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1174
    TInt iCount;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1175
    const TUint *iCodes;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1176
    TBool iHinted;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1177
    };
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1178
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1179
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1180
#endif // __TEXTBASE_H__