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

Unified Diff: ui/views/examples/text_example.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/views/examples/label_example.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/views/examples/text_example.cc
diff --git a/ui/views/examples/text_example.cc b/ui/views/examples/text_example.cc
index d4055009dcf40b99e232665efdb5cb95cb77fc2f..2682e73bd1400275365bef430fc41946803d1a2b 100644
--- a/ui/views/examples/text_example.cc
+++ b/ui/views/examples/text_example.cc
@@ -16,8 +16,6 @@
#include "ui/views/layout/grid_layout.h"
#include "ui/views/view.h"
-using base::ASCIIToUTF16;
-
namespace views {
namespace examples {
@@ -26,48 +24,31 @@ namespace {
// Number of columns in the view layout.
const int kNumColumns = 10;
-const char kShortText[] = "Batman";
-const char kMediumText[] = "The quick brown fox jumps over the lazy dog.";
+const char kShortText[] = "The quick brown fox jumps over the lazy dog.";
const char kLongText[] =
"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod "
"tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim "
"veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea "
- "commodo consequat. Duis aute irure dolor in reprehenderit in voluptate "
- "velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint "
+ "commodo consequat.\nDuis aute irure dolor in reprehenderit in voluptate "
+ "velit esse cillum dolore eu fugiat nulla pariatur.\n\nExcepteur sint "
"occaecat cupidatat non proident, sunt in culpa qui officia deserunt "
"mollit anim id est laborum.";
const char kAmpersandText[] =
"The quick && &brown fo&x jumps over the lazy dog.";
-const char kNewlineText[] =
- "The quick \nbrown fox jumps\n\n over the lazy dog.";
-
-const char* kTextExamples[] = {
- "Short",
- "Medium",
- "Long",
- "Ampersands",
- "Newlines",
-};
-
-const char* kElidingBehaviors[] = {
- "Ellipsis",
- "None",
- "Fade Tail",
- "Fade Head",
-};
-
-const char* kPrefixOptions[] = {
- "Default",
- "Show",
- "Hide",
-};
-
-const char* kHorizontalAligments[] = {
- "Default",
- "Left",
- "Center",
- "Right",
-};
+const wchar_t kRightToLeftText[] =
+ L"\x5e9\x5dc\x5d5\x5dd \x5d4\x5e2\x5d5\x5dc\x5dd! "
+ L"\x5e9\x5dc\x5d5\x5dd \x5d4\x5e2\x5d5\x5dc\x5dd! "
+ L"\x5e9\x5dc\x5d5\x5dd \x5d4\x5e2\x5d5\x5dc\x5dd! "
+ L"\x5e9\x5dc\x5d5\x5dd \x5d4\x5e2\x5d5\x5dc\x5dd! "
+ L"\x5e9\x5dc\x5d5\x5dd \x5d4\x5e2\x5d5\x5dc\x5dd! "
+ L"\x5e9\x5dc\x5d5\x5dd \x5d4\x5e2\x5d5\x5dc\x5dd! "
+ L"\x5e9\x5dc\x5d5\x5dd \x5d4\x5e2\x5d5\x5dc\x5dd! "
+ L"\x5e9\x5dc\x5d5\x5dd \x5d4\x5e2\x5d5\x5dc\x5dd!";
+
+const char* kTextExamples[] = { "Short", "Long", "Ampersands", "RTL Hebrew", };
+const char* kElideBehaviors[] = { "Elide", "Truncate", "Fade", };
+const char* kPrefixOptions[] = { "Default", "Show", "Hide", };
+const char* kHorizontalAligments[] = { "Default", "Left", "Center", "Right", };
// Toggles bit |flag| on |flags| based on state of |checkbox|.
void SetFlagFromCheckbox(Checkbox* checkbox, int* flags, int flag) {
@@ -79,55 +60,38 @@ void SetFlagFromCheckbox(Checkbox* checkbox, int* flags, int flag) {
} // namespace
-// TextExample's content view, which is responsible for drawing a string with
-// the specified style.
+// TextExample's content view, which draws stylized string.
class TextExample::TextExampleView : public View {
public:
TextExampleView()
- : text_(ASCIIToUTF16(kShortText)),
- text_flags_(0),
+ : text_(base::ASCIIToUTF16(kShortText)),
+ flags_(0),
halo_(false),
- fade_(false),
- fade_mode_(gfx::Canvas::TruncateFadeTail) {
+ elide_(gfx::TRUNCATE) {
}
virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE {
View::OnPaint(canvas);
const gfx::Rect bounds = GetContentsBounds();
-
- if (fade_) {
- canvas->DrawFadeTruncatingStringRect(text_, fade_mode_, font_list_,
- SK_ColorDKGRAY, bounds);
+ const SkColor color = SK_ColorDKGRAY;
+ if (elide_ == gfx::FADE_TAIL) {
+ canvas->DrawFadedString(text_, font_list_, color, bounds, flags_);
} else if (halo_) {
- canvas->DrawStringRectWithHalo(text_, font_list_, SK_ColorDKGRAY,
- SK_ColorWHITE, bounds, text_flags_);
+ canvas->DrawStringRectWithHalo(text_, font_list_, color, SK_ColorYELLOW,
+ bounds, flags_);
} else {
- canvas->DrawStringRectWithFlags(text_, font_list_, SK_ColorDKGRAY, bounds,
- text_flags_);
+ canvas->DrawStringRectWithFlags(text_, font_list_, color, bounds, flags_);
}
}
- int text_flags() const { return text_flags_; }
- void set_text_flags(int text_flags) { text_flags_ = text_flags; }
-
- const base::string16& text() const { return text_; }
+ int flags() const { return flags_; }
+ void set_flags(int flags) { flags_ = flags; }
void set_text(const base::string16& text) { text_ = text; }
-
- bool halo() const { return halo_; }
void set_halo(bool halo) { halo_ = halo; }
+ void set_elide(gfx::ElideBehavior elide) { elide_ = elide; }
- bool fade() const { return fade_; }
- void set_fade(bool fade) { fade_ = fade; }
-
- gfx::Canvas::TruncateFadeMode fade_mode() const { return fade_mode_; }
- void set_fade_mode(gfx::Canvas::TruncateFadeMode mode) { fade_mode_ = mode; }
-
- int GetFontStyle() const {
- return font_list_.GetFontStyle();
- }
- void SetFontStyle(int style) {
- font_list_ = font_list_.DeriveWithStyle(style);
- }
+ int GetStyle() const { return font_list_.GetFontStyle(); }
+ void SetStyle(int style) { font_list_ = font_list_.DeriveWithStyle(style); }
private:
// The font used for drawing the text.
@@ -137,33 +101,26 @@ class TextExample::TextExampleView : public View {
base::string16 text_;
// Text flags for passing to |DrawStringRect()|.
- int text_flags_;
+ int flags_;
- // If |true|, specifies to call |DrawStringWithHalo()| instead of
- // |DrawStringRect()|.
+ // A flag to draw a halo around the text.
bool halo_;
- // If |true|, specifies to call |DrawFadeTruncatingString()| instead of
- // |DrawStringRect()|.
- bool fade_;
-
- // If |fade_| is |true|, fade mode parameter to |DrawFadeTruncatingString()|.
- gfx::Canvas::TruncateFadeMode fade_mode_;
+ // The eliding, fading, or truncating behavior.
+ gfx::ElideBehavior elide_;
DISALLOW_COPY_AND_ASSIGN(TextExampleView);
};
-TextExample::TextExample() : ExampleBase("Text Styles") {
-}
+TextExample::TextExample() : ExampleBase("Text Styles") {}
TextExample::~TextExample() {
- // Remove all the views first as some reference models in
- // |example_combobox_model_|.
+ // Remove the views first as some reference combobox models.
container()->RemoveAllChildViews(true);
}
Checkbox* TextExample::AddCheckbox(GridLayout* layout, const char* name) {
- Checkbox* checkbox = new Checkbox(ASCIIToUTF16(name));
+ Checkbox* checkbox = new Checkbox(base::ASCIIToUTF16(name));
checkbox->set_listener(this);
layout->AddView(checkbox);
return checkbox;
@@ -174,11 +131,10 @@ Combobox* TextExample::AddCombobox(GridLayout* layout,
const char** strings,
int count) {
layout->StartRow(0, 0);
- layout->AddView(new Label(ASCIIToUTF16(name)));
- ExampleComboboxModel* combobox_model = new ExampleComboboxModel(strings,
- count);
- example_combobox_model_.push_back(combobox_model);
- Combobox* combobox = new Combobox(combobox_model);
+ layout->AddView(new Label(base::ASCIIToUTF16(name)));
+ ExampleComboboxModel* model = new ExampleComboboxModel(strings, count);
+ example_combobox_model_.push_back(model);
+ Combobox* combobox = new Combobox(model);
combobox->SetSelectedIndex(0);
combobox->set_listener(this);
layout->AddView(combobox, kNumColumns - 1, 1);
@@ -188,10 +144,8 @@ Combobox* TextExample::AddCombobox(GridLayout* layout,
void TextExample::CreateExampleView(View* container) {
text_view_ = new TextExampleView;
text_view_->SetBorder(Border::CreateSolidBorder(1, SK_ColorGRAY));
-
GridLayout* layout = new GridLayout(container);
container->SetLayoutManager(layout);
-
layout->AddPaddingRow(0, 8);
ColumnSet* column_set = layout->AddColumnSet(0);
@@ -203,33 +157,24 @@ void TextExample::CreateExampleView(View* container) {
0.1f, GridLayout::USE_PREF, 0, 0);
column_set->AddPaddingColumn(0, 8);
- h_align_cb_ = AddCombobox(layout,
- "H-Align",
- kHorizontalAligments,
+ h_align_cb_ = AddCombobox(layout, "H-Align", kHorizontalAligments,
arraysize(kHorizontalAligments));
- eliding_cb_ = AddCombobox(layout,
- "Eliding",
- kElidingBehaviors,
- arraysize(kElidingBehaviors));
- prefix_cb_ = AddCombobox(layout,
- "Prefix",
- kPrefixOptions,
+ eliding_cb_ = AddCombobox(layout, "Eliding", kElideBehaviors,
+ arraysize(kElideBehaviors));
+ prefix_cb_ = AddCombobox(layout, "Prefix", kPrefixOptions,
arraysize(kPrefixOptions));
- text_cb_ = AddCombobox(layout,
- "Example Text",
- kTextExamples,
+ text_cb_ = AddCombobox(layout, "Example Text", kTextExamples,
arraysize(kTextExamples));
layout->StartRow(0, 0);
multiline_checkbox_ = AddCheckbox(layout, "Multiline");
break_checkbox_ = AddCheckbox(layout, "Character Break");
- halo_checkbox_ = AddCheckbox(layout, "Text Halo");
+ halo_checkbox_ = AddCheckbox(layout, "Halo");
bold_checkbox_ = AddCheckbox(layout, "Bold");
italic_checkbox_ = AddCheckbox(layout, "Italic");
underline_checkbox_ = AddCheckbox(layout, "Underline");
- layout->AddPaddingRow(0, 32);
-
+ layout->AddPaddingRow(0, 20);
column_set = layout->AddColumnSet(1);
column_set->AddPaddingColumn(0, 16);
column_set->AddColumn(GridLayout::FILL, GridLayout::FILL,
@@ -237,94 +182,83 @@ void TextExample::CreateExampleView(View* container) {
column_set->AddPaddingColumn(0, 16);
layout->StartRow(1, 1);
layout->AddView(text_view_);
-
layout->AddPaddingRow(0, 8);
}
void TextExample::ButtonPressed(Button* button, const ui::Event& event) {
- int flags = text_view_->text_flags();
- int style = text_view_->GetFontStyle();
+ int flags = text_view_->flags();
+ int style = text_view_->GetStyle();
SetFlagFromCheckbox(multiline_checkbox_, &flags, gfx::Canvas::MULTI_LINE);
SetFlagFromCheckbox(break_checkbox_, &flags, gfx::Canvas::CHARACTER_BREAK);
SetFlagFromCheckbox(bold_checkbox_, &style, gfx::Font::BOLD);
SetFlagFromCheckbox(italic_checkbox_, &style, gfx::Font::ITALIC);
SetFlagFromCheckbox(underline_checkbox_, &style, gfx::Font::UNDERLINE);
text_view_->set_halo(halo_checkbox_->checked());
- text_view_->set_text_flags(flags);
- text_view_->SetFontStyle(style);
+ text_view_->set_flags(flags);
+ text_view_->SetStyle(style);
text_view_->SchedulePaint();
}
void TextExample::OnPerformAction(Combobox* combobox) {
- int text_flags = text_view_->text_flags();
+ int flags = text_view_->flags();
if (combobox == h_align_cb_) {
- text_flags &= ~(gfx::Canvas::TEXT_ALIGN_LEFT |
- gfx::Canvas::TEXT_ALIGN_CENTER |
- gfx::Canvas::TEXT_ALIGN_RIGHT);
+ flags &= ~(gfx::Canvas::TEXT_ALIGN_LEFT |
+ gfx::Canvas::TEXT_ALIGN_CENTER |
+ gfx::Canvas::TEXT_ALIGN_RIGHT);
switch (combobox->selected_index()) {
case 0:
break;
case 1:
- text_flags |= gfx::Canvas::TEXT_ALIGN_LEFT;
+ flags |= gfx::Canvas::TEXT_ALIGN_LEFT;
break;
case 2:
- text_flags |= gfx::Canvas::TEXT_ALIGN_CENTER;
+ flags |= gfx::Canvas::TEXT_ALIGN_CENTER;
break;
case 3:
- text_flags |= gfx::Canvas::TEXT_ALIGN_RIGHT;
+ flags |= gfx::Canvas::TEXT_ALIGN_RIGHT;
break;
}
} else if (combobox == text_cb_) {
switch (combobox->selected_index()) {
case 0:
- text_view_->set_text(ASCIIToUTF16(kShortText));
+ text_view_->set_text(base::ASCIIToUTF16(kShortText));
break;
case 1:
- text_view_->set_text(ASCIIToUTF16(kMediumText));
+ text_view_->set_text(base::ASCIIToUTF16(kLongText));
break;
case 2:
- text_view_->set_text(ASCIIToUTF16(kLongText));
+ text_view_->set_text(base::ASCIIToUTF16(kAmpersandText));
break;
case 3:
- text_view_->set_text(ASCIIToUTF16(kAmpersandText));
- break;
- case 4:
- text_view_->set_text(ASCIIToUTF16(kNewlineText));
+ text_view_->set_text(base::WideToUTF16(kRightToLeftText));
break;
}
} else if (combobox == eliding_cb_) {
switch (combobox->selected_index()) {
case 0:
- text_flags &= ~gfx::Canvas::NO_ELLIPSIS;
- text_view_->set_fade(false);
+ text_view_->set_elide(gfx::ELIDE_TAIL);
break;
case 1:
- text_flags |= gfx::Canvas::NO_ELLIPSIS;
- text_view_->set_fade(false);
+ text_view_->set_elide(gfx::TRUNCATE);
break;
case 2:
- text_view_->set_fade_mode(gfx::Canvas::TruncateFadeTail);
- text_view_->set_fade(true);
- break;
- case 3:
- text_view_->set_fade_mode(gfx::Canvas::TruncateFadeHead);
- text_view_->set_fade(true);
+ text_view_->set_elide(gfx::FADE_TAIL);
break;
}
} else if (combobox == prefix_cb_) {
- text_flags &= ~(gfx::Canvas::SHOW_PREFIX | gfx::Canvas::HIDE_PREFIX);
+ flags &= ~(gfx::Canvas::SHOW_PREFIX | gfx::Canvas::HIDE_PREFIX);
switch (combobox->selected_index()) {
case 0:
break;
case 1:
- text_flags |= gfx::Canvas::SHOW_PREFIX;
+ flags |= gfx::Canvas::SHOW_PREFIX;
break;
case 2:
- text_flags |= gfx::Canvas::HIDE_PREFIX;
+ flags |= gfx::Canvas::HIDE_PREFIX;
break;
}
}
- text_view_->set_text_flags(text_flags);
+ text_view_->set_flags(flags);
text_view_->SchedulePaint();
}
« no previous file with comments | « ui/views/examples/label_example.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698