00001
00002
00003
00004
00005
00006
00007 #ifndef DIGITIZE_STATE_COLOR_PICKER_H
00008 #define DIGITIZE_STATE_COLOR_PICKER_H
00009
00010 #include "BackgroundImage.h"
00011 #include "DigitizeStateAbstractBase.h"
00012
00013 class DocumentModelColorFilter;
00014 class QColor;
00015 class QImage;
00016 class QPointF;
00017
00021 class DigitizeStateColorPicker : public DigitizeStateAbstractBase
00022 {
00023 public:
00025 DigitizeStateColorPicker(DigitizeStateContext &context);
00026 virtual ~DigitizeStateColorPicker();
00027
00028 virtual QString activeCurve () const;
00029 virtual void begin(CmdMediator *cmdMediator,
00030 DigitizeState previousState);
00031 virtual bool canPaste (const Transformation &transformation,
00032 const QSize &viewSize) const;
00033 virtual QCursor cursor (CmdMediator *cmdMediator) const;
00034 virtual void end();
00035 virtual void handleContextMenuEventAxis (CmdMediator *cmdMediator,
00036 const QString &pointIdentifier);
00037 virtual void handleContextMenuEventGraph (CmdMediator *cmdMediator,
00038 const QStringList &pointIdentifiers);
00039 virtual void handleCurveChange(CmdMediator *cmdMediator);
00040 virtual void handleKeyPress (CmdMediator *cmdMediator,
00041 Qt::Key key,
00042 bool atLeastOneSelectedItem);
00043 virtual void handleMouseMove (CmdMediator *cmdMediator,
00044 QPointF posScreen);
00045 virtual void handleMousePress (CmdMediator *cmdMediator,
00046 QPointF posScreen);
00047 virtual void handleMouseRelease (CmdMediator *cmdMediator,
00048 QPointF posScreen);
00049 virtual QString state() const;
00050 virtual void updateAfterPointAddition ();
00051 virtual void updateModelDigitizeCurve (CmdMediator *cmdMediator,
00052 const DocumentModelDigitizeCurve &modelDigitizeCurve);
00053 virtual void updateModelSegments(const DocumentModelSegments &modelSegments);
00054
00055 private:
00056 DigitizeStateColorPicker();
00057
00058 bool computeFilterFromPixel (CmdMediator *cmdMediator,
00059 const QPointF &posScreen,
00060 const QString &curveName,
00061 DocumentModelColorFilter &modelColorFilterAfter);
00062 bool findNearestNonBackgroundPixel (CmdMediator *cmdMediator,
00063 const QImage &image,
00064 const QPointF &posScreenPlusHalf,
00065 const QRgb &rgbBackground,
00066 QColor &pixel);
00067 void saveLowerValueUpperValue (DocumentModelColorFilter &modelColorFilterAfter,
00068 const QString &curveName,
00069 double lowerValue,
00070 double upperValue);
00071
00072
00073 DigitizeState m_previousDigitizeState;
00074 BackgroundImage m_previousBackground;
00075 };
00076
00077 #endif // DIGITIZE_STATE_COLOR_PICKER_H