blob: 949c299f32c5e9ef4eba17c03c264795fb353bd8 [file] [log] [blame]
// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ui/base/themed_vector_icon.h"
#include "ui/color/color_provider.h"
#include "ui/color/color_variant.h"
#include "ui/gfx/paint_vector_icon.h"
#include "ui/gfx/vector_icon_types.h"
#include "ui/gfx/vector_icon_utils.h"
namespace ui {
ThemedVectorIcon::ThemedVectorIcon() = default;
ThemedVectorIcon::ThemedVectorIcon(const gfx::VectorIcon* icon,
ui::ColorVariant color,
int icon_size,
const gfx::VectorIcon* badge)
: icon_(icon), icon_size_(icon_size), color_(color), badge_(badge) {}
ThemedVectorIcon::ThemedVectorIcon(const VectorIconModel& vector_icon_model)
: icon_(vector_icon_model.vector_icon()),
icon_size_(vector_icon_model.icon_size()),
badge_(vector_icon_model.badge_icon()) {
color_ = vector_icon_model.color();
}
ThemedVectorIcon::ThemedVectorIcon(const ThemedVectorIcon&) = default;
ThemedVectorIcon& ThemedVectorIcon::operator=(const ThemedVectorIcon&) =
default;
ThemedVectorIcon::ThemedVectorIcon(ThemedVectorIcon&&) = default;
ThemedVectorIcon& ThemedVectorIcon::operator=(ThemedVectorIcon&&) = default;
ThemedVectorIcon::~ThemedVectorIcon() = default;
gfx::ImageSkia ThemedVectorIcon::GetImageSkia(
const ColorProvider* color_provider) const {
DCHECK(!empty());
return GetImageSkia(color_provider, (icon_size_ > 0)
? icon_size_
: GetDefaultSizeOfVectorIcon(*icon_));
}
gfx::ImageSkia ThemedVectorIcon::GetImageSkia(
const ColorProvider* color_provider,
int icon_size) const {
DCHECK(!empty());
return GetImageSkia(GetColor(color_provider), icon_size);
}
gfx::ImageSkia ThemedVectorIcon::GetImageSkia(SkColor color) const {
DCHECK(!empty());
return GetImageSkia(color, (icon_size_ > 0)
? icon_size_
: GetDefaultSizeOfVectorIcon(*icon_));
}
SkColor ThemedVectorIcon::GetColor(const ColorProvider* color_provider) const {
return color_.ResolveToSkColor(color_provider);
}
gfx::ImageSkia ThemedVectorIcon::GetImageSkia(SkColor color,
int icon_size) const {
return badge_ ? CreateVectorIconWithBadge(*icon_, icon_size, color, *badge_)
: CreateVectorIcon(*icon_, icon_size, color);
}
} // namespace ui