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

Unified Diff: ui/gfx/font_list_impl.cc

Issue 903423002: Make FontList description-parsing public. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: merge and apply review feedback Created 5 years, 10 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
Index: ui/gfx/font_list_impl.cc
diff --git a/ui/gfx/font_list_impl.cc b/ui/gfx/font_list_impl.cc
index ec6783286960b295316f9094397ce5c0fc0d175f..babadb118c15a32e00f5006dba277d090734edcd 100644
--- a/ui/gfx/font_list_impl.cc
+++ b/ui/gfx/font_list_impl.cc
@@ -8,62 +8,27 @@
#include "base/logging.h"
#include "base/strings/string_number_conversions.h"
-#include "base/strings/string_split.h"
#include "base/strings/string_util.h"
#include "ui/gfx/font.h"
+#include "ui/gfx/font_list.h"
namespace {
-// Parses font description into |font_names|, |font_style| and |font_size|.
-void ParseFontDescriptionString(const std::string& font_description_string,
- std::vector<std::string>* font_names,
- int* font_style,
- int* font_size) {
- base::SplitString(font_description_string, ',', font_names);
- DCHECK_GT(font_names->size(), 1U);
-
- // The last item is [STYLE_OPTIONS] SIZE.
- std::vector<std::string> styles_size;
- base::SplitString(font_names->back(), ' ', &styles_size);
- DCHECK(!styles_size.empty());
- base::StringToInt(styles_size.back(), font_size);
- DCHECK_GT(*font_size, 0);
- font_names->pop_back();
-
- // Font supports BOLD and ITALIC; underline is supported via RenderText.
- *font_style = 0;
- for (size_t i = 0; i < styles_size.size() - 1; ++i) {
- // Styles are separated by white spaces. base::SplitString splits styles
- // by space, and it inserts empty string for continuous spaces.
- if (styles_size[i].empty())
- continue;
- if (!styles_size[i].compare("Bold"))
- *font_style |= gfx::Font::BOLD;
- else if (!styles_size[i].compare("Italic"))
- *font_style |= gfx::Font::ITALIC;
- else
- NOTREACHED();
- }
-}
+// Returns a font description from |families|, |style|, and |size_pixels|.
+std::string BuildDescription(const std::vector<std::string>& families,
+ int style,
+ int size_pixels) {
+ std::string description = JoinString(families, ',');
+ description += ",";
+
+ if (style & gfx::Font::BOLD)
+ description += "Bold ";
+ if (style & gfx::Font::ITALIC)
+ description += "Italic ";
+
+ description += base::IntToString(size_pixels);
+ description += "px";
-// Returns the font style and size as a string.
-std::string FontStyleAndSizeToString(int font_style, int font_size) {
- std::string result;
- if (font_style & gfx::Font::BOLD)
- result += "Bold ";
- if (font_style & gfx::Font::ITALIC)
- result += "Italic ";
- result += base::IntToString(font_size);
- result += "px";
- return result;
-}
-
-// Returns font description from |font_names|, |font_style|, and |font_size|.
-std::string BuildFontDescription(const std::vector<std::string>& font_names,
- int font_style,
- int font_size) {
- std::string description = JoinString(font_names, ',');
- description += "," + FontStyleAndSizeToString(font_style, font_size);
return description;
}
@@ -85,8 +50,8 @@ FontListImpl::FontListImpl(const std::string& font_description_string)
FontListImpl::FontListImpl(const std::vector<std::string>& font_names,
int font_style,
int font_size)
- : font_description_string_(BuildFontDescription(font_names, font_style,
- font_size)),
+ : font_description_string_(BuildDescription(font_names, font_style,
+ font_size)),
common_height_(-1),
common_baseline_(-1),
font_style_(font_style),
@@ -133,8 +98,8 @@ FontListImpl* FontListImpl::Derive(int size_delta, int font_style) const {
std::vector<std::string> font_names;
int old_size;
int old_style;
- ParseFontDescriptionString(font_description_string_, &font_names,
- &old_style, &old_size);
+ CHECK(FontList::ParseDescription(font_description_string_, &font_names,
+ &old_style, &old_size));
const int size = std::max(1, old_size + size_delta);
return new FontListImpl(font_names, font_style, size);
}
@@ -167,21 +132,6 @@ int FontListImpl::GetFontStyle() const {
return font_style_;
}
-const std::string& FontListImpl::GetFontDescriptionString() const {
- if (font_description_string_.empty()) {
- DCHECK(!fonts_.empty());
- for (size_t i = 0; i < fonts_.size(); ++i) {
- std::string name = fonts_[i].GetFontName();
- font_description_string_ += name;
- font_description_string_ += ',';
- }
- // All fonts have the same style and size.
- font_description_string_ +=
- FontStyleAndSizeToString(fonts_[0].GetStyle(), fonts_[0].GetFontSize());
- }
- return font_description_string_;
-}
-
int FontListImpl::GetFontSize() const {
if (font_size_ == -1)
CacheFontStyleAndSize();
@@ -198,8 +148,8 @@ const std::vector<Font>& FontListImpl::GetFonts() const {
// underline info. So we should respect |font_style_| as long as it's
// valid.
int style = 0;
- ParseFontDescriptionString(font_description_string_, &font_names,
- &style, &font_size_);
+ CHECK(FontList::ParseDescription(font_description_string_, &font_names,
+ &style, &font_size_));
if (font_style_ == -1)
font_style_ = style;
for (size_t i = 0; i < font_names.size(); ++i) {
@@ -240,8 +190,8 @@ void FontListImpl::CacheFontStyleAndSize() const {
font_size_ = fonts_[0].GetFontSize();
} else {
std::vector<std::string> font_names;
- ParseFontDescriptionString(font_description_string_, &font_names,
- &font_style_, &font_size_);
+ CHECK(FontList::ParseDescription(font_description_string_, &font_names,
+ &font_style_, &font_size_));
}
}
« no previous file with comments | « ui/gfx/font_list_impl.h ('k') | ui/gfx/font_list_unittest.cc » ('j') | ui/gfx/pango_util.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698