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

Side by Side Diff: ui/gfx/font_list.cc

Issue 119993002: Makes gfx::FontList carry UNDERLINE flag. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years 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 | « no previous file | ui/gfx/font_list_unittest.cc » ('j') | 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/gfx/font_list.h" 5 #include "ui/gfx/font_list.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/lazy_instance.h" 9 #include "base/lazy_instance.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 16 matching lines...) Expand all
27 DCHECK_GT(font_names->size(), 1U); 27 DCHECK_GT(font_names->size(), 1U);
28 28
29 // The last item is [STYLE_OPTIONS] SIZE. 29 // The last item is [STYLE_OPTIONS] SIZE.
30 std::vector<std::string> styles_size; 30 std::vector<std::string> styles_size;
31 base::SplitString(font_names->back(), ' ', &styles_size); 31 base::SplitString(font_names->back(), ' ', &styles_size);
32 DCHECK(!styles_size.empty()); 32 DCHECK(!styles_size.empty());
33 base::StringToInt(styles_size.back(), font_size); 33 base::StringToInt(styles_size.back(), font_size);
34 DCHECK_GT(*font_size, 0); 34 DCHECK_GT(*font_size, 0);
35 font_names->pop_back(); 35 font_names->pop_back();
36 36
37 // Font supports BOLD and ITALIC; underline is supported via RenderText.
38 *font_style = 0; 37 *font_style = 0;
39 for (size_t i = 0; i < styles_size.size() - 1; ++i) { 38 for (size_t i = 0; i < styles_size.size() - 1; ++i) {
40 // Styles are separated by white spaces. base::SplitString splits styles 39 // Styles are separated by white spaces. base::SplitString splits styles
41 // by space, and it inserts empty string for continuous spaces. 40 // by space, and it inserts empty string for continuous spaces.
42 if (styles_size[i].empty()) 41 if (styles_size[i].empty())
43 continue; 42 continue;
44 if (!styles_size[i].compare("Bold")) 43 if (!styles_size[i].compare("Bold"))
45 *font_style |= gfx::Font::BOLD; 44 *font_style |= gfx::Font::BOLD;
46 else if (!styles_size[i].compare("Italic")) 45 else if (!styles_size[i].compare("Italic"))
47 *font_style |= gfx::Font::ITALIC; 46 *font_style |= gfx::Font::ITALIC;
47 else if (!styles_size[i].compare("Underline"))
Alexei Svitkine (slow) 2013/12/20 16:28:09 So the description string comes from a format used
Yuki 2013/12/20 17:34:52 You're right. Since underline is NOT considered a
48 *font_style |= gfx::Font::UNDERLINE;
48 else 49 else
49 NOTREACHED(); 50 NOTREACHED();
50 } 51 }
51 } 52 }
52 53
53 // Returns the font style and size as a string. 54 // Returns the font style and size as a string.
54 std::string FontStyleAndSizeToString(int font_style, int font_size) { 55 std::string FontStyleAndSizeToString(int font_style, int font_size) {
55 std::string result; 56 std::string result;
56 if (font_style & gfx::Font::BOLD) 57 if (font_style & gfx::Font::BOLD)
57 result += "Bold "; 58 result += "Bold ";
58 if (font_style & gfx::Font::ITALIC) 59 if (font_style & gfx::Font::ITALIC)
59 result += "Italic "; 60 result += "Italic ";
61 if (font_style & gfx::Font::UNDERLINE)
62 result += "Underline ";
60 result += base::IntToString(font_size); 63 result += base::IntToString(font_size);
61 result += "px"; 64 result += "px";
62 return result; 65 return result;
63 } 66 }
64 67
65 // Returns font description from |font_names|, |font_style|, and |font_size|. 68 // Returns font description from |font_names|, |font_style|, and |font_size|.
66 std::string BuildFontDescription(const std::vector<std::string>& font_names, 69 std::string BuildFontDescription(const std::vector<std::string>& font_names,
67 int font_style, 70 int font_style,
68 int font_size) { 71 int font_size) {
69 std::string description = JoinString(font_names, ','); 72 std::string description = JoinString(font_names, ',');
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 font_style_ = fonts_[0].GetStyle(); 294 font_style_ = fonts_[0].GetStyle();
292 font_size_ = fonts_[0].GetFontSize(); 295 font_size_ = fonts_[0].GetFontSize();
293 } else { 296 } else {
294 std::vector<std::string> font_names; 297 std::vector<std::string> font_names;
295 ParseFontDescriptionString(font_description_string_, &font_names, 298 ParseFontDescriptionString(font_description_string_, &font_names,
296 &font_style_, &font_size_); 299 &font_style_, &font_size_);
297 } 300 }
298 } 301 }
299 302
300 } // namespace gfx 303 } // namespace gfx
OLDNEW
« no previous file with comments | « no previous file | ui/gfx/font_list_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698