#ifndef UI_VIEWS_CONTROLS_BUTTON_LABEL_BUTTON_BORDER_H_
#define UI_VIEWS_CONTROLS_BUTTON_LABEL_BUTTON_BORDER_H_
#include <array>
#include <memory>
#include "ui/gfx/geometry/insets.h"
#include "ui/views/border.h"
#include "ui/views/controls/button/button.h"
#include "ui/views/painter.h"
namespace views {
class VIEWS_EXPORT LabelButtonBorder : public Border {
public:
LabelButtonBorder();
LabelButtonBorder(const LabelButtonBorder&) = delete;
LabelButtonBorder& operator=(const LabelButtonBorder&) = delete;
~LabelButtonBorder() override;
void set_insets(const gfx::Insets& insets) { insets_ = insets; }
virtual bool PaintsButtonState(bool focused, Button::ButtonState state);
void Paint(const View& view, gfx::Canvas* canvas) override;
gfx::Insets GetInsets() const override;
gfx::Size GetMinimumSize() const override;
private:
gfx::Insets insets_;
};
class VIEWS_EXPORT LabelButtonAssetBorder : public LabelButtonBorder {
public:
LabelButtonAssetBorder();
LabelButtonAssetBorder(const LabelButtonAssetBorder&) = delete;
LabelButtonAssetBorder& operator=(const LabelButtonAssetBorder&) = delete;
~LabelButtonAssetBorder() override;
static gfx::Insets GetDefaultInsets();
bool PaintsButtonState(bool focused, Button::ButtonState state) override;
void Paint(const View& view, gfx::Canvas* canvas) override;
gfx::Size GetMinimumSize() const override;
Painter* GetPainter(bool focused, Button::ButtonState state);
void SetPainter(bool focused,
Button::ButtonState state,
std::unique_ptr<Painter> painter);
private:
std::array<std::array<std::unique_ptr<Painter>, Button::STATE_COUNT>, 2>
painters_;
};
}
#endif