ICU 56.1: LEFontInstance.h Source File

ICU 56.1 56.1

- Main Page
- Related Pages
- Modules
- Namespaces
- Data Structures
- Files

- File List
- Globals

LEFontInstance.h
Go to the documentation of this file.
1
2 /*
3 *
4 * (C) Copyright IBM Corp. 1998-2015 - All Rights Reserved
5 *
6 */
7
8 #ifndef __LEFONTINSTANCE_H
9 #define __LEFONTINSTANCE_H
10
11 #include "LETypes.h"
17 U_NAMESPACE_BEGIN
18
28 class LECharMapper /* not : public UObject because this is an interface/mixin class */
29 {
30 public:
35 virtual ~LECharMapper();
36
46 virtual LEUnicode32 mapChar(LEUnicode32 ch) const = 0;
47 };
48
55 class LEGlyphStorage;
56
81 class U_LAYOUT_API LEFontInstance : public UObject
82 {
83 public:
84
91 virtual ~LEFontInstance();
92
144 virtual const LEFontInstance *getSubFont(const LEUnicode chars[], le_int32 *offset, le_int32 limit, le_int32 script, LEErrorCode &success) const;
145
146 //
147 // Font file access
148 //
149
165 virtual const void* getFontTable(LETag tableTag, size_t &length) const = 0;
166
183 virtual le_bool canDisplay(LEUnicode32 ch) const;
184
193 virtual le_int32 getUnitsPerEM() const = 0;
194
218 virtual void mapCharsToGlyphs(const LEUnicode chars[], le_int32 offset, le_int32 count, le_bool reverse, const LECharMapper *mapper, le_bool filterZeroWidth, LEGlyphStorage &glyphStorage) const;
219
235 virtual LEGlyphID mapCharToGlyph(LEUnicode32 ch, const LECharMapper *mapper, le_bool filterZeroWidth) const;
236
251 virtual LEGlyphID mapCharToGlyph(LEUnicode32 ch, const LECharMapper *mapper) const;
252
265 virtual LEGlyphID mapCharToGlyph(LEUnicode32 ch) const = 0;
266
267 //
268 // Metrics
269 //
270
279 virtual void getGlyphAdvance(LEGlyphID glyph, LEPoint &advance) const = 0;
280
293 virtual le_bool getGlyphPoint(LEGlyphID glyph, le_int32 pointNumber, LEPoint &point) const = 0;
294
303 virtual float getXPixelsPerEm() const = 0;
304
313 virtual float getYPixelsPerEm() const = 0;
314
325 virtual float xUnitsToPoints(float xUnits) const;
326
337 virtual float yUnitsToPoints(float yUnits) const;
338
347 virtual void unitsToPoints(LEPoint &units, LEPoint &points) const;
348
359 virtual float xPixelsToUnits(float xPixels) const;
360
371 virtual float yPixelsToUnits(float yPixels) const;
372
381 virtual void pixelsToUnits(LEPoint &pixels, LEPoint &units) const;
382
394 virtual float getScaleFactorX() const = 0;
395
406 virtual float getScaleFactorY() const = 0;
407
423 virtual void transformFunits(float xFunits, float yFunits, LEPoint &pixels) const;
424
435 static inline float fixedToFloat(le_int32 fixed);
436
447 static inline le_int32 floatToFixed(float theFloat);
448
449 //
450 // These methods won't ever be called by the LayoutEngine,
451 // but are useful for clients of <code>LEFontInstance</code> who
452 // need to render text.
453 //
454
463 virtual le_int32 getAscent() const = 0;
464
473 virtual le_int32 getDescent() const = 0;
474
483 virtual le_int32 getLeading() const = 0;
484
495 virtual le_int32 getLineHeight() const;
496
502 virtual UClassID getDynamicClassID() const;
503
509 static UClassID getStaticClassID();
510
511 };
512
513 inline float LEFontInstance::fixedToFloat(le_int32 fixed)
514 {
515 return (float) (fixed / 65536.0);
516 }
517
518 inline le_int32 LEFontInstance::floatToFixed(float theFloat)
519 {
520 return (le_int32) (theFloat * 65536.0);
521 }
522
523 U_NAMESPACE_END
524 #endif
LEUnicode32
UChar32 LEUnicode32
Used to represent 32-bit Unicode code points.
Definition: LETypes.h:230
LETag
le_uint32 LETag
Used for four character tags.
Definition: LETypes.h:93
icu::UObject::getDynamicClassID
virtual UClassID getDynamicClassID() const
ICU4C "poor man's RTTI", returns a UClassID for the actual ICU class.
icu::LECharMapper
Instances of this class are used by LEFontInstance::mapCharsToGlyphs and LEFontInstance::mapCharToGly...
Definition: LEFontInstance.h:28
U_LAYOUT_API
#define U_LAYOUT_API
Set to export library symbols from inside the layout engine library, and to import them from outside...
Definition: utypes.h:359
UClassID
void * UClassID
UClassID is used to identify classes without using the compiler's RTTI.
Definition: uobject.h:91
LETypes.h
C API: Basic definitions for the ICU LayoutEngine.
le_int32
int32_t le_int32
A type used for signed, 32-bit integers.
Definition: LETypes.h:34
le_bool
UBool le_bool
A type used for boolean values.
Definition: LETypes.h:77
U_NAMESPACE_BEGIN
#define U_NAMESPACE_BEGIN
This is used to begin a declaration of a public ICU C++ API.
Definition: uversion.h:129
LEErrorCode
LEErrorCode
Error codes returned by the LayoutEngine.
Definition: LETypes.h:687
U_NAMESPACE_END
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API.
Definition: uversion.h:130
LEUnicode
UChar LEUnicode
Used to represent 16-bit Unicode code points.
Definition: LETypes.h:238
icu::LEFontInstance
This is a virtual base class that serves as the interface between a LayoutEngine and the platform fon...
Definition: LEFontInstance.h:81
icu::LEGlyphStorage
This class encapsulates the per-glyph storage used by the ICU LayoutEngine.
Definition: LEGlyphStorage.h:34
LEGlyphID
le_uint32 LEGlyphID
Used for glyph indices.
Definition: LETypes.h:112
icu::UObject
UObject is the common ICU "boilerplate" class.
Definition: uobject.h:221
LEPoint
Used to hold a pair of (x, y) values which represent a point.
Definition: LETypes.h:246