OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2011 Google Inc. All rights reserved. | 2 * Copyright (c) 2011 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 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
135 gc->rotate(-0.5 * SK_ScalarPI); | 135 gc->rotate(-0.5 * SK_ScalarPI); |
136 SkMatrix rotator; | 136 SkMatrix rotator; |
137 rotator.reset(); | 137 rotator.reset(); |
138 rotator.setRotate(90); | 138 rotator.setRotate(90); |
139 rotator.mapPoints(pos, numGlyphs); | 139 rotator.mapPoints(pos, numGlyphs); |
140 } | 140 } |
141 TextDrawingModeFlags textMode = gc->textDrawingMode(); | 141 TextDrawingModeFlags textMode = gc->textDrawingMode(); |
142 | 142 |
143 // We draw text up to two times (once for fill, once for stroke). | 143 // We draw text up to two times (once for fill, once for stroke). |
144 if (textMode & TextModeFill) { | 144 if (textMode & TextModeFill) { |
145 SkPaint paint; | 145 SkPaint paint = gc->fillPaint(); |
146 gc->setupPaintForFilling(&paint); | |
147 setupPaint(&paint, font, this, shouldAntialias, shouldSmoothFonts); | 146 setupPaint(&paint, font, this, shouldAntialias, shouldSmoothFonts); |
148 gc->adjustTextRenderMode(&paint); | 147 gc->adjustTextRenderMode(&paint); |
149 paint.setTextEncoding(SkPaint::kGlyphID_TextEncoding); | 148 paint.setTextEncoding(SkPaint::kGlyphID_TextEncoding); |
150 | 149 |
151 gc->drawPosText(glyphs, numGlyphs * sizeof(uint16_t), pos, textRect, pai
nt); | 150 gc->drawPosText(glyphs, numGlyphs * sizeof(uint16_t), pos, textRect, pai
nt); |
152 } | 151 } |
153 | 152 |
154 if ((textMode & TextModeStroke) | 153 if ((textMode & TextModeStroke) |
155 && gc->strokeStyle() != NoStroke | 154 && gc->strokeStyle() != NoStroke |
156 && gc->strokeThickness() > 0) { | 155 && gc->strokeThickness() > 0) { |
157 | 156 |
158 SkPaint paint; | 157 SkPaint paint = gc->strokePaint(); |
159 gc->setupPaintForStroking(&paint); | |
160 setupPaint(&paint, font, this, shouldAntialias, shouldSmoothFonts); | 158 setupPaint(&paint, font, this, shouldAntialias, shouldSmoothFonts); |
161 gc->adjustTextRenderMode(&paint); | 159 gc->adjustTextRenderMode(&paint); |
162 paint.setTextEncoding(SkPaint::kGlyphID_TextEncoding); | 160 paint.setTextEncoding(SkPaint::kGlyphID_TextEncoding); |
163 | 161 |
164 if (textMode & TextModeFill) { | 162 if (textMode & TextModeFill) { |
165 // If we also filled, we don't want to draw shadows twice. | 163 // If we also filled, we don't want to draw shadows twice. |
166 // See comment in FontHarfBuzz.cpp::paintGlyphs() for more details. | 164 // See comment in FontHarfBuzz.cpp::paintGlyphs() for more details. |
167 paint.setLooper(0); | 165 paint.setLooper(0); |
168 } | 166 } |
169 | 167 |
170 gc->drawPosText(glyphs, numGlyphs * sizeof(uint16_t), pos, textRect, pai
nt); | 168 gc->drawPosText(glyphs, numGlyphs * sizeof(uint16_t), pos, textRect, pai
nt); |
171 } | 169 } |
172 if (font->platformData().orientation() == Vertical) | 170 if (font->platformData().orientation() == Vertical) |
173 gc->restore(); | 171 gc->restore(); |
174 } | 172 } |
175 | 173 |
176 } // namespace WebCore | 174 } // namespace WebCore |
OLD | NEW |