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_win.h" | 5 #include "ui/gfx/render_text_win.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/i18n/break_iterator.h" | 9 #include "base/i18n/break_iterator.h" |
10 #include "base/i18n/char_iterator.h" | 10 #include "base/i18n/char_iterator.h" |
11 #include "base/i18n/rtl.h" | 11 #include "base/i18n/rtl.h" |
12 #include "base/logging.h" | 12 #include "base/logging.h" |
13 #include "base/strings/string_util.h" | 13 #include "base/strings/string_util.h" |
14 #include "base/strings/utf_string_conversions.h" | 14 #include "base/strings/utf_string_conversions.h" |
15 #include "base/win/windows_version.h" | 15 #include "base/win/windows_version.h" |
16 #include "third_party/icu/source/common/unicode/uchar.h" | 16 #include "third_party/icu/source/common/unicode/uchar.h" |
17 #include "ui/gfx/canvas.h" | 17 #include "ui/gfx/canvas.h" |
18 #include "ui/gfx/font_fallback_win.h" | 18 #include "ui/gfx/font_fallback_win.h" |
19 #include "ui/gfx/font_smoothing_win.h" | 19 #include "ui/gfx/font_render_params.h" |
20 #include "ui/gfx/platform_font_win.h" | 20 #include "ui/gfx/platform_font_win.h" |
21 #include "ui/gfx/utf16_indexing.h" | 21 #include "ui/gfx/utf16_indexing.h" |
22 | 22 |
23 namespace gfx { | 23 namespace gfx { |
24 | 24 |
25 namespace { | 25 namespace { |
26 | 26 |
27 // The maximum length of text supported for Uniscribe layout and display. | 27 // The maximum length of text supported for Uniscribe layout and display. |
28 // This empirically chosen value should prevent major performance degradations. | 28 // This empirically chosen value should prevent major performance degradations. |
29 // TODO(msw): Support longer text, partial layout/painting, etc. | 29 // TODO(msw): Support longer text, partial layout/painting, etc. |
(...skipping 772 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
802 void RenderTextWin::DrawVisualText(Canvas* canvas) { | 802 void RenderTextWin::DrawVisualText(Canvas* canvas) { |
803 DCHECK(!needs_layout_); | 803 DCHECK(!needs_layout_); |
804 DCHECK(!lines().empty()); | 804 DCHECK(!lines().empty()); |
805 | 805 |
806 std::vector<SkPoint> pos; | 806 std::vector<SkPoint> pos; |
807 | 807 |
808 internal::SkiaTextRenderer renderer(canvas); | 808 internal::SkiaTextRenderer renderer(canvas); |
809 ApplyFadeEffects(&renderer); | 809 ApplyFadeEffects(&renderer); |
810 ApplyTextShadows(&renderer); | 810 ApplyTextShadows(&renderer); |
811 | 811 |
812 bool smoothing_enabled; | 812 renderer.SetFontRenderParams(GetDefaultFontRenderParams(), |
813 bool cleartype_enabled; | 813 background_is_transparent()); |
814 GetCachedFontSmoothingSettings(&smoothing_enabled, &cleartype_enabled); | |
815 // Note that |cleartype_enabled| corresponds to Skia's |enable_lcd_text|. | |
816 renderer.SetFontSmoothingSettings( | |
817 smoothing_enabled, cleartype_enabled && !background_is_transparent(), | |
818 smoothing_enabled /* subpixel_positioning */); | |
819 | 814 |
820 ApplyCompositionAndSelectionStyles(); | 815 ApplyCompositionAndSelectionStyles(); |
821 | 816 |
822 for (size_t i = 0; i < lines().size(); ++i) { | 817 for (size_t i = 0; i < lines().size(); ++i) { |
823 const internal::Line& line = lines()[i]; | 818 const internal::Line& line = lines()[i]; |
824 const Vector2d line_offset = GetLineOffset(i); | 819 const Vector2d line_offset = GetLineOffset(i); |
825 | 820 |
826 // Skip painting empty lines or lines outside the display rect area. | 821 // Skip painting empty lines or lines outside the display rect area. |
827 if (!display_rect().Intersects(Rect(PointAtOffsetFromOrigin(line_offset), | 822 if (!display_rect().Intersects(Rect(PointAtOffsetFromOrigin(line_offset), |
828 line.size))) | 823 line.size))) |
(...skipping 451 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1280 size_t position = LayoutIndexToTextIndex(run->range.end()); | 1275 size_t position = LayoutIndexToTextIndex(run->range.end()); |
1281 position = IndexOfAdjacentGrapheme(position, CURSOR_BACKWARD); | 1276 position = IndexOfAdjacentGrapheme(position, CURSOR_BACKWARD); |
1282 return SelectionModel(position, CURSOR_FORWARD); | 1277 return SelectionModel(position, CURSOR_FORWARD); |
1283 } | 1278 } |
1284 | 1279 |
1285 RenderText* RenderText::CreateNativeInstance() { | 1280 RenderText* RenderText::CreateNativeInstance() { |
1286 return new RenderTextWin; | 1281 return new RenderTextWin; |
1287 } | 1282 } |
1288 | 1283 |
1289 } // namespace gfx | 1284 } // namespace gfx |
OLD | NEW |