X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fcolorpickerwidget.h;h=ac9913ead55399ba7e3083eea976e828e87341dc;hb=f4462e7ecb75f64e524746e3bb7c62a5e973d965;hp=fce8d789c7e4a6a93c4c2a3de1af12aa6aee3b13;hpb=15c485914c3122e97cd8fe1271c0202d2d658c13;p=kdenlive diff --git a/src/colorpickerwidget.h b/src/colorpickerwidget.h index fce8d789..ac9913ea 100644 --- a/src/colorpickerwidget.h +++ b/src/colorpickerwidget.h @@ -23,18 +23,33 @@ #include #include +#include -class QSpinBox; +class QFrame; #ifdef Q_WS_X11 -class KCDPickerFilter; +#include #endif + +class MyFrame : public QFrame +{ + Q_OBJECT +public: + explicit MyFrame(QWidget* parent = 0); + +protected: + void hideEvent ( QHideEvent * event ); + +signals: + void getColor(); +}; + /** * @class ColorPickerWidget * @brief A widget to pick a color anywhere on the screen. * @author Till Theato * - * The code is based on the color picker in KColorDialog. + * The code is partially based on the color picker in KColorDialog. */ class ColorPickerWidget : public QWidget @@ -43,32 +58,47 @@ class ColorPickerWidget : public QWidget public: /** @brief Sets up the widget. */ - ColorPickerWidget(QWidget *parent = 0); + explicit ColorPickerWidget(QWidget *parent = 0); /** @brief Makes sure the event filter is removed. */ virtual ~ColorPickerWidget(); protected: - virtual void mousePressEvent(QMouseEvent *event); - virtual void mouseReleaseEvent(QMouseEvent *event); - virtual void keyPressEvent(QKeyEvent *event); + void mousePressEvent(QMouseEvent *event); + void mouseReleaseEvent(QMouseEvent *event); + void mouseMoveEvent(QMouseEvent *event); + bool eventFilter(QObject *object, QEvent *event); private: /** @brief Closes the event filter and makes mouse and keyboard work again on other widgets/windows. */ void closeEventFilter(); - /** @brief Calculates the average color for a rect around @param pos with m_size->value() as width. */ - QColor averagePickedColor(const QPoint pos); + + /** @brief Color of the screen at point @param p. + * @param p Position of color requested + * @param destroyImage (optional) Whether or not to keep the XImage in m_image + (needed for fast processing of rects) */ + QColor grabColor(const QPoint &p, bool destroyImage = true); + bool m_filterActive; - QSpinBox *m_size; + QRect m_grabRect; + QFrame *m_grabRectFrame; #ifdef Q_WS_X11 - KCDPickerFilter *m_filter; -#endif - + XImage *m_image; +#else + QImage m_image; +#endif + private slots: /** @brief Sets up an event filter for picking a color. */ void slotSetupEventFilter(); + /** @brief Calculates the average color for the pixels in the rect m_grabRect and emits colorPicked. */ + void slotGetAverageColor(); + signals: - void colorPicked(QColor); + void colorPicked(const QColor&); + void displayMessage(const QString&, int); + /** @brief When user wants to pick a color, it's better to disable filter so we get proper color values. */ + void disableCurrentFilter(bool); }; #endif