blob: d4374ca97c3caed84a0b4cc25b9e4d74dfa06a58 [file] [log] [blame]
// Copyright 2020 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.
#include "ui/native_theme/themed_vector_icon.h"
#include "ui/gfx/paint_vector_icon.h"
#include "ui/gfx/vector_icon_types.h"
namespace ui {
ThemedVectorIcon::ThemedVectorIcon() = default;
ThemedVectorIcon::ThemedVectorIcon(const gfx::VectorIcon* icon,
NativeTheme::ColorId color_id,
int icon_size)
: icon_(icon), icon_size_(icon_size), color_id_(color_id) {}
ThemedVectorIcon::ThemedVectorIcon(const VectorIconModel& vector_icon_model)
: icon_(vector_icon_model.vector_icon()),
icon_size_(vector_icon_model.icon_size()) {
if (vector_icon_model.has_color()) {
color_ = vector_icon_model.color();
} else if (vector_icon_model.color_id() >= 0) {
color_id_ =
static_cast<ui::NativeTheme::ColorId>(vector_icon_model.color_id());
} else {
color_id_ = ui::NativeTheme::kColorId_MenuIconColor;
}
}
ThemedVectorIcon::ThemedVectorIcon(const gfx::VectorIcon* icon,
SkColor color,
int icon_size)
: icon_(icon), icon_size_(icon_size), color_(color) {}
ThemedVectorIcon::ThemedVectorIcon(const ThemedVectorIcon&) = default;
ThemedVectorIcon& ThemedVectorIcon::operator=(const ThemedVectorIcon&) =
default;
ThemedVectorIcon::ThemedVectorIcon(ThemedVectorIcon&&) = default;
ThemedVectorIcon& ThemedVectorIcon::operator=(ThemedVectorIcon&&) = default;
gfx::ImageSkia ThemedVectorIcon::GetImageSkia(const NativeTheme* theme) const {
DCHECK(!empty());
return icon_size_ > 0 ? CreateVectorIcon(*icon_, icon_size_, GetColor(theme))
: CreateVectorIcon(*icon_, GetColor(theme));
}
gfx::ImageSkia ThemedVectorIcon::GetImageSkia(const NativeTheme* theme,
int icon_size) const {
DCHECK(!empty());
return CreateVectorIcon(*icon_, icon_size, GetColor(theme));
}
gfx::ImageSkia ThemedVectorIcon::GetImageSkia(SkColor color) const {
DCHECK(!empty());
return icon_size_ > 0 ? CreateVectorIcon(*icon_, icon_size_, color)
: CreateVectorIcon(*icon_, color);
}
SkColor ThemedVectorIcon::GetColor(const NativeTheme* theme) const {
DCHECK(color_id_ || color_);
return color_id_ ? theme->GetSystemColor(color_id_.value()) : color_.value();
}
} // namespace ui