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

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

Issue 2640983002: Rename paint data structures (Closed)
Patch Set: Rebase 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
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 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 } 166 }
165 167
166 const SkPoint points[2] = { PointToSkPoint(text_rect.origin()), 168 const SkPoint points[2] = { PointToSkPoint(text_rect.origin()),
167 PointToSkPoint(text_rect.top_right()) }; 169 PointToSkPoint(text_rect.top_right()) };
168 return 170 return
169 SkGradientShader::MakeLinear(&points[0], &colors[0], &positions[0], 171 SkGradientShader::MakeLinear(&points[0], &colors[0], &positions[0],
170 colors.size(), SkShader::kClamp_TileMode); 172 colors.size(), SkShader::kClamp_TileMode);
171 } 173 }
172 174
173 // Converts a FontRenderParams::Hinting value to the corresponding 175 // Converts a FontRenderParams::Hinting value to the corresponding
174 // SkPaint::Hinting value. 176 // cc::PaintFlags::Hinting value.
175 SkPaint::Hinting FontRenderParamsHintingToSkPaintHinting( 177 cc::PaintFlags::Hinting FontRenderParamsHintingToPaintFlagsHinting(
176 FontRenderParams::Hinting params_hinting) { 178 FontRenderParams::Hinting params_hinting) {
177 switch (params_hinting) { 179 switch (params_hinting) {
178 case FontRenderParams::HINTING_NONE: return SkPaint::kNo_Hinting; 180 case FontRenderParams::HINTING_NONE:
179 case FontRenderParams::HINTING_SLIGHT: return SkPaint::kSlight_Hinting; 181 return cc::PaintFlags::kNo_Hinting;
180 case FontRenderParams::HINTING_MEDIUM: return SkPaint::kNormal_Hinting; 182 case FontRenderParams::HINTING_SLIGHT:
181 case FontRenderParams::HINTING_FULL: return SkPaint::kFull_Hinting; 183 return cc::PaintFlags::kSlight_Hinting;
184 case FontRenderParams::HINTING_MEDIUM:
185 return cc::PaintFlags::kNormal_Hinting;
186 case FontRenderParams::HINTING_FULL:
187 return cc::PaintFlags::kFull_Hinting;
182 } 188 }
183 return SkPaint::kNo_Hinting; 189 return cc::PaintFlags::kNo_Hinting;
184 } 190 }
185 191
186 // Make sure ranges don't break text graphemes. If a range in |break_list| 192 // Make sure ranges don't break text graphemes. If a range in |break_list|
187 // does break a grapheme in |render_text|, the range will be slightly 193 // does break a grapheme in |render_text|, the range will be slightly
188 // extended to encompass the grapheme. 194 // extended to encompass the grapheme.
189 template <typename T> 195 template <typename T>
190 void RestoreBreakList(RenderText* render_text, BreakList<T>* break_list) { 196 void RestoreBreakList(RenderText* render_text, BreakList<T>* break_list) {
191 break_list->SetMax(render_text->text().length()); 197 break_list->SetMax(render_text->text().length());
192 Range range; 198 Range range;
193 while (range.end() < break_list->max()) { 199 while (range.end() < break_list->max()) {
(...skipping 15 matching lines...) Expand all
209 // Value of |underline_thickness_| that indicates that underline metrics have 215 // Value of |underline_thickness_| that indicates that underline metrics have
210 // not been set explicitly. 216 // not been set explicitly.
211 const SkScalar kUnderlineMetricsNotSet = -1.0f; 217 const SkScalar kUnderlineMetricsNotSet = -1.0f;
212 218
213 SkiaTextRenderer::SkiaTextRenderer(Canvas* canvas) 219 SkiaTextRenderer::SkiaTextRenderer(Canvas* canvas)
214 : canvas_(canvas), 220 : canvas_(canvas),
215 canvas_skia_(canvas->sk_canvas()), 221 canvas_skia_(canvas->sk_canvas()),
216 underline_thickness_(kUnderlineMetricsNotSet), 222 underline_thickness_(kUnderlineMetricsNotSet),
217 underline_position_(0.0f) { 223 underline_position_(0.0f) {
218 DCHECK(canvas_skia_); 224 DCHECK(canvas_skia_);
219 paint_.setTextEncoding(SkPaint::kGlyphID_TextEncoding); 225 paint_.setTextEncoding(cc::PaintFlags::kGlyphID_TextEncoding);
220 paint_.setStyle(SkPaint::kFill_Style); 226 paint_.setStyle(cc::PaintFlags::kFill_Style);
221 paint_.setAntiAlias(true); 227 paint_.setAntiAlias(true);
222 paint_.setSubpixelText(true); 228 paint_.setSubpixelText(true);
223 paint_.setLCDRenderText(true); 229 paint_.setLCDRenderText(true);
224 paint_.setHinting(SkPaint::kNormal_Hinting); 230 paint_.setHinting(cc::PaintFlags::kNormal_Hinting);
225 } 231 }
226 232
227 SkiaTextRenderer::~SkiaTextRenderer() { 233 SkiaTextRenderer::~SkiaTextRenderer() {
228 } 234 }
229 235
230 void SkiaTextRenderer::SetDrawLooper(sk_sp<SkDrawLooper> draw_looper) { 236 void SkiaTextRenderer::SetDrawLooper(sk_sp<SkDrawLooper> draw_looper) {
231 paint_.setLooper(std::move(draw_looper)); 237 paint_.setLooper(std::move(draw_looper));
232 } 238 }
233 239
234 void SkiaTextRenderer::SetFontRenderParams(const FontRenderParams& params, 240 void SkiaTextRenderer::SetFontRenderParams(const FontRenderParams& params,
235 bool subpixel_rendering_suppressed) { 241 bool subpixel_rendering_suppressed) {
236 ApplyRenderParams(params, subpixel_rendering_suppressed, &paint_); 242 ApplyRenderParams(params, subpixel_rendering_suppressed, &paint_);
237 } 243 }
238 244
239 void SkiaTextRenderer::SetTypeface(sk_sp<SkTypeface> typeface) { 245 void SkiaTextRenderer::SetTypeface(sk_sp<SkTypeface> typeface) {
240 paint_.setTypeface(std::move(typeface)); 246 paint_.setTypeface(std::move(typeface));
241 } 247 }
242 248
243 void SkiaTextRenderer::SetTextSize(SkScalar size) { 249 void SkiaTextRenderer::SetTextSize(SkScalar size) {
244 paint_.setTextSize(size); 250 paint_.setTextSize(size);
245 } 251 }
246 252
247 void SkiaTextRenderer::SetForegroundColor(SkColor foreground) { 253 void SkiaTextRenderer::SetForegroundColor(SkColor foreground) {
248 paint_.setColor(foreground); 254 paint_.setColor(foreground);
249 } 255 }
250 256
251 void SkiaTextRenderer::SetShader(sk_sp<SkShader> shader) { 257 void SkiaTextRenderer::SetShader(sk_sp<SkShader> shader) {
252 paint_.setShader(std::move(shader)); 258 paint_.setShader(cc::WrapSkShader(std::move(shader)));
253 } 259 }
254 260
255 void SkiaTextRenderer::SetHaloEffect() { 261 void SkiaTextRenderer::SetHaloEffect() {
256 paint_.setImageFilter(SkDilateImageFilter::Make(1, 1, nullptr)); 262 paint_.setImageFilter(SkDilateImageFilter::Make(1, 1, nullptr));
257 } 263 }
258 264
259 void SkiaTextRenderer::SetUnderlineMetrics(SkScalar thickness, 265 void SkiaTextRenderer::SetUnderlineMetrics(SkScalar thickness,
260 SkScalar position) { 266 SkScalar position) {
261 underline_thickness_ = thickness; 267 underline_thickness_ = thickness;
262 underline_position_ = position; 268 underline_position_ = position;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 const SkScalar height = SkScalarMul(text_size, kLineThickness); 315 const SkScalar height = SkScalarMul(text_size, kLineThickness);
310 const SkScalar offset = SkScalarMulAdd(text_size, kStrikeThroughOffset, y); 316 const SkScalar offset = SkScalarMulAdd(text_size, kStrikeThroughOffset, y);
311 SkScalar x_scalar = SkIntToScalar(x); 317 SkScalar x_scalar = SkIntToScalar(x);
312 const SkRect r = 318 const SkRect r =
313 SkRect::MakeLTRB(x_scalar, offset, x_scalar + width, offset + height); 319 SkRect::MakeLTRB(x_scalar, offset, x_scalar + width, offset + height);
314 canvas_skia_->drawRect(r, paint_); 320 canvas_skia_->drawRect(r, paint_);
315 } 321 }
316 322
317 SkiaTextRenderer::DiagonalStrike::DiagonalStrike(Canvas* canvas, 323 SkiaTextRenderer::DiagonalStrike::DiagonalStrike(Canvas* canvas,
318 Point start, 324 Point start,
319 const SkPaint& paint) 325 const cc::PaintFlags& paint)
320 : canvas_(canvas), 326 : canvas_(canvas), start_(start), paint_(paint), total_length_(0) {}
321 start_(start),
322 paint_(paint),
323 total_length_(0) {
324 }
325 327
326 SkiaTextRenderer::DiagonalStrike::~DiagonalStrike() { 328 SkiaTextRenderer::DiagonalStrike::~DiagonalStrike() {
327 } 329 }
328 330
329 void SkiaTextRenderer::DiagonalStrike::AddPiece(int length, SkColor color) { 331 void SkiaTextRenderer::DiagonalStrike::AddPiece(int length, SkColor color) {
330 pieces_.push_back(Piece(length, color)); 332 pieces_.push_back(Piece(length, color));
331 total_length_ += length; 333 total_length_ += length;
332 } 334 }
333 335
334 void SkiaTextRenderer::DiagonalStrike::Draw() { 336 void SkiaTextRenderer::DiagonalStrike::Draw() {
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
403 LineSegment::~LineSegment() {} 405 LineSegment::~LineSegment() {}
404 406
405 Line::Line() : preceding_heights(0), baseline(0) {} 407 Line::Line() : preceding_heights(0), baseline(0) {}
406 408
407 Line::Line(const Line& other) = default; 409 Line::Line(const Line& other) = default;
408 410
409 Line::~Line() {} 411 Line::~Line() {}
410 412
411 void ApplyRenderParams(const FontRenderParams& params, 413 void ApplyRenderParams(const FontRenderParams& params,
412 bool subpixel_rendering_suppressed, 414 bool subpixel_rendering_suppressed,
413 SkPaint* paint) { 415 cc::PaintFlags* paint) {
414 paint->setAntiAlias(params.antialiasing); 416 paint->setAntiAlias(params.antialiasing);
415 paint->setLCDRenderText(!subpixel_rendering_suppressed && 417 paint->setLCDRenderText(!subpixel_rendering_suppressed &&
416 params.subpixel_rendering != FontRenderParams::SUBPIXEL_RENDERING_NONE); 418 params.subpixel_rendering != FontRenderParams::SUBPIXEL_RENDERING_NONE);
417 paint->setSubpixelText(params.subpixel_positioning); 419 paint->setSubpixelText(params.subpixel_positioning);
418 paint->setAutohinted(params.autohinter); 420 paint->setAutohinted(params.autohinter);
419 paint->setHinting(FontRenderParamsHintingToSkPaintHinting(params.hinting)); 421 paint->setHinting(FontRenderParamsHintingToPaintFlagsHinting(params.hinting));
420 } 422 }
421 423
422 } // namespace internal 424 } // namespace internal
423 425
424 // static 426 // static
425 constexpr base::char16 RenderText::kPasswordReplacementChar; 427 constexpr base::char16 RenderText::kPasswordReplacementChar;
426 constexpr bool RenderText::kDragToEndIfOutsideVerticalBounds; 428 constexpr bool RenderText::kDragToEndIfOutsideVerticalBounds;
427 429
428 RenderText::~RenderText() { 430 RenderText::~RenderText() {
429 } 431 }
(...skipping 1280 matching lines...) Expand 10 before | Expand all | Expand 10 after
1710 1712
1711 for (; range_max < length; ++range_max) 1713 for (; range_max < length; ++range_max)
1712 if (iter.IsEndOfWord(range_max) || iter.IsStartOfWord(range_max)) 1714 if (iter.IsEndOfWord(range_max) || iter.IsStartOfWord(range_max))
1713 break; 1715 break;
1714 1716
1715 return range.is_reversed() ? Range(range_max, range_min) 1717 return range.is_reversed() ? Range(range_max, range_min)
1716 : Range(range_min, range_max); 1718 : Range(range_min, range_max);
1717 } 1719 }
1718 1720
1719 } // namespace gfx 1721 } // namespace gfx
OLDNEW
« ui/gfx/canvas_paint_mac.mm ('K') | « ui/gfx/render_text.h ('k') | ui/gfx/skia_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698