summaryrefslogtreecommitdiff
path: root/chromium/ui/base/models/image_model.cc
blob: 9578759666b47169a018e02a4936ee5bc3658dcc (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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
// 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/base/models/image_model.h"

namespace ui {

VectorIconModel::VectorIconModel() = default;

VectorIconModel::VectorIconModel(const gfx::VectorIcon& vector_icon,
                                 int color_id,
                                 int icon_size)
    : vector_icon_(&vector_icon), icon_size_(icon_size), color_id_(color_id) {}

VectorIconModel::VectorIconModel(const gfx::VectorIcon& vector_icon,
                                 SkColor color,
                                 int icon_size)
    : vector_icon_(&vector_icon), icon_size_(icon_size), color_(color) {}

VectorIconModel::~VectorIconModel() = default;

VectorIconModel::VectorIconModel(const VectorIconModel&) = default;

VectorIconModel& VectorIconModel::operator=(const VectorIconModel&) = default;

VectorIconModel::VectorIconModel(VectorIconModel&&) = default;

VectorIconModel& VectorIconModel::operator=(VectorIconModel&&) = default;

ImageModel::ImageModel() = default;

ImageModel::ImageModel(const VectorIconModel& vector_icon_model)
    : vector_icon_model_(vector_icon_model) {}

ImageModel::ImageModel(const gfx::Image& image) : image_(image) {}

ImageModel::ImageModel(const gfx::ImageSkia& image_skia)
    : ImageModel(gfx::Image(image_skia)) {}

ImageModel::~ImageModel() = default;

ImageModel::ImageModel(const ImageModel&) = default;

ImageModel& ImageModel::operator=(const ImageModel&) = default;

ImageModel::ImageModel(ImageModel&&) = default;

ImageModel& ImageModel::operator=(ImageModel&&) = default;

// static
ImageModel ImageModel::FromVectorIcon(const gfx::VectorIcon& vector_icon,
                                      int color_id,
                                      int icon_size) {
  return ImageModel(VectorIconModel(vector_icon, color_id, icon_size));
}

// static
ImageModel ImageModel::FromVectorIcon(const gfx::VectorIcon& vector_icon,
                                      SkColor color,
                                      int icon_size) {
  return ImageModel(VectorIconModel(vector_icon, color, icon_size));
}

// static
ImageModel ImageModel::FromImage(const gfx::Image& image) {
  return ImageModel(image);
}

// static
ImageModel ImageModel::FromImageSkia(const gfx::ImageSkia& image_skia) {
  return ImageModel(image_skia);
}

bool ImageModel::IsEmpty() const {
  return !IsVectorIcon() && !IsImage();
}

bool ImageModel::IsVectorIcon() const {
  return vector_icon_model_ && !vector_icon_model_.value().is_empty();
}

bool ImageModel::IsImage() const {
  return image_ && !image_.value().IsEmpty();
}

gfx::Size ImageModel::Size() const {
  if (IsVectorIcon()) {
    const int icon_size = GetVectorIcon().icon_size();
    return gfx::Size(icon_size, icon_size);
  }
  return IsImage() ? GetImage().Size() : gfx::Size();
}

const VectorIconModel ImageModel::GetVectorIcon() const {
  DCHECK(IsVectorIcon());
  return vector_icon_model_.value();
}

const gfx::Image ImageModel::GetImage() const {
  DCHECK(IsImage());
  return image_.value();
}

}  // namespace ui