Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055 #ifndef QTCOLORTRIANGLE_H
00056 #define QTCOLORTRIANGLE_H
00057 #include <QImage>
00058 #include <QWidget>
00059
00060 class QPointF;
00061 struct Vertex;
00062
00063 #if defined(KLF_WS_WIN)
00064 # if !defined(QT_QTCOLORTRIANGLE_EXPORT) && !defined(QT_QTCOLORTRIANGLE_IMPORT)
00065 # define QT_QTCOLORTRIANGLE_EXPORT
00066 # elif defined(QT_QTCOLORTRIANGLE_IMPORT)
00067 # if defined(QT_QTCOLORTRIANGLE_EXPORT)
00068 # undef QT_QTCOLORTRIANGLE_EXPORT
00069 # endif
00070 # define QT_QTCOLORTRIANGLE_EXPORT __declspec(dllimport)
00071 # elif defined(QT_QTCOLORTRIANGLE_EXPORT)
00072 # undef QT_QTCOLORTRIANGLE_EXPORT
00073 # define QT_QTCOLORTRIANGLE_EXPORT __declspec(dllexport)
00074 # endif
00075 #else
00076 # define QT_QTCOLORTRIANGLE_EXPORT
00077 #endif
00078
00079 class QT_QTCOLORTRIANGLE_EXPORT QtColorTriangle : public QWidget
00080 {
00081 Q_OBJECT
00082
00083 Q_PROPERTY(QColor color READ color WRITE setColor)
00084
00085 public:
00086 QtColorTriangle(QWidget *parent = 0);
00087 ~QtColorTriangle();
00088
00089 QSize sizeHint() const;
00090 int heightForWidth(int w) const;
00091
00092 void polish();
00093 QColor color() const;
00094
00095 Q_SIGNALS:
00096 void colorChanged(const QColor &col);
00097
00098 public Q_SLOTS:
00099 void setColor(const QColor &col);
00100
00101 protected:
00102 void paintEvent(QPaintEvent *);
00103 void mouseMoveEvent(QMouseEvent *);
00104 void mousePressEvent(QMouseEvent *);
00105 void mouseReleaseEvent(QMouseEvent *);
00106 void keyPressEvent(QKeyEvent *e);
00107 void resizeEvent(QResizeEvent *);
00108 void drawTrigon(QImage *p, const QPointF &a, const QPointF &b,
00109 const QPointF &c, const QColor &color);
00110
00111 void internalSetNewColor(const QColor& color);
00112
00113 private:
00114 double radiusAt(const QPointF &pos, const QRect &rect) const;
00115 double angleAt(const QPointF &pos, const QRect &rect) const;
00116 QPointF movePointToTriangle(double x, double y, const Vertex &a,
00117 const Vertex &b, const Vertex &c) const;
00118
00119 QPointF pointFromColor(const QColor &col) const;
00120 QColor colorFromPoint(const QPointF &p) const;
00121
00122 void genBackground();
00123
00124 QImage bg;
00125 double a, b, c;
00126 QPointF pa, pb, pc, pd;
00127
00128 QColor curColor;
00129 int curHue;
00130
00131 bool mustGenerateBackground;
00132 int penWidth;
00133 int ellipseSize;
00134
00135 int outerRadius;
00136 QPointF selectorPos;
00137
00138 enum SelectionMode {
00139 Idle,
00140 SelectingHue,
00141 SelectingSatValue
00142 } selMode;
00143 };
00144
00145 #endif