OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ui/gfx/render_text.h" | 5 #include "ui/gfx/render_text.h" |
6 | 6 |
7 #include <limits.h> | 7 #include <limits.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <climits> | 10 #include <climits> |
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
298 } | 298 } |
299 } | 299 } |
300 | 300 |
301 void SkiaTextRenderer::DrawUnderline(int x, int y, int width) { | 301 void SkiaTextRenderer::DrawUnderline(int x, int y, int width) { |
302 SkScalar x_scalar = SkIntToScalar(x); | 302 SkScalar x_scalar = SkIntToScalar(x); |
303 SkRect r = SkRect::MakeLTRB( | 303 SkRect r = SkRect::MakeLTRB( |
304 x_scalar, y + underline_position_, x_scalar + width, | 304 x_scalar, y + underline_position_, x_scalar + width, |
305 y + underline_position_ + underline_thickness_); | 305 y + underline_position_ + underline_thickness_); |
306 if (underline_thickness_ == kUnderlineMetricsNotSet) { | 306 if (underline_thickness_ == kUnderlineMetricsNotSet) { |
307 const SkScalar text_size = flags_.getTextSize(); | 307 const SkScalar text_size = flags_.getTextSize(); |
308 r.fTop = SkScalarMulAdd(text_size, kUnderlineOffset, y); | 308 r.fTop = text_size * kUnderlineOffset + y; |
309 r.fBottom = r.fTop + SkScalarMul(text_size, kLineThickness); | 309 r.fBottom = r.fTop + text_size * kLineThickness; |
310 } | 310 } |
311 canvas_skia_->drawRect(r, flags_); | 311 canvas_skia_->drawRect(r, flags_); |
312 } | 312 } |
313 | 313 |
314 void SkiaTextRenderer::DrawStrike(int x, int y, int width) const { | 314 void SkiaTextRenderer::DrawStrike(int x, int y, int width) const { |
315 const SkScalar text_size = flags_.getTextSize(); | 315 const SkScalar text_size = flags_.getTextSize(); |
316 const SkScalar height = SkScalarMul(text_size, kLineThickness); | 316 const SkScalar height = text_size * kLineThickness; |
317 const SkScalar offset = SkScalarMulAdd(text_size, kStrikeThroughOffset, y); | 317 const SkScalar offset = text_size * kStrikeThroughOffset + y; |
318 SkScalar x_scalar = SkIntToScalar(x); | 318 SkScalar x_scalar = SkIntToScalar(x); |
319 const SkRect r = | 319 const SkRect r = |
320 SkRect::MakeLTRB(x_scalar, offset, x_scalar + width, offset + height); | 320 SkRect::MakeLTRB(x_scalar, offset, x_scalar + width, offset + height); |
321 canvas_skia_->drawRect(r, flags_); | 321 canvas_skia_->drawRect(r, flags_); |
322 } | 322 } |
323 | 323 |
324 SkiaTextRenderer::DiagonalStrike::DiagonalStrike(Canvas* canvas, | 324 SkiaTextRenderer::DiagonalStrike::DiagonalStrike(Canvas* canvas, |
325 Point start, | 325 Point start, |
326 const cc::PaintFlags& flags) | 326 const cc::PaintFlags& flags) |
327 : canvas_(canvas), start_(start), flags_(flags), total_length_(0) {} | 327 : canvas_(canvas), start_(start), flags_(flags), total_length_(0) {} |
328 | 328 |
329 SkiaTextRenderer::DiagonalStrike::~DiagonalStrike() { | 329 SkiaTextRenderer::DiagonalStrike::~DiagonalStrike() { |
330 } | 330 } |
331 | 331 |
332 void SkiaTextRenderer::DiagonalStrike::AddPiece(int length, SkColor color) { | 332 void SkiaTextRenderer::DiagonalStrike::AddPiece(int length, SkColor color) { |
333 pieces_.push_back(Piece(length, color)); | 333 pieces_.push_back(Piece(length, color)); |
334 total_length_ += length; | 334 total_length_ += length; |
335 } | 335 } |
336 | 336 |
337 void SkiaTextRenderer::DiagonalStrike::Draw() { | 337 void SkiaTextRenderer::DiagonalStrike::Draw() { |
338 const SkScalar text_size = flags_.getTextSize(); | 338 const SkScalar text_size = flags_.getTextSize(); |
339 const SkScalar offset = SkScalarMul(text_size, kDiagonalStrikeMarginOffset); | 339 const SkScalar offset = text_size * kDiagonalStrikeMarginOffset; |
340 const int thickness = | 340 const int thickness = SkScalarCeilToInt(text_size * kLineThickness * 2); |
341 SkScalarCeilToInt(SkScalarMul(text_size, kLineThickness) * 2); | |
342 const int height = SkScalarCeilToInt(text_size - offset); | 341 const int height = SkScalarCeilToInt(text_size - offset); |
343 const Point end = start_ + Vector2d(total_length_, -height); | 342 const Point end = start_ + Vector2d(total_length_, -height); |
344 const int clip_height = height + 2 * thickness; | 343 const int clip_height = height + 2 * thickness; |
345 | 344 |
346 flags_.setAntiAlias(true); | 345 flags_.setAntiAlias(true); |
347 flags_.setStrokeWidth(SkIntToScalar(thickness)); | 346 flags_.setStrokeWidth(SkIntToScalar(thickness)); |
348 | 347 |
349 const bool clipped = pieces_.size() > 1; | 348 const bool clipped = pieces_.size() > 1; |
350 int x = start_.x(); | 349 int x = start_.x(); |
351 | 350 |
(...skipping 1362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1714 | 1713 |
1715 for (; range_max < length; ++range_max) | 1714 for (; range_max < length; ++range_max) |
1716 if (iter.IsEndOfWord(range_max) || iter.IsStartOfWord(range_max)) | 1715 if (iter.IsEndOfWord(range_max) || iter.IsStartOfWord(range_max)) |
1717 break; | 1716 break; |
1718 | 1717 |
1719 return range.is_reversed() ? Range(range_max, range_min) | 1718 return range.is_reversed() ? Range(range_max, range_min) |
1720 : Range(range_min, range_max); | 1719 : Range(range_min, range_max); |
1721 } | 1720 } |
1722 | 1721 |
1723 } // namespace gfx | 1722 } // namespace gfx |
OLD | NEW |