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

Side by Side Diff: ui/base/resource/resource_bundle.cc

Issue 1819753003: Allow various font weights in gfx. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add a lost comment and modify a render text unittest to not test black because of test env font con… Created 4 years, 6 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/base/resource/resource_bundle.h ('k') | ui/chromeos/ime/candidate_view.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/base/resource/resource_bundle.h" 5 #include "ui/base/resource/resource_bundle.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <limits> 9 #include <limits>
10 #include <utility> 10 #include <utility>
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 return gfx::ImageSkiaRep(image, scale); 164 return gfx::ImageSkiaRep(image, scale);
165 } 165 }
166 166
167 private: 167 private:
168 ResourceBundle* rb_; 168 ResourceBundle* rb_;
169 const int resource_id_; 169 const int resource_id_;
170 170
171 DISALLOW_COPY_AND_ASSIGN(ResourceBundleImageSource); 171 DISALLOW_COPY_AND_ASSIGN(ResourceBundleImageSource);
172 }; 172 };
173 173
174 struct ResourceBundle::FontKey {
175 FontKey(int in_size_delta,
176 gfx::Font::FontStyle in_style,
177 gfx::Font::Weight in_weight)
178 : size_delta(in_size_delta), style(in_style), weight(in_weight) {}
179
180 ~FontKey() {}
181
182 bool operator==(const FontKey& rhs) const {
183 return std::tie(size_delta, style, weight) ==
184 std::tie(rhs.size_delta, rhs.style, rhs.weight);
185 }
186
187 bool operator<(const FontKey& rhs) const {
188 return std::tie(size_delta, style, weight) <
189 std::tie(rhs.size_delta, rhs.style, rhs.weight);
190 }
191
192 int size_delta;
193 gfx::Font::FontStyle style;
194 gfx::Font::Weight weight;
195 };
196
174 // static 197 // static
175 std::string ResourceBundle::InitSharedInstanceWithLocale( 198 std::string ResourceBundle::InitSharedInstanceWithLocale(
176 const std::string& pref_locale, 199 const std::string& pref_locale,
177 Delegate* delegate, 200 Delegate* delegate,
178 LoadResources load_resources) { 201 LoadResources load_resources) {
179 InitSharedInstance(delegate); 202 InitSharedInstance(delegate);
180 if (load_resources == LOAD_COMMON_RESOURCES) 203 if (load_resources == LOAD_COMMON_RESOURCES)
181 g_shared_instance_->LoadCommonResources(); 204 g_shared_instance_->LoadCommonResources();
182 std::string result = g_shared_instance_->LoadLocaleResources(pref_locale); 205 std::string result = g_shared_instance_->LoadLocaleResources(pref_locale);
183 g_shared_instance_->InitDefaultFontList(); 206 g_shared_instance_->InitDefaultFontList();
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after
542 msg = base::string16(reinterpret_cast<const base::char16*>(data.data()), 565 msg = base::string16(reinterpret_cast<const base::char16*>(data.data()),
543 data.length() / 2); 566 data.length() / 2);
544 } else if (encoding == ResourceHandle::UTF8) { 567 } else if (encoding == ResourceHandle::UTF8) {
545 msg = base::UTF8ToUTF16(data); 568 msg = base::UTF8ToUTF16(data);
546 } 569 }
547 return msg; 570 return msg;
548 } 571 }
549 572
550 const gfx::FontList& ResourceBundle::GetFontListWithDelta( 573 const gfx::FontList& ResourceBundle::GetFontListWithDelta(
551 int size_delta, 574 int size_delta,
552 gfx::Font::FontStyle style) { 575 gfx::Font::FontStyle style,
576 gfx::Font::Weight weight) {
553 base::AutoLock lock_scope(*images_and_fonts_lock_); 577 base::AutoLock lock_scope(*images_and_fonts_lock_);
554 578
555 typedef std::pair<int, gfx::Font::FontStyle> Key; 579 const FontKey styled_key(size_delta, style, weight);
556 const Key styled_key(size_delta, style);
557 580
558 auto found = font_cache_.find(styled_key); 581 auto found = font_cache_.find(styled_key);
559 if (found != font_cache_.end()) 582 if (found != font_cache_.end())
560 return found->second; 583 return found->second;
561 584
562 const Key base_key(0, gfx::Font::NORMAL); 585 const FontKey base_key(0, gfx::Font::NORMAL, gfx::Font::Weight::NORMAL);
563 gfx::FontList& base = font_cache_[base_key]; 586 gfx::FontList& base = font_cache_[base_key];
564 if (styled_key == base_key) 587 if (styled_key == base_key)
565 return base; 588 return base;
566 589
567 // Fonts of a given style are derived from the unstyled font of the same size. 590 // Fonts of a given style are derived from the unstyled font of the same size.
568 // Cache the unstyled font by first inserting a default-constructed font list. 591 // Cache the unstyled font by first inserting a default-constructed font list.
569 // Then, derive it for the initial insertion, or use the iterator that points 592 // Then, derive it for the initial insertion, or use the iterator that points
570 // to the existing entry that the insertion collided with. 593 // to the existing entry that the insertion collided with.
571 const Key sized_key(size_delta, gfx::Font::NORMAL); 594 const FontKey sized_key(size_delta, gfx::Font::NORMAL,
595 gfx::Font::Weight::NORMAL);
572 auto sized = font_cache_.insert(std::make_pair(sized_key, gfx::FontList())); 596 auto sized = font_cache_.insert(std::make_pair(sized_key, gfx::FontList()));
573 if (sized.second) 597 if (sized.second)
574 sized.first->second = base.DeriveWithSizeDelta(size_delta); 598 sized.first->second = base.DeriveWithSizeDelta(size_delta);
575 if (styled_key == sized_key) 599 if (styled_key == sized_key)
576 return sized.first->second; 600 return sized.first->second;
577 601
578 auto styled = font_cache_.insert(std::make_pair(styled_key, gfx::FontList())); 602 auto styled = font_cache_.insert(std::make_pair(styled_key, gfx::FontList()));
579 DCHECK(styled.second); // Otherwise font_cache_.find(..) would have found it. 603 DCHECK(styled.second); // Otherwise font_cache_.find(..) would have found it.
580 styled.first->second = sized.first->second.DeriveWithStyle( 604 styled.first->second = sized.first->second.Derive(
581 sized.first->second.GetFontStyle() | style); 605 0, sized.first->second.GetFontStyle() | style, weight);
606
582 return styled.first->second; 607 return styled.first->second;
583 } 608 }
584 609
585 const gfx::Font& ResourceBundle::GetFontWithDelta(int size_delta, 610 const gfx::Font& ResourceBundle::GetFontWithDelta(int size_delta,
586 gfx::Font::FontStyle style) { 611 gfx::Font::FontStyle style,
587 return GetFontListWithDelta(size_delta, style).GetPrimaryFont(); 612 gfx::Font::Weight weight) {
613 return GetFontListWithDelta(size_delta, style, weight).GetPrimaryFont();
588 } 614 }
589 615
590 const gfx::FontList& ResourceBundle::GetFontList(FontStyle legacy_style) { 616 const gfx::FontList& ResourceBundle::GetFontList(FontStyle legacy_style) {
591 gfx::Font::FontStyle font_style = gfx::Font::NORMAL; 617 gfx::Font::Weight font_weight = gfx::Font::Weight::NORMAL;
592 if (legacy_style == BoldFont || legacy_style == SmallBoldFont || 618 if (legacy_style == BoldFont || legacy_style == SmallBoldFont ||
593 legacy_style == MediumBoldFont || legacy_style == LargeBoldFont) 619 legacy_style == MediumBoldFont || legacy_style == LargeBoldFont)
594 font_style = gfx::Font::BOLD; 620 font_weight = gfx::Font::Weight::BOLD;
595 621
596 int size_delta = 0; 622 int size_delta = 0;
597 switch (legacy_style) { 623 switch (legacy_style) {
598 case SmallFont: 624 case SmallFont:
599 case SmallBoldFont: 625 case SmallBoldFont:
600 size_delta = kSmallFontDelta; 626 size_delta = kSmallFontDelta;
601 break; 627 break;
602 case MediumFont: 628 case MediumFont:
603 case MediumBoldFont: 629 case MediumBoldFont:
604 size_delta = kMediumFontDelta; 630 size_delta = kMediumFontDelta;
605 break; 631 break;
606 case LargeFont: 632 case LargeFont:
607 case LargeBoldFont: 633 case LargeBoldFont:
608 size_delta = kLargeFontDelta; 634 size_delta = kLargeFontDelta;
609 break; 635 break;
610 case BaseFont: 636 case BaseFont:
611 case BoldFont: 637 case BoldFont:
612 break; 638 break;
613 } 639 }
614 640
615 return GetFontListWithDelta(size_delta, font_style); 641 return GetFontListWithDelta(size_delta, gfx::Font::NORMAL, font_weight);
616 } 642 }
617 643
618 const gfx::Font& ResourceBundle::GetFont(FontStyle style) { 644 const gfx::Font& ResourceBundle::GetFont(FontStyle style) {
619 return GetFontList(style).GetPrimaryFont(); 645 return GetFontList(style).GetPrimaryFont();
620 } 646 }
621 647
622 void ResourceBundle::ReloadFonts() { 648 void ResourceBundle::ReloadFonts() {
623 base::AutoLock lock_scope(*images_and_fonts_lock_); 649 base::AutoLock lock_scope(*images_and_fonts_lock_);
624 InitDefaultFontList(); 650 InitDefaultFontList();
625 font_cache_.clear(); 651 font_cache_.clear();
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after
896 // static 922 // static
897 bool ResourceBundle::DecodePNG(const unsigned char* buf, 923 bool ResourceBundle::DecodePNG(const unsigned char* buf,
898 size_t size, 924 size_t size,
899 SkBitmap* bitmap, 925 SkBitmap* bitmap,
900 bool* fell_back_to_1x) { 926 bool* fell_back_to_1x) {
901 *fell_back_to_1x = PNGContainsFallbackMarker(buf, size); 927 *fell_back_to_1x = PNGContainsFallbackMarker(buf, size);
902 return gfx::PNGCodec::Decode(buf, size, bitmap); 928 return gfx::PNGCodec::Decode(buf, size, bitmap);
903 } 929 }
904 930
905 } // namespace ui 931 } // namespace ui
OLDNEW
« no previous file with comments | « ui/base/resource/resource_bundle.h ('k') | ui/chromeos/ime/candidate_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698