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) { |