fontservices/textbase/inc/textbase.h
author hgs
Wed, 27 Oct 2010 16:14:22 +0800
changeset 71 6cc5529d4a89
parent 45 662fa7de7023
permissions -rw-r--r--
201033_10
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,
71
6cc5529d4a89 201033_10
hgs
parents: 45
diff changeset
   238
	/** The format used when outline and shadow font rendering is used. 
6cc5529d4a89 201033_10
hgs
parents: 45
diff changeset
   239
	If the raterizer supports the outline and shadow fonts and EFourColourBlendGlyphBitmapMono is set, it will get regular monochrome
6cc5529d4a89 201033_10
hgs
parents: 45
diff changeset
   240
    bitmap.
6cc5529d4a89 201033_10
hgs
parents: 45
diff changeset
   241
	*/
6cc5529d4a89 201033_10
hgs
parents: 45
diff changeset
   242
	EFourColourBlendGlyphBitmapMono,
45
662fa7de7023 201024_05
hgs
parents:
diff changeset
   243
	};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   244
662fa7de7023 201024_05
hgs
parents:
diff changeset
   245
/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   246
Defines a set of font effects flags.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   247
662fa7de7023 201024_05
hgs
parents:
diff changeset
   248
@publishedAll 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   249
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   250
WARNING: This Class is for use by system/UI software ONLY.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   251
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   252
NONSHARABLE_CLASS(FontEffect)
662fa7de7023 201024_05
hgs
parents:
diff changeset
   253
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   254
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   255
	enum TEffect
662fa7de7023 201024_05
hgs
parents:
diff changeset
   256
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   257
		ENone			= 0x0,		// No effects.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   258
		EAlgorithmicBold= 0x10,		// Font is algorithmic bold (a.k.a pseudo bold.)
662fa7de7023 201024_05
hgs
parents:
diff changeset
   259
		EDropShadow		= 0x20,		// Font has a drop shadow.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   260
		EOutline		= 0x40,		// Font is an outline font.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   261
		EEmbossed		= 0x80,		// Font is embossed.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   262
		EEngraved		= 0x100,	// Font is engraved.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   263
		ESoftEdge		= 0x200,	// Font is soft edged.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   264
		EReserved1		= 0x400,	// Reserved for Symbian use.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   265
		EReserved2		= 0x800,	// Reserved for Symbian use.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   266
		EReserved3		= 0x1000,	// Reserved for Symbian use.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   267
		EReserved4		= 0x2000,	// Reserved for Symbian use.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   268
		EReserved5		= 0x4000,	// Reserved for Symbian use.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   269
		EReserved6		= 0x8000,	// Reserved for Symbian use.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   270
		};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   271
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   272
	IMPORT_C static TBool IsEffectOn(TEffect aEffect, TUint32 aFontEffect);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   273
	IMPORT_C static void SetEffect(TEffect aEffect, TBool aOn, TUint32& aFontEffect);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   274
	};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   275
662fa7de7023 201024_05
hgs
parents:
diff changeset
   276
/** Encapsulates a font style. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   277
662fa7de7023 201024_05
hgs
parents:
diff changeset
   278
The font style information is comprised of:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   279
662fa7de7023 201024_05
hgs
parents:
diff changeset
   280
the posture of the font upright or italic
662fa7de7023 201024_05
hgs
parents:
diff changeset
   281
662fa7de7023 201024_05
hgs
parents:
diff changeset
   282
the stroke weight of the font  normal or bold
662fa7de7023 201024_05
hgs
parents:
diff changeset
   283
662fa7de7023 201024_05
hgs
parents:
diff changeset
   284
the print position of the font normal, subscript or superscript
662fa7de7023 201024_05
hgs
parents:
diff changeset
   285
662fa7de7023 201024_05
hgs
parents:
diff changeset
   286
Note that the underline and strike-through attributes are not included in 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   287
this class, but are set in the graphics context.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   288
662fa7de7023 201024_05
hgs
parents:
diff changeset
   289
@see CGraphicsContext::SetUnderlineStyle()
662fa7de7023 201024_05
hgs
parents:
diff changeset
   290
@see CGraphicsContext::SetStrikethroughStyle() 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   291
@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
   292
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   293
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   294
class TFontStyle
662fa7de7023 201024_05
hgs
parents:
diff changeset
   295
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   296
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   297
	IMPORT_C TFontStyle();
662fa7de7023 201024_05
hgs
parents:
diff changeset
   298
	IMPORT_C TFontStyle(TFontPosture aPost,TFontStrokeWeight aStrWgt,TFontPrintPosition aPrintPos);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   299
	IMPORT_C void InternalizeL(RReadStream& aStream);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   300
	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   301
	IMPORT_C TFontPosture Posture() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   302
	IMPORT_C TFontStrokeWeight StrokeWeight() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   303
	IMPORT_C TFontPrintPosition PrintPosition() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   304
	IMPORT_C void SetPosture(TFontPosture aPosture);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   305
	IMPORT_C void SetStrokeWeight(TFontStrokeWeight aStrokeWeight);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   306
	IMPORT_C void SetPrintPosition(TFontPrintPosition aPrintPosition);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   307
	inline TGlyphBitmapType BitmapType() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   308
	inline void SetBitmapType(TGlyphBitmapType aBitmapType);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   309
	IMPORT_C TBool operator==(const TFontStyle& aFontStyle) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   310
	IMPORT_C TUint32 Effects() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   311
	IMPORT_C TBool IsEffectOn(FontEffect::TEffect aEffect) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   312
	IMPORT_C void SetEffects(TUint32 aEffects);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   313
	IMPORT_C void SetEffects(FontEffect::TEffect aEffect, TBool aOn);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   314
private:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   315
	enum
662fa7de7023 201024_05
hgs
parents:
diff changeset
   316
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   317
		EItalic=0x1,
662fa7de7023 201024_05
hgs
parents:
diff changeset
   318
		EBold=0x2,
662fa7de7023 201024_05
hgs
parents:
diff changeset
   319
		ESuper=0x4,
662fa7de7023 201024_05
hgs
parents:
diff changeset
   320
		ESub=0x8
662fa7de7023 201024_05
hgs
parents:
diff changeset
   321
		};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   322
private:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   323
	TUint32 iFlags; // bitmap type - 16 bits (high), font effects - 12 bits (middle), style - 4 bits (low)
662fa7de7023 201024_05
hgs
parents:
diff changeset
   324
	TAny* iReserved1;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   325
	TAny* iReserved2;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   326
	};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   327
662fa7de7023 201024_05
hgs
parents:
diff changeset
   328
662fa7de7023 201024_05
hgs
parents:
diff changeset
   329
662fa7de7023 201024_05
hgs
parents:
diff changeset
   330
/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   331
Specifies the font specification in device independent terms.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   332
@publishedAll 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   333
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   334
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   335
class TFontSpec
662fa7de7023 201024_05
hgs
parents:
diff changeset
   336
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   337
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   338
	IMPORT_C TFontSpec();
662fa7de7023 201024_05
hgs
parents:
diff changeset
   339
	IMPORT_C TFontSpec(const TDesC& aTypefaceName,TInt aHeight);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   340
	IMPORT_C TBool operator==(const TFontSpec& aFontSpec) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   341
	IMPORT_C void InternalizeL(RReadStream& aStream);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   342
	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   343
	IMPORT_C void SetScriptTypeForMetrics(TLanguage aLanguage);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   344
	IMPORT_C TInt ScriptTypeForMetrics() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   345
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   346
	/** The typeface. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   347
	TTypeface iTypeface;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   348
	/** The height of the typeface (in twips). */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   349
	TInt iHeight;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   350
	/** The font style of the typeface. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   351
	TFontStyle iFontStyle;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   352
	};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   353
662fa7de7023 201024_05
hgs
parents:
diff changeset
   354
662fa7de7023 201024_05
hgs
parents:
diff changeset
   355
662fa7de7023 201024_05
hgs
parents:
diff changeset
   356
/** Typeface family support information.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   357
662fa7de7023 201024_05
hgs
parents:
diff changeset
   358
This data-only class includes the name and attributes of a typeface, how many 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   359
font heights are available, its minimum and maximum heights, and whether or 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   360
not it is scaleable  a typeface is scaleable if it supports heights at 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   361
fixed intervals between the minimum and maximum heights. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   362
@publishedAll 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   363
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   364
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   365
class TTypefaceSupport
662fa7de7023 201024_05
hgs
parents:
diff changeset
   366
    {
662fa7de7023 201024_05
hgs
parents:
diff changeset
   367
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   368
	/** The name and attributes of the typeface. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   369
    TTypeface iTypeface;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   370
	/** The number of distinct font heights available in the typeface. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   371
    TInt iNumHeights;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   372
	/** The typeface's minimum font height, in twips. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   373
    TInt iMinHeightInTwips;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   374
	/** The typeface's maximum font height, in twips. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   375
    TInt iMaxHeightInTwips;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   376
	/** Whether the typeface is scaleable. ETrue if it is scaleable, otherwise 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   377
	EFalse. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   378
    TBool iIsScalable; // supports heights from min to max at fixed interval
662fa7de7023 201024_05
hgs
parents:
diff changeset
   379
    };
662fa7de7023 201024_05
hgs
parents:
diff changeset
   380
662fa7de7023 201024_05
hgs
parents:
diff changeset
   381
/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   382
The percentage used to multiply a normal font height when calculating its 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   383
superscript or subscript height. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   384
@publishedAll	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   385
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   386
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   387
const TInt KSuperSubScalingPercentage=67;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   388
662fa7de7023 201024_05
hgs
parents:
diff changeset
   389
/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   390
The percentage of a font height used to calculate its baseline offset for a 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   391
superscript print position. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   392
@publishedAll	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   393
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   394
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   395
const TInt KSuperscriptOffsetPercentage=-28;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   396
662fa7de7023 201024_05
hgs
parents:
diff changeset
   397
/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   398
The percentage of a font height used to calculate its baseline offset for a 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   399
subscript print position. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   400
@publishedAll	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   401
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   402
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   403
const TInt KSubscriptOffsetPercentage=14;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   404
662fa7de7023 201024_05
hgs
parents:
diff changeset
   405
class CFont;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   406
662fa7de7023 201024_05
hgs
parents:
diff changeset
   407
/** Typeface store abstract base interface.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   408
662fa7de7023 201024_05
hgs
parents:
diff changeset
   409
This class provides the interface to a store for typefaces.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   410
662fa7de7023 201024_05
hgs
parents:
diff changeset
   411
See also CFontStore. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   412
@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
   413
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   414
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   415
class CTypefaceStore : public CBase
662fa7de7023 201024_05
hgs
parents:
diff changeset
   416
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   417
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   418
	IMPORT_C ~CTypefaceStore();
662fa7de7023 201024_05
hgs
parents:
diff changeset
   419
662fa7de7023 201024_05
hgs
parents:
diff changeset
   420
	/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   421
	Gets the font which is the nearest to the given font specification.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   422
662fa7de7023 201024_05
hgs
parents:
diff changeset
   423
	When the font is no longer needed, call @c ReleaseFont().
662fa7de7023 201024_05
hgs
parents:
diff changeset
   424
662fa7de7023 201024_05
hgs
parents:
diff changeset
   425
	Note that this deprecated function is replaced by the new @c GetNearestFontToDesignHeightInTwips() 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   426
	yielding (virtually) the same result. However clients are strongly encouraged to use the new
662fa7de7023 201024_05
hgs
parents:
diff changeset
   427
	@c GetNearestFontToMaxHeightInTwips() function instead. This will guarantee that every 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   428
	character within any given text string will fit within the given amount of twips, whereas the design 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   429
	height is an aesthetic unit decided by the font designer without strict physical meaning, which 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   430
	may result in cropped characters.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   431
662fa7de7023 201024_05
hgs
parents:
diff changeset
   432
	@param aFont On return, contains a pointer to the nearest font.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   433
	@param aFontSpec The specification of the font to be matched.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   434
	@return KErrNone if successful; a system-wide error code otherwise.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   435
	@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
   436
	@deprecated Use GetNearestFontToDesignHeightInTwips
662fa7de7023 201024_05
hgs
parents:
diff changeset
   437
	*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   438
	virtual TInt GetNearestFontInTwips(CFont*& aFont, const TFontSpec& aFontSpec) = 0;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   439
662fa7de7023 201024_05
hgs
parents:
diff changeset
   440
	/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   441
	Gets the font which is the nearest to the given font specification.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   442
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   443
	When the font is no longer needed, call @c ReleaseFont().
662fa7de7023 201024_05
hgs
parents:
diff changeset
   444
662fa7de7023 201024_05
hgs
parents:
diff changeset
   445
	This new function replaces the deprecated @c GetNearestFontInTwips() yielding (virtually) the 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   446
	same result. However clients are strongly encouraged to use the new
662fa7de7023 201024_05
hgs
parents:
diff changeset
   447
	@c GetNearestFontToMaxHeightInTwips() function instead. This will guarantee that every 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   448
	character within any given text string will fit within the given amount of twips, whereas the design 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   449
	height is an aesthetic unit decided by the font designer without strict physical meaning, which 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   450
	may result in cropped characters.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   451
662fa7de7023 201024_05
hgs
parents:
diff changeset
   452
	@param aFont On return, contains a pointer to the nearest font.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   453
	@param aFontSpec The specification of the font to be matched.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   454
	@return KErrNone if successful; a system-wide error code otherwise.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   455
	@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
   456
	@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   457
	*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   458
	virtual TInt GetNearestFontToDesignHeightInTwips(CFont*& aFont, const TFontSpec& aFontSpec) = 0;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   459
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   460
	/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   461
	Gets the font which is the nearest to the given font specification.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   462
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   463
	When the font is no longer needed, call @c ReleaseFont().
662fa7de7023 201024_05
hgs
parents:
diff changeset
   464
662fa7de7023 201024_05
hgs
parents:
diff changeset
   465
	The font and bitmap server returns a pointer to the nearest matching font 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   466
	from those available. Matches to max height of font - this does its best 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   467
	to return a font that will fit within the maximum height specified (but 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   468
	note that variations due to hinting algorithms may rarely result in this 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   469
	height being exceeded by up to one pixel). Problems can also be 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   470
	encountered with bitmap fonts where the typeface exists but doesn't have 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   471
	a font small enough.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   472
662fa7de7023 201024_05
hgs
parents:
diff changeset
   473
	@param aFont On return, contains a pointer to the nearest font.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   474
	@param aFontSpec The specification of the font to be matched.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   475
	@param aMaxHeight The maximum height within which the font must fit.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   476
	@return KErrNone if successful; a system-wide error code otherwise.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   477
	@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
   478
	@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   479
	*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   480
	virtual TInt GetNearestFontToMaxHeightInTwips(CFont*& aFont, const TFontSpec& aFontSpec, TInt aMaxHeight) = 0;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   481
662fa7de7023 201024_05
hgs
parents:
diff changeset
   482
	/** Gets the number of typefaces supported by the typeface store.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   483
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   484
	@return The number of supported typefaces. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   485
	virtual TInt NumTypefaces() const=0;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   486
662fa7de7023 201024_05
hgs
parents:
diff changeset
   487
	/** Gets typeface information for a specified typeface index.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   488
 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   489
 	This information is returned in aTypefaceSupport, and
662fa7de7023 201024_05
hgs
parents:
diff changeset
   490
	includes the typeface name and typeface attributes, the number of font
662fa7de7023 201024_05
hgs
parents:
diff changeset
   491
 	heights, the maximum and minimum font heights, and whether it is a
662fa7de7023 201024_05
hgs
parents:
diff changeset
   492
	scaleable typeface.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   493
 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   494
 	@param aTypefaceSupport On return, if the function executed successfully, 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   495
 	this object contains the typeface information.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   496
  	@param aTypefaceIndex A typeface index number, in the range: zero to
662fa7de7023 201024_05
hgs
parents:
diff changeset
   497
             (NumTypefaces() - 1). */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   498
	virtual void TypefaceSupport(TTypefaceSupport& aTypefaceSupport,TInt aTypefaceIndex) const=0;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   499
662fa7de7023 201024_05
hgs
parents:
diff changeset
   500
	/** Gets the height of the font with specified height and typeface indices, 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   501
	in twips.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   502
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   503
	The value returned is rounded up or down to the nearest font height in twips.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   504
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   505
	@param aTypefaceIndex A typeface index number, in the range: 0 to 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   506
	(NumTypefaces() - 1). 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   507
	@param aHeightIndex A font height index number.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   508
	@return The height of the font, in twips. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   509
	virtual TInt FontHeightInTwips(TInt aTypefaceIndex,TInt aHeightIndex) const=0;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   510
	IMPORT_C void ReleaseFont(CFont* aFont);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   511
	IMPORT_C static TInt BaselineOffset(TInt aHeight,TFontPrintPosition aPos);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   512
	IMPORT_C static TInt SuperSubHeight(TInt aHeight,TFontPrintPosition aPos);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   513
protected:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   514
	IMPORT_C CTypefaceStore();
662fa7de7023 201024_05
hgs
parents:
diff changeset
   515
	IMPORT_C void ConstructL();
662fa7de7023 201024_05
hgs
parents:
diff changeset
   516
	IMPORT_C void AddFontL(CFont* aFont);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   517
	IMPORT_C TBool IncrementFontCount(const CFont* aFont);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   518
private:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   519
	TBool FindFont(const CFont* aFont, TInt& aIdx) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   520
	NONSHARABLE_CLASS(TFontAccess)
662fa7de7023 201024_05
hgs
parents:
diff changeset
   521
	/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   522
	Pairs a font with a count of how many clients of the typeface store 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   523
	are accessing that font. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   524
    */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   525
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   526
	public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   527
		/** A device specific font. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   528
		CFont* iFont;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   529
		/** The number of clients accessing the font. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   530
		TInt iAccessCount;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   531
		};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   532
protected:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   533
	/** A list of fonts accessed by clients of the typeface store, which pairs 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   534
	a font with a count of the number of clients accessing the font.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   535
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   536
	Implemented as an array of TFontAccess objects.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   537
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   538
	An object is added to this array for every font accessed. If the font is 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   539
	released by all clients, and the access count drops to zero, the font is 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   540
	removed from the list. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   541
	CArrayFixFlat<TFontAccess>* iFontAccess;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   542
	};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   543
662fa7de7023 201024_05
hgs
parents:
diff changeset
   544
/** The maximum number of entries in the font cache.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   545
662fa7de7023 201024_05
hgs
parents:
diff changeset
   546
@see CFontCache */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   547
const TInt KMaxFontCacheEntries=32;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   548
662fa7de7023 201024_05
hgs
parents:
diff changeset
   549
/** Font cache. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   550
662fa7de7023 201024_05
hgs
parents:
diff changeset
   551
When a CFont* needs to be found for a particular TFontSpec, the cache can 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   552
be searched to see if the TFontSpec is already in the cache. If the TFontSpec 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   553
is in the cache, its corresponding CFont* can be returned. Otherwise 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   554
GetNearestFontInTwips() must be used to search all of the available fonts for 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   555
the nearest CFont- a procedure which takes much longer than a simple cache
662fa7de7023 201024_05
hgs
parents:
diff changeset
   556
search.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   557
662fa7de7023 201024_05
hgs
parents:
diff changeset
   558
The current font cache should be destroyed and a new cache created whenever 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   559
the zoom factor or device map changes, as these changes break the relation 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   560
between CFont and TFontSpec. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   561
@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
   562
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   563
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   564
class CFontCache : public CBase
662fa7de7023 201024_05
hgs
parents:
diff changeset
   565
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   566
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   567
	IMPORT_C CFontCache();
662fa7de7023 201024_05
hgs
parents:
diff changeset
   568
	IMPORT_C CFontCache(TInt aMaxEntries);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   569
	IMPORT_C ~CFontCache();
662fa7de7023 201024_05
hgs
parents:
diff changeset
   570
	IMPORT_C CFont* Search(const TFontSpec& aFontSpec);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   571
	IMPORT_C CFont* AddEntryL(CFont* aFont,const TFontSpec& aFontSpec);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   572
	IMPORT_C CFont* RemoveFirstEntry();
662fa7de7023 201024_05
hgs
parents:
diff changeset
   573
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   574
	/** The number of cache hits since the font cache was created i.e. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   575
	successful results from CFontCache::Search(). */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   576
	TInt iNumHits;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   577
	/** The number of cache misses since the font cache was created i.e. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   578
	unsuccessful results from CFontCache::Search(). */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   579
	TInt iNumMisses;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   580
private:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   581
	class CFontCacheEntry : public CBase
662fa7de7023 201024_05
hgs
parents:
diff changeset
   582
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   583
	public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   584
		CFontCacheEntry(CFont* aFont,const TFontSpec& aFontSpec,CFontCacheEntry* aNext);
662fa7de7023 201024_05
hgs
parents:
diff changeset
   585
	public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   586
		CFont* iFont;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   587
		TFontSpec iSpec;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   588
		CFontCacheEntry* iNext;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   589
		};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   590
private:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   591
	TInt iNumEntries;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   592
	TInt iMaxEntries;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   593
	CFontCacheEntry* iFirst;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   594
	};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   595
662fa7de7023 201024_05
hgs
parents:
diff changeset
   596
/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   597
WARNING: this Class is for internal use ONLY.  Compatibility is not guaranteed in future releases.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   598
UIDs corresponding to the CFont API extension functions
662fa7de7023 201024_05
hgs
parents:
diff changeset
   599
@internalTechnology
662fa7de7023 201024_05
hgs
parents:
diff changeset
   600
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   601
const TUid KFontCapitalAscent	= {0x1020498E};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   602
const TUid KFontMaxAscent		= {0x10204B10};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   603
const TUid KFontStandardDescent	= {0x10204B11};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   604
const TUid KFontMaxDescent		= {0x10205AFC};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   605
const TUid KFontLineGap			= {0x10204B12};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   606
const TUid KFontGetFontTable    = {0x102872C1};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   607
const TUid KFontGetGlyphOutline = {0x102872C2};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   608
const TUid KFontReleaseGlyphOutline = {0x2002A1FD};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   609
const TUid KFontReleaseFontTable = {0x2002AC24};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   610
662fa7de7023 201024_05
hgs
parents:
diff changeset
   611
662fa7de7023 201024_05
hgs
parents:
diff changeset
   612
/** Abstract font interface.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   613
662fa7de7023 201024_05
hgs
parents:
diff changeset
   614
The CFont class provides a device-independent interface to a device-dependent 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   615
font usually obtained from a call to GetNearestFont...() on a graphics device. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   616
It is used as a handle in CGraphicsContext::UseFont() and to obtain 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   617
device-dependent information about the font - notably the pixel width of a text 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   618
string.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   619
662fa7de7023 201024_05
hgs
parents:
diff changeset
   620
@see CFbsFont
662fa7de7023 201024_05
hgs
parents:
diff changeset
   621
@see CGraphicsContext::UseFont() 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   622
@publishedAll 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   623
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   624
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   625
class CFont : public CBase
662fa7de7023 201024_05
hgs
parents:
diff changeset
   626
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   627
	friend class CTypefaceStore;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   628
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   629
662fa7de7023 201024_05
hgs
parents:
diff changeset
   630
	/** Text direction flags.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   631
662fa7de7023 201024_05
hgs
parents:
diff changeset
   632
	This enum is used in TMeasureTextInput and determines whether the text is 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   633
	drawn horizontally or vertically. Note: text is drawn vertically in some 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   634
	styles of Japanese, etc.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   635
662fa7de7023 201024_05
hgs
parents:
diff changeset
   636
	@see TMeasureTextInput */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   637
	enum TTextDirection
662fa7de7023 201024_05
hgs
parents:
diff changeset
   638
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   639
	/** Text is drawn horizontally. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   640
 		/** Text is drawn horizontally. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   641
   		EHorizontal,
662fa7de7023 201024_05
hgs
parents:
diff changeset
   642
 		/** Text is drawn vertically. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   643
		EVertical
662fa7de7023 201024_05
hgs
parents:
diff changeset
   644
		};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   645
662fa7de7023 201024_05
hgs
parents:
diff changeset
   646
	/** Complicated parameter block used for contextual glyph selection, 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   647
	ligature creation and diacritic placement when drawing text in complex 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   648
	scripts
662fa7de7023 201024_05
hgs
parents:
diff changeset
   649
662fa7de7023 201024_05
hgs
parents:
diff changeset
   650
	This class declares a constructor, another scoped class, and several other 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   651
	enums. However this class is unlikely to be useful to third party developers.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   652
662fa7de7023 201024_05
hgs
parents:
diff changeset
   653
	@see CFont::GetCharacterPosition()
662fa7de7023 201024_05
hgs
parents:
diff changeset
   654
	@see CFont::GetCharacterPosition2()
662fa7de7023 201024_05
hgs
parents:
diff changeset
   655
	@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
   656
	@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   657
	*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   658
	class TPositionParam
662fa7de7023 201024_05
hgs
parents:
diff changeset
   659
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   660
	public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   661
		/** Standard constructor. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   662
		TPositionParam():
662fa7de7023 201024_05
hgs
parents:
diff changeset
   663
			iDirection(EHorizontal),
662fa7de7023 201024_05
hgs
parents:
diff changeset
   664
			iFlags(0),
662fa7de7023 201024_05
hgs
parents:
diff changeset
   665
			iPosInText(0),
662fa7de7023 201024_05
hgs
parents:
diff changeset
   666
			iOutputGlyphs(0)
662fa7de7023 201024_05
hgs
parents:
diff changeset
   667
			{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   668
			}
662fa7de7023 201024_05
hgs
parents:
diff changeset
   669
662fa7de7023 201024_05
hgs
parents:
diff changeset
   670
		enum
662fa7de7023 201024_05
hgs
parents:
diff changeset
   671
			{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   672
			EMaxInputChars = 18,	// ligatures cannot be made from more than 18 components
662fa7de7023 201024_05
hgs
parents:
diff changeset
   673
			EMaxOutputGlyphs = 8	// output can consist of up to 8 characters (one base and 7 combining characters)
662fa7de7023 201024_05
hgs
parents:
diff changeset
   674
			};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   675
662fa7de7023 201024_05
hgs
parents:
diff changeset
   676
		/**Flags for TPositionParam::iFlags. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   677
		enum TFlags
662fa7de7023 201024_05
hgs
parents:
diff changeset
   678
			{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   679
			/** Input text is logically ordered not visually ordered. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   680
			EFLogicalOrder = 1
662fa7de7023 201024_05
hgs
parents:
diff changeset
   681
			};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   682
662fa7de7023 201024_05
hgs
parents:
diff changeset
   683
		/** Input: Orientation (EHorizontal or EVertical) in which to draw
662fa7de7023 201024_05
hgs
parents:
diff changeset
   684
		the text. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   685
		TInt16 iDirection;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   686
		/** Input: Flags from TFlags. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   687
		TUint16 iFlags;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   688
		/** Input: Text containing the characters to be positioned. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   689
		TPtrC iText;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   690
662fa7de7023 201024_05
hgs
parents:
diff changeset
   691
		/** Input and output: Position within iText to shape. On exit
662fa7de7023 201024_05
hgs
parents:
diff changeset
   692
		it will index the first character not positioned */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   693
		TInt iPosInText;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   694
		/** Input and output: Pen position. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   695
		TPoint iPen;			
662fa7de7023 201024_05
hgs
parents:
diff changeset
   696
662fa7de7023 201024_05
hgs
parents:
diff changeset
   697
		/** Output of GetCharacterPosition and GetCharacterPosition2.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   698
		@see CFont::GetCharacterPosition
662fa7de7023 201024_05
hgs
parents:
diff changeset
   699
		@see CFont::GetCharacterPosition2
662fa7de7023 201024_05
hgs
parents:
diff changeset
   700
		@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
   701
		@released */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   702
		class TOutput
662fa7de7023 201024_05
hgs
parents:
diff changeset
   703
			{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   704
		public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   705
			/** Standard constructor. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   706
			TOutput() : iBitmapSize(TSize::EUninitialized),
662fa7de7023 201024_05
hgs
parents:
diff changeset
   707
				iBounds(TRect::EUninitialized) {}
662fa7de7023 201024_05
hgs
parents:
diff changeset
   708
			/** Character or glyph code. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   709
			TUint iCode;			
662fa7de7023 201024_05
hgs
parents:
diff changeset
   710
			/** Bitmap data for the glyph, if available */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   711
			const TUint8* iBitmap;	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   712
			/** Size of the bitmap before algorithmic bolding, size 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   713
			multiplication, etc. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   714
			TSize iBitmapSize;		
662fa7de7023 201024_05
hgs
parents:
diff changeset
   715
			/** Bitmap bounds relative to the original pen position. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   716
			TRect iBounds;			
662fa7de7023 201024_05
hgs
parents:
diff changeset
   717
			};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   718
662fa7de7023 201024_05
hgs
parents:
diff changeset
   719
		/** Information about the glyphs that were output. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   720
		TOutput iOutput[EMaxOutputGlyphs];	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   721
		/** Number of glyphs actually output. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   722
		TInt iOutputGlyphs;					
662fa7de7023 201024_05
hgs
parents:
diff changeset
   723
		};	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   724
662fa7de7023 201024_05
hgs
parents:
diff changeset
   725
662fa7de7023 201024_05
hgs
parents:
diff changeset
   726
	/** Input parameter block.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   727
662fa7de7023 201024_05
hgs
parents:
diff changeset
   728
	This is optionally used by CFont::MeasureText(), which is the powerful text 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   729
	measurement function underlying all the other text measurement functions.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   730
662fa7de7023 201024_05
hgs
parents:
diff changeset
   731
	@see CFont::MeasureText() 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   732
	@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
   733
	@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   734
	*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   735
	class TMeasureTextInput
662fa7de7023 201024_05
hgs
parents:
diff changeset
   736
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   737
	public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   738
		TMeasureTextInput():
662fa7de7023 201024_05
hgs
parents:
diff changeset
   739
			iStartInputChar(0),
662fa7de7023 201024_05
hgs
parents:
diff changeset
   740
			iEndInputChar(KMaxTInt),
662fa7de7023 201024_05
hgs
parents:
diff changeset
   741
			iDirection(EHorizontal),
662fa7de7023 201024_05
hgs
parents:
diff changeset
   742
			iFlags(0),
662fa7de7023 201024_05
hgs
parents:
diff changeset
   743
			iMaxAdvance(KMaxTInt),
662fa7de7023 201024_05
hgs
parents:
diff changeset
   744
			iMaxBounds(KMaxTInt),
662fa7de7023 201024_05
hgs
parents:
diff changeset
   745
			iCharJustNum(0),
662fa7de7023 201024_05
hgs
parents:
diff changeset
   746
			iCharJustExcess(0),
662fa7de7023 201024_05
hgs
parents:
diff changeset
   747
			iWordJustNum(0),
662fa7de7023 201024_05
hgs
parents:
diff changeset
   748
			iWordJustExcess(0)
662fa7de7023 201024_05
hgs
parents:
diff changeset
   749
			{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   750
			}
662fa7de7023 201024_05
hgs
parents:
diff changeset
   751
662fa7de7023 201024_05
hgs
parents:
diff changeset
   752
		/**Flags for TMeasureTextInput::iFlags. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   753
		enum TFlags
662fa7de7023 201024_05
hgs
parents:
diff changeset
   754
			{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   755
 			/** Input text is visually ordered left-to-right. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   756
 			EFVisualOrder = 1,
662fa7de7023 201024_05
hgs
parents:
diff changeset
   757
 			/** Input text is visually ordered right-to-left.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   758
 			Overrides EFVisualOrder. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   759
 			EFVisualOrderRightToLeft = 2,
662fa7de7023 201024_05
hgs
parents:
diff changeset
   760
 			/** Flag to consider side bearings when checking bounds for line-break */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   761
 			EFIncludePenPositionInBoundsCheck = 4
662fa7de7023 201024_05
hgs
parents:
diff changeset
   762
			};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   763
662fa7de7023 201024_05
hgs
parents:
diff changeset
   764
		/** Starting index specifying first input character in iText.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   765
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   766
		Together with iEndInputChar, this allows some context before and 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   767
		after the measured text to be supplied so that shaping can work 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   768
		properly. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   769
		TInt iStartInputChar;	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   770
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   771
		/** Index specifying the final input character.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   772
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   773
		Together with iStartInputChar, this allows some context before and 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   774
		after the measured text to be supplied so that shaping can work 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   775
		properly. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   776
		TInt iEndInputChar;		
662fa7de7023 201024_05
hgs
parents:
diff changeset
   777
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   778
		/** The direction in which to draw the text. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   779
		TUint16 iDirection;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   780
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   781
		/** Flags from TFlags. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   782
		TUint16 iFlags;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   783
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   784
		/** The maximum advance. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   785
		TInt iMaxAdvance;		
662fa7de7023 201024_05
hgs
parents:
diff changeset
   786
		
662fa7de7023 201024_05
hgs
parents:
diff changeset
   787
		/** The maximum width (or height if drawing vertically) of bounds. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   788
		TInt iMaxBounds;		
662fa7de7023 201024_05
hgs
parents:
diff changeset
   789
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   790
		/** The number of glyph groups to be letter-spaced. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   791
		TInt iCharJustNum;		
662fa7de7023 201024_05
hgs
parents:
diff changeset
   792
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   793
		/** The amount of space to be used for letter spacing. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   794
		TInt iCharJustExcess;	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   795
		
662fa7de7023 201024_05
hgs
parents:
diff changeset
   796
		/** The number of spaces to be used for word spacing. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   797
		TInt iWordJustNum;		
662fa7de7023 201024_05
hgs
parents:
diff changeset
   798
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   799
		/** The amount of space to be used for word spacing. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   800
		TInt iWordJustExcess;	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   801
		};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   802
662fa7de7023 201024_05
hgs
parents:
diff changeset
   803
	/** Output parameter block.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   804
662fa7de7023 201024_05
hgs
parents:
diff changeset
   805
	This is optionally used by CFont::MeasureText(), which is the powerful text 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   806
	measurement function underlying all the other text measurement functions.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   807
662fa7de7023 201024_05
hgs
parents:
diff changeset
   808
	@see CFont::MeasureText() 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   809
	@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
   810
	@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   811
	*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   812
	class TMeasureTextOutput
662fa7de7023 201024_05
hgs
parents:
diff changeset
   813
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   814
		public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   815
		/** The number of input characters that would be drawn.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   816
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   817
		This may be less than the length of the text if a maximum advance or bounding 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   818
		box size is specified. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   819
		TInt iChars;			
662fa7de7023 201024_05
hgs
parents:
diff changeset
   820
		/** The number of glyphs that would be drawn. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   821
		TInt iGlyphs;			
662fa7de7023 201024_05
hgs
parents:
diff changeset
   822
		/** The number of groups that would be drawn.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   823
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   824
		A group is a base glyph plus one or more combining characters. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   825
		TInt iGroups;			
662fa7de7023 201024_05
hgs
parents:
diff changeset
   826
		/** The number of word spaces (U+0020) that would be drawn. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   827
		TInt iSpaces;			
662fa7de7023 201024_05
hgs
parents:
diff changeset
   828
		/** The bounding box of all the glyphs that would be drawn. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   829
		TRect iBounds;			
662fa7de7023 201024_05
hgs
parents:
diff changeset
   830
		/** The maximum width and height of any glyph. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   831
		TSize iMaxGlyphSize;	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   832
		};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   833
662fa7de7023 201024_05
hgs
parents:
diff changeset
   834
	/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   835
	Data availability flags.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   836
662fa7de7023 201024_05
hgs
parents:
diff changeset
   837
	Some fonts like printer fonts may only have width information and can return 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   838
	ECharacterWidthOnly to show this: the text drawing routines in CFont synthesize 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   839
	the rest of the data if necessary.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   840
662fa7de7023 201024_05
hgs
parents:
diff changeset
   841
	@see GetCharacterData() 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   842
	@publishedAll	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   843
	@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
   844
	*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   845
	enum TCharacterDataAvailability
662fa7de7023 201024_05
hgs
parents:
diff changeset
   846
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   847
		/** No font information available. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   848
		ENoCharacterData,
662fa7de7023 201024_05
hgs
parents:
diff changeset
   849
		/** Width information only is available. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   850
		ECharacterWidthOnly,
662fa7de7023 201024_05
hgs
parents:
diff changeset
   851
		/** All character data is available. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   852
		EAllCharacterData
662fa7de7023 201024_05
hgs
parents:
diff changeset
   853
		};
662fa7de7023 201024_05
hgs
parents:
diff changeset
   854
662fa7de7023 201024_05
hgs
parents:
diff changeset
   855
private:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   856
	// virtual functions have been made protected and public non-virtual ones
662fa7de7023 201024_05
hgs
parents:
diff changeset
   857
	// added to convert CFont to a handle-body pattern. SC is kept throught the
662fa7de7023 201024_05
hgs
parents:
diff changeset
   858
	// new functions and BC is kept by keeping the protected functions in the
662fa7de7023 201024_05
hgs
parents:
diff changeset
   859
	// same place in the class, and therefore in the same place in the vtable
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 TUid DoTypeUid() 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 DoHeightInPixels() const=0;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   870
	/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   871
	@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
   872
	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
   873
	*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   874
	virtual TInt DoAscentInPixels() const=0;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   875
	IMPORT_C virtual TInt DoDescentInPixels() const;
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 DoCharWidthInPixels(TChar aChar) 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 DoTextWidthInPixels(const TDesC& aText) 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 DoBaselineOffsetInPixels() 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) 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 DoTextCount(const TDesC& aText,TInt aWidthInPixels,TInt& aExcessWidthInPixels) 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 DoMaxCharWidthInPixels() 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 TInt DoMaxNormalCharWidthInPixels() const=0;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   911
	/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
   912
	@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
   913
	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
   914
	*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
   915
	virtual TFontSpec DoFontSpecInTwips() const=0;
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 TCharacterDataAvailability DoGetCharacterData(TUint aCode, TOpenFontCharMetrics& aMetrics,const TUint8*& aBitmap,TSize& aBitmapSize) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   919
	IMPORT_C virtual TBool DoGetCharacterPosition(TPositionParam& aParam) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   920
	IMPORT_C virtual TInt DoExtendedFunction(TUid aFunctionId, TAny* aParam = NULL) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   921
662fa7de7023 201024_05
hgs
parents:
diff changeset
   922
protected:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   923
	IMPORT_C virtual ~CFont();
662fa7de7023 201024_05
hgs
parents:
diff changeset
   924
662fa7de7023 201024_05
hgs
parents:
diff changeset
   925
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   926
	inline TInt FontCapitalAscent() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   927
	inline TInt FontMaxAscent() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   928
	inline TInt FontStandardDescent() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   929
	inline TInt FontMaxDescent() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   930
	inline TInt FontLineGap() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   931
	inline TInt FontMaxHeight() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   932
662fa7de7023 201024_05
hgs
parents:
diff changeset
   933
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
   934
	/** Gets run-time identity of the actual font type. This enables safe casting to 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   935
	a derived type.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   936
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   937
	For example, if the derived type is a CFbsFont, the return value is KCFbsFontUid. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   938
	You would need to cast to a CFbsFont to get a character bounding box. Similarly, 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   939
	a CBitmapFont returns KCBitmapFontUidVal.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   940
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   941
	@return The font-type identifier. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   942
	IMPORT_C TUid TypeUid() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   943
662fa7de7023 201024_05
hgs
parents:
diff changeset
   944
	/** Gets the font height in pixels.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   945
	Note that this deprecated function is replaced by the new @c FontMaxHeight().
662fa7de7023 201024_05
hgs
parents:
diff changeset
   946
662fa7de7023 201024_05
hgs
parents:
diff changeset
   947
	@return The font height in pixels.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   948
	@see FontMaxHeight()
662fa7de7023 201024_05
hgs
parents:
diff changeset
   949
	@deprecated */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   950
	IMPORT_C TInt HeightInPixels() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   951
662fa7de7023 201024_05
hgs
parents:
diff changeset
   952
	/** Gets the font ascent in pixels.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   953
	Note that this deprecated function is replaced by the new @c FontMaxAscent()
662fa7de7023 201024_05
hgs
parents:
diff changeset
   954
	or in some cases @c FontCapitalAscent().	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   955
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   956
	@return The font ascent in pixels.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   957
	@see FontCapitalAscent()
662fa7de7023 201024_05
hgs
parents:
diff changeset
   958
	@see FontMaxAscent()
662fa7de7023 201024_05
hgs
parents:
diff changeset
   959
	@deprecated */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   960
	IMPORT_C TInt AscentInPixels() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   961
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   962
	/** Gets the font descent in pixels.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   963
	Note that this deprecated function is replaced by the new @c FontMaxDescent()
662fa7de7023 201024_05
hgs
parents:
diff changeset
   964
	or in some cases @c FontStandardDescent().	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   965
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   966
	@return The font descent in pixels.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   967
	@see FontStandardDescent() 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   968
	@see FontMaxDescent()
662fa7de7023 201024_05
hgs
parents:
diff changeset
   969
	@deprecated */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   970
	IMPORT_C TInt DescentInPixels() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   971
662fa7de7023 201024_05
hgs
parents:
diff changeset
   972
	/** Gets the width in pixels in this font of the specified character.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   973
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   974
	Note: For OpenType fonts this function returns the horizontal advance of
662fa7de7023 201024_05
hgs
parents:
diff changeset
   975
	the character, which may be different from the actual width.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   976
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   977
	@param aChar The character whose width should be determined. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   978
	@return The width in pixels of the specified character in this font. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   979
	IMPORT_C TInt CharWidthInPixels(TChar aChar) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   980
662fa7de7023 201024_05
hgs
parents:
diff changeset
   981
	/** Gets the width in pixels of the specified descriptor when displayed in this 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   982
	font.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   983
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   984
	@param aText The descriptor whose width should be determined. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   985
	@return The width of the specified descriptor when displayed in this font, 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   986
	in pixels. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   987
	IMPORT_C TInt TextWidthInPixels(const TDesC& aText) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   988
662fa7de7023 201024_05
hgs
parents:
diff changeset
   989
	/** Gets the baseline offset in pixels. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   990
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   991
	The baseline offset is how far a font is raised or lowered from its normal 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   992
	baseline.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   993
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
   994
	@return Offset from normal baseline, in pixels. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
   995
	IMPORT_C TInt BaselineOffsetInPixels() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
   996
662fa7de7023 201024_05
hgs
parents:
diff changeset
   997
	/** Gets how much of the specified descriptor can be displayed in this font without 
662fa7de7023 201024_05
hgs
parents:
diff changeset
   998
	exceeding the specified width.
662fa7de7023 201024_05
hgs
parents:
diff changeset
   999
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1000
	Note:
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1001
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1002
	This function does not display any of the descriptor itself - it is used 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1003
	before display, to test whether the whole descriptor can be displayed.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1004
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1005
	@param aText The descriptor. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1006
	@param aWidthInPixels The available width for character display. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1007
	@return The number of characters which will be able to be displayed without 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1008
	exceeding the specified width. The count starts from the beginning of the 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1009
	descriptor. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1010
	IMPORT_C TInt TextCount(const TDesC& aText,TInt aWidthInPixels) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1011
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1012
	/** Gets how much of the specified descriptor can be displayed in this font without 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1013
	exceeding the specified width. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1014
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1015
	It also returns the excess width - defined as the specified available width 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1016
	minus the width of the portion of the descriptor which can be displayed without 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1017
	exceeding the available width.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1018
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1019
	@param aText The descriptor. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1020
	@param aWidthInPixels The available width for character display. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1021
	@param aExcessWidthInPixels The excess width after displaying the portion of 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1022
	the descriptor, in pixels. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1023
	@return The number of characters which will be able to be displayed without 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1024
	exceeding the specified width. The count starts from the beginning of the 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1025
	descriptor. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1026
	IMPORT_C TInt TextCount(const TDesC& aText,TInt aWidthInPixels,TInt& aExcessWidthInPixels) 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 character in this font.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1029
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1030
	@return The width of the maximum width character, in pixels. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1031
	IMPORT_C TInt MaxCharWidthInPixels() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1032
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1033
	/** Gets the width in pixels of the widest normal character in this font.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1034
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1035
	Normal characters include all character in a character set except non-alphabetic 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1036
	characters (e.g. the copyright symbol, or a block graphics symbol, for example).
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1037
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1038
	@return The width of the maximum width normal character, in pixels. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1039
	IMPORT_C TInt MaxNormalCharWidthInPixels() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1040
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1041
	/** Gets the font specification of this font in twips.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1042
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1043
	@return The font specification of this font (in twips). */
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1044
	IMPORT_C TFontSpec FontSpecInTwips() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1045
	IMPORT_C TCharacterDataAvailability GetCharacterData(TUint aCode, TOpenFontCharMetrics& aMetrics,const TUint8*& aBitmap,TSize& aBitmapSize) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1046
	IMPORT_C TBool GetCharacterPosition(TPositionParam& aParam) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1047
	IMPORT_C TInt WidthZeroInPixels() const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1048
	IMPORT_C TInt MeasureText(const TDesC& aText, const TMeasureTextInput* aInput = NULL, TMeasureTextOutput* aOutput = NULL) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1049
	IMPORT_C static TBool CharactersJoin(TInt aLeftCharacter, TInt aRightCharacter);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1050
	IMPORT_C TInt ExtendedFunction(TUid aFunctionId, TAny* aParam = NULL) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1051
	IMPORT_C TBool GetCharacterPosition2(TPositionParam& aParam, RShapeInfo& aShapeInfo) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1052
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1053
	/** Gets the width in pixels of the specified descriptor when displayed in this 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1054
	font.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1055
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1056
	@param aText The descriptor whose width should be determined.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1057
	@param aParam Parameter block that controls how much of aText is measured
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1058
	@return The width of the specified descriptor when displayed in this font, 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1059
	in pixels. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1060
	IMPORT_C TInt TextWidthInPixels(const TDesC& aText,const TMeasureTextInput* aParam) const;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1061
	};
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1062
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1063
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1064
// inline functions from original gdi.inl
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1065
/** Gets the ascent of an ANSI capital letter in the font whether or not
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1066
there are any ANSI capitals in the font.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1067
@return The positive distance from the font baseline to the top of a
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1068
standard ANSI capital letter
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1069
@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1070
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1071
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1072
inline TInt CFont::FontCapitalAscent() const
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1073
    {
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1074
    return ExtendedFunction(KFontCapitalAscent);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1075
    }
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1076
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1077
/** Gets the max ascent of any pre-composed glyph in the font. This will
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1078
include accents or diacritics that form part of pre-composed glyphs. It is
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1079
not guaranteed to cover the max ascent of composite glyphs that have to be
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1080
created by a layout engine. This is also the recommended distance between
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1081
the top of a text box and the baseline of the first line of text. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1082
@return The positive distance from the font baseline to the top of the
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1083
highest pre-composed glyph (including accents) above the baseline
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1084
@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1085
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1086
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1087
inline TInt CFont::FontMaxAscent() const
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1088
    {
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1089
    return ExtendedFunction(KFontMaxAscent);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1090
    }
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1091
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1092
/** Gets the descent of an ANSI descending character in the font.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1093
Whether or not there are any ANSI descenders in the font.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1094
@return The positive distance from the font baseline to the bottom of the
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1095
lowest ANSI descender
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1096
@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1097
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1098
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1099
inline TInt CFont::FontStandardDescent() const
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1100
    {
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1101
    return ExtendedFunction(KFontStandardDescent);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1102
    }
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1103
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1104
/** Gets the max descent of any pre-composed glyph in the font. This will
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1105
include accents or diacritics that form part of pre-composed glyphs. It is
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1106
not guaranteed to cover the max descent of composite glyphs that have to be
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1107
created by a layout engine.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1108
@return The positive distance from the font baseline to the bottom of the
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1109
lowest pre-composed glyph (including accents) below the baseline
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1110
@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1111
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1112
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1113
inline TInt CFont::FontMaxDescent() const
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1114
    {
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1115
    return ExtendedFunction(KFontMaxDescent);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1116
    }
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1117
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1118
/** Gets the suggested line gap for the font. This is the recommended
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1119
baseline to baseline distance between successive lines of text in the font.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1120
@return The positive recommended gap between successive lines
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1121
@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1122
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1123
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1124
inline TInt CFont::FontLineGap() const
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1125
    {
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1126
    return ExtendedFunction(KFontLineGap);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1127
    }
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1128
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1129
/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1130
Gets the (positive) maximum height in pixels of the font.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1131
This may differ from the design height.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1132
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1133
@return The maximum height of the font.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1134
@publishedAll
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1135
@released
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1136
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1137
inline TInt CFont::FontMaxHeight() const
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1138
    {
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1139
    return FontMaxAscent() + FontMaxDescent();
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1140
    }
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1141
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1142
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1143
// from original gdistruct.h
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1144
/*
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1145
Structure used to pass input/output parameters between RFontTable and CFbsFont.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1146
@internalTechnology
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1147
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1148
class TGetFontTableParam 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1149
    {
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1150
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1151
    TUint32 iTag;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1152
    TAny *iContent;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1153
    TInt iLength;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1154
    };
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1155
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1156
/*
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1157
Structure used to pass input/output parameters between RGlyphOutlineIterator and CFbsFont.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1158
Used when opening an outline iterator.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1159
@internalTechnology
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1160
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1161
class TGetGlyphOutlineParam 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1162
    {
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1163
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1164
    TInt iCount;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1165
    const TUint *iCodes; 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1166
    TBool iHinted;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1167
    TAny **iOutlines;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1168
    TInt *iLengths; 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1169
    };
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1170
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1171
/*
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1172
Structure used to pass input/output parameters between RGlyphOutlineIterator and CFbsFont.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1173
Used when closing an outline iterator.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1174
@internalTechnology
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1175
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1176
class TReleaseGlyphOutlineParam 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1177
    {
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1178
public:
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1179
    TInt iCount;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1180
    const TUint *iCodes;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1181
    TBool iHinted;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1182
    };
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1183
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1184
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1185
#endif // __TEXTBASE_H__