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

Unified Diff: ui/gfx/render_text.cc

Issue 312233003: Add fade eliding for Views Labels; related cleanup. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Refine alignment check; minor additional cleanup. Created 6 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/gfx/render_text.h ('k') | ui/gfx/render_text_unittest.cc » ('j') | 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 50ef6440e33fbfe8048b1cedb210c8cb40d9eb20..72a8c7ab1f828c5010180b47cd4bd515ce0a2e78 100644
--- a/ui/gfx/render_text.cc
+++ b/ui/gfx/render_text.cc
@@ -78,11 +78,11 @@ int DetermineBaselineCenteringText(const Rect& display_rect,
return baseline + std::max(min_shift, std::min(max_shift, baseline_shift));
}
-// Converts |gfx::Font::FontStyle| flags to |SkTypeface::Style| flags.
+// Converts |Font::FontStyle| flags to |SkTypeface::Style| flags.
SkTypeface::Style ConvertFontStyleToSkiaTypefaceStyle(int font_style) {
int skia_style = SkTypeface::kNormal;
- skia_style |= (font_style & gfx::Font::BOLD) ? SkTypeface::kBold : 0;
- skia_style |= (font_style & gfx::Font::ITALIC) ? SkTypeface::kItalic : 0;
+ skia_style |= (font_style & Font::BOLD) ? SkTypeface::kBold : 0;
+ skia_style |= (font_style & Font::ITALIC) ? SkTypeface::kItalic : 0;
return static_cast<SkTypeface::Style>(skia_style);
}
@@ -229,7 +229,7 @@ void SkiaTextRenderer::SetFontFamilyWithStyle(const std::string& family,
// Enable fake bold text if bold style is needed but new typeface does not
// have it.
- paint_.setFakeBoldText((style & gfx::Font::BOLD) && !typeface->isBold());
+ paint_.setFakeBoldText((style & Font::BOLD) && !typeface->isBold());
}
}
@@ -509,7 +509,7 @@ void RenderText::SetDisplayRect(const Rect& r) {
baseline_ = kInvalidBaseline;
cached_bounds_and_offset_valid_ = false;
lines_.clear();
- if (elide_behavior_ != gfx::NO_ELIDE)
+ if (elide_behavior_ != TRUNCATE)
UpdateLayoutText();
}
}
@@ -890,10 +890,8 @@ RenderText::RenderText()
obscured_(false),
obscured_reveal_index_(-1),
truncate_length_(0),
- elide_behavior_(NO_ELIDE),
+ elide_behavior_(TRUNCATE),
multiline_(false),
- fade_head_(false),
- fade_tail_(false),
background_is_transparent_(false),
clip_to_display_rect_(true),
baseline_(kInvalidBaseline),
@@ -1074,37 +1072,23 @@ Vector2d RenderText::GetAlignmentOffset(size_t line_number) {
}
void RenderText::ApplyFadeEffects(internal::SkiaTextRenderer* renderer) {
- if (multiline() || (!fade_head() && !fade_tail()))
+ const int width = display_rect().width();
+ if (multiline() || elide_behavior_ != FADE_TAIL || GetContentWidth() <= width)
return;
- const int display_width = display_rect().width();
-
- // If the text fits as-is, no need to fade.
- if (GetStringSize().width() <= display_width)
- return;
-
- int gradient_width = CalculateFadeGradientWidth(font_list(), display_width);
+ const int gradient_width = CalculateFadeGradientWidth(font_list(), width);
if (gradient_width == 0)
return;
- bool fade_left = fade_head();
- bool fade_right = fade_tail();
- // Under RTL, |fade_right| == |fade_head|.
- // TODO(asvitkine): This is currently not based on GetTextDirection() because
- // RenderTextWin does not return a direction that's based on
- // the text content.
- if (horizontal_alignment_ == ALIGN_RIGHT)
- std::swap(fade_left, fade_right);
-
Rect solid_part = display_rect();
Rect left_part;
Rect right_part;
- if (fade_left) {
+ if (horizontal_alignment_ != ALIGN_LEFT) {
left_part = solid_part;
left_part.Inset(0, 0, solid_part.width() - gradient_width, 0);
solid_part.Inset(gradient_width, 0, 0, 0);
}
- if (fade_right) {
+ if (horizontal_alignment_ != ALIGN_RIGHT) {
right_part = solid_part;
right_part.Inset(solid_part.width() - gradient_width, 0, 0, 0);
solid_part.Inset(0, 0, gradient_width, 0);
@@ -1149,7 +1133,7 @@ void RenderText::UpdateLayoutText() {
if (obscured_) {
size_t obscured_text_length =
- static_cast<size_t>(gfx::UTF16IndexToOffset(text_, 0, text_.length()));
+ static_cast<size_t>(UTF16IndexToOffset(text_, 0, text_.length()));
layout_text_.assign(obscured_text_length, kPasswordReplacementChar);
if (obscured_reveal_index_ >= 0 &&
@@ -1163,7 +1147,7 @@ void RenderText::UpdateLayoutText() {
// Gets the index in |layout_text_| to be replaced.
const size_t cp_start =
- static_cast<size_t>(gfx::UTF16IndexToOffset(text_, 0, start));
+ static_cast<size_t>(UTF16IndexToOffset(text_, 0, start));
if (layout_text_.length() > cp_start)
layout_text_.replace(cp_start, 1, text_.substr(start, end - start));
}
@@ -1176,11 +1160,12 @@ void RenderText::UpdateLayoutText() {
// Truncate the text at a valid character break and append an ellipsis.
icu::StringCharacterIterator iter(text.c_str());
iter.setIndex32(truncate_length_ - 1);
- layout_text_.assign(text.substr(0, iter.getIndex()) + gfx::kEllipsisUTF16);
+ layout_text_.assign(text.substr(0, iter.getIndex()) + kEllipsisUTF16);
}
- if (elide_behavior_ != NO_ELIDE && display_rect_.width() > 0 &&
- !layout_text_.empty() && GetContentWidth() > display_rect_.width()) {
+ if (elide_behavior_ != TRUNCATE && elide_behavior_ != FADE_TAIL &&
+ display_rect_.width() > 0 && !layout_text_.empty() &&
+ GetContentWidth() > display_rect_.width()) {
// This doesn't trim styles so ellipsis may get rendered as a different
// style than the preceding text. See crbug.com/327850.
layout_text_.assign(ElideText(layout_text_));
@@ -1192,7 +1177,7 @@ void RenderText::UpdateLayoutText() {
// TODO(skanuj): Fix code duplication with ElideText in ui/gfx/text_elider.cc
// See crbug.com/327846
base::string16 RenderText::ElideText(const base::string16& text) {
- const bool insert_ellipsis = (elide_behavior_ != TRUNCATE_AT_END);
+ const bool insert_ellipsis = (elide_behavior_ != TRUNCATE);
// Create a RenderText copy with attributes that affect the rendering width.
scoped_ptr<RenderText> render_text(CreateInstance());
render_text->SetFontList(font_list_);
@@ -1204,7 +1189,7 @@ base::string16 RenderText::ElideText(const base::string16& text) {
render_text->SetText(text);
const int current_text_pixel_width = render_text->GetContentWidth();
- const base::string16 ellipsis = base::string16(gfx::kEllipsisUTF16);
+ const base::string16 ellipsis = base::string16(kEllipsisUTF16);
const bool elide_in_middle = false;
const bool elide_at_beginning = false;
StringSlicer slicer(text, ellipsis, elide_in_middle, elide_at_beginning);
« no previous file with comments | « ui/gfx/render_text.h ('k') | ui/gfx/render_text_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698