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 3 // found in the LICENSE file. 4 5 #ifndef CHROME_COMMON_ICON_WITH_BADGE_IMAGE_SOURCE_H_ 6 #define CHROME_COMMON_ICON_WITH_BADGE_IMAGE_SOURCE_H_ 7 8 #include <string> 9 10 #include "chrome/common/extensions/api/extension_action/action_info.h" 11 #include "ui/gfx/image/canvas_image_source.h" 12 #include "ui/gfx/image/image_skia.h" 13 14 namespace gfx { 15 class Size; 16 } 17 18 // CanvasImageSource for creating extension icon with a badge. 19 class IconWithBadgeImageSource 20 : public gfx::CanvasImageSource { 21 public: 22 IconWithBadgeImageSource( 23 const gfx::ImageSkia& icon, 24 const gfx::Size& icon_size, 25 const gfx::Size& spacing, 26 const std::string& text, 27 const SkColor& text_color, 28 const SkColor& background_color, 29 extensions::ActionInfo::Type action_type); 30 virtual ~IconWithBadgeImageSource(); 31 32 private: 33 virtual void Draw(gfx::Canvas* canvas) OVERRIDE; 34 35 // Browser action icon image. 36 gfx::ImageSkia icon_; 37 38 // Extra spacing for badge compared to icon bounds. 39 gfx::Size spacing_; 40 41 // Text to be displayed on the badge. 42 std::string text_; 43 44 // Color of badge text. 45 SkColor text_color_; 46 47 // Color of the badge. 48 SkColor background_color_; 49 50 // Type of extension action this is for. 51 extensions::ActionInfo::Type action_type_; 52 53 DISALLOW_COPY_AND_ASSIGN(IconWithBadgeImageSource); 54 }; 55 56 #endif // CHROME_COMMON_ICON_WITH_BADGE_IMAGE_SOURCE_H_ 57