| 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 "third_party/skia/include/core/SkPaint.h" | 9 #include "third_party/skia/include/core/SkPaint.h" |
| 10 #include "third_party/skia/include/core/SkTypeface.h" | 10 #include "third_party/skia/include/core/SkTypeface.h" |
| (...skipping 10 matching lines...) Expand all Loading... |
| 21 #else | 21 #else |
| 22 const char kPreferredTypeface[] = "Arial"; | 22 const char kPreferredTypeface[] = "Arial"; |
| 23 #endif | 23 #endif |
| 24 | 24 |
| 25 static SkPaint* text_paint = NULL; | 25 static SkPaint* text_paint = NULL; |
| 26 if (!text_paint) { | 26 if (!text_paint) { |
| 27 text_paint = new SkPaint; | 27 text_paint = new SkPaint; |
| 28 text_paint->setAntiAlias(true); | 28 text_paint->setAntiAlias(true); |
| 29 text_paint->setTextAlign(SkPaint::kLeft_Align); | 29 text_paint->setTextAlign(SkPaint::kLeft_Align); |
| 30 | 30 |
| 31 SkTypeface* typeface = SkTypeface::CreateFromName( | 31 skia::RefPtr<SkTypeface> typeface = SkTypeface::CreateFromName( |
| 32 kPreferredTypeface, SkTypeface::kBold); | 32 kPreferredTypeface, SkTypeface::kBold); |
| 33 // Skia doesn't do any font fallback---if the user is missing the font then | 33 // Skia doesn't do any font fallback---if the user is missing the font then |
| 34 // typeface will be NULL. If we don't do manual fallback then we'll crash. | 34 // typeface will be NULL. If we don't do manual fallback then we'll crash. |
| 35 if (typeface) { | 35 if (typeface) { |
| 36 text_paint->setFakeBoldText(true); | 36 text_paint->setFakeBoldText(true); |
| 37 } else { | 37 } else { |
| 38 // Fall back to the system font. We don't bold it because we aren't sure | 38 // Fall back to the system font. We don't bold it because we aren't sure |
| 39 // how it will look. | 39 // how it will look. |
| 40 // For the most part this code path will only be hit on Linux systems | 40 // For the most part this code path will only be hit on Linux systems |
| 41 // that don't have Arial. | 41 // that don't have Arial. |
| 42 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); | 42 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); |
| 43 const gfx::Font& base_font = rb.GetFont(ResourceBundle::BaseFont); | 43 const gfx::Font& base_font = rb.GetFont(ResourceBundle::BaseFont); |
| 44 typeface = SkTypeface::CreateFromName( | 44 typeface = SkTypeface::CreateFromName( |
| 45 base_font.GetFontName().c_str(), SkTypeface::kNormal); | 45 base_font.GetFontName().c_str(), SkTypeface::kNormal); |
| 46 DCHECK(typeface); | 46 DCHECK(typeface); |
| 47 } | 47 } |
| 48 | 48 |
| 49 text_paint->setTypeface(typeface); | 49 text_paint->setTypeface(typeface.get()); |
| 50 // |text_paint| adds its own ref. Release the ref from CreateFontName. | 50 // |text_paint| adds its own ref. Release the ref from CreateFontName. |
| 51 typeface->unref(); | |
| 52 } | 51 } |
| 53 return text_paint; | 52 return text_paint; |
| 54 } | 53 } |
| 55 | 54 |
| 56 SkBitmap DrawBadgeIconOverlay(const SkBitmap& icon, | 55 SkBitmap DrawBadgeIconOverlay(const SkBitmap& icon, |
| 57 float font_size, | 56 float font_size, |
| 58 const string16& text, | 57 const string16& text, |
| 59 const string16& fallback) { | 58 const string16& fallback) { |
| 60 const int kMinPadding = 1; | 59 const int kMinPadding = 1; |
| 61 | 60 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 94 SkScalar x = (badge_width - text_width)/2; | 93 SkScalar x = (badge_width - text_width)/2; |
| 95 SkScalar y = (icon.height() - font_size)/2 + font_size - 1; | 94 SkScalar y = (icon.height() - font_size)/2 + font_size - 1; |
| 96 canvas->sk_canvas()->drawText( | 95 canvas->sk_canvas()->drawText( |
| 97 badge_text.c_str(), badge_text.size(), x, y, *paint); | 96 badge_text.c_str(), badge_text.size(), x, y, *paint); |
| 98 | 97 |
| 99 // Return the generated image. | 98 // Return the generated image. |
| 100 return canvas->ExtractImageRep().sk_bitmap(); | 99 return canvas->ExtractImageRep().sk_bitmap(); |
| 101 } | 100 } |
| 102 | 101 |
| 103 } // namespace badge_util | 102 } // namespace badge_util |
| OLD | NEW |