diff options
author | asvitkine@chromium.org <asvitkine@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-16 20:05:58 +0000 |
---|---|---|
committer | asvitkine@chromium.org <asvitkine@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-16 20:05:58 +0000 |
commit | fd2cb1ee5a61202cc79851b2a90b81de69a2d423 (patch) | |
tree | 7c4315943070f9ea94478daa9375813a5a2d1a73 /ui/views/examples/text_example.cc | |
parent | 9430a0e2b607d8a66c86f0ff14ec67db39a32649 (diff) | |
download | chromium_src-fd2cb1ee5a61202cc79851b2a90b81de69a2d423.zip chromium_src-fd2cb1ee5a61202cc79851b2a90b81de69a2d423.tar.gz chromium_src-fd2cb1ee5a61202cc79851b2a90b81de69a2d423.tar.bz2 |
Add more text styles to Text Styles example in views_examples.
BUG=105550
TEST=Launch views_examples_exe and try the new checkboxes.
Review URL: http://codereview.chromium.org/8970026
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@114842 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/views/examples/text_example.cc')
-rw-r--r-- | ui/views/examples/text_example.cc | 83 |
1 files changed, 59 insertions, 24 deletions
diff --git a/ui/views/examples/text_example.cc b/ui/views/examples/text_example.cc index c167d00..ba435fd 100644 --- a/ui/views/examples/text_example.cc +++ b/ui/views/examples/text_example.cc @@ -17,6 +17,9 @@ 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 kLongText[] = @@ -67,6 +70,14 @@ const char* kVerticalAlignments[] = { "Bottom", }; +// Toggles bit |flag| on |flags| based on state of |checkbox|. +void SetFlagFromCheckbox(views::Checkbox* checkbox, int* flags, int flag) { + if (checkbox->checked()) + *flags |= flag; + else + *flags &= ~flag; +} + } // namespace namespace views { @@ -97,8 +108,13 @@ class TextExample::TextExampleView : public View { } #endif - canvas->DrawStringInt(text_, font_, SK_ColorDKGRAY, - 0, 0, width(), height(), text_flags_); + if (halo_) { + canvas->AsCanvasSkia()->DrawStringWithHalo(text_, font_, SK_ColorDKGRAY, + SK_ColorWHITE, 0, 0, width(), height(), text_flags_); + } else { + canvas->DrawStringInt(text_, font_, SK_ColorDKGRAY, 0, 0, width(), + height(), text_flags_); + } } int text_flags() const { return text_flags_; } @@ -107,6 +123,9 @@ class TextExample::TextExampleView : public View { const string16& text() const { return text_; } void set_text(const string16& text) { text_ = text; } + bool halo() const { return halo_; } + void set_halo(bool halo) { halo_ = halo; } + bool fade() const { return fade_; } void set_fade(bool fade) { fade_ = fade; } @@ -115,6 +134,13 @@ class TextExample::TextExampleView : public View { fade_mode_ = fade_mode; } + int GetFontStyle() const { + return font_.GetStyle(); + } + void SetFontStyle(int style) { + font_ = font_.DeriveFont(0, style); + } + private: // The font used for drawing the text. gfx::Font font_; @@ -125,6 +151,10 @@ class TextExample::TextExampleView : public View { // Text flags for passing to |DrawStringInt()|. int text_flags_; + // If |true|, specifies to call |DrawStringWithHalo()| instead of + // |DrawStringInt()|. + bool halo_; + // If |true|, specifies to call |DrawFadeTruncatingString()| instead of // |DrawStringInt()|. bool fade_; @@ -141,6 +171,13 @@ TextExample::TextExample() : ExampleBase("Text Styles") { TextExample::~TextExample() { } +Checkbox* TextExample::AddCheckbox(GridLayout* layout, const char* name) { + Checkbox* checkbox = new Checkbox(ASCIIToUTF16(name)); + checkbox->set_listener(this); + layout->AddView(checkbox); + return checkbox; +} + Combobox* TextExample::AddCombobox(GridLayout* layout, const char* name, const char** strings, @@ -150,7 +187,7 @@ Combobox* TextExample::AddCombobox(GridLayout* layout, Combobox* combo_box = new Combobox(new ExampleComboboxModel(strings, count)); combo_box->SetSelectedItem(0); combo_box->set_listener(this); - layout->AddView(combo_box); + layout->AddView(combo_box, kNumColumns - 1, 1); return combo_box; } @@ -166,8 +203,9 @@ void TextExample::CreateExampleView(View* container) { column_set->AddPaddingColumn(0, 8); column_set->AddColumn(GridLayout::LEADING, GridLayout::FILL, 0.1f, GridLayout::USE_PREF, 0, 0); - column_set->AddColumn(GridLayout::FILL, GridLayout::FILL, - 0.9f, GridLayout::USE_PREF, 0, 0); + for (int i = 0; i < kNumColumns - 1; i++) + column_set->AddColumn(GridLayout::FILL, GridLayout::FILL, + 0.1f, GridLayout::USE_PREF, 0, 0); column_set->AddPaddingColumn(0, 8); h_align_cb_ = AddCombobox(layout, @@ -192,12 +230,12 @@ void TextExample::CreateExampleView(View* container) { arraysize(kTextExamples)); layout->StartRow(0, 0); - multiline_checkbox_ = new Checkbox(ASCIIToUTF16("Multiline")); - multiline_checkbox_->set_listener(this); - layout->AddView(multiline_checkbox_); - break_checkbox_ = new Checkbox(ASCIIToUTF16("Character Break")); - break_checkbox_->set_listener(this); - layout->AddView(break_checkbox_); + multiline_checkbox_ = AddCheckbox(layout, "Multiline"); + break_checkbox_ = AddCheckbox(layout, "Character Break"); + halo_checkbox_ = AddCheckbox(layout, "Text Halo"); + bold_checkbox_ = AddCheckbox(layout, "Bold"); + italic_checkbox_ = AddCheckbox(layout, "Italic"); + underline_checkbox_ = AddCheckbox(layout, "Underline"); layout->AddPaddingRow(0, 32); @@ -214,19 +252,16 @@ void TextExample::CreateExampleView(View* container) { void TextExample::ButtonPressed(Button* button, const Event& event) { - int text_flags = text_view_->text_flags(); - if (button == multiline_checkbox_) { - if (multiline_checkbox_->checked()) - text_flags |= gfx::Canvas::MULTI_LINE; - else - text_flags &= ~gfx::Canvas::MULTI_LINE; - } else if (button == break_checkbox_) { - if (break_checkbox_->checked()) - text_flags |= gfx::Canvas::CHARACTER_BREAK; - else - text_flags &= ~gfx::Canvas::CHARACTER_BREAK; - } - text_view_->set_text_flags(text_flags); + int flags = text_view_->text_flags(); + int style = text_view_->GetFontStyle(); + 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::UNDERLINED); + text_view_->set_halo(halo_checkbox_->checked()); + text_view_->set_text_flags(flags); + text_view_->SetFontStyle(style); text_view_->SchedulePaint(); } |