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