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

Unified Diff: ui/base/resource/resource_bundle.cc

Issue 19666006: Supports FontList in Textfield. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Removes ResourceBundle::Delegate::GetFontList. Created 7 years, 5 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
« no previous file with comments | « ui/base/resource/resource_bundle.h ('k') | ui/base/resource/resource_bundle_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/base/resource/resource_bundle.cc
diff --git a/ui/base/resource/resource_bundle.cc b/ui/base/resource/resource_bundle.cc
index dab50974e70011c7a0f1dfba03e3215e260fdd10..ce63b05b968db145d764dafc18b1bc7f89a103b9 100644
--- a/ui/base/resource/resource_bundle.cc
+++ b/ui/base/resource/resource_bundle.cc
@@ -17,6 +17,7 @@
#include "base/strings/utf_string_conversions.h"
#include "base/synchronization/lock.h"
#include "build/build_config.h"
+#include "grit/app_locale_settings.h"
#include "net/base/big_endian.h"
#include "skia/ext/image_operations.h"
#include "third_party/skia/include/core/SkBitmap.h"
@@ -457,34 +458,38 @@ string16 ResourceBundle::GetLocalizedString(int message_id) {
return msg;
}
-const gfx::Font& ResourceBundle::GetFont(FontStyle style) {
+const gfx::FontList& ResourceBundle::GetFontList(FontStyle style) {
{
base::AutoLock lock_scope(*images_and_fonts_lock_);
LoadFontsIfNecessary();
}
switch (style) {
case BoldFont:
- return *bold_font_;
+ return *bold_font_list_;
case SmallFont:
- return *small_font_;
+ return *small_font_list_;
case MediumFont:
- return *medium_font_;
+ return *medium_font_list_;
case SmallBoldFont:
- return *small_bold_font_;
+ return *small_bold_font_list_;
case MediumBoldFont:
- return *medium_bold_font_;
+ return *medium_bold_font_list_;
case LargeFont:
- return *large_font_;
+ return *large_font_list_;
case LargeBoldFont:
- return *large_bold_font_;
+ return *large_bold_font_list_;
default:
- return *base_font_;
+ return *base_font_list_;
}
}
+const gfx::Font& ResourceBundle::GetFont(FontStyle style) {
+ return GetFontList(style).GetPrimaryFont();
+}
+
void ResourceBundle::ReloadFonts() {
base::AutoLock lock_scope(*images_and_fonts_lock_);
- base_font_.reset();
+ base_font_list_.reset();
LoadFontsIfNecessary();
}
@@ -539,64 +544,81 @@ void ResourceBundle::AddDataPack(DataPack* data_pack) {
void ResourceBundle::LoadFontsIfNecessary() {
images_and_fonts_lock_->AssertAcquired();
- if (!base_font_.get()) {
+ if (!base_font_list_.get()) {
if (delegate_) {
- base_font_.reset(delegate_->GetFont(BaseFont).release());
- bold_font_.reset(delegate_->GetFont(BoldFont).release());
- small_font_.reset(delegate_->GetFont(SmallFont).release());
- small_bold_font_.reset(delegate_->GetFont(SmallBoldFont).release());
- medium_font_.reset(delegate_->GetFont(MediumFont).release());
- medium_bold_font_.reset(delegate_->GetFont(MediumBoldFont).release());
- large_font_.reset(delegate_->GetFont(LargeFont).release());
- large_bold_font_.reset(delegate_->GetFont(LargeBoldFont).release());
+ base_font_list_ = GetFontListFromDelegate(BaseFont);
+ bold_font_list_ = GetFontListFromDelegate(BoldFont);
+ small_font_list_ = GetFontListFromDelegate(SmallFont);
+ small_bold_font_list_ = GetFontListFromDelegate(SmallBoldFont);
+ medium_font_list_ = GetFontListFromDelegate(MediumFont);
+ medium_bold_font_list_ = GetFontListFromDelegate(MediumBoldFont);
+ large_font_list_ = GetFontListFromDelegate(LargeFont);
+ large_bold_font_list_ = GetFontListFromDelegate(LargeBoldFont);
}
- if (!base_font_.get())
- base_font_.reset(new gfx::Font());
+ if (!base_font_list_.get()) {
+#if defined(OS_CHROMEOS)
+ base_font_list_.reset(new gfx::FontList(
+ l10n_util::GetStringUTF8(IDS_UI_FONT_FAMILY_CROS)));
+#else
+ base_font_list_.reset(new gfx::FontList());
+#endif
+ }
- if (!bold_font_.get()) {
- bold_font_.reset(new gfx::Font());
- *bold_font_ =
- base_font_->DeriveFont(0, base_font_->GetStyle() | gfx::Font::BOLD);
+ if (!bold_font_list_.get()) {
+ bold_font_list_.reset(new gfx::FontList());
+ *bold_font_list_ = base_font_list_->DeriveFontList(
+ base_font_list_->GetFontStyle() | gfx::Font::BOLD);
}
- if (!small_font_.get()) {
- small_font_.reset(new gfx::Font());
- *small_font_ = base_font_->DeriveFont(kSmallFontSizeDelta);
+ if (!small_font_list_.get()) {
+ small_font_list_.reset(new gfx::FontList());
+ *small_font_list_ = base_font_list_->DeriveFontListWithSize(
+ base_font_list_->GetFontSize() + kSmallFontSizeDelta);
}
- if (!small_bold_font_.get()) {
- small_bold_font_.reset(new gfx::Font());
- *small_bold_font_ = base_font_->DeriveFont(
- kSmallFontSizeDelta, base_font_->GetStyle() | gfx::Font::BOLD);
+ if (!small_bold_font_list_.get()) {
+ small_bold_font_list_.reset(new gfx::FontList());
+ *small_bold_font_list_ = small_font_list_->DeriveFontList(
+ small_font_list_->GetFontStyle() | gfx::Font::BOLD);
}
- if (!medium_font_.get()) {
- medium_font_.reset(new gfx::Font());
- *medium_font_ = base_font_->DeriveFont(kMediumFontSizeDelta);
+ if (!medium_font_list_.get()) {
+ medium_font_list_.reset(new gfx::FontList());
+ *medium_font_list_ = base_font_list_->DeriveFontListWithSize(
+ base_font_list_->GetFontSize() + kMediumFontSizeDelta);
}
- if (!medium_bold_font_.get()) {
- medium_bold_font_.reset(new gfx::Font());
- *medium_bold_font_ =
- base_font_->DeriveFont(kMediumFontSizeDelta,
- base_font_->GetStyle() | gfx::Font::BOLD);
+ if (!medium_bold_font_list_.get()) {
+ medium_bold_font_list_.reset(new gfx::FontList());
+ *medium_bold_font_list_ = medium_font_list_->DeriveFontList(
+ medium_font_list_->GetFontStyle() | gfx::Font::BOLD);
}
- if (!large_font_.get()) {
- large_font_.reset(new gfx::Font());
- *large_font_ = base_font_->DeriveFont(kLargeFontSizeDelta);
+ if (!large_font_list_.get()) {
+ large_font_list_.reset(new gfx::FontList());
+ *large_font_list_ = base_font_list_->DeriveFontListWithSize(
+ base_font_list_->GetFontSize() + kLargeFontSizeDelta);
}
- if (!large_bold_font_.get()) {
- large_bold_font_.reset(new gfx::Font());
- *large_bold_font_ =
- base_font_->DeriveFont(kLargeFontSizeDelta,
- base_font_->GetStyle() | gfx::Font::BOLD);
+ if (!large_bold_font_list_.get()) {
+ large_bold_font_list_.reset(new gfx::FontList());
+ *large_bold_font_list_ = large_font_list_->DeriveFontList(
+ large_font_list_->GetFontStyle() | gfx::Font::BOLD);
}
}
}
+scoped_ptr<gfx::FontList> ResourceBundle::GetFontListFromDelegate(
+ FontStyle style) {
+ DCHECK(delegate_);
+ scoped_ptr<gfx::Font> font = delegate_->GetFont(style);
+ if (font.get())
+ return scoped_ptr<gfx::FontList>(new gfx::FontList(*font));
+ else
tony 2013/08/01 16:48:07 Nit: else not needed.
Yuki 2013/08/02 06:00:29 Sent out a CL http://crrev.com/21734002 Thanks.
+ return scoped_ptr<gfx::FontList>();
+}
+
bool ResourceBundle::LoadBitmap(const ResourceHandle& data_handle,
int resource_id,
SkBitmap* bitmap,
« no previous file with comments | « ui/base/resource/resource_bundle.h ('k') | ui/base/resource/resource_bundle_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698