summaryrefslogtreecommitdiff
path: root/chromium/ui/native_theme/themed_vector_icon.cc
blob: bf3b0e65d9ff5523b7ba6a405b80343ea17e3813 (plain)
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
// 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;

const gfx::ImageSkia ThemedVectorIcon::GetImageSkia(
    const NativeTheme* theme) const {
  DCHECK(!empty());
  return icon_size_ > 0 ? CreateVectorIcon(*icon_, icon_size_, GetColor(theme))
                        : CreateVectorIcon(*icon_, GetColor(theme));
}

const gfx::ImageSkia ThemedVectorIcon::GetImageSkia(const NativeTheme* theme,
                                                    int icon_size) const {
  DCHECK(!empty());
  return CreateVectorIcon(*icon_, icon_size, GetColor(theme));
}

const 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