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 |