Warning, file /graphics/glaxnimate/src/gui/tools/color_picker.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 * SPDX-FileCopyrightText: 2019-2023 Mattia Basaglia <dev@dragon.best> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 0007 #include "base.hpp" 0008 0009 #include <QtColorWidgets/color_utils.hpp> 0010 #include "widgets/tools/color_picker_widget.hpp" 0011 0012 namespace glaxnimate::gui::tools { 0013 0014 class ColorPickerTool : public Tool 0015 { 0016 public: 0017 QString id() const override { return "color-picker"; } 0018 QIcon icon() const override { return QIcon::fromTheme("color-picker"); } 0019 QString name() const override { return i18n("Color Picker"); } 0020 QKeySequence key_sequence() const override { return QKeySequence(i18n("F7"), QKeySequence::PortableText); } 0021 static int static_group() noexcept { return Registry::Style; } 0022 int group() const noexcept override { return static_group(); } 0023 0024 void mouse_move(const MouseEvent& event) override 0025 { 0026 #if QT_VERSION_MAJOR < 6 0027 widget()->set_color(color_widgets::utils::get_screen_color(event.event->globalPos())); 0028 #else 0029 widget()->set_color(color_widgets::utils::get_screen_color(event.event->globalPosition().toPoint())); 0030 #endif 0031 } 0032 0033 void mouse_release(const MouseEvent& event) override 0034 { 0035 #if QT_VERSION_MAJOR < 6 0036 QColor color = color_widgets::utils::get_screen_color(event.event->globalPos()); 0037 #else 0038 QColor color = color_widgets::utils::get_screen_color(event.event->globalPosition().toPoint()); 0039 #endif 0040 widget()->set_color(color); 0041 if ( widget()->set_fill() ) 0042 event.window->set_current_color(color); 0043 else 0044 event.window->set_secondary_color(color); 0045 } 0046 void key_press(const KeyEvent& event) override 0047 { 0048 if ( event.key() == Qt::Key_Shift ) 0049 widget()->swap_fill_color(); 0050 } 0051 void key_release(const KeyEvent& event) override 0052 { 0053 if ( event.key() == Qt::Key_Shift ) 0054 widget()->swap_fill_color(); 0055 } 0056 0057 QCursor cursor() override { return Qt::CrossCursor; } 0058 0059 void mouse_press(const MouseEvent& event) override { Q_UNUSED(event); } 0060 void mouse_double_click(const MouseEvent& event) override { Q_UNUSED(event); } 0061 void paint(const PaintEvent& event) override { Q_UNUSED(event); } 0062 void enable_event(const Event& event) override { Q_UNUSED(event); } 0063 void disable_event(const Event& event) override { Q_UNUSED(event); } 0064 0065 protected: 0066 QWidget* on_create_widget() override 0067 { 0068 return new ColorPickerWidget(); 0069 } 0070 0071 ColorPickerWidget* widget() 0072 { 0073 return static_cast<ColorPickerWidget*>(get_settings_widget()); 0074 } 0075 0076 private: 0077 static Autoreg<ColorPickerTool> autoreg; 0078 }; 0079 0080 0081 Autoreg<ColorPickerTool> ColorPickerTool::autoreg{max_priority}; 0082 0083 } // namespace glaxnimate::gui::tools 0084 0085 0086