--- a/graphicsdeviceinterface/gdi/inc/GDI.H Wed Aug 25 08:17:25 2010 +0300
+++ b/graphicsdeviceinterface/gdi/inc/GDI.H Thu Sep 09 10:13:45 2010 +0300
@@ -21,6 +21,8 @@
#include <s32std.h>
#include <displaymode.h>
+#include <textbase.h>
+
#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
#include <graphics/gdi/glyphsample.h>
#include <graphics/gdi/gdiconsts.h>
@@ -442,49 +444,10 @@
TLineStatus iStatus;
};
-
-/**
-Font posture flags.
-Fonts can be either upright or italic.
-@publishedAll
-@released
-*/
-enum TFontPosture
- {
- /** Font posture is normal (upright). */
- EPostureUpright,
- /** Font posture is italic. */
- EPostureItalic
- };
-
-/**
-Font stroke weight flags.
-@publishedAll
-@released
-*/
-enum TFontStrokeWeight
- {
- /** Font stroke weight is normal. */
- EStrokeWeightNormal,
- /** Font stroke weight is bold. */
- EStrokeWeightBold
- };
-
-/**
-Font print position flags.
-Fonts can be normal, superscript or subscript.
-@publishedAll
-@released
-*/
-enum TFontPrintPosition
- {
- /** Font is normal. */
- EPrintPosNormal,
- /** Font is superscript. */
- EPrintPosSuperscript,
- /** Font is subscript. */
- EPrintPosSubscript
- };
+// These types are moved from Gdi.h to TextBase.h.
+// enum TFontPosture
+// enum TFontStrokeWeight
+// enum TFontPrintPosition
/**
Font underline flags.
@@ -512,464 +475,22 @@
EStrikethroughOn
};
-/**
-The maximum length of a typeface name (in characters).
-@publishedAll
-@released
-*/
-const TInt KMaxTypefaceNameLength=0x18;
-
-
-/** Typeface name and attributes.
-
-This class identifies a typeface by name, and contains the combination of
-attributes of the typeface. These attributes define whether it is a symbol
-typeface, whether the typeface is proportional, and whether it is serif or
-sans-serif.
-
-The combination of attributes for a typeface are stored in a bitmask, with
-the various bits indicating different attributes. The bitmask is calculated
-for any particular attribute combination by ORing the enumerated value for
-each individual attribute.
-@publishedAll
-@released
-*/
-class TTypeface
- {
-public:
- enum
- {
- /** Typeface is a proportional typeface (e.g. Swiss)
- */
- EProportional = 1,
- /** Typeface is a serif typeface (e.g. Times)
- */
- ESerif = 2,
- /** Typeface is a symbol typeface (e.g. Symbol)
- */
- ESymbol = 4,
- };
-public:
- IMPORT_C TTypeface();
- IMPORT_C TBool operator==(const TTypeface& aTypeface) const;
- IMPORT_C void InternalizeL(RReadStream& aStream);
- IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
- IMPORT_C void SetAttributes(TInt aAttributes);
- IMPORT_C void SetIsProportional(TBool aIsProportional);
- IMPORT_C void SetIsSerif(TBool aIsSerif);
- IMPORT_C void SetIsSymbol(TBool aIsSymbol);
- IMPORT_C TInt Attributes() const;
- IMPORT_C TBool IsProportional() const;
- IMPORT_C TBool IsSerif() const;
- IMPORT_C TBool IsSymbol() const;
- IMPORT_C void SetScriptTypeForMetrics(TLanguage aLanguage);
- IMPORT_C void SetScriptTypeForMetrics(TInt aScript);
- IMPORT_C TInt ScriptTypeForMetrics() const;
- IMPORT_C void SetName(const TDesC& aName);
- IMPORT_C const TDesC& Name() const;
-private:
- void ResetAttributes();
- void ResetScriptType();
-public:
- /** The typeface name. */
- TBufC<KMaxTypefaceNameLength> iName;
-private:
- TUint32 iFlags;
- };
-
-
-/**
-An enumerated type for the format of a glyph bitmap. This type is currently
-used to indicate whether glyph bitmaps for scalable fonts are drawn anti-aliased.
-Additional values may be defined in the future.
-
-@see TFontStyle::SetBitmapType()
-@see CFbsTypefaceStore::SetDefaultBitmapType()
-@publishedAll
-@released
-*/
-enum TGlyphBitmapType
- {
- /** The font store's default glyph bitmap format is used. */
- EDefaultGlyphBitmap = 0,
- /** The standard monochrome format: no anti-aliasing, 1 bit per pixel,
- run-length encoded. */
- EMonochromeGlyphBitmap,
- /** Standard 8-bits-per-pixel with anti-aliasing. */
- EAntiAliasedGlyphBitmap,
- /** The format used when sub-pixel font rendering is used. */
- ESubPixelGlyphBitmap,
- /** The format used when outline and shadow font rendering is used.
-
- If the raterizer supports the outline and shadow fonts, it will set the bitmaptype as
- EFourColourBlendGlyphBitmap but only when glyph bitmap type is set as EAntiAliasedGlyphBitmap and
- when any of the EDropShadow or EOutline effect is on. Only rasterizer providers can use this enum.
- */
- EFourColourBlendGlyphBitmap,
- /**
- This is used for glyphs, and not fonts, and is needed to inform the font drawing routines
- that the character should be drawn using the overall font setting.
- For Internal Use Only.
- */
- EGlyphBitmapTypeNotDefined,
- /**
- This is used to inform the rasterizer that the best match should be
- found for the bitmap type based upon its knowledge.
- For Internal Use Only.
- */
- EAntiAliasedOrMonochromeGlyphBitmap,
- };
-
-/**
-Defines a set of font effects flags.
-
-@publishedAll
-@released
-WARNING: This Class is for use by system/UI software ONLY.
-*/
-NONSHARABLE_CLASS(FontEffect)
- {
-public:
- enum TEffect
- {
- ENone = 0x0, // No effects.
- EAlgorithmicBold= 0x10, // Font is algorithmic bold (a.k.a pseudo bold.)
- EDropShadow = 0x20, // Font has a drop shadow.
- EOutline = 0x40, // Font is an outline font.
- EEmbossed = 0x80, // Font is embossed.
- EEngraved = 0x100, // Font is engraved.
- ESoftEdge = 0x200, // Font is soft edged.
- EReserved1 = 0x400, // Reserved for Symbian use.
- EReserved2 = 0x800, // Reserved for Symbian use.
- EReserved3 = 0x1000, // Reserved for Symbian use.
- EReserved4 = 0x2000, // Reserved for Symbian use.
- EReserved5 = 0x4000, // Reserved for Symbian use.
- EReserved6 = 0x8000, // Reserved for Symbian use.
- };
-public:
- IMPORT_C static TBool IsEffectOn(TEffect aEffect, TUint32 aFontEffect);
- IMPORT_C static void SetEffect(TEffect aEffect, TBool aOn, TUint32& aFontEffect);
- };
-
-/** Encapsulates a font style.
-
-The font style information is comprised of:
-
-the posture of the font upright or italic
-
-the stroke weight of the font normal or bold
-
-the print position of the font normal, subscript or superscript
-
-Note that the underline and strike-through attributes are not included in
-this class, but are set in the graphics context.
-
-@see CGraphicsContext::SetUnderlineStyle()
-@see CGraphicsContext::SetStrikethroughStyle()
-@publishedAll
-@released
-*/
-class TFontStyle
- {
-public:
- IMPORT_C TFontStyle();
- IMPORT_C TFontStyle(TFontPosture aPost,TFontStrokeWeight aStrWgt,TFontPrintPosition aPrintPos);
- IMPORT_C void InternalizeL(RReadStream& aStream);
- IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
- IMPORT_C TFontPosture Posture() const;
- IMPORT_C TFontStrokeWeight StrokeWeight() const;
- IMPORT_C TFontPrintPosition PrintPosition() const;
- IMPORT_C void SetPosture(TFontPosture aPosture);
- IMPORT_C void SetStrokeWeight(TFontStrokeWeight aStrokeWeight);
- IMPORT_C void SetPrintPosition(TFontPrintPosition aPrintPosition);
- inline TGlyphBitmapType BitmapType() const;
- inline void SetBitmapType(TGlyphBitmapType aBitmapType);
- IMPORT_C TBool operator==(const TFontStyle& aFontStyle) const;
- IMPORT_C TUint32 Effects() const;
- IMPORT_C TBool IsEffectOn(FontEffect::TEffect aEffect) const;
- IMPORT_C void SetEffects(TUint32 aEffects);
- IMPORT_C void SetEffects(FontEffect::TEffect aEffect, TBool aOn);
-private:
- enum
- {
- EItalic=0x1,
- EBold=0x2,
- ESuper=0x4,
- ESub=0x8
- };
-private:
- TUint32 iFlags; // bitmap type - 16 bits (high), font effects - 12 bits (middle), style - 4 bits (low)
- TAny* iReserved1;
- TAny* iReserved2;
- };
-
-
-
-/**
-Specifies the font specification in device independent terms.
-@publishedAll
-@released
-*/
-class TFontSpec
- {
-public:
- IMPORT_C TFontSpec();
- IMPORT_C TFontSpec(const TDesC& aTypefaceName,TInt aHeight);
- IMPORT_C TBool operator==(const TFontSpec& aFontSpec) const;
- IMPORT_C void InternalizeL(RReadStream& aStream);
- IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
- IMPORT_C void SetScriptTypeForMetrics(TLanguage aLanguage);
- IMPORT_C TInt ScriptTypeForMetrics() const;
-public:
- /** The typeface. */
- TTypeface iTypeface;
- /** The height of the typeface (in twips). */
- TInt iHeight;
- /** The font style of the typeface. */
- TFontStyle iFontStyle;
- };
-
-
-
-/** Typeface family support information.
-This data-only class includes the name and attributes of a typeface, how many
-font heights are available, its minimum and maximum heights, and whether or
-not it is scaleable a typeface is scaleable if it supports heights at
-fixed intervals between the minimum and maximum heights.
-@publishedAll
-@released
-*/
-class TTypefaceSupport
- {
-public:
- /** The name and attributes of the typeface. */
- TTypeface iTypeface;
- /** The number of distinct font heights available in the typeface. */
- TInt iNumHeights;
- /** The typeface's minimum font height, in twips. */
- TInt iMinHeightInTwips;
- /** The typeface's maximum font height, in twips. */
- TInt iMaxHeightInTwips;
- /** Whether the typeface is scaleable. ETrue if it is scaleable, otherwise
- EFalse. */
- TBool iIsScalable; // supports heights from min to max at fixed interval
- };
-
-/**
-The percentage used to multiply a normal font height when calculating its
-superscript or subscript height.
-@publishedAll
-@released
-*/
-const TInt KSuperSubScalingPercentage=67;
-
-/**
-The percentage of a font height used to calculate its baseline offset for a
-superscript print position.
-@publishedAll
-@released
-*/
-const TInt KSuperscriptOffsetPercentage=-28;
-
-/**
-The percentage of a font height used to calculate its baseline offset for a
-subscript print position.
-@publishedAll
-@released
-*/
-const TInt KSubscriptOffsetPercentage=14;
-
-class CFont;
-
-/** Typeface store abstract base interface.
-
-This class provides the interface to a store for typefaces.
-
-See also CFontStore.
-@publishedAll
-@released
-*/
-class CTypefaceStore : public CBase
- {
-public:
- IMPORT_C ~CTypefaceStore();
-
- /**
- Gets the font which is the nearest to the given font specification.
-
- When the font is no longer needed, call @c ReleaseFont().
-
- Note that this deprecated function is replaced by the new @c GetNearestFontToDesignHeightInTwips()
- yielding (virtually) the same result. However clients are strongly encouraged to use the new
- @c GetNearestFontToMaxHeightInTwips() function instead. This will guarantee that every
- character within any given text string will fit within the given amount of twips, whereas the design
- height is an aesthetic unit decided by the font designer without strict physical meaning, which
- may result in cropped characters.
-
- @param aFont On return, contains a pointer to the nearest font.
- @param aFontSpec The specification of the font to be matched.
- @return KErrNone if successful; a system-wide error code otherwise.
- @publishedAll
- @deprecated Use GetNearestFontToDesignHeightInTwips
- */
- virtual TInt GetNearestFontInTwips(CFont*& aFont, const TFontSpec& aFontSpec) = 0;
-
- /**
- Gets the font which is the nearest to the given font specification.
-
- When the font is no longer needed, call @c ReleaseFont().
-
- This new function replaces the deprecated @c GetNearestFontInTwips() yielding (virtually) the
- same result. However clients are strongly encouraged to use the new
- @c GetNearestFontToMaxHeightInTwips() function instead. This will guarantee that every
- character within any given text string will fit within the given amount of twips, whereas the design
- height is an aesthetic unit decided by the font designer without strict physical meaning, which
- may result in cropped characters.
-
- @param aFont On return, contains a pointer to the nearest font.
- @param aFontSpec The specification of the font to be matched.
- @return KErrNone if successful; a system-wide error code otherwise.
- @publishedAll
- @released
- */
- virtual TInt GetNearestFontToDesignHeightInTwips(CFont*& aFont, const TFontSpec& aFontSpec) = 0;
-
- /**
- Gets the font which is the nearest to the given font specification.
-
- When the font is no longer needed, call @c ReleaseFont().
-
- The font and bitmap server returns a pointer to the nearest matching font
- from those available. Matches to max height of font - this does its best
- to return a font that will fit within the maximum height specified (but
- note that variations due to hinting algorithms may rarely result in this
- height being exceeded by up to one pixel). Problems can also be
- encountered with bitmap fonts where the typeface exists but doesn't have
- a font small enough.
+// These types are moved from Gdi.h to TextBase.h.
+// const KMaxTypefaceNameLength
+// class TTypeface
+// enum TGlyphBitmapType
+// class FontEffect
+// class TFontStyle
+// class TFontSpec
+// class TTypefaceSupport
+// const KSuperSubScalingPercentage
+// const KSuperscriptOffsetPercentage
+// const KSubscriptOffsetPercentage
+// class CTypefaceStore
+// const KMaxFontCacheEntries
+// class CFontCache
- @param aFont On return, contains a pointer to the nearest font.
- @param aFontSpec The specification of the font to be matched.
- @param aMaxHeight The maximum height within which the font must fit.
- @return KErrNone if successful; a system-wide error code otherwise.
- @publishedAll
- @released
- */
- virtual TInt GetNearestFontToMaxHeightInTwips(CFont*& aFont, const TFontSpec& aFontSpec, TInt aMaxHeight) = 0;
-
- /** Gets the number of typefaces supported by the typeface store.
-
- @return The number of supported typefaces. */
- virtual TInt NumTypefaces() const=0;
-
- /** Gets typeface information for a specified typeface index.
-
- This information is returned in aTypefaceSupport, and
- includes the typeface name and typeface attributes, the number of font
- heights, the maximum and minimum font heights, and whether it is a
- scaleable typeface.
-
- @param aTypefaceSupport On return, if the function executed successfully,
- this object contains the typeface information.
- @param aTypefaceIndex A typeface index number, in the range: zero to
- (NumTypefaces() - 1). */
- virtual void TypefaceSupport(TTypefaceSupport& aTypefaceSupport,TInt aTypefaceIndex) const=0;
-
- /** Gets the height of the font with specified height and typeface indices,
- in twips.
-
- The value returned is rounded up or down to the nearest font height in twips.
-
- @param aTypefaceIndex A typeface index number, in the range: 0 to
- (NumTypefaces() - 1).
- @param aHeightIndex A font height index number.
- @return The height of the font, in twips. */
- virtual TInt FontHeightInTwips(TInt aTypefaceIndex,TInt aHeightIndex) const=0;
- IMPORT_C void ReleaseFont(CFont* aFont);
- IMPORT_C static TInt BaselineOffset(TInt aHeight,TFontPrintPosition aPos);
- IMPORT_C static TInt SuperSubHeight(TInt aHeight,TFontPrintPosition aPos);
-protected:
- IMPORT_C CTypefaceStore();
- IMPORT_C void ConstructL();
- IMPORT_C void AddFontL(CFont* aFont);
- IMPORT_C TBool IncrementFontCount(const CFont* aFont);
-private:
- TBool FindFont(const CFont* aFont, TInt& aIdx) const;
- NONSHARABLE_CLASS(TFontAccess)
- /**
- Pairs a font with a count of how many clients of the typeface store
- are accessing that font.
- */
- {
- public:
- /** A device specific font. */
- CFont* iFont;
- /** The number of clients accessing the font. */
- TInt iAccessCount;
- };
-protected:
- /** A list of fonts accessed by clients of the typeface store, which pairs
- a font with a count of the number of clients accessing the font.
-
- Implemented as an array of TFontAccess objects.
-
- An object is added to this array for every font accessed. If the font is
- released by all clients, and the access count drops to zero, the font is
- removed from the list. */
- CArrayFixFlat<TFontAccess>* iFontAccess;
- };
-
-/** The maximum number of entries in the font cache.
-
-@see CFontCache */
-const TInt KMaxFontCacheEntries=32;
-
-/** Font cache.
-
-When a CFont* needs to be found for a particular TFontSpec, the cache can
-be searched to see if the TFontSpec is already in the cache. If the TFontSpec
-is in the cache, its corresponding CFont* can be returned. Otherwise
-GetNearestFontInTwips() must be used to search all of the available fonts for
-the nearest CFont- a procedure which takes much longer than a simple cache
-search.
-
-The current font cache should be destroyed and a new cache created whenever
-the zoom factor or device map changes, as these changes break the relation
-between CFont and TFontSpec.
-@publishedAll
-@released
-*/
-class CFontCache : public CBase
- {
-public:
- IMPORT_C CFontCache();
- IMPORT_C CFontCache(TInt aMaxEntries);
- IMPORT_C ~CFontCache();
- IMPORT_C CFont* Search(const TFontSpec& aFontSpec);
- IMPORT_C CFont* AddEntryL(CFont* aFont,const TFontSpec& aFontSpec);
- IMPORT_C CFont* RemoveFirstEntry();
-public:
- /** The number of cache hits since the font cache was created i.e.
- successful results from CFontCache::Search(). */
- TInt iNumHits;
- /** The number of cache misses since the font cache was created i.e.
- unsuccessful results from CFontCache::Search(). */
- TInt iNumMisses;
-private:
- class CFontCacheEntry : public CBase
- {
- public:
- CFontCacheEntry(CFont* aFont,const TFontSpec& aFontSpec,CFontCacheEntry* aNext);
- public:
- CFont* iFont;
- TFontSpec iSpec;
- CFontCacheEntry* iNext;
- };
-private:
- TInt iNumEntries;
- TInt iMaxEntries;
- CFontCacheEntry* iFirst;
- };
/** Interface class for mapping between twips and device-specific units (pixels).
@@ -1219,472 +740,17 @@
TInt iEnd;
};
-/**
-WARNING: this Class is for internal use ONLY. Compatibility is not guaranteed in future releases.
-UIDs corresponding to the CFont API extension functions
-@internalTechnology
-*/
-const TUid KFontCapitalAscent = {0x1020498E};
-const TUid KFontMaxAscent = {0x10204B10};
-const TUid KFontStandardDescent = {0x10204B11};
-const TUid KFontMaxDescent = {0x10205AFC};
-const TUid KFontLineGap = {0x10204B12};
-const TUid KFontGetFontTable = {0x102872C1};
-const TUid KFontGetGlyphOutline = {0x102872C2};
-const TUid KFontReleaseGlyphOutline = {0x2002A1FD};
-const TUid KFontReleaseFontTable = {0x2002AC24};
-
-
-/** Abstract font interface.
-
-The CFont class provides a device-independent interface to a device-dependent
-font usually obtained from a call to GetNearestFont...() on a graphics device.
-It is used as a handle in CGraphicsContext::UseFont() and to obtain
-device-dependent information about the font - notably the pixel width of a text
-string.
-
-@see CFbsFont
-@see CGraphicsContext::UseFont()
-@publishedAll
-@released
-*/
-class CFont : public CBase
- {
- friend class CTypefaceStore;
-public:
-
- /** Text direction flags.
-
- This enum is used in TMeasureTextInput and determines whether the text is
- drawn horizontally or vertically. Note: text is drawn vertically in some
- styles of Japanese, etc.
-
- @see TMeasureTextInput */
- enum TTextDirection
- {
- /** Text is drawn horizontally. */
- /** Text is drawn horizontally. */
- EHorizontal,
- /** Text is drawn vertically. */
- EVertical
- };
-
- /** Complicated parameter block used for contextual glyph selection,
- ligature creation and diacritic placement when drawing text in complex
- scripts
-
- This class declares a constructor, another scoped class, and several other
- enums. However this class is unlikely to be useful to third party developers.
-
- @see CFont::GetCharacterPosition()
- @see CFont::GetCharacterPosition2()
- @publishedAll
- @released
- */
- class TPositionParam
- {
- public:
- /** Standard constructor. */
- TPositionParam():
- iDirection(EHorizontal),
- iFlags(0),
- iPosInText(0),
- iOutputGlyphs(0)
- {
- }
-
- enum
- {
- EMaxInputChars = 18, // ligatures cannot be made from more than 18 components
- EMaxOutputGlyphs = 8 // output can consist of up to 8 characters (one base and 7 combining characters)
- };
-
- /**Flags for TPositionParam::iFlags. */
- enum TFlags
- {
- /** Input text is logically ordered not visually ordered. */
- EFLogicalOrder = 1
- };
-
- /** Input: Orientation (EHorizontal or EVertical) in which to draw
- the text. */
- TInt16 iDirection;
- /** Input: Flags from TFlags. */
- TUint16 iFlags;
- /** Input: Text containing the characters to be positioned. */
- TPtrC iText;
-
- /** Input and output: Position within iText to shape. On exit
- it will index the first character not positioned */
- TInt iPosInText;
- /** Input and output: Pen position. */
- TPoint iPen;
-
- /** Output of GetCharacterPosition and GetCharacterPosition2.
- @see CFont::GetCharacterPosition
- @see CFont::GetCharacterPosition2
- @publishedAll
- @released */
- class TOutput
- {
- public:
- /** Standard constructor. */
- TOutput() : iBitmapSize(TSize::EUninitialized),
- iBounds(TRect::EUninitialized) {}
- /** Character or glyph code. */
- TUint iCode;
- /** Bitmap data for the glyph, if available */
- const TUint8* iBitmap;
- /** Size of the bitmap before algorithmic bolding, size
- multiplication, etc. */
- TSize iBitmapSize;
- /** Bitmap bounds relative to the original pen position. */
- TRect iBounds;
- };
-
- /** Information about the glyphs that were output. */
- TOutput iOutput[EMaxOutputGlyphs];
- /** Number of glyphs actually output. */
- TInt iOutputGlyphs;
- };
-
-
- /** Input parameter block.
-
- This is optionally used by CFont::MeasureText(), which is the powerful text
- measurement function underlying all the other text measurement functions.
-
- @see CFont::MeasureText()
- @publishedAll
- @released
- */
- class TMeasureTextInput
- {
- public:
- TMeasureTextInput():
- iStartInputChar(0),
- iEndInputChar(KMaxTInt),
- iDirection(EHorizontal),
- iFlags(0),
- iMaxAdvance(KMaxTInt),
- iMaxBounds(KMaxTInt),
- iCharJustNum(0),
- iCharJustExcess(0),
- iWordJustNum(0),
- iWordJustExcess(0)
- {
- }
-
- /**Flags for TMeasureTextInput::iFlags. */
- enum TFlags
- {
- /** Input text is visually ordered left-to-right. */
- EFVisualOrder = 1,
- /** Input text is visually ordered right-to-left.
- Overrides EFVisualOrder. */
- EFVisualOrderRightToLeft = 2,
- /** Flag to consider side bearings when checking bounds for line-break */
- EFIncludePenPositionInBoundsCheck = 4
- };
-
- /** Starting index specifying first input character in iText.
-
- Together with iEndInputChar, this allows some context before and
- after the measured text to be supplied so that shaping can work
- properly. */
- TInt iStartInputChar;
-
- /** Index specifying the final input character.
-
- Together with iStartInputChar, this allows some context before and
- after the measured text to be supplied so that shaping can work
- properly. */
- TInt iEndInputChar;
-
- /** The direction in which to draw the text. */
- TUint16 iDirection;
-
- /** Flags from TFlags. */
- TUint16 iFlags;
-
- /** The maximum advance. */
- TInt iMaxAdvance;
-
- /** The maximum width (or height if drawing vertically) of bounds. */
- TInt iMaxBounds;
-
- /** The number of glyph groups to be letter-spaced. */
- TInt iCharJustNum;
-
- /** The amount of space to be used for letter spacing. */
- TInt iCharJustExcess;
-
- /** The number of spaces to be used for word spacing. */
- TInt iWordJustNum;
-
- /** The amount of space to be used for word spacing. */
- TInt iWordJustExcess;
- };
-
- /** Output parameter block.
-
- This is optionally used by CFont::MeasureText(), which is the powerful text
- measurement function underlying all the other text measurement functions.
-
- @see CFont::MeasureText()
- @publishedAll
- @released
- */
- class TMeasureTextOutput
- {
- public:
- /** The number of input characters that would be drawn.
-
- This may be less than the length of the text if a maximum advance or bounding
- box size is specified. */
- TInt iChars;
- /** The number of glyphs that would be drawn. */
- TInt iGlyphs;
- /** The number of groups that would be drawn.
-
- A group is a base glyph plus one or more combining characters. */
- TInt iGroups;
- /** The number of word spaces (U+0020) that would be drawn. */
- TInt iSpaces;
- /** The bounding box of all the glyphs that would be drawn. */
- TRect iBounds;
- /** The maximum width and height of any glyph. */
- TSize iMaxGlyphSize;
- };
-
- /**
- Data availability flags.
-
- Some fonts like printer fonts may only have width information and can return
- ECharacterWidthOnly to show this: the text drawing routines in CFont synthesize
- the rest of the data if necessary.
-
- @see GetCharacterData()
- @publishedAll
- @released
- */
- enum TCharacterDataAvailability
- {
- /** No font information available. */
- ENoCharacterData,
- /** Width information only is available. */
- ECharacterWidthOnly,
- /** All character data is available. */
- EAllCharacterData
- };
-
-private:
- // virtual functions have been made protected and public non-virtual ones
- // added to convert CFont to a handle-body pattern. SC is kept throught the
- // new functions and BC is kept by keeping the protected functions in the
- // same place in the class, and therefore in the same place in the vtable
- /**
- @publishedAll
- WARNING: Function for internal use ONLY. Compatibility is not guaranteed in future releases. Please see derived class for implementation.
- */
- virtual TUid DoTypeUid() const=0;
- /**
- @publishedAll
- WARNING: Function for internal use ONLY. Compatibility is not guaranteed in future releases. Please see derived class for implementation.
- */
- virtual TInt DoHeightInPixels() const=0;
- /**
- @publishedAll
- WARNING: Function for internal use ONLY. Compatibility is not guaranteed in future releases. Please see derived class for implementation.
- */
- virtual TInt DoAscentInPixels() const=0;
- IMPORT_C virtual TInt DoDescentInPixels() const;
- /**
- @publishedAll
- WARNING: Function for internal use ONLY. Compatibility is not guaranteed in future releases. Please see derived class for implementation.
- */
- virtual TInt DoCharWidthInPixels(TChar aChar) const=0;
- /**
- @publishedAll
- WARNING: Function for internal use ONLY. Compatibility is not guaranteed in future releases. Please see derived class for implementation.
- */
- virtual TInt DoTextWidthInPixels(const TDesC& aText) const=0;
- /**
- @publishedAll
- WARNING: Function for internal use ONLY. Compatibility is not guaranteed in future releases. Please see derived class for implementation.
- */
- virtual TInt DoBaselineOffsetInPixels() const=0;
- /**
- @publishedAll
- WARNING: Function for internal use ONLY. Compatibility is not guaranteed in future releases. Please see derived class for implementation.
- */
- virtual TInt DoTextCount(const TDesC& aText,TInt aWidthInPixels) const=0;
- /**
- @publishedAll
- WARNING: Function for internal use ONLY. Compatibility is not guaranteed in future releases. Please see derived class for implementation.
- */
- virtual TInt DoTextCount(const TDesC& aText,TInt aWidthInPixels,TInt& aExcessWidthInPixels) const=0;
- /**
- @publishedAll
- WARNING: Function for internal use ONLY. Compatibility is not guaranteed in future releases. Please see derived class for implementation.
- */
- virtual TInt DoMaxCharWidthInPixels() const=0;
- /**
- @publishedAll
- WARNING: Function for internal use ONLY. Compatibility is not guaranteed in future releases. Please see derived class for implementation.
- */
- virtual TInt DoMaxNormalCharWidthInPixels() const=0;
- /**
- @publishedAll
- WARNING: Function for internal use ONLY. Compatibility is not guaranteed in future releases. Please see derived class for implementation.
- */
- virtual TFontSpec DoFontSpecInTwips() const=0;
-
-protected:
- IMPORT_C virtual TCharacterDataAvailability DoGetCharacterData(TUint aCode, TOpenFontCharMetrics& aMetrics,const TUint8*& aBitmap,TSize& aBitmapSize) const;
- IMPORT_C virtual TBool DoGetCharacterPosition(TPositionParam& aParam) const;
- IMPORT_C virtual TInt DoExtendedFunction(TUid aFunctionId, TAny* aParam = NULL) const;
-
-protected:
- IMPORT_C virtual ~CFont();
-
-public:
- inline TInt FontCapitalAscent() const;
- inline TInt FontMaxAscent() const;
- inline TInt FontStandardDescent() const;
- inline TInt FontMaxDescent() const;
- inline TInt FontLineGap() const;
- inline TInt FontMaxHeight() const;
-
-public:
- /** Gets run-time identity of the actual font type. This enables safe casting to
- a derived type.
-
- For example, if the derived type is a CFbsFont, the return value is KCFbsFontUid.
- You would need to cast to a CFbsFont to get a character bounding box. Similarly,
- a CBitmapFont returns KCBitmapFontUidVal.
-
- @return The font-type identifier. */
- IMPORT_C TUid TypeUid() const;
-
- /** Gets the font height in pixels.
- Note that this deprecated function is replaced by the new @c FontMaxHeight().
-
- @return The font height in pixels.
- @see FontMaxHeight()
- @deprecated */
- IMPORT_C TInt HeightInPixels() const;
-
- /** Gets the font ascent in pixels.
- Note that this deprecated function is replaced by the new @c FontMaxAscent()
- or in some cases @c FontCapitalAscent().
-
- @return The font ascent in pixels.
- @see FontCapitalAscent()
- @see FontMaxAscent()
- @deprecated */
- IMPORT_C TInt AscentInPixels() const;
-
- /** Gets the font descent in pixels.
- Note that this deprecated function is replaced by the new @c FontMaxDescent()
- or in some cases @c FontStandardDescent().
-
- @return The font descent in pixels.
- @see FontStandardDescent()
- @see FontMaxDescent()
- @deprecated */
- IMPORT_C TInt DescentInPixels() const;
-
- /** Gets the width in pixels in this font of the specified character.
-
- Note: For OpenType fonts this function returns the horizontal advance of
- the character, which may be different from the actual width.
-
- @param aChar The character whose width should be determined.
- @return The width in pixels of the specified character in this font. */
- IMPORT_C TInt CharWidthInPixels(TChar aChar) const;
-
- /** Gets the width in pixels of the specified descriptor when displayed in this
- font.
-
- @param aText The descriptor whose width should be determined.
- @return The width of the specified descriptor when displayed in this font,
- in pixels. */
- IMPORT_C TInt TextWidthInPixels(const TDesC& aText) const;
-
- /** Gets the baseline offset in pixels.
-
- The baseline offset is how far a font is raised or lowered from its normal
- baseline.
-
- @return Offset from normal baseline, in pixels. */
- IMPORT_C TInt BaselineOffsetInPixels() const;
-
- /** Gets how much of the specified descriptor can be displayed in this font without
- exceeding the specified width.
-
- Note:
-
- This function does not display any of the descriptor itself - it is used
- before display, to test whether the whole descriptor can be displayed.
-
- @param aText The descriptor.
- @param aWidthInPixels The available width for character display.
- @return The number of characters which will be able to be displayed without
- exceeding the specified width. The count starts from the beginning of the
- descriptor. */
- IMPORT_C TInt TextCount(const TDesC& aText,TInt aWidthInPixels) const;
-
- /** Gets how much of the specified descriptor can be displayed in this font without
- exceeding the specified width.
-
- It also returns the excess width - defined as the specified available width
- minus the width of the portion of the descriptor which can be displayed without
- exceeding the available width.
-
- @param aText The descriptor.
- @param aWidthInPixels The available width for character display.
- @param aExcessWidthInPixels The excess width after displaying the portion of
- the descriptor, in pixels.
- @return The number of characters which will be able to be displayed without
- exceeding the specified width. The count starts from the beginning of the
- descriptor. */
- IMPORT_C TInt TextCount(const TDesC& aText,TInt aWidthInPixels,TInt& aExcessWidthInPixels) const;
-
- /** Gets the width in pixels of the widest character in this font.
-
- @return The width of the maximum width character, in pixels. */
- IMPORT_C TInt MaxCharWidthInPixels() const;
-
- /** Gets the width in pixels of the widest normal character in this font.
-
- Normal characters include all character in a character set except non-alphabetic
- characters (e.g. the copyright symbol, or a block graphics symbol, for example).
-
- @return The width of the maximum width normal character, in pixels. */
- IMPORT_C TInt MaxNormalCharWidthInPixels() const;
-
- /** Gets the font specification of this font in twips.
-
- @return The font specification of this font (in twips). */
- IMPORT_C TFontSpec FontSpecInTwips() const;
- IMPORT_C TCharacterDataAvailability GetCharacterData(TUint aCode, TOpenFontCharMetrics& aMetrics,const TUint8*& aBitmap,TSize& aBitmapSize) const;
- IMPORT_C TBool GetCharacterPosition(TPositionParam& aParam) const;
- IMPORT_C TInt WidthZeroInPixels() const;
- IMPORT_C TInt MeasureText(const TDesC& aText, const TMeasureTextInput* aInput = NULL, TMeasureTextOutput* aOutput = NULL) const;
- IMPORT_C static TBool CharactersJoin(TInt aLeftCharacter, TInt aRightCharacter);
- IMPORT_C TInt ExtendedFunction(TUid aFunctionId, TAny* aParam = NULL) const;
- IMPORT_C TBool GetCharacterPosition2(TPositionParam& aParam, RShapeInfo& aShapeInfo) const;
-
- /** Gets the width in pixels of the specified descriptor when displayed in this
- font.
-
- @param aText The descriptor whose width should be determined.
- @param aParam Parameter block that controls how much of aText is measured
- @return The width of the specified descriptor when displayed in this font,
- in pixels. */
- IMPORT_C TInt TextWidthInPixels(const TDesC& aText,const TMeasureTextInput* aParam) const;
- };
+// These types/consts are moved from Gdi.h to TextBase.h.
+// const TUid KFontCapitalAscent
+// const TUid KFontMaxAscent
+// const TUid KFontStandardDescent
+// const TUid KFontMaxDescent
+// const TUid KFontLineGap
+// const TUid KFontGetFontTable
+// const TUid KFontGetGlyphOutline
+// const TUid KFontReleaseGlyphOutline
+// const TUid KFontReleaseFontTable
+// class CFont
class CFbsBitmap;
class CWsBitmap;