/* * Copyright (c) 2018-2020, Andreas Kling * Copyright (c) 2022, the SerenityOS developers. * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include namespace GUI { class ColorButton; class ColorPreview; class CustomColorWidget; class ColorSelectOverlay; class ColorPicker final : public Dialog { C_OBJECT(ColorPicker) public: virtual ~ColorPicker() override = default; bool color_has_alpha_channel() const { return m_color_has_alpha_channel; } void set_color_has_alpha_channel(bool); Color color() const { return m_color; } Function on_color_changed; private: explicit ColorPicker(Color, Window* parent_window = nullptr, ByteString title = "Color Picker"); void build_ui(); void build_ui_custom(Widget& root_container); void build_ui_palette(Widget& root_container); void update_color_widgets(); void create_color_button(Widget& container, unsigned rgb); Color m_original_color; Color m_color; bool m_color_has_alpha_channel { true }; Vector m_color_widgets; RefPtr m_custom_color; RefPtr m_alpha; RefPtr m_preview_widget; RefPtr