00001 /****************************************************************************************************** 00002 * (C) 2014 markummitchell@github.com. This file is part of Engauge Digitizer, which is released * 00003 * under GNU General Public License version 2 (GPLv2) or (at your option) any later version. See file * 00004 * LICENSE or go to gnu.org/licenses for details. Distribution requires prior written permission. * 00005 ******************************************************************************************************/ 00006 00007 #ifndef DIGITIZE_STATE_SEGMENT_H 00008 #define DIGITIZE_STATE_SEGMENT_H 00009 00010 #include "DigitizeStateAbstractBase.h" 00011 #include <QList> 00012 #include <QObject> 00013 00014 class Segment; 00015 00017 class DigitizeStateSegment : public QObject, public DigitizeStateAbstractBase 00018 { 00019 Q_OBJECT; 00020 00021 public: 00023 DigitizeStateSegment(DigitizeStateContext &context); 00024 virtual ~DigitizeStateSegment(); 00025 00026 virtual QString activeCurve () const; 00027 virtual void begin(CmdMediator *cmdMediator, 00028 DigitizeState previousState); 00029 virtual QCursor cursor (CmdMediator *cmdMediator) const; 00030 virtual void end(); 00031 virtual void handleCurveChange(CmdMediator *cmdMediator); 00032 virtual void handleKeyPress (CmdMediator *cmdMediator, 00033 Qt::Key key, 00034 bool atLeastOneSelectedItem); 00035 virtual void handleMouseMove (CmdMediator *cmdMediator, 00036 QPointF posScreen); 00037 virtual void handleMousePress (CmdMediator *cmdMediator, 00038 QPointF posScreen); 00039 virtual void handleMouseRelease (CmdMediator *cmdMediator, 00040 QPointF posScreen); 00041 virtual QString state() const; 00042 virtual void updateModelDigitizeCurve (CmdMediator *cmdMediator, 00043 const DocumentModelDigitizeCurve &modelDigitizeCurve); 00044 virtual void updateModelSegments(const DocumentModelSegments &modelSegments); 00045 00046 public slots: 00048 void slotMouseClickOnSegment(QPointF); 00049 00050 private: 00051 DigitizeStateSegment(); 00052 00053 // Identify which Segment owns the SegmentLine that was clicked on 00054 Segment *segmentFromSegmentStart (const QPointF &posSegmentStart) const; 00055 00056 QList<Segment*> m_segments; 00057 CmdMediator *m_cmdMediator; 00058 }; 00059 00060 #endif // DIGITIZE_STATE_SEGMENT_H