OLD | NEW |
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 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
179 | 179 |
180 GlyphBuffer glyphBuffer; | 180 GlyphBuffer glyphBuffer; |
181 HarfBuzzShaper shaper(this, runInfo.run); | 181 HarfBuzzShaper shaper(this, runInfo.run); |
182 shaper.setDrawRange(runInfo.from, runInfo.to); | 182 shaper.setDrawRange(runInfo.from, runInfo.to); |
183 if (!shaper.shape(&glyphBuffer)) | 183 if (!shaper.shape(&glyphBuffer)) |
184 return; | 184 return; |
185 FloatPoint adjustedPoint = shaper.adjustStartPoint(point); | 185 FloatPoint adjustedPoint = shaper.adjustStartPoint(point); |
186 drawGlyphBuffer(gc, runInfo, glyphBuffer, adjustedPoint); | 186 drawGlyphBuffer(gc, runInfo, glyphBuffer, adjustedPoint); |
187 } | 187 } |
188 | 188 |
189 void Font::drawEmphasisMarksForComplexText(GraphicsContext* /* context */, const
TextRunPaintInfo& /* runInfo */, const AtomicString& /* mark */, const FloatPoi
nt& /* point */) const | 189 void Font::drawEmphasisMarksForComplexText(GraphicsContext* context, const TextR
unPaintInfo& runInfo, const AtomicString& mark, const FloatPoint& point) const |
190 { | 190 { |
191 notImplemented(); | 191 GlyphBuffer glyphBuffer; |
| 192 |
| 193 float initialAdvance = getGlyphsAndAdvancesForComplexText(runInfo.run, runIn
fo.from, runInfo.to, glyphBuffer, ForTextEmphasis); |
| 194 |
| 195 if (glyphBuffer.isEmpty()) |
| 196 return; |
| 197 |
| 198 drawEmphasisMarks(context, runInfo, glyphBuffer, mark, FloatPoint(point.x()
+ initialAdvance, point.y())); |
| 199 } |
| 200 |
| 201 float Font::getGlyphsAndAdvancesForComplexText(const TextRun& run, int from, int
to, GlyphBuffer& glyphBuffer, ForTextEmphasisOrNot forTextEmphasis) const |
| 202 { |
| 203 HarfBuzzShaper shaper(this, run, HarfBuzzShaper::ForTextEmphasis); |
| 204 shaper.setDrawRange(from, to); |
| 205 shaper.shape(&glyphBuffer); |
| 206 return 0; |
192 } | 207 } |
193 | 208 |
194 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 |
195 { | 210 { |
196 HarfBuzzShaper shaper(this, run); | 211 HarfBuzzShaper shaper(this, run); |
197 if (!shaper.shape()) | 212 if (!shaper.shape()) |
198 return 0; | 213 return 0; |
199 return shaper.totalWidth(); | 214 return shaper.totalWidth(); |
200 } | 215 } |
201 | 216 |
(...skipping 12 matching lines...) Expand all Loading... |
214 const FloatPoint& point, int height, | 229 const FloatPoint& point, int height, |
215 int from, int to) const | 230 int from, int to) const |
216 { | 231 { |
217 HarfBuzzShaper shaper(this, run); | 232 HarfBuzzShaper shaper(this, run); |
218 if (!shaper.shape()) | 233 if (!shaper.shape()) |
219 return FloatRect(); | 234 return FloatRect(); |
220 return shaper.selectionRect(point, height, from, to); | 235 return shaper.selectionRect(point, height, from, to); |
221 } | 236 } |
222 | 237 |
223 } // namespace WebCore | 238 } // namespace WebCore |
OLD | NEW |