Chromium Code Reviews| Index: ui/gfx/render_text.cc |
| =================================================================== |
| --- ui/gfx/render_text.cc (revision 140345) |
| +++ ui/gfx/render_text.cc (working copy) |
| @@ -179,9 +179,14 @@ |
| namespace internal { |
| +// Indicates that an underline metric has not been set explicitly. |
| +const SkScalar kUnderlineMetricNotSet = SK_ScalarNaN; |
|
msw
2012/06/06 18:35:25
optional nit: just using SK_ScalarNaN directly it
Alexei Svitkine (slow)
2012/06/06 18:46:23
Done.
|
| + |
| SkiaTextRenderer::SkiaTextRenderer(Canvas* canvas) |
| : canvas_skia_(canvas->sk_canvas()), |
| - started_drawing_(false) { |
| + started_drawing_(false), |
| + underline_thickness_(kUnderlineMetricNotSet), |
| + underline_position_(kUnderlineMetricNotSet) { |
| DCHECK(canvas_skia_); |
| paint_.setTextEncoding(SkPaint::kGlyphID_TextEncoding); |
| paint_.setStyle(SkPaint::kFill_Style); |
| @@ -221,7 +226,7 @@ |
| paint_.setTypeface(typeface); |
| } |
| -void SkiaTextRenderer::SetTextSize(int size) { |
| +void SkiaTextRenderer::SetTextSize(SkScalar size) { |
| paint_.setTextSize(size); |
| } |
| @@ -252,6 +257,13 @@ |
| paint_.setShader(shader); |
| } |
| +void SkiaTextRenderer::SetUnderlineMetrics(SkScalar thickness, |
| + SkScalar position) { |
| + underline_thickness_ = thickness; |
| + underline_position_ = position; |
| + printf("Set to %f %f\n", underline_thickness_, underline_position_); |
|
msw
2012/06/06 18:35:25
oops :) please remove
Alexei Svitkine (slow)
2012/06/06 18:46:23
Done.
|
| +} |
| + |
| void SkiaTextRenderer::DrawPosText(const SkPoint* pos, |
| const uint16* glyphs, |
| size_t glyph_count) { |
| @@ -304,9 +316,14 @@ |
| r.fRight = x + width; |
| if (style.underline) { |
| - SkScalar offset = SkScalarMulAdd(text_size, kUnderlineOffset, y); |
| - r.fTop = offset; |
| - r.fBottom = offset + height; |
| + if (underline_position_ == kUnderlineMetricNotSet) |
| + r.fTop = SkScalarMulAdd(text_size, kUnderlineOffset, y); |
| + else |
| + r.fTop = y + underline_position_; |
| + if (underline_thickness_ == kUnderlineMetricNotSet) |
| + r.fBottom = r.fTop + height; |
| + else |
| + r.fBottom = r.fTop + underline_thickness_; |
| canvas_skia_->drawRect(r, paint_); |
| } |
| if (style.strike) { |