Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(77)

Side by Side Diff: third_party/WebKit/Source/platform/fonts/FontMetrics.h

Issue 2797423005: Always use original ascent/descent for FontMetrics::floatAscent|floatDescent (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved. 2 * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved.
3 * 3 *
4 * This library is free software; you can redistribute it and/or 4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public 5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either 6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version. 7 * version 2 of the License, or (at your option) any later version.
8 * 8 *
9 * This library is distributed in the hope that it will be useful, 9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
(...skipping 28 matching lines...) Expand all
39 m_descent(0), 39 m_descent(0),
40 m_lineGap(0), 40 m_lineGap(0),
41 m_lineSpacing(0), 41 m_lineSpacing(0),
42 m_xHeight(0), 42 m_xHeight(0),
43 m_zeroWidth(0), 43 m_zeroWidth(0),
44 m_underlinethickness(0), 44 m_underlinethickness(0),
45 m_underlinePosition(0), 45 m_underlinePosition(0),
46 m_ascentInt(0), 46 m_ascentInt(0),
47 m_descentInt(0), 47 m_descentInt(0),
48 m_hasXHeight(false), 48 m_hasXHeight(false),
49 m_hasZeroWidth(false), 49 m_hasZeroWidth(false) {}
50 m_visualOverflowInflationForAscent(0),
51 m_visualOverflowInflationForDescent(0) {}
52 50
53 unsigned unitsPerEm() const { return m_unitsPerEm; } 51 unsigned unitsPerEm() const { return m_unitsPerEm; }
54 void setUnitsPerEm(unsigned unitsPerEm) { m_unitsPerEm = unitsPerEm; } 52 void setUnitsPerEm(unsigned unitsPerEm) { m_unitsPerEm = unitsPerEm; }
55 53
56 float floatAscent(FontBaseline baselineType = AlphabeticBaseline) const { 54 float floatAscent(FontBaseline baselineType = AlphabeticBaseline) const {
57 if (baselineType == AlphabeticBaseline) 55 if (baselineType == AlphabeticBaseline)
58 return m_ascent; 56 return m_ascent;
59 return floatHeight() / 2; 57 return floatHeight() / 2;
60 } 58 }
61 59
62 void setAscent(float ascent) { 60 void setAscent(float ascent) {
63 m_ascent = ascent; 61 m_ascent = ascent;
64 m_ascentInt = lroundf(ascent); 62 m_ascentInt = lroundf(ascent);
65 if (m_ascentInt < ascent)
66 m_visualOverflowInflationForAscent++;
67 } 63 }
68 64
69 float floatDescent(FontBaseline baselineType = AlphabeticBaseline) const { 65 float floatDescent(FontBaseline baselineType = AlphabeticBaseline) const {
70 if (baselineType == AlphabeticBaseline) 66 if (baselineType == AlphabeticBaseline)
71 return m_descent; 67 return m_descent;
72 return floatHeight() / 2; 68 return floatHeight() / 2;
73 } 69 }
74 70
75 void setDescent(float descent) { 71 void setDescent(float descent) {
76 m_descent = descent; 72 m_descent = descent;
77 m_descentInt = lroundf(descent); 73 m_descentInt = lroundf(descent);
78 if (m_descentInt < descent)
79 m_visualOverflowInflationForDescent++;
80 }
81
82 void setVisualOverflowInflations(int forAscent, int forDescent) {
83 m_visualOverflowInflationForAscent = forAscent;
84 m_visualOverflowInflationForDescent = forDescent;
85 }
86 int visualOverflowInflationForAscent() const {
87 return m_visualOverflowInflationForAscent;
88 }
89 int visualOverflowInflationForDescent() const {
90 return m_visualOverflowInflationForDescent;
91 } 74 }
92 75
93 float floatHeight(FontBaseline baselineType = AlphabeticBaseline) const { 76 float floatHeight(FontBaseline baselineType = AlphabeticBaseline) const {
94 return floatAscent() + floatDescent(); 77 return floatAscent() + floatDescent();
95 } 78 }
96 79
97 float floatLineGap() const { return m_lineGap; } 80 float floatLineGap() const { return m_lineGap; }
98 void setLineGap(float lineGap) { m_lineGap = lineGap; } 81 void setLineGap(float lineGap) { m_lineGap = lineGap; }
99 82
100 float floatLineSpacing() const { return m_lineSpacing; } 83 float floatLineSpacing() const { return m_lineSpacing; }
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 m_ascent = 0; 160 m_ascent = 0;
178 m_descent = 0; 161 m_descent = 0;
179 m_ascentInt = 0; 162 m_ascentInt = 0;
180 m_descentInt = 0; 163 m_descentInt = 0;
181 m_lineGap = 0; 164 m_lineGap = 0;
182 m_lineSpacing = 0; 165 m_lineSpacing = 0;
183 m_xHeight = 0; 166 m_xHeight = 0;
184 m_hasXHeight = false; 167 m_hasXHeight = false;
185 m_underlinethickness = 0; 168 m_underlinethickness = 0;
186 m_underlinePosition = 0; 169 m_underlinePosition = 0;
187 m_visualOverflowInflationForAscent = 0;
188 m_visualOverflowInflationForDescent = 0;
189 } 170 }
190 171
191 unsigned m_unitsPerEm; 172 unsigned m_unitsPerEm;
192 float m_ascent; 173 float m_ascent;
193 float m_descent; 174 float m_descent;
194 float m_lineGap; 175 float m_lineGap;
195 float m_lineSpacing; 176 float m_lineSpacing;
196 float m_xHeight; 177 float m_xHeight;
197 float m_zeroWidth; 178 float m_zeroWidth;
198 float m_underlinethickness; 179 float m_underlinethickness;
199 float m_underlinePosition; 180 float m_underlinePosition;
200 int m_ascentInt; 181 int m_ascentInt;
201 int m_descentInt; 182 int m_descentInt;
202 bool m_hasXHeight; 183 bool m_hasXHeight;
203 bool m_hasZeroWidth; 184 bool m_hasZeroWidth;
204
205 // These are set to non-zero when ascent or descent is rounded or shifted
206 // to be smaller than the actual ascent or descent. When calculating visual
207 // overflows, we should add the inflations.
208 int m_visualOverflowInflationForAscent;
209 int m_visualOverflowInflationForDescent;
210 }; 185 };
211 186
212 } // namespace blink 187 } // namespace blink
213 188
214 #endif // FontMetrics_h 189 #endif // FontMetrics_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698