OLD | NEW |
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 "chrome/common/badge_util.h" | 5 #include "chrome/common/badge_util.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/utf_string_conversions.h" | 8 #include "base/utf_string_conversions.h" |
9 #include "grit/ui_resources.h" | 9 #include "grit/ui_resources.h" |
10 #include "third_party/skia/include/core/SkPaint.h" | 10 #include "third_party/skia/include/core/SkPaint.h" |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
61 #else | 61 #else |
62 const char kPreferredTypeface[] = "Arial"; | 62 const char kPreferredTypeface[] = "Arial"; |
63 #endif | 63 #endif |
64 | 64 |
65 static SkPaint* text_paint = NULL; | 65 static SkPaint* text_paint = NULL; |
66 if (!text_paint) { | 66 if (!text_paint) { |
67 text_paint = new SkPaint; | 67 text_paint = new SkPaint; |
68 text_paint->setAntiAlias(true); | 68 text_paint->setAntiAlias(true); |
69 text_paint->setTextAlign(SkPaint::kLeft_Align); | 69 text_paint->setTextAlign(SkPaint::kLeft_Align); |
70 | 70 |
71 SkTypeface* typeface = SkTypeface::CreateFromName( | 71 skia::RefPtr<SkTypeface> typeface = skia::AdoptRef( |
72 kPreferredTypeface, SkTypeface::kBold); | 72 SkTypeface::CreateFromName(kPreferredTypeface, SkTypeface::kBold)); |
73 // Skia doesn't do any font fallback---if the user is missing the font then | 73 // Skia doesn't do any font fallback---if the user is missing the font then |
74 // typeface will be NULL. If we don't do manual fallback then we'll crash. | 74 // typeface will be NULL. If we don't do manual fallback then we'll crash. |
75 if (typeface) { | 75 if (typeface) { |
76 text_paint->setFakeBoldText(true); | 76 text_paint->setFakeBoldText(true); |
77 } else { | 77 } else { |
78 // Fall back to the system font. We don't bold it because we aren't sure | 78 // Fall back to the system font. We don't bold it because we aren't sure |
79 // how it will look. | 79 // how it will look. |
80 // For the most part this code path will only be hit on Linux systems | 80 // For the most part this code path will only be hit on Linux systems |
81 // that don't have Arial. | 81 // that don't have Arial. |
82 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); | 82 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); |
83 const gfx::Font& base_font = rb.GetFont(ResourceBundle::BaseFont); | 83 const gfx::Font& base_font = rb.GetFont(ResourceBundle::BaseFont); |
84 typeface = SkTypeface::CreateFromName( | 84 typeface = skia::AdoptRef(SkTypeface::CreateFromName( |
85 base_font.GetFontName().c_str(), SkTypeface::kNormal); | 85 base_font.GetFontName().c_str(), SkTypeface::kNormal)); |
86 DCHECK(typeface); | 86 DCHECK(typeface); |
87 } | 87 } |
88 | 88 |
89 text_paint->setTypeface(typeface); | 89 text_paint->setTypeface(typeface.get()); |
90 // |text_paint| adds its own ref. Release the ref from CreateFontName. | 90 // |text_paint| adds its own ref. Release the ref from CreateFontName. |
91 typeface->unref(); | |
92 } | 91 } |
93 return text_paint; | 92 return text_paint; |
94 } | 93 } |
95 | 94 |
96 SkBitmap DrawBadgeIconOverlay(const SkBitmap& icon, | 95 SkBitmap DrawBadgeIconOverlay(const SkBitmap& icon, |
97 float font_size, | 96 float font_size, |
98 const string16& text, | 97 const string16& text, |
99 const string16& fallback) { | 98 const string16& fallback) { |
100 const int kMinPadding = 1; | 99 const int kMinPadding = 1; |
101 | 100 |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
221 canvas->sk_canvas()->drawText( | 220 canvas->sk_canvas()->drawText( |
222 text.c_str(), text.size(), | 221 text.c_str(), text.size(), |
223 SkFloatToScalar(rect.x() + | 222 SkFloatToScalar(rect.x() + |
224 static_cast<float>(rect.width() - text_width) / 2), | 223 static_cast<float>(rect.width() - text_width) / 2), |
225 SkFloatToScalar(rect.y() + kTextSize + kTopTextPadding), | 224 SkFloatToScalar(rect.y() + kTextSize + kTopTextPadding), |
226 *text_paint); | 225 *text_paint); |
227 canvas->Restore(); | 226 canvas->Restore(); |
228 } | 227 } |
229 | 228 |
230 } // namespace badge_util | 229 } // namespace badge_util |
OLD | NEW |