Imported Upstream version 58.1
[platform/upstream/icu.git] / source / test / letest / SimpleFontInstance.cpp
1 // Copyright (C) 2016 and later: Unicode, Inc. and others.
2 // License & terms of use: http://www.unicode.org/copyright.html
3 /*
4  *******************************************************************************
5  *
6  *   Copyright (C) 1999-2015, International Business Machines
7  *   Corporation and others.  All Rights Reserved.
8  *
9  *******************************************************************************
10  *   file name:  SimpleFontInstance.cpp
11  *
12  *   created on: 03/30/2006
13  *   created by: Eric R. Mader
14  */
15
16 #include "unicode/utypes.h"
17 #include "unicode/uchar.h"
18
19 #include "layout/LETypes.h"
20 #include "layout/LEFontInstance.h"
21
22 #ifndef USING_ICULEHB
23 #include "CanonShaping.h"
24 #endif
25
26 #include "SimpleFontInstance.h"
27
28 SimpleFontInstance::SimpleFontInstance(float pointSize, LEErrorCode &status)
29     : fPointSize(pointSize), fAscent(0), fDescent(0)
30 {
31     if (LE_FAILURE(status)) {
32         return;
33     }
34
35     fAscent  = (le_int32) yUnitsToPoints(2000.0);
36     fDescent = (le_int32) yUnitsToPoints(600.0);
37
38     return;
39 }
40
41 SimpleFontInstance::~SimpleFontInstance()
42 {
43     // nothing to do...
44 }
45
46 const void *SimpleFontInstance::getFontTable(LETag tableTag, size_t &length) const
47 {
48   length = -1; // unknown for this test.
49 #ifndef USING_ICULEHB
50     if (tableTag == LE_GSUB_TABLE_TAG) {
51         return CanonShaping::glyphSubstitutionTable;
52     }
53     
54     if (tableTag == LE_GDEF_TABLE_TAG) {
55         return CanonShaping::glyphDefinitionTable;
56     }
57 #endif
58     return NULL;
59 }
60
61 void SimpleFontInstance::getGlyphAdvance(LEGlyphID glyph, LEPoint &advance) const
62 {
63 #if 0
64     if (u_getCombiningClass((UChar32) glyph) == 0) {
65         advance.fX = xUnitsToPoints(2048);
66     } else {
67         advance.fX = 0;
68     }
69 #else
70     (void)glyph;  // Suppress unused parameter compiler warning.
71     advance.fX = xUnitsToPoints(2048);
72 #endif
73
74     advance.fY = 0;
75 }
76
77 le_int32 SimpleFontInstance::getUnitsPerEM() const
78 {
79     return 2048;
80 }
81
82 le_int32 SimpleFontInstance::getAscent() const
83 {
84     return fAscent;
85 }
86
87 le_int32 SimpleFontInstance::getDescent() const
88 {
89     return fDescent;
90 }
91
92 le_int32 SimpleFontInstance::getLeading() const
93 {
94     return 0;
95 }
96
97 // We really want to inherit this method from the superclass, but some compilers
98 // issue a warning if we don't implement it...
99 LEGlyphID SimpleFontInstance::mapCharToGlyph(LEUnicode32 ch, const LECharMapper *mapper, le_bool filterZeroWidth) const
100 {
101     return LEFontInstance::mapCharToGlyph(ch, mapper, filterZeroWidth);
102 }
103
104 // We really want to inherit this method from the superclass, but some compilers
105 // issue a warning if we don't implement it...
106 LEGlyphID SimpleFontInstance::mapCharToGlyph(LEUnicode32 ch, const LECharMapper *mapper) const
107 {
108     return LEFontInstance::mapCharToGlyph(ch, mapper);
109 }
110
111 LEGlyphID SimpleFontInstance::mapCharToGlyph(LEUnicode32 ch) const
112 {
113     return (LEGlyphID) ch;
114 }
115
116 float SimpleFontInstance::getXPixelsPerEm() const
117 {
118     return fPointSize;
119 }
120
121 float SimpleFontInstance::getYPixelsPerEm() const
122 {
123     return fPointSize;
124 }
125
126 float SimpleFontInstance::getScaleFactorX() const
127 {
128     return 1.0;
129 }
130
131 float SimpleFontInstance::getScaleFactorY() const
132 {
133     return 1.0;
134 }
135
136 le_bool SimpleFontInstance::getGlyphPoint(LEGlyphID /*glyph*/, le_int32 /*pointNumber*/, LEPoint &/*point*/) const
137 {
138     return FALSE;
139 }
140