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 underline metrics have not been set explicitly. |
| +const SkScalar kUnderlineMetricsNotSet = -1.0f; |
|
msw
2012/06/06 01:12:51
nit: technically this applies to a single metric v
Alexei Svitkine (slow)
2012/06/06 14:46:27
Done.
I've also changed the value to be SK_Scalar
|
| + |
| SkiaTextRenderer::SkiaTextRenderer(Canvas* canvas) |
| : canvas_skia_(canvas->sk_canvas()), |
| - started_drawing_(false) { |
| + started_drawing_(false), |
| + underline_thickness_(kUnderlineMetricsNotSet), |
| + underline_position_(kUnderlineMetricsNotSet) { |
| 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,12 @@ |
| paint_.setShader(shader); |
| } |
| +void SkiaTextRenderer::SetUnderlineMetrics(SkScalar thickness, |
| + SkScalar position) { |
| + underline_thickness_ = thickness; |
| + underline_position_ = position; |
| +} |
| + |
| void SkiaTextRenderer::DrawPosText(const SkPoint* pos, |
| const uint16* glyphs, |
| size_t glyph_count) { |
| @@ -304,9 +315,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_ == kUnderlineMetricsNotSet) { |
|
msw
2012/06/06 01:12:51
Take the 'not set' path if either value isn't set
Alexei Svitkine (slow)
2012/06/06 14:46:27
Made the two fields independent - so that none, on
|
| + SkScalar offset = SkScalarMulAdd(text_size, kUnderlineOffset, y); |
| + r.fTop = offset; |
| + r.fBottom = offset + height; |
| + } else { |
| + r.fTop = underline_position_; |
| + r.fBottom = r.fTop + underline_thickness_; |
| + } |
| canvas_skia_->drawRect(r, paint_); |
| } |
| if (style.strike) { |