blob: 3270ce3244dd5095f35c2f74c3f51a8d347d4c82 [file] [log] [blame]
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_COMMON_ICON_WITH_BADGE_IMAGE_SOURCE_H_
#define CHROME_COMMON_ICON_WITH_BADGE_IMAGE_SOURCE_H_
#include <string>
#include "third_party/skia/include/core/SkColor.h"
#include "ui/gfx/image/canvas_image_source.h"
#include "ui/gfx/image/image.h"
namespace gfx {
class Size;
}
// CanvasImageSource for creating extension icon with a badge.
// TODO(devlin): This class and its buddy badge_util don't really belong in
// chrome/common/.
class IconWithBadgeImageSource : public gfx::CanvasImageSource {
public:
// The data representing a badge to be painted over the base image.
struct Badge {
Badge(std::string text, SkColor text_color, SkColor background_color);
~Badge();
std::string text;
SkColor text_color;
SkColor background_color;
private:
DISALLOW_COPY_AND_ASSIGN(Badge);
};
explicit IconWithBadgeImageSource(const gfx::Size& size);
~IconWithBadgeImageSource() override;
void SetIcon(const gfx::Image& icon);
void SetBadge(scoped_ptr<Badge> badge);
void set_grayscale(bool grayscale) { grayscale_ = grayscale; }
void set_paint_decoration(bool paint_decoration) {
paint_decoration_ = paint_decoration;
}
bool grayscale() const { return grayscale_; }
bool paint_decoration() const { return paint_decoration_; }
private:
// gfx::CanvasImageSource:
void Draw(gfx::Canvas* canvas) override;
// Paints a decoration over the base icon to indicate that the action wants to
// run.
void PaintDecoration(gfx::Canvas* canvas);
// The base icon to draw.
gfx::Image icon_;
// An optional badge to draw over the base icon.
scoped_ptr<Badge> badge_;
// Whether or not the icon should be grayscaled (e.g., to show it is
// disabled).
bool grayscale_;
// Whether or not to paint a decoration over the base icon to indicate the
// represented action wants to run.
bool paint_decoration_;
DISALLOW_COPY_AND_ASSIGN(IconWithBadgeImageSource);
};
#endif // CHROME_COMMON_ICON_WITH_BADGE_IMAGE_SOURCE_H_