Serenity Operating System
at master 54 lines 1.4 kB view raw
1/* 2 * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org> 3 * Copyright (c) 2022, the SerenityOS developers. 4 * 5 * SPDX-License-Identifier: BSD-2-Clause 6 */ 7 8#pragma once 9 10#include <LibGUI/AbstractButton.h> 11#include <LibGUI/Dialog.h> 12 13namespace GUI { 14 15class ColorButton; 16class ColorPreview; 17class CustomColorWidget; 18class ColorSelectOverlay; 19 20class ColorPicker final : public Dialog { 21 C_OBJECT(ColorPicker) 22 23public: 24 virtual ~ColorPicker() override = default; 25 26 bool color_has_alpha_channel() const { return m_color_has_alpha_channel; } 27 void set_color_has_alpha_channel(bool); 28 Color color() const { return m_color; } 29 30private: 31 explicit ColorPicker(Color, Window* parent_window = nullptr, DeprecatedString title = "Edit Color"); 32 33 void build_ui(); 34 void build_ui_custom(Widget& root_container); 35 void build_ui_palette(Widget& root_container); 36 void update_color_widgets(); 37 void create_color_button(Widget& container, unsigned rgb); 38 39 Color m_color; 40 bool m_color_has_alpha_channel { true }; 41 42 Vector<ColorButton&> m_color_widgets; 43 RefPtr<CustomColorWidget> m_custom_color; 44 RefPtr<GUI::VerticalOpacitySlider> m_alpha; 45 RefPtr<ColorPreview> m_preview_widget; 46 RefPtr<Button> m_selector_button; 47 RefPtr<TextBox> m_html_text; 48 RefPtr<SpinBox> m_red_spinbox; 49 RefPtr<SpinBox> m_green_spinbox; 50 RefPtr<SpinBox> m_blue_spinbox; 51 RefPtr<SpinBox> m_alpha_spinbox; 52}; 53 54}