Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(63)

Side by Side Diff: ui/gfx/render_text.cc

Issue 2640983002: Rename paint data structures (Closed)
Patch Set: DrawingDisplayItem Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ui/gfx/render_text.h ('k') | ui/gfx/skia_paint_util.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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>
11 11
12 #include "base/command_line.h" 12 #include "base/command_line.h"
13 #include "base/i18n/break_iterator.h" 13 #include "base/i18n/break_iterator.h"
14 #include "base/logging.h" 14 #include "base/logging.h"
15 #include "base/stl_util.h" 15 #include "base/stl_util.h"
16 #include "base/strings/string_util.h" 16 #include "base/strings/string_util.h"
17 #include "base/strings/utf_string_conversions.h" 17 #include "base/strings/utf_string_conversions.h"
18 #include "base/trace_event/trace_event.h" 18 #include "base/trace_event/trace_event.h"
19 #include "build/build_config.h" 19 #include "build/build_config.h"
20 #include "cc/paint/paint_canvas.h"
21 #include "cc/paint/paint_shader.h"
20 #include "third_party/icu/source/common/unicode/rbbi.h" 22 #include "third_party/icu/source/common/unicode/rbbi.h"
21 #include "third_party/icu/source/common/unicode/utf16.h" 23 #include "third_party/icu/source/common/unicode/utf16.h"
22 #include "third_party/skia/include/core/SkDrawLooper.h" 24 #include "third_party/skia/include/core/SkDrawLooper.h"
23 #include "third_party/skia/include/core/SkFontStyle.h" 25 #include "third_party/skia/include/core/SkFontStyle.h"
24 #include "third_party/skia/include/core/SkTypeface.h" 26 #include "third_party/skia/include/core/SkTypeface.h"
25 #include "third_party/skia/include/effects/SkGradientShader.h" 27 #include "third_party/skia/include/effects/SkGradientShader.h"
26 #include "third_party/skia/include/effects/SkMorphologyImageFilter.h" 28 #include "third_party/skia/include/effects/SkMorphologyImageFilter.h"
27 #include "ui/gfx/canvas.h" 29 #include "ui/gfx/canvas.h"
28 #include "ui/gfx/geometry/insets.h" 30 #include "ui/gfx/geometry/insets.h"
29 #include "ui/gfx/geometry/safe_integer_conversions.h" 31 #include "ui/gfx/geometry/safe_integer_conversions.h"
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 } 167 }
166 168
167 const SkPoint points[2] = { PointToSkPoint(text_rect.origin()), 169 const SkPoint points[2] = { PointToSkPoint(text_rect.origin()),
168 PointToSkPoint(text_rect.top_right()) }; 170 PointToSkPoint(text_rect.top_right()) };
169 return 171 return
170 SkGradientShader::MakeLinear(&points[0], &colors[0], &positions[0], 172 SkGradientShader::MakeLinear(&points[0], &colors[0], &positions[0],
171 colors.size(), SkShader::kClamp_TileMode); 173 colors.size(), SkShader::kClamp_TileMode);
172 } 174 }
173 175
174 // Converts a FontRenderParams::Hinting value to the corresponding 176 // Converts a FontRenderParams::Hinting value to the corresponding
175 // SkPaint::Hinting value. 177 // cc::PaintFlags::Hinting value.
176 SkPaint::Hinting FontRenderParamsHintingToSkPaintHinting( 178 cc::PaintFlags::Hinting FontRenderParamsHintingToPaintFlagsHinting(
177 FontRenderParams::Hinting params_hinting) { 179 FontRenderParams::Hinting params_hinting) {
178 switch (params_hinting) { 180 switch (params_hinting) {
179 case FontRenderParams::HINTING_NONE: return SkPaint::kNo_Hinting; 181 case FontRenderParams::HINTING_NONE:
180 case FontRenderParams::HINTING_SLIGHT: return SkPaint::kSlight_Hinting; 182 return cc::PaintFlags::kNo_Hinting;
181 case FontRenderParams::HINTING_MEDIUM: return SkPaint::kNormal_Hinting; 183 case FontRenderParams::HINTING_SLIGHT:
182 case FontRenderParams::HINTING_FULL: return SkPaint::kFull_Hinting; 184 return cc::PaintFlags::kSlight_Hinting;
185 case FontRenderParams::HINTING_MEDIUM:
186 return cc::PaintFlags::kNormal_Hinting;
187 case FontRenderParams::HINTING_FULL:
188 return cc::PaintFlags::kFull_Hinting;
183 } 189 }
184 return SkPaint::kNo_Hinting; 190 return cc::PaintFlags::kNo_Hinting;
185 } 191 }
186 192
187 // Make sure ranges don't break text graphemes. If a range in |break_list| 193 // Make sure ranges don't break text graphemes. If a range in |break_list|
188 // does break a grapheme in |render_text|, the range will be slightly 194 // does break a grapheme in |render_text|, the range will be slightly
189 // extended to encompass the grapheme. 195 // extended to encompass the grapheme.
190 template <typename T> 196 template <typename T>
191 void RestoreBreakList(RenderText* render_text, BreakList<T>* break_list) { 197 void RestoreBreakList(RenderText* render_text, BreakList<T>* break_list) {
192 break_list->SetMax(render_text->text().length()); 198 break_list->SetMax(render_text->text().length());
193 Range range; 199 Range range;
194 while (range.end() < break_list->max()) { 200 while (range.end() < break_list->max()) {
(...skipping 15 matching lines...) Expand all
210 // Value of |underline_thickness_| that indicates that underline metrics have 216 // Value of |underline_thickness_| that indicates that underline metrics have
211 // not been set explicitly. 217 // not been set explicitly.
212 const SkScalar kUnderlineMetricsNotSet = -1.0f; 218 const SkScalar kUnderlineMetricsNotSet = -1.0f;
213 219
214 SkiaTextRenderer::SkiaTextRenderer(Canvas* canvas) 220 SkiaTextRenderer::SkiaTextRenderer(Canvas* canvas)
215 : canvas_(canvas), 221 : canvas_(canvas),
216 canvas_skia_(canvas->sk_canvas()), 222 canvas_skia_(canvas->sk_canvas()),
217 underline_thickness_(kUnderlineMetricsNotSet), 223 underline_thickness_(kUnderlineMetricsNotSet),
218 underline_position_(0.0f) { 224 underline_position_(0.0f) {
219 DCHECK(canvas_skia_); 225 DCHECK(canvas_skia_);
220 paint_.setTextEncoding(SkPaint::kGlyphID_TextEncoding); 226 paint_.setTextEncoding(cc::PaintFlags::kGlyphID_TextEncoding);
221 paint_.setStyle(SkPaint::kFill_Style); 227 paint_.setStyle(cc::PaintFlags::kFill_Style);
222 paint_.setAntiAlias(true); 228 paint_.setAntiAlias(true);
223 paint_.setSubpixelText(true); 229 paint_.setSubpixelText(true);
224 paint_.setLCDRenderText(true); 230 paint_.setLCDRenderText(true);
225 paint_.setHinting(SkPaint::kNormal_Hinting); 231 paint_.setHinting(cc::PaintFlags::kNormal_Hinting);
226 } 232 }
227 233
228 SkiaTextRenderer::~SkiaTextRenderer() { 234 SkiaTextRenderer::~SkiaTextRenderer() {
229 } 235 }
230 236
231 void SkiaTextRenderer::SetDrawLooper(sk_sp<SkDrawLooper> draw_looper) { 237 void SkiaTextRenderer::SetDrawLooper(sk_sp<SkDrawLooper> draw_looper) {
232 paint_.setLooper(std::move(draw_looper)); 238 paint_.setLooper(std::move(draw_looper));
233 } 239 }
234 240
235 void SkiaTextRenderer::SetFontRenderParams(const FontRenderParams& params, 241 void SkiaTextRenderer::SetFontRenderParams(const FontRenderParams& params,
236 bool subpixel_rendering_suppressed) { 242 bool subpixel_rendering_suppressed) {
237 ApplyRenderParams(params, subpixel_rendering_suppressed, &paint_); 243 ApplyRenderParams(params, subpixel_rendering_suppressed, &paint_);
238 } 244 }
239 245
240 void SkiaTextRenderer::SetTypeface(sk_sp<SkTypeface> typeface) { 246 void SkiaTextRenderer::SetTypeface(sk_sp<SkTypeface> typeface) {
241 paint_.setTypeface(std::move(typeface)); 247 paint_.setTypeface(std::move(typeface));
242 } 248 }
243 249
244 void SkiaTextRenderer::SetTextSize(SkScalar size) { 250 void SkiaTextRenderer::SetTextSize(SkScalar size) {
245 paint_.setTextSize(size); 251 paint_.setTextSize(size);
246 } 252 }
247 253
248 void SkiaTextRenderer::SetForegroundColor(SkColor foreground) { 254 void SkiaTextRenderer::SetForegroundColor(SkColor foreground) {
249 paint_.setColor(foreground); 255 paint_.setColor(foreground);
250 } 256 }
251 257
252 void SkiaTextRenderer::SetShader(sk_sp<SkShader> shader) { 258 void SkiaTextRenderer::SetShader(sk_sp<SkShader> shader) {
253 paint_.setShader(std::move(shader)); 259 paint_.setShader(cc::WrapSkShader(std::move(shader)));
254 } 260 }
255 261
256 void SkiaTextRenderer::SetHaloEffect() { 262 void SkiaTextRenderer::SetHaloEffect() {
257 paint_.setImageFilter(SkDilateImageFilter::Make(1, 1, nullptr)); 263 paint_.setImageFilter(SkDilateImageFilter::Make(1, 1, nullptr));
258 } 264 }
259 265
260 void SkiaTextRenderer::SetUnderlineMetrics(SkScalar thickness, 266 void SkiaTextRenderer::SetUnderlineMetrics(SkScalar thickness,
261 SkScalar position) { 267 SkScalar position) {
262 underline_thickness_ = thickness; 268 underline_thickness_ = thickness;
263 underline_position_ = position; 269 underline_position_ = position;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
310 const SkScalar height = SkScalarMul(text_size, kLineThickness); 316 const SkScalar height = SkScalarMul(text_size, kLineThickness);
311 const SkScalar offset = SkScalarMulAdd(text_size, kStrikeThroughOffset, y); 317 const SkScalar offset = SkScalarMulAdd(text_size, kStrikeThroughOffset, y);
312 SkScalar x_scalar = SkIntToScalar(x); 318 SkScalar x_scalar = SkIntToScalar(x);
313 const SkRect r = 319 const SkRect r =
314 SkRect::MakeLTRB(x_scalar, offset, x_scalar + width, offset + height); 320 SkRect::MakeLTRB(x_scalar, offset, x_scalar + width, offset + height);
315 canvas_skia_->drawRect(r, paint_); 321 canvas_skia_->drawRect(r, paint_);
316 } 322 }
317 323
318 SkiaTextRenderer::DiagonalStrike::DiagonalStrike(Canvas* canvas, 324 SkiaTextRenderer::DiagonalStrike::DiagonalStrike(Canvas* canvas,
319 Point start, 325 Point start,
320 const SkPaint& paint) 326 const cc::PaintFlags& paint)
321 : canvas_(canvas), 327 : canvas_(canvas), start_(start), paint_(paint), total_length_(0) {}
322 start_(start),
323 paint_(paint),
324 total_length_(0) {
325 }
326 328
327 SkiaTextRenderer::DiagonalStrike::~DiagonalStrike() { 329 SkiaTextRenderer::DiagonalStrike::~DiagonalStrike() {
328 } 330 }
329 331
330 void SkiaTextRenderer::DiagonalStrike::AddPiece(int length, SkColor color) { 332 void SkiaTextRenderer::DiagonalStrike::AddPiece(int length, SkColor color) {
331 pieces_.push_back(Piece(length, color)); 333 pieces_.push_back(Piece(length, color));
332 total_length_ += length; 334 total_length_ += length;
333 } 335 }
334 336
335 void SkiaTextRenderer::DiagonalStrike::Draw() { 337 void SkiaTextRenderer::DiagonalStrike::Draw() {
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 LineSegment::~LineSegment() {} 406 LineSegment::~LineSegment() {}
405 407
406 Line::Line() : preceding_heights(0), baseline(0) {} 408 Line::Line() : preceding_heights(0), baseline(0) {}
407 409
408 Line::Line(const Line& other) = default; 410 Line::Line(const Line& other) = default;
409 411
410 Line::~Line() {} 412 Line::~Line() {}
411 413
412 void ApplyRenderParams(const FontRenderParams& params, 414 void ApplyRenderParams(const FontRenderParams& params,
413 bool subpixel_rendering_suppressed, 415 bool subpixel_rendering_suppressed,
414 SkPaint* paint) { 416 cc::PaintFlags* paint) {
415 paint->setAntiAlias(params.antialiasing); 417 paint->setAntiAlias(params.antialiasing);
416 paint->setLCDRenderText(!subpixel_rendering_suppressed && 418 paint->setLCDRenderText(!subpixel_rendering_suppressed &&
417 params.subpixel_rendering != FontRenderParams::SUBPIXEL_RENDERING_NONE); 419 params.subpixel_rendering != FontRenderParams::SUBPIXEL_RENDERING_NONE);
418 paint->setSubpixelText(params.subpixel_positioning); 420 paint->setSubpixelText(params.subpixel_positioning);
419 paint->setAutohinted(params.autohinter); 421 paint->setAutohinted(params.autohinter);
420 paint->setHinting(FontRenderParamsHintingToSkPaintHinting(params.hinting)); 422 paint->setHinting(FontRenderParamsHintingToPaintFlagsHinting(params.hinting));
421 } 423 }
422 424
423 } // namespace internal 425 } // namespace internal
424 426
425 // static 427 // static
426 constexpr base::char16 RenderText::kPasswordReplacementChar; 428 constexpr base::char16 RenderText::kPasswordReplacementChar;
427 constexpr bool RenderText::kDragToEndIfOutsideVerticalBounds; 429 constexpr bool RenderText::kDragToEndIfOutsideVerticalBounds;
428 430
429 RenderText::~RenderText() { 431 RenderText::~RenderText() {
430 } 432 }
(...skipping 1280 matching lines...) Expand 10 before | Expand all | Expand 10 after
1711 1713
1712 for (; range_max < length; ++range_max) 1714 for (; range_max < length; ++range_max)
1713 if (iter.IsEndOfWord(range_max) || iter.IsStartOfWord(range_max)) 1715 if (iter.IsEndOfWord(range_max) || iter.IsStartOfWord(range_max))
1714 break; 1716 break;
1715 1717
1716 return range.is_reversed() ? Range(range_max, range_min) 1718 return range.is_reversed() ? Range(range_max, range_min)
1717 : Range(range_min, range_max); 1719 : Range(range_min, range_max);
1718 } 1720 }
1719 1721
1720 } // namespace gfx 1722 } // namespace gfx
OLDNEW
« no previous file with comments | « ui/gfx/render_text.h ('k') | ui/gfx/skia_paint_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698