00001
00002
00003
00004
00005
00006
00007 #ifndef DIGITIZE_STATE_ABSTRACT_BASE_H
00008 #define DIGITIZE_STATE_ABSTRACT_BASE_H
00009
00010 #include "PointStyle.h"
00011 #include <QCursor>
00012 #include <QPointF>
00013
00014 class CmdMediator;
00015 class DigitizeStateContext;
00016 class DocumentModelDigitizeCurve;
00017 class DocumentModelSegments;
00018 class QGraphicsScene;
00019 class QImage;
00020 class QString;
00021 class QStringList;
00022 class QTimer;
00023
00025 enum DigitizeState {
00026 DIGITIZE_STATE_AXIS,
00027 DIGITIZE_STATE_COLOR_PICKER,
00028 DIGITIZE_STATE_CURVE,
00029 DIGITIZE_STATE_EMPTY,
00030 DIGITIZE_STATE_POINT_MATCH,
00031 DIGITIZE_STATE_SEGMENT,
00032 DIGITIZE_STATE_SELECT,
00033 NUM_DIGITIZE_STATES
00034 };
00035
00037 class DigitizeStateAbstractBase
00038 {
00039 public:
00041 DigitizeStateAbstractBase(DigitizeStateContext &context);
00042 virtual ~DigitizeStateAbstractBase ();
00043
00045 virtual QString activeCurve () const = 0;
00046
00049 virtual void begin(CmdMediator *cmdMediator,
00050 DigitizeState previousState) = 0;
00051
00053 DigitizeStateContext &context();
00054
00056 const DigitizeStateContext &context() const;
00057
00059 virtual void end() = 0;
00060
00062 virtual void handleContextMenuEventAxis (CmdMediator *cmdMediator,
00063 const QString &pointIdentifier) = 0;
00064
00066 virtual void handleContextMenuEventGraph (CmdMediator *cmdMediator,
00067 const QStringList &pointIdentifiers) = 0;
00068
00070 virtual void handleCurveChange (CmdMediator *cmdMediator) = 0;
00071
00073 virtual void handleKeyPress (CmdMediator *cmdMediator,
00074 Qt::Key key,
00075 bool atLeastOneSelectedItem) = 0;
00076
00078 virtual void handleMouseMove (CmdMediator *cmdMediator,
00079 QPointF posScreen) = 0;
00080
00082 virtual void handleMousePress (CmdMediator *cmdMediator,
00083 QPointF pos) = 0;
00084
00086 virtual void handleMouseRelease (CmdMediator *cmdMediator,
00087 QPointF pos) = 0;
00088
00090 void setCursor(CmdMediator *cmdMediator);
00091
00093 virtual QString state() const = 0;
00094
00096 virtual void updateAfterPointAddition () = 0;
00097
00099 virtual void updateModelDigitizeCurve (CmdMediator *cmdMediator,
00100 const DocumentModelDigitizeCurve &modelDigitizeCurve) = 0;
00101
00103 virtual void updateModelSegments(const DocumentModelSegments &modelSegments) = 0;
00104
00105 protected:
00107 virtual QCursor cursor (CmdMediator *cmdMediator) const = 0;
00108
00109 private:
00110 DigitizeStateAbstractBase();
00111
00112 DigitizeStateContext &m_context;
00113
00114 };
00115
00116 #endif // DIGITIZE_STATE_ABSTRACT_BASE_H