Engauge Digitizer  2
DigitizeStateSegment.h
1 /******************************************************************************************************
2  * (C) 2014 markummitchell@github.com. This file is part of Engauge Digitizer, which is released *
3  * under GNU General Public License version 2 (GPLv2) or (at your option) any later version. See file *
4  * LICENSE or go to gnu.org/licenses for details. Distribution requires prior written permission. *
5  ******************************************************************************************************/
6 
7 #ifndef DIGITIZE_STATE_SEGMENT_H
8 #define DIGITIZE_STATE_SEGMENT_H
9 
10 #include "DigitizeStateAbstractBase.h"
11 #include <QList>
12 #include <QObject>
13 
14 class Segment;
15 
17 class DigitizeStateSegment : public QObject, public DigitizeStateAbstractBase
18 {
19  Q_OBJECT;
20 
21 public:
24  virtual ~DigitizeStateSegment();
25 
26  virtual QString activeCurve () const;
27  virtual void begin(CmdMediator *cmdMediator,
28  DigitizeState previousState);
29  virtual QCursor cursor (CmdMediator *cmdMediator) const;
30  virtual void end();
31  virtual void handleContextMenuEventAxis (CmdMediator *cmdMediator,
32  const QString &pointIdentifier);
33  virtual void handleContextMenuEventGraph (CmdMediator *cmdMediator,
34  const QStringList &pointIdentifiers);
35  virtual void handleCurveChange(CmdMediator *cmdMediator);
36  virtual void handleKeyPress (CmdMediator *cmdMediator,
37  Qt::Key key,
38  bool atLeastOneSelectedItem);
39  virtual void handleMouseMove (CmdMediator *cmdMediator,
40  QPointF posScreen);
41  virtual void handleMousePress (CmdMediator *cmdMediator,
42  QPointF posScreen);
43  virtual void handleMouseRelease (CmdMediator *cmdMediator,
44  QPointF posScreen);
45  virtual QString state() const;
46  virtual void updateAfterPointAddition ();
47  virtual void updateModelDigitizeCurve (CmdMediator *cmdMediator,
48  const DocumentModelDigitizeCurve &modelDigitizeCurve);
49  virtual void updateModelSegments(const DocumentModelSegments &modelSegments);
50 
51 public slots:
53  void slotMouseClickOnSegment(QPointF);
54 
55 private:
57 
58  // Identify which Segment owns the SegmentLine that was clicked on
59  Segment *segmentFromSegmentStart (const QPointF &posSegmentStart) const;
60 
61  QList<Segment*> m_segments;
62  CmdMediator *m_cmdMediator;
63 };
64 
65 #endif // DIGITIZE_STATE_SEGMENT_H
virtual void updateAfterPointAddition()
Update graphics attributes after possible new points. This is useful for highlight opacity...
virtual void handleMousePress(CmdMediator *cmdMediator, QPointF posScreen)
Handle a mouse press that was intercepted earlier.
virtual void updateModelSegments(const DocumentModelSegments &modelSegments)
Update the segments given the new settings.
virtual void handleContextMenuEventAxis(CmdMediator *cmdMediator, const QString &pointIdentifier)
Handle a right click, on an axis point, that was intercepted earlier.
virtual QCursor cursor(CmdMediator *cmdMediator) const
Returns the state-specific cursor shape.
virtual void handleMouseMove(CmdMediator *cmdMediator, QPointF posScreen)
Handle a mouse move. This is part of an experiment to see if augmenting the cursor in Point Match mod...
virtual void updateModelDigitizeCurve(CmdMediator *cmdMediator, const DocumentModelDigitizeCurve &modelDigitizeCurve)
Update the digitize curve settings.
virtual QString activeCurve() const
Name of the active Curve. This can include AXIS_CURVE_NAME.
DigitizeStateContext & context()
Reference to the DigitizeStateContext that contains all the DigitizeStateAbstractBase subclasses...
virtual void handleCurveChange(CmdMediator *cmdMediator)
Handle the selection of a new curve. At a minimum, DigitizeStateSegment will generate a new set of Se...
Model for DlgSettingsDigitizeCurve and CmdSettingsDigitizeCurve.
Container for all DigitizeStateAbstractBase subclasses. This functions as the context class in a stan...
virtual void end()
Method that is called at the exact moment a state is exited. Typically called just before begin for t...
Selectable piecewise-defined line that follows a filtered line in the image.
Definition: Segment.h:21
void slotMouseClickOnSegment(QPointF)
Receive signal from Segment that has been clicked on. The CmdMediator from the begin method will be u...
virtual void begin(CmdMediator *cmdMediator, DigitizeState previousState)
Method that is called at the exact moment a state is entered.
virtual void handleContextMenuEventGraph(CmdMediator *cmdMediator, const QStringList &pointIdentifiers)
Handle a right click, on a graph point, that was intercepted earlier.
virtual QString state() const
State name for debugging.
Command queue stack.
Definition: CmdMediator.h:23
Model for DlgSettingsSegments and CmdSettingsSegments.
Base class for all digitizing states. This serves as an interface to DigitizeStateContext.
Digitizing state for creating multiple Points along a highlighted segment.
virtual void handleMouseRelease(CmdMediator *cmdMediator, QPointF posScreen)
Handle a mouse release that was intercepted earlier.
virtual void handleKeyPress(CmdMediator *cmdMediator, Qt::Key key, bool atLeastOneSelectedItem)
Handle a key press that was intercepted earlier.