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

Unified Diff: ui/gfx/render_text.cc

Issue 1493713002: Adjust text fade width and alpha (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/gfx/render_text.cc
diff --git a/ui/gfx/render_text.cc b/ui/gfx/render_text.cc
index 27c9e5ada81279d215723897c8cafe6b79820023..8507d34b547a035e3a3677da91bdaf2dc17ca48b 100644
--- a/ui/gfx/render_text.cc
+++ b/ui/gfx/render_text.cc
@@ -95,12 +95,12 @@ SkTypeface::Style ConvertFontStyleToSkiaTypefaceStyle(int font_style) {
// Given |font| and |display_width|, returns the width of the fade gradient.
int CalculateFadeGradientWidth(const FontList& font_list, int display_width) {
- // Fade in/out about 2.5 characters of the beginning/end of the string.
+ // Fade in/out about 3 characters of the beginning/end of the string.
// The .5 here is helpful if one of the characters is a space.
- // Use a quarter of the display width if the display width is very short.
+ // Use a 1/3 of the display width if the display width is very short.
const int average_character_width = font_list.GetExpectedTextWidth(1);
Peter Kasting 2015/12/03 05:29:25 While here: Instead of getting the width of 1 char
Tomasz Moniuszko 2015/12/03 11:18:42 Done.
- const double gradient_width = std::min(average_character_width * 2.5,
- display_width / 4.0);
+ const double gradient_width =
+ std::min(average_character_width * 3.0, display_width / 3.0);
DCHECK_GE(gradient_width, 0.0);
return static_cast<int>(floor(gradient_width + 0.5));
Peter Kasting 2015/12/03 05:29:25 Nit: For now, define a round() helper in this file
Tomasz Moniuszko 2015/12/03 11:18:42 Done.
}
@@ -130,12 +130,21 @@ void AddFadeEffect(const Rect& text_rect,
// Creates a SkShader to fade the text, with |left_part| specifying the left
// fade effect, if any, and |right_part| specifying the right fade effect.
-skia::RefPtr<SkShader> CreateFadeShader(const Rect& text_rect,
+skia::RefPtr<SkShader> CreateFadeShader(const FontList& font_list,
+ const Rect& text_rect,
const Rect& left_part,
const Rect& right_part,
SkColor color) {
- // Fade alpha of 51/255 corresponds to a fade of 0.2 of the original color.
- const SkColor fade_color = SkColorSetA(color, 51);
+ // Use 0 fade target alpha. But if text is narrow (less than 4 average
+ // characters) linearly increase fade target alpha up to 51/255 what
+ // corresponds to a fade of 0.2 of the original color.
+ const int average_character_width = font_list.GetExpectedTextWidth(1);
+ int alpha =
+ text_rect.width() > 4 * average_character_width
+ ? 0
+ : static_cast<int>(
+ 51 * (1 - text_rect.width() / (4.0 * average_character_width)));
+ const SkColor fade_color = SkColorSetA(color, alpha);
Peter Kasting 2015/12/03 05:29:25 How about this: // In general, fade down to 0 a
Tomasz Moniuszko 2015/12/03 11:18:42 Done.
std::vector<SkScalar> positions;
std::vector<SkColor> colors;
@@ -1209,8 +1218,9 @@ void RenderText::ApplyFadeEffects(internal::SkiaTextRenderer* renderer) {
text_rect.Inset(GetAlignmentOffset(0).x(), 0, 0, 0);
// TODO(msw): Use the actual text colors corresponding to each faded part.
- skia::RefPtr<SkShader> shader = CreateFadeShader(
- text_rect, left_part, right_part, colors_.breaks().front().second);
+ skia::RefPtr<SkShader> shader =
+ CreateFadeShader(font_list(), text_rect, left_part, right_part,
+ colors_.breaks().front().second);
if (shader)
renderer->SetShader(shader.get());
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698