| 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 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 138 // Return the generated image. | 138 // Return the generated image. |
| 139 return canvas->ExtractImageRep().sk_bitmap(); | 139 return canvas->ExtractImageRep().sk_bitmap(); |
| 140 } | 140 } |
| 141 | 141 |
| 142 void PaintBadge(gfx::Canvas* canvas, | 142 void PaintBadge(gfx::Canvas* canvas, |
| 143 const gfx::Rect& bounds, | 143 const gfx::Rect& bounds, |
| 144 const std::string& text, | 144 const std::string& text, |
| 145 const SkColor& text_color_in, | 145 const SkColor& text_color_in, |
| 146 const SkColor& background_color_in, | 146 const SkColor& background_color_in, |
| 147 int icon_width, | 147 int icon_width, |
| 148 extensions::Extension::ActionInfo::Type action_type) { | 148 extensions::ActionInfo::Type action_type) { |
| 149 if (text.empty()) | 149 if (text.empty()) |
| 150 return; | 150 return; |
| 151 | 151 |
| 152 SkColor text_color = text_color_in; | 152 SkColor text_color = text_color_in; |
| 153 if (SkColorGetA(text_color_in) == 0x00) | 153 if (SkColorGetA(text_color_in) == 0x00) |
| 154 text_color = SK_ColorWHITE; | 154 text_color = SK_ColorWHITE; |
| 155 | 155 |
| 156 SkColor background_color = background_color_in; | 156 SkColor background_color = background_color_in; |
| 157 if (SkColorGetA(background_color_in) == 0x00) | 157 if (SkColorGetA(background_color_in) == 0x00) |
| 158 background_color = SkColorSetARGB(255, 218, 0, 24); | 158 background_color = SkColorSetARGB(255, 218, 0, 24); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 173 // Force the pixel width of badge to be either odd (if the icon width is odd) | 173 // Force the pixel width of badge to be either odd (if the icon width is odd) |
| 174 // or even otherwise. If there is a mismatch you get http://crbug.com/26400. | 174 // or even otherwise. If there is a mismatch you get http://crbug.com/26400. |
| 175 if (icon_width != 0 && (badge_width % 2 != icon_width % 2)) | 175 if (icon_width != 0 && (badge_width % 2 != icon_width % 2)) |
| 176 badge_width += 1; | 176 badge_width += 1; |
| 177 badge_width = std::max(kBadgeHeight, badge_width); | 177 badge_width = std::max(kBadgeHeight, badge_width); |
| 178 | 178 |
| 179 // Paint the badge background color in the right location. It is usually | 179 // Paint the badge background color in the right location. It is usually |
| 180 // right-aligned, but it can also be center-aligned if it is large. | 180 // right-aligned, but it can also be center-aligned if it is large. |
| 181 int rect_height = kBadgeHeight; | 181 int rect_height = kBadgeHeight; |
| 182 int bottom_margin = | 182 int bottom_margin = |
| 183 action_type == extensions::Extension::ActionInfo::TYPE_BROWSER ? | 183 action_type == extensions::ActionInfo::TYPE_BROWSER ? |
| 184 kBottomMarginBrowserAction : kBottomMarginPageAction; | 184 kBottomMarginBrowserAction : kBottomMarginPageAction; |
| 185 int rect_y = bounds.bottom() - bottom_margin - kBadgeHeight; | 185 int rect_y = bounds.bottom() - bottom_margin - kBadgeHeight; |
| 186 int rect_width = badge_width; | 186 int rect_width = badge_width; |
| 187 int rect_x = (badge_width >= kCenterAlignThreshold) ? | 187 int rect_x = (badge_width >= kCenterAlignThreshold) ? |
| 188 bounds.x() + (bounds.width() - badge_width) / 2 : | 188 bounds.x() + (bounds.width() - badge_width) / 2 : |
| 189 bounds.right() - badge_width; | 189 bounds.right() - badge_width; |
| 190 gfx::Rect rect(rect_x, rect_y, rect_width, rect_height); | 190 gfx::Rect rect(rect_x, rect_y, rect_width, rect_height); |
| 191 | 191 |
| 192 SkPaint rect_paint; | 192 SkPaint rect_paint; |
| 193 rect_paint.setStyle(SkPaint::kFill_Style); | 193 rect_paint.setStyle(SkPaint::kFill_Style); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 220 canvas->sk_canvas()->drawText( | 220 canvas->sk_canvas()->drawText( |
| 221 text.c_str(), text.size(), | 221 text.c_str(), text.size(), |
| 222 SkFloatToScalar(rect.x() + | 222 SkFloatToScalar(rect.x() + |
| 223 static_cast<float>(rect.width() - text_width) / 2), | 223 static_cast<float>(rect.width() - text_width) / 2), |
| 224 SkFloatToScalar(rect.y() + kTextSize + kTopTextPadding), | 224 SkFloatToScalar(rect.y() + kTextSize + kTopTextPadding), |
| 225 *text_paint); | 225 *text_paint); |
| 226 canvas->Restore(); | 226 canvas->Restore(); |
| 227 } | 227 } |
| 228 | 228 |
| 229 } // namespace badge_util | 229 } // namespace badge_util |
| OLD | NEW |