| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006, 2007 Apple Computer, Inc. | 2 * Copyright (C) 2006, 2007 Apple Computer, Inc. |
| 3 * Copyright (c) 2006, 2007, 2008, 2009, Google Inc. All rights reserved. | 3 * Copyright (c) 2006, 2007, 2008, 2009, Google Inc. All rights reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions are | 6 * modification, are permitted provided that the following conditions are |
| 7 * met: | 7 * met: |
| 8 * | 8 * |
| 9 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
| 10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 170 // If the text is RTL, left will actually be after right. | 170 // If the text is RTL, left will actually be after right. |
| 171 if (left < right) | 171 if (left < right) |
| 172 return FloatRect(left, point.y(), | 172 return FloatRect(left, point.y(), |
| 173 right - left, static_cast<float>(h)); | 173 right - left, static_cast<float>(h)); |
| 174 | 174 |
| 175 return FloatRect(right, point.y(), | 175 return FloatRect(right, point.y(), |
| 176 left - right, static_cast<float>(h)); | 176 left - right, static_cast<float>(h)); |
| 177 } | 177 } |
| 178 | 178 |
| 179 void Font::drawComplexText(GraphicsContext* graphicsContext, | 179 void Font::drawComplexText(GraphicsContext* graphicsContext, |
| 180 const TextRunPaintInfo& runInfo, | 180 const TextRunPaintInfo& runInfo, |
| 181 const FloatPoint& point) const | 181 const FloatPoint& point) const |
| 182 { | 182 { |
| 183 UniscribeHelperTextRun state(runInfo.run, *this); | 183 UniscribeHelperTextRun state(runInfo.run, *this); |
| 184 | 184 |
| 185 SkColor color = graphicsContext->effectiveFillColor(); | 185 SkColor color = graphicsContext->effectiveFillColor(); |
| 186 unsigned char alpha = SkColorGetA(color); | 186 unsigned char alpha = SkColorGetA(color); |
| 187 // Skip 100% transparent text; no need to draw anything. | 187 // Skip 100% transparent text; no need to draw anything. |
| 188 if (!alpha && graphicsContext->strokeStyle() == NoStroke) | 188 if (!alpha && graphicsContext->strokeStyle() == NoStroke) |
| 189 return; | 189 return; |
| 190 | 190 |
| 191 HDC hdc = 0; | 191 HDC hdc = 0; |
| 192 // Uniscribe counts the coordinates from the upper left, while WebKit uses | 192 // Uniscribe counts the coordinates from the upper left, while WebKit uses |
| 193 // the baseline, so we have to subtract off the ascent. | 193 // the baseline, so we have to subtract off the ascent. |
| 194 state.draw(graphicsContext, hdc, lroundf(point.x()), lroundf(point.y() - fon
tMetrics().ascent()), runInfo.bounds, runInfo.from, runInfo.to); | 194 state.draw(graphicsContext, primaryFont()->platformData(), hdc, lroundf(poin
t.x()), lroundf(point.y() - fontMetrics().ascent()), runInfo.bounds, runInfo.fro
m, runInfo.to); |
| 195 } | 195 } |
| 196 | 196 |
| 197 void Font::drawEmphasisMarksForComplexText(GraphicsContext* /* context */, const
TextRunPaintInfo& /* runInfo */, const AtomicString& /* mark */, const FloatPoi
nt& /* point */) const | 197 void Font::drawEmphasisMarksForComplexText(GraphicsContext* /* context */, const
TextRunPaintInfo& /* runInfo */, const AtomicString& /* mark */, const FloatPoi
nt& /* point */) const |
| 198 { | 198 { |
| 199 notImplemented(); | 199 notImplemented(); |
| 200 } | 200 } |
| 201 | 201 |
| 202 float Font::floatWidthForComplexText(const TextRun& run, HashSet<const SimpleFon
tData*>* /* fallbackFonts */, GlyphOverflow* /* glyphOverflow */) const | 202 float Font::floatWidthForComplexText(const TextRun& run, HashSet<const SimpleFon
tData*>* /* fallbackFonts */, GlyphOverflow* /* glyphOverflow */) const |
| 203 { | 203 { |
| 204 UniscribeHelperTextRun state(run, *this); | 204 UniscribeHelperTextRun state(run, *this); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 218 int charIndex = state.xToCharacter(x); | 218 int charIndex = state.xToCharacter(x); |
| 219 | 219 |
| 220 // XToCharacter will return -1 if the position is before the first | 220 // XToCharacter will return -1 if the position is before the first |
| 221 // character (we get called like this sometimes). | 221 // character (we get called like this sometimes). |
| 222 if (charIndex < 0) | 222 if (charIndex < 0) |
| 223 charIndex = 0; | 223 charIndex = 0; |
| 224 return charIndex; | 224 return charIndex; |
| 225 } | 225 } |
| 226 | 226 |
| 227 } // namespace WebCore | 227 } // namespace WebCore |
| OLD | NEW |