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

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

Issue 8555013: views: Move examples/ directory to ui/views/. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 1 month 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 | Annotate | Revision Log
« no previous file with comments | « views/examples/text_example.h ('k') | views/examples/textfield_example.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1
2 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5
6 #include "views/examples/text_example.h"
7
8 #include "base/utf_string_conversions.h"
9 #include "ui/base/resource/resource_bundle.h"
10 #include "ui/gfx/canvas.h"
11 #include "ui/gfx/canvas_skia.h"
12 #include "views/controls/button/checkbox.h"
13 #include "views/controls/label.h"
14 #include "views/examples/example_combobox_model.h"
15 #include "views/layout/grid_layout.h"
16 #include "views/view.h"
17
18 namespace {
19
20 const char kShortText[] = "Batman";
21 const char kMediumText[] = "The quick brown fox jumps over the lazy dog.";
22 const char kLongText[] =
23 "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod "
24 "tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim "
25 "veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea "
26 "commodo consequat. Duis aute irure dolor in reprehenderit in voluptate "
27 "velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint "
28 "occaecat cupidatat non proident, sunt in culpa qui officia deserunt "
29 "mollit anim id est laborum.";
30 const char kAmpersandText[] =
31 "The quick && &brown fo&x jumps over the lazy dog.";
32
33 const char* kTextExamples[] = {
34 "Short",
35 "Medium",
36 "Long",
37 "Ampersands",
38 };
39
40 const char* kElidingBehaviors[] = {
41 "Ellipsis",
42 "None",
43 #if defined(OS_WIN)
44 "Fade Tail",
45 "Fade Head",
46 "Fade Head and Tail",
47 #endif
48 };
49
50 const char* kPrefixOptions[] = {
51 "Default",
52 "Show",
53 "Hide",
54 };
55
56 const char* kHorizontalAligments[] = {
57 "Default",
58 "Left",
59 "Center",
60 "Right",
61 };
62
63 const char* kVerticalAlignments[] = {
64 "Default",
65 "Top",
66 "Middle",
67 "Bottom",
68 };
69
70 } // namespace
71
72 namespace examples {
73
74 // TextExample's content view, which is responsible for drawing a string with
75 // the specified style.
76 class TextExample::TextExampleView : public views::View {
77 public:
78 TextExampleView()
79 : font_(ResourceBundle::GetSharedInstance().GetFont(
80 ResourceBundle::BaseFont)),
81 text_(ASCIIToUTF16(kShortText)),
82 text_flags_(0),
83 fade_(false),
84 fade_mode_(gfx::CanvasSkia::TruncateFadeTail) {
85 }
86
87 virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE {
88 #if defined(OS_WIN)
89 if (fade_) {
90 gfx::Rect rect(0, 0, width(), height());
91 size_t characters_to_truncate_from_head =
92 gfx::CanvasSkia::TruncateFadeHeadAndTail ? 10 : 0;
93 canvas->AsCanvasSkia()->DrawFadeTruncatingString(text_, fade_mode_,
94 characters_to_truncate_from_head, font_, SK_ColorDKGRAY, rect);
95 return;
96 }
97 #endif
98
99 canvas->DrawStringInt(text_, font_, SK_ColorDKGRAY,
100 0, 0, width(), height(), text_flags_);
101 }
102
103 int text_flags() const { return text_flags_; }
104 void set_text_flags(int text_flags) { text_flags_ = text_flags; }
105
106 const string16& text() const { return text_; }
107 void set_text(const string16& text) { text_ = text; }
108
109 bool fade() const { return fade_; }
110 void set_fade(bool fade) { fade_ = fade; }
111
112 gfx::CanvasSkia::TruncateFadeMode fade_mode() const { return fade_mode_; }
113 void set_fade_mode(gfx::CanvasSkia::TruncateFadeMode fade_mode) {
114 fade_mode_ = fade_mode;
115 }
116
117 private:
118 // The font used for drawing the text.
119 gfx::Font font_;
120
121 // The text to draw.
122 string16 text_;
123
124 // Text flags for passing to |DrawStringInt()|.
125 int text_flags_;
126
127 // If |true|, specifies to call |DrawFadeTruncatingString()| instead of
128 // |DrawStringInt()|.
129 bool fade_;
130
131 // If |fade_| is |true|, fade mode parameter to |DrawFadeTruncatingString()|.
132 gfx::CanvasSkia::TruncateFadeMode fade_mode_;
133
134 DISALLOW_COPY_AND_ASSIGN(TextExampleView);
135 };
136
137 TextExample::TextExample(ExamplesMain* main)
138 : ExampleBase(main, "Text Styles") {
139 }
140
141 TextExample::~TextExample() {
142 }
143
144 views::Combobox* TextExample::AddCombobox(views::GridLayout* layout,
145 const char* name,
146 const char** strings,
147 int count) {
148 layout->StartRow(0, 0);
149 layout->AddView(new views::Label(ASCIIToUTF16(name)));
150 views::Combobox* combo_box =
151 new views::Combobox(new ExampleComboboxModel(strings, count));
152 combo_box->SetSelectedItem(0);
153 combo_box->set_listener(this);
154 layout->AddView(combo_box);
155 return combo_box;
156 }
157
158 void TextExample::CreateExampleView(views::View* container) {
159 text_view_ = new TextExampleView;
160
161 views::GridLayout* layout = new views::GridLayout(container);
162 container->SetLayoutManager(layout);
163
164 layout->AddPaddingRow(0, 8);
165
166 views::ColumnSet* column_set = layout->AddColumnSet(0);
167 column_set->AddPaddingColumn(0, 8);
168 column_set->AddColumn(views::GridLayout::LEADING, views::GridLayout::FILL,
169 0.1f, views::GridLayout::USE_PREF, 0, 0);
170 column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL,
171 0.9f, views::GridLayout::USE_PREF, 0, 0);
172 column_set->AddPaddingColumn(0, 8);
173
174 h_align_cb_ = AddCombobox(layout,
175 "H-Align",
176 kHorizontalAligments,
177 arraysize(kHorizontalAligments));
178 v_align_cb_ = AddCombobox(layout,
179 "V-Align",
180 kVerticalAlignments,
181 arraysize(kVerticalAlignments));
182 eliding_cb_ = AddCombobox(layout,
183 "Eliding",
184 kElidingBehaviors,
185 arraysize(kElidingBehaviors));
186 prefix_cb_ = AddCombobox(layout,
187 "Prefix",
188 kPrefixOptions,
189 arraysize(kPrefixOptions));
190 text_cb_ = AddCombobox(layout,
191 "Example Text",
192 kTextExamples,
193 arraysize(kTextExamples));
194
195 layout->StartRow(0, 0);
196 multiline_checkbox_ = new views::Checkbox(ASCIIToUTF16("Multiline"));
197 multiline_checkbox_->set_listener(this);
198 layout->AddView(multiline_checkbox_);
199 break_checkbox_ = new views::Checkbox(ASCIIToUTF16("Character Break"));
200 break_checkbox_->set_listener(this);
201 layout->AddView(break_checkbox_);
202
203 layout->AddPaddingRow(0, 32);
204
205 column_set = layout->AddColumnSet(1);
206 column_set->AddPaddingColumn(0, 16);
207 column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL,
208 1, views::GridLayout::USE_PREF, 0, 0);
209 column_set->AddPaddingColumn(0, 16);
210 layout->StartRow(1, 1);
211 layout->AddView(text_view_);
212
213 layout->AddPaddingRow(0, 8);
214 }
215
216 void TextExample::ButtonPressed(views::Button* button,
217 const views::Event& event) {
218 int text_flags = text_view_->text_flags();
219 if (button == multiline_checkbox_) {
220 if (multiline_checkbox_->checked())
221 text_flags |= gfx::Canvas::MULTI_LINE;
222 else
223 text_flags &= ~gfx::Canvas::MULTI_LINE;
224 } else if (button == break_checkbox_) {
225 if (break_checkbox_->checked())
226 text_flags |= gfx::Canvas::CHARACTER_BREAK;
227 else
228 text_flags &= ~gfx::Canvas::CHARACTER_BREAK;
229 }
230 text_view_->set_text_flags(text_flags);
231 text_view_->SchedulePaint();
232 }
233
234 void TextExample::ItemChanged(views::Combobox* combo_box,
235 int prev_index,
236 int new_index) {
237 int text_flags = text_view_->text_flags();
238 if (combo_box == h_align_cb_) {
239 text_flags &= ~(gfx::Canvas::TEXT_ALIGN_LEFT |
240 gfx::Canvas::TEXT_ALIGN_CENTER |
241 gfx::Canvas::TEXT_ALIGN_RIGHT);
242 switch (new_index) {
243 case 0:
244 break;
245 case 1:
246 text_flags |= gfx::Canvas::TEXT_ALIGN_LEFT;
247 break;
248 case 2:
249 text_flags |= gfx::Canvas::TEXT_ALIGN_CENTER;
250 break;
251 case 3:
252 text_flags |= gfx::Canvas::TEXT_ALIGN_RIGHT;
253 break;
254 }
255 } else if (combo_box == v_align_cb_) {
256 text_flags &= ~(gfx::Canvas::TEXT_VALIGN_TOP |
257 gfx::Canvas::TEXT_VALIGN_MIDDLE |
258 gfx::Canvas::TEXT_VALIGN_BOTTOM);
259 switch (new_index) {
260 case 0:
261 break;
262 case 1:
263 text_flags |= gfx::Canvas::TEXT_VALIGN_TOP;
264 break;
265 case 2:
266 text_flags |= gfx::Canvas::TEXT_VALIGN_MIDDLE;
267 break;
268 case 3:
269 text_flags |= gfx::Canvas::TEXT_VALIGN_BOTTOM;
270 break;
271 }
272 } else if (combo_box == text_cb_) {
273 switch (new_index) {
274 case 0:
275 text_view_->set_text(ASCIIToUTF16(kShortText));
276 break;
277 case 1:
278 text_view_->set_text(ASCIIToUTF16(kMediumText));
279 break;
280 case 2:
281 text_view_->set_text(ASCIIToUTF16(kLongText));
282 break;
283 case 3:
284 text_view_->set_text(ASCIIToUTF16(kAmpersandText));
285 break;
286 }
287 } else if (combo_box == eliding_cb_) {
288 switch (new_index) {
289 case 0:
290 text_flags &= ~gfx::Canvas::NO_ELLIPSIS;
291 text_view_->set_fade(false);
292 break;
293 case 1:
294 text_flags |= gfx::Canvas::NO_ELLIPSIS;
295 text_view_->set_fade(false);
296 break;
297 #if defined(OS_WIN)
298 case 2:
299 text_view_->set_fade_mode(gfx::CanvasSkia::TruncateFadeTail);
300 text_view_->set_fade(true);
301 break;
302 case 3:
303 text_view_->set_fade_mode(gfx::CanvasSkia::TruncateFadeHead);
304 text_view_->set_fade(true);
305 break;
306 case 4:
307 text_view_->set_fade_mode(gfx::CanvasSkia::TruncateFadeHeadAndTail);
308 text_view_->set_fade(true);
309 break;
310 #endif
311 }
312 } else if (combo_box == prefix_cb_) {
313 text_flags &= ~(gfx::Canvas::SHOW_PREFIX | gfx::Canvas::HIDE_PREFIX);
314 switch (new_index) {
315 case 0:
316 break;
317 case 1:
318 text_flags |= gfx::Canvas::SHOW_PREFIX;
319 break;
320 case 2:
321 text_flags |= gfx::Canvas::HIDE_PREFIX;
322 break;
323 }
324 }
325 text_view_->set_text_flags(text_flags);
326 text_view_->SchedulePaint();
327 }
328
329 } // namespace examples
OLDNEW
« no previous file with comments | « views/examples/text_example.h ('k') | views/examples/textfield_example.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698