| 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 = text_size * kUnderlineOffset + y; | 308 r.fTop = SkScalarMulAdd(text_size, kUnderlineOffset, y); |
| 309 r.fBottom = r.fTop + text_size * kLineThickness; | 309 r.fBottom = r.fTop + SkScalarMul(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 = text_size * kLineThickness; | 316 const SkScalar height = SkScalarMul(text_size, kLineThickness); |
| 317 const SkScalar offset = text_size * kStrikeThroughOffset + y; | 317 const SkScalar offset = SkScalarMulAdd(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 = text_size * kDiagonalStrikeMarginOffset; | 339 const SkScalar offset = SkScalarMul(text_size, kDiagonalStrikeMarginOffset); |
| 340 const int thickness = SkScalarCeilToInt(text_size * kLineThickness * 2); | 340 const int thickness = |
| 341 SkScalarCeilToInt(SkScalarMul(text_size, kLineThickness) * 2); |
| 341 const int height = SkScalarCeilToInt(text_size - offset); | 342 const int height = SkScalarCeilToInt(text_size - offset); |
| 342 const Point end = start_ + Vector2d(total_length_, -height); | 343 const Point end = start_ + Vector2d(total_length_, -height); |
| 343 const int clip_height = height + 2 * thickness; | 344 const int clip_height = height + 2 * thickness; |
| 344 | 345 |
| 345 flags_.setAntiAlias(true); | 346 flags_.setAntiAlias(true); |
| 346 flags_.setStrokeWidth(SkIntToScalar(thickness)); | 347 flags_.setStrokeWidth(SkIntToScalar(thickness)); |
| 347 | 348 |
| 348 const bool clipped = pieces_.size() > 1; | 349 const bool clipped = pieces_.size() > 1; |
| 349 int x = start_.x(); | 350 int x = start_.x(); |
| 350 | 351 |
| (...skipping 1362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1713 | 1714 |
| 1714 for (; range_max < length; ++range_max) | 1715 for (; range_max < length; ++range_max) |
| 1715 if (iter.IsEndOfWord(range_max) || iter.IsStartOfWord(range_max)) | 1716 if (iter.IsEndOfWord(range_max) || iter.IsStartOfWord(range_max)) |
| 1716 break; | 1717 break; |
| 1717 | 1718 |
| 1718 return range.is_reversed() ? Range(range_max, range_min) | 1719 return range.is_reversed() ? Range(range_max, range_min) |
| 1719 : Range(range_min, range_max); | 1720 : Range(range_min, range_max); |
| 1720 } | 1721 } |
| 1721 | 1722 |
| 1722 } // namespace gfx | 1723 } // namespace gfx |
| OLD | NEW |