24 icon(elusive_icon
const &
icon)
noexcept;
25 icon(hikogui_icon
const &
icon)
noexcept;
27 constexpr icon() noexcept : _image(std::monostate{}) {}
29 icon(
icon const &)
noexcept =
default;
31 icon &operator=(
icon const &)
noexcept =
default;
32 icon &operator=(
icon &&)
noexcept =
default;
34 [[nodiscard]]
constexpr bool empty()
const noexcept
36 return std::holds_alternative<std::monostate>(_image);
39 [[nodiscard]]
constexpr explicit operator bool()
const noexcept
44 [[nodiscard]]
friend bool operator==(
icon const &lhs,
icon const &rhs)
noexcept
46 return lhs._image == rhs._image;
50 [[nodiscard]]
friend bool holds_alternative(hi::icon
const &
icon)
noexcept
52 return std::holds_alternative<T>(
icon._image);
56 [[nodiscard]]
friend T
const &get(hi::icon
const &
icon)
noexcept
58 return std::get<T>(
icon._image);
62 [[nodiscard]]
friend T &get(hi::icon &
icon)
noexcept
64 return std::get<T>(
icon._image);
68 [[nodiscard]]
friend std::add_pointer_t<T const> get_if(hi::icon
const *
icon)
noexcept
70 return std::get_if<T>(&
icon->_image);
74 [[nodiscard]]
friend std::add_pointer_t<T> get_if(hi::icon *
icon)
noexcept
76 return std::get_if<T>(&
icon->_image);
80 using image_type = std::variant<std::monostate, elusive_icon, hikogui_icon, glyph_ids, pixel_map<sfloat_rgba16>>;