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