diff -r 2bd88482bfe5 -r 6a1564a2f3e6 graphicsdeviceinterface/gdi/inc/GDI.H --- a/graphicsdeviceinterface/gdi/inc/GDI.H Thu Sep 02 21:50:40 2010 +0300 +++ b/graphicsdeviceinterface/gdi/inc/GDI.H Fri Sep 17 08:36:49 2010 +0300 @@ -21,6 +21,8 @@ #include #include +#include + #ifndef SYMBIAN_ENABLE_SPLIT_HEADERS #include #include @@ -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 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* 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;