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

Side by Side Diff: Source/platform/fonts/harfbuzz/FontHarfBuzz.cpp

Issue 206403004: Change HarfBuzzShaper to use FloatBoxExtent for glyp bounds (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « Source/platform/blink_platform.gypi ('k') | Source/platform/fonts/harfbuzz/HarfBuzzShaper.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2007, 2008, 2010 Google Inc. All rights reserved. 2 * Copyright (c) 2007, 2008, 2010 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 return 0; 206 return 0;
207 } 207 }
208 208
209 float Font::floatWidthForComplexText(const TextRun& run, HashSet<const SimpleFon tData*>* /* fallbackFonts */, GlyphOverflow* glyphOverflow) const 209 float Font::floatWidthForComplexText(const TextRun& run, HashSet<const SimpleFon tData*>* /* fallbackFonts */, GlyphOverflow* glyphOverflow) const
210 { 210 {
211 HarfBuzzShaper shaper(this, run); 211 HarfBuzzShaper shaper(this, run);
212 if (!shaper.shape()) 212 if (!shaper.shape())
213 return 0; 213 return 0;
214 214
215 if (glyphOverflow) { 215 if (glyphOverflow) {
216 glyphOverflow->top = std::max<int>(glyphOverflow->top, ceilf(-shaper.min GlyphBoundingBoxY()) - (glyphOverflow->computeBounds ? 0 : fontMetrics().ascent( ))); 216 glyphOverflow->top = std::max<int>(glyphOverflow->top, ceilf(-shaper.gly phBoundingBox().top()) - (glyphOverflow->computeBounds ? 0 : fontMetrics().ascen t()));
217 glyphOverflow->bottom = std::max<int>(glyphOverflow->bottom, ceilf(shape r.maxGlyphBoundingBoxY()) - (glyphOverflow->computeBounds ? 0 : fontMetrics().de scent())); 217 glyphOverflow->bottom = std::max<int>(glyphOverflow->bottom, ceilf(shape r.glyphBoundingBox().bottom()) - (glyphOverflow->computeBounds ? 0 : fontMetrics ().descent()));
218 glyphOverflow->left = std::max<int>(0, ceilf(-shaper.minGlyphBoundingBox X())); 218 glyphOverflow->left = std::max<int>(0, ceilf(-shaper.glyphBoundingBox(). left()));
219 glyphOverflow->right = std::max<int>(0, ceilf(shaper.maxGlyphBoundingBox X() - shaper.totalWidth())); 219 glyphOverflow->right = std::max<int>(0, ceilf(shaper.glyphBoundingBox(). right() - shaper.totalWidth()));
220 } 220 }
221 return shaper.totalWidth(); 221 return shaper.totalWidth();
222 } 222 }
223 223
224 // Return the code point index for the given |x| offset into the text run. 224 // Return the code point index for the given |x| offset into the text run.
225 int Font::offsetForPositionForComplexText(const TextRun& run, float xFloat, 225 int Font::offsetForPositionForComplexText(const TextRun& run, float xFloat,
226 bool includePartialGlyphs) const 226 bool includePartialGlyphs) const
227 { 227 {
228 HarfBuzzShaper shaper(this, run); 228 HarfBuzzShaper shaper(this, run);
229 if (!shaper.shape()) 229 if (!shaper.shape())
230 return 0; 230 return 0;
231 return shaper.offsetForPosition(xFloat); 231 return shaper.offsetForPosition(xFloat);
232 } 232 }
233 233
234 // Return the rectangle for selecting the given range of code-points in the Text Run. 234 // Return the rectangle for selecting the given range of code-points in the Text Run.
235 FloatRect Font::selectionRectForComplexText(const TextRun& run, 235 FloatRect Font::selectionRectForComplexText(const TextRun& run,
236 const FloatPoint& point, int height, 236 const FloatPoint& point, int height,
237 int from, int to) const 237 int from, int to) const
238 { 238 {
239 HarfBuzzShaper shaper(this, run); 239 HarfBuzzShaper shaper(this, run);
240 if (!shaper.shape()) 240 if (!shaper.shape())
241 return FloatRect(); 241 return FloatRect();
242 return shaper.selectionRect(point, height, from, to); 242 return shaper.selectionRect(point, height, from, to);
243 } 243 }
244 244
245 } // namespace WebCore 245 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/platform/blink_platform.gypi ('k') | Source/platform/fonts/harfbuzz/HarfBuzzShaper.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698