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

Side by Side Diff: ui/views/examples/text_example.cc

Issue 2898613002: Revert of Support finer grained font weights on Mac. (Closed)
Patch Set: Created 3 years, 7 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 unified diff | Download patch
« no previous file with comments | « ui/views/examples/text_example.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/views/examples/text_example.h" 5 #include "ui/views/examples/text_example.h"
6 6
7 #include "base/macros.h" 7 #include "base/macros.h"
8 #include "base/memory/ptr_util.h" 8 #include "base/memory/ptr_util.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "ui/gfx/canvas.h" 10 #include "ui/gfx/canvas.h"
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 L"\x5e9\x5dc\x5d5\x5dd \x5d4\x5e2\x5d5\x5dc\x5dd! " 43 L"\x5e9\x5dc\x5d5\x5dd \x5d4\x5e2\x5d5\x5dc\x5dd! "
44 L"\x5e9\x5dc\x5d5\x5dd \x5d4\x5e2\x5d5\x5dc\x5dd! " 44 L"\x5e9\x5dc\x5d5\x5dd \x5d4\x5e2\x5d5\x5dc\x5dd! "
45 L"\x5e9\x5dc\x5d5\x5dd \x5d4\x5e2\x5d5\x5dc\x5dd! " 45 L"\x5e9\x5dc\x5d5\x5dd \x5d4\x5e2\x5d5\x5dc\x5dd! "
46 L"\x5e9\x5dc\x5d5\x5dd \x5d4\x5e2\x5d5\x5dc\x5dd! " 46 L"\x5e9\x5dc\x5d5\x5dd \x5d4\x5e2\x5d5\x5dc\x5dd! "
47 L"\x5e9\x5dc\x5d5\x5dd \x5d4\x5e2\x5d5\x5dc\x5dd!"; 47 L"\x5e9\x5dc\x5d5\x5dd \x5d4\x5e2\x5d5\x5dc\x5dd!";
48 48
49 const char* kTextExamples[] = { "Short", "Long", "Ampersands", "RTL Hebrew", }; 49 const char* kTextExamples[] = { "Short", "Long", "Ampersands", "RTL Hebrew", };
50 const char* kElideBehaviors[] = { "Elide", "No Elide", "Fade", }; 50 const char* kElideBehaviors[] = { "Elide", "No Elide", "Fade", };
51 const char* kPrefixOptions[] = { "Default", "Show", "Hide", }; 51 const char* kPrefixOptions[] = { "Default", "Show", "Hide", };
52 const char* kHorizontalAligments[] = { "Default", "Left", "Center", "Right", }; 52 const char* kHorizontalAligments[] = { "Default", "Left", "Center", "Right", };
53 constexpr const char* kWeightLabels[] = {
54 "Thin", "Extra Light", "Light", "Normal", "Medium",
55 "Semibold", "Bold", "Extra Bold", "Black",
56 };
57 constexpr gfx::Font::Weight kFontWeights[]{
58 gfx::Font::Weight::THIN, gfx::Font::Weight::EXTRA_LIGHT,
59 gfx::Font::Weight::LIGHT, gfx::Font::Weight::NORMAL,
60 gfx::Font::Weight::MEDIUM, gfx::Font::Weight::SEMIBOLD,
61 gfx::Font::Weight::BOLD, gfx::Font::Weight::EXTRA_BOLD,
62 gfx::Font::Weight::BLACK,
63 };
64 53
65 // Toggles bit |flag| on |flags| based on state of |checkbox|. 54 // Toggles bit |flag| on |flags| based on state of |checkbox|.
66 void SetFlagFromCheckbox(Checkbox* checkbox, int* flags, int flag) { 55 void SetFlagFromCheckbox(Checkbox* checkbox, int* flags, int flag) {
67 if (checkbox->checked()) 56 if (checkbox->checked())
68 *flags |= flag; 57 *flags |= flag;
69 else 58 else
70 *flags &= ~flag; 59 *flags &= ~flag;
71 } 60 }
72 61
73 } // namespace 62 } // namespace
(...skipping 17 matching lines...) Expand all
91 canvas->DrawStringRectWithFlags(text_, font_list_, color, bounds, flags_); 80 canvas->DrawStringRectWithFlags(text_, font_list_, color, bounds, flags_);
92 } 81 }
93 } 82 }
94 83
95 int flags() const { return flags_; } 84 int flags() const { return flags_; }
96 void set_flags(int flags) { flags_ = flags; } 85 void set_flags(int flags) { flags_ = flags; }
97 void set_text(const base::string16& text) { text_ = text; } 86 void set_text(const base::string16& text) { text_ = text; }
98 void set_elide(gfx::ElideBehavior elide) { elide_ = elide; } 87 void set_elide(gfx::ElideBehavior elide) { elide_ = elide; }
99 88
100 int GetStyle() const { return font_list_.GetFontStyle(); } 89 int GetStyle() const { return font_list_.GetFontStyle(); }
101 void SetStyle(int style) { 90 void SetStyle(int style) { font_list_ = font_list_.DeriveWithStyle(style); }
102 base_font_ = base_font_.DeriveWithStyle(style);
103 font_list_ = font_list_.DeriveWithStyle(style);
104 }
105 91
106 gfx::Font::Weight GetWeight() const { return font_list_.GetFontWeight(); } 92 gfx::Font::Weight GetWeight() const { return font_list_.GetFontWeight(); }
107 void SetWeight(gfx::Font::Weight weight) { 93 void SetWeight(gfx::Font::Weight weight) {
108 font_list_ = base_font_.DeriveWithWeight(weight); 94 font_list_ = font_list_.DeriveWithWeight(weight);
109 } 95 }
110 96
111 private: 97 private:
112 // The font used for drawing the text. 98 // The font used for drawing the text.
113 gfx::FontList font_list_; 99 gfx::FontList font_list_;
114 100
115 // The font without any bold attributes. Mac font APIs struggle to derive UI
116 // fonts from a base font that isn't NORMAL or BOLD.
117 gfx::FontList base_font_;
118
119 // The text to draw. 101 // The text to draw.
120 base::string16 text_; 102 base::string16 text_;
121 103
122 // Text flags for passing to |DrawStringRect()|. 104 // Text flags for passing to |DrawStringRect()|.
123 int flags_; 105 int flags_;
124 106
125 // The eliding, fading, or truncating behavior. 107 // The eliding, fading, or truncating behavior.
126 gfx::ElideBehavior elide_; 108 gfx::ElideBehavior elide_;
127 109
128 DISALLOW_COPY_AND_ASSIGN(TextExampleView); 110 DISALLOW_COPY_AND_ASSIGN(TextExampleView);
129 }; 111 };
130 112
131 TextExample::TextExample() : ExampleBase("Text Styles") {} 113 TextExample::TextExample() : ExampleBase("Text Styles") {}
132 114
133 TextExample::~TextExample() { 115 TextExample::~TextExample() {
134 // Remove the views first as some reference combobox models. 116 // Remove the views first as some reference combobox models.
135 container()->RemoveAllChildViews(true); 117 container()->RemoveAllChildViews(true);
136 } 118 }
137 119
138 Checkbox* TextExample::AddCheckbox(GridLayout* layout, const char* name) { 120 Checkbox* TextExample::AddCheckbox(GridLayout* layout, const char* name) {
139 Checkbox* checkbox = new Checkbox(base::ASCIIToUTF16(name)); 121 Checkbox* checkbox = new Checkbox(base::ASCIIToUTF16(name));
140 checkbox->set_listener(this); 122 checkbox->set_listener(this);
141 layout->AddView(checkbox); 123 layout->AddView(checkbox);
142 return checkbox; 124 return checkbox;
143 } 125 }
144 126
145 Combobox* TextExample::AddCombobox(GridLayout* layout, 127 Combobox* TextExample::AddCombobox(GridLayout* layout,
146 const char* name, 128 const char* name,
147 const char* const* strings, 129 const char** strings,
148 int count) { 130 int count) {
149 layout->StartRow(0, 0); 131 layout->StartRow(0, 0);
150 layout->AddView(new Label(base::ASCIIToUTF16(name))); 132 layout->AddView(new Label(base::ASCIIToUTF16(name)));
151 example_combobox_model_.push_back( 133 example_combobox_model_.push_back(
152 base::MakeUnique<ExampleComboboxModel>(strings, count)); 134 base::MakeUnique<ExampleComboboxModel>(strings, count));
153 Combobox* combobox = new Combobox(example_combobox_model_.back().get()); 135 Combobox* combobox = new Combobox(example_combobox_model_.back().get());
154 combobox->SetSelectedIndex(0); 136 combobox->SetSelectedIndex(0);
155 combobox->set_listener(this); 137 combobox->set_listener(this);
156 layout->AddView(combobox, kNumColumns - 1, 1); 138 layout->AddView(combobox, kNumColumns - 1, 1);
157 return combobox; 139 return combobox;
(...skipping 16 matching lines...) Expand all
174 column_set->AddPaddingColumn(0, 8); 156 column_set->AddPaddingColumn(0, 8);
175 157
176 h_align_cb_ = AddCombobox(layout, "H-Align", kHorizontalAligments, 158 h_align_cb_ = AddCombobox(layout, "H-Align", kHorizontalAligments,
177 arraysize(kHorizontalAligments)); 159 arraysize(kHorizontalAligments));
178 eliding_cb_ = AddCombobox(layout, "Eliding", kElideBehaviors, 160 eliding_cb_ = AddCombobox(layout, "Eliding", kElideBehaviors,
179 arraysize(kElideBehaviors)); 161 arraysize(kElideBehaviors));
180 prefix_cb_ = AddCombobox(layout, "Prefix", kPrefixOptions, 162 prefix_cb_ = AddCombobox(layout, "Prefix", kPrefixOptions,
181 arraysize(kPrefixOptions)); 163 arraysize(kPrefixOptions));
182 text_cb_ = AddCombobox(layout, "Example Text", kTextExamples, 164 text_cb_ = AddCombobox(layout, "Example Text", kTextExamples,
183 arraysize(kTextExamples)); 165 arraysize(kTextExamples));
184 weight_cb_ = AddCombobox(layout, "Font Weight", kWeightLabels,
185 arraysize(kWeightLabels));
186 weight_cb_->SelectValue(base::ASCIIToUTF16("Normal"));
187 166
188 layout->StartRow(0, 0); 167 layout->StartRow(0, 0);
189 multiline_checkbox_ = AddCheckbox(layout, "Multiline"); 168 multiline_checkbox_ = AddCheckbox(layout, "Multiline");
190 break_checkbox_ = AddCheckbox(layout, "Character Break"); 169 break_checkbox_ = AddCheckbox(layout, "Character Break");
170 bold_checkbox_ = AddCheckbox(layout, "Bold");
191 italic_checkbox_ = AddCheckbox(layout, "Italic"); 171 italic_checkbox_ = AddCheckbox(layout, "Italic");
192 underline_checkbox_ = AddCheckbox(layout, "Underline"); 172 underline_checkbox_ = AddCheckbox(layout, "Underline");
193 173
194 layout->AddPaddingRow(0, 20); 174 layout->AddPaddingRow(0, 20);
195 column_set = layout->AddColumnSet(1); 175 column_set = layout->AddColumnSet(1);
196 column_set->AddPaddingColumn(0, 16); 176 column_set->AddPaddingColumn(0, 16);
197 column_set->AddColumn(GridLayout::FILL, GridLayout::FILL, 177 column_set->AddColumn(GridLayout::FILL, GridLayout::FILL,
198 1, GridLayout::USE_PREF, 0, 0); 178 1, GridLayout::USE_PREF, 0, 0);
199 column_set->AddPaddingColumn(0, 16); 179 column_set->AddPaddingColumn(0, 16);
200 layout->StartRow(1, 1); 180 layout->StartRow(1, 1);
201 layout->AddView(text_view_); 181 layout->AddView(text_view_);
202 layout->AddPaddingRow(0, 8); 182 layout->AddPaddingRow(0, 8);
203 } 183 }
204 184
205 void TextExample::ButtonPressed(Button* button, const ui::Event& event) { 185 void TextExample::ButtonPressed(Button* button, const ui::Event& event) {
206 int flags = text_view_->flags(); 186 int flags = text_view_->flags();
207 int style = text_view_->GetStyle(); 187 int style = text_view_->GetStyle();
208 SetFlagFromCheckbox(multiline_checkbox_, &flags, gfx::Canvas::MULTI_LINE); 188 SetFlagFromCheckbox(multiline_checkbox_, &flags, gfx::Canvas::MULTI_LINE);
209 SetFlagFromCheckbox(break_checkbox_, &flags, gfx::Canvas::CHARACTER_BREAK); 189 SetFlagFromCheckbox(break_checkbox_, &flags, gfx::Canvas::CHARACTER_BREAK);
210 SetFlagFromCheckbox(italic_checkbox_, &style, gfx::Font::ITALIC); 190 SetFlagFromCheckbox(italic_checkbox_, &style, gfx::Font::ITALIC);
211 SetFlagFromCheckbox(underline_checkbox_, &style, gfx::Font::UNDERLINE); 191 SetFlagFromCheckbox(underline_checkbox_, &style, gfx::Font::UNDERLINE);
212 text_view_->set_flags(flags); 192 text_view_->set_flags(flags);
213 text_view_->SetStyle(style); 193 text_view_->SetStyle(style);
194 text_view_->SetWeight(bold_checkbox_->checked() ? gfx::Font::Weight::BOLD
195 : gfx::Font::Weight::NORMAL);
214 text_view_->SchedulePaint(); 196 text_view_->SchedulePaint();
215 } 197 }
216 198
217 void TextExample::OnPerformAction(Combobox* combobox) { 199 void TextExample::OnPerformAction(Combobox* combobox) {
218 int flags = text_view_->flags(); 200 int flags = text_view_->flags();
219 if (combobox == h_align_cb_) { 201 if (combobox == h_align_cb_) {
220 flags &= ~(gfx::Canvas::TEXT_ALIGN_LEFT | 202 flags &= ~(gfx::Canvas::TEXT_ALIGN_LEFT |
221 gfx::Canvas::TEXT_ALIGN_CENTER | 203 gfx::Canvas::TEXT_ALIGN_CENTER |
222 gfx::Canvas::TEXT_ALIGN_RIGHT); 204 gfx::Canvas::TEXT_ALIGN_RIGHT);
223 switch (combobox->selected_index()) { 205 switch (combobox->selected_index()) {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 switch (combobox->selected_index()) { 247 switch (combobox->selected_index()) {
266 case 0: 248 case 0:
267 break; 249 break;
268 case 1: 250 case 1:
269 flags |= gfx::Canvas::SHOW_PREFIX; 251 flags |= gfx::Canvas::SHOW_PREFIX;
270 break; 252 break;
271 case 2: 253 case 2:
272 flags |= gfx::Canvas::HIDE_PREFIX; 254 flags |= gfx::Canvas::HIDE_PREFIX;
273 break; 255 break;
274 } 256 }
275 } else if (combobox == weight_cb_) {
276 text_view_->SetWeight(kFontWeights[combobox->selected_index()]);
277 } 257 }
278 text_view_->set_flags(flags); 258 text_view_->set_flags(flags);
279 text_view_->SchedulePaint(); 259 text_view_->SchedulePaint();
280 } 260 }
281 261
282 } // namespace examples 262 } // namespace examples
283 } // namespace views 263 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/examples/text_example.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698