1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
// 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
|