Engauge Digitizer  2
DigitizeStateColorPicker.h
Go to the documentation of this file.
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_COLOR_PICKER_H
8 #define DIGITIZE_STATE_COLOR_PICKER_H
9 
10 #include "BackgroundImage.h"
12 
14 class QColor;
15 class QImage;
16 class QPointF;
17 
22 {
23 public:
26  virtual ~DigitizeStateColorPicker();
27 
28  virtual QString activeCurve () const;
29  virtual void begin(CmdMediator *cmdMediator,
30  DigitizeState previousState);
31  virtual bool canPaste (const Transformation &transformation,
32  const QSize &viewSize) const;
33  virtual QCursor cursor (CmdMediator *cmdMediator) const;
34  virtual void end();
35  virtual void handleContextMenuEventAxis (CmdMediator *cmdMediator,
36  const QString &pointIdentifier);
37  virtual void handleContextMenuEventGraph (CmdMediator *cmdMediator,
38  const QStringList &pointIdentifiers);
39  virtual void handleCurveChange(CmdMediator *cmdMediator);
40  virtual void handleKeyPress (CmdMediator *cmdMediator,
41  Qt::Key key,
42  bool atLeastOneSelectedItem);
43  virtual void handleMouseMove (CmdMediator *cmdMediator,
44  QPointF posScreen);
45  virtual void handleMousePress (CmdMediator *cmdMediator,
46  QPointF posScreen);
47  virtual void handleMouseRelease (CmdMediator *cmdMediator,
48  QPointF posScreen);
49  virtual QString state() const;
50  virtual void updateAfterPointAddition ();
51  virtual void updateModelDigitizeCurve (CmdMediator *cmdMediator,
52  const DocumentModelDigitizeCurve &modelDigitizeCurve);
53  virtual void updateModelSegments(const DocumentModelSegments &modelSegments);
54 
55 private:
57 
58  bool computeFilterFromPixel (CmdMediator *cmdMediator,
59  const QPointF &posScreen,
60  const QString &curveName,
61  DocumentModelColorFilter &modelColorFilterAfter);
62  bool findNearestNonBackgroundPixel (CmdMediator *cmdMediator,
63  const QImage &image,
64  const QPointF &posScreenPlusHalf,
65  const QRgb &rgbBackground,
66  QColor &pixel);
67  void saveLowerValueUpperValue (DocumentModelColorFilter &modelColorFilterAfter,
68  const QString &curveName,
69  double lowerValue,
70  double upperValue);
71 
72  // Save previous state and background for restoring as soon as user selects a valid point
73  DigitizeState m_previousDigitizeState;
74  BackgroundImage m_previousBackground;
75 };
76 
77 #endif // DIGITIZE_STATE_COLOR_PICKER_H
DigitizeStateContext
Container for all DigitizeStateAbstractBase subclasses. This functions as the context class in a stan...
Definition: DigitizeStateContext.h:26
DigitizeStateAbstractBase::context
DigitizeStateContext & context()
Reference to the DigitizeStateContext that contains all the DigitizeStateAbstractBase subclasses,...
Definition: DigitizeStateAbstractBase.cpp:41
DigitizeStateColorPicker::handleKeyPress
virtual void handleKeyPress(CmdMediator *cmdMediator, Qt::Key key, bool atLeastOneSelectedItem)
Handle a key press that was intercepted earlier.
Definition: DigitizeStateColorPicker.cpp:249
DigitizeStateColorPicker::canPaste
virtual bool canPaste(const Transformation &transformation, const QSize &viewSize) const
Return true if there is good data in the clipboard for pasting, and that is compatible with the curre...
Definition: DigitizeStateColorPicker.cpp:53
DigitizeStateColorPicker::end
virtual void end()
Method that is called at the exact moment a state is exited. Typically called just before begin for t...
Definition: DigitizeStateColorPicker.cpp:175
DigitizeStateColorPicker::activeCurve
virtual QString activeCurve() const
Name of the active Curve. This can include AXIS_CURVE_NAME.
Definition: DigitizeStateColorPicker.cpp:33
DigitizeStateColorPicker::handleMouseMove
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...
Definition: DigitizeStateColorPicker.cpp:257
DigitizeStateColorPicker::updateModelDigitizeCurve
virtual void updateModelDigitizeCurve(CmdMediator *cmdMediator, const DocumentModelDigitizeCurve &modelDigitizeCurve)
Update the digitize curve settings.
Definition: DigitizeStateColorPicker.cpp:353
BackgroundImage.h
DigitizeStateColorPicker::handleMouseRelease
virtual void handleMouseRelease(CmdMediator *cmdMediator, QPointF posScreen)
Handle a mouse release that was intercepted earlier.
Definition: DigitizeStateColorPicker.cpp:269
Transformation
Affine transformation between screen and graph coordinates, based on digitized axis points.
Definition: Transformation.h:30
DigitizeStateColorPicker::handleCurveChange
virtual void handleCurveChange(CmdMediator *cmdMediator)
Handle the selection of a new curve. At a minimum, DigitizeStateSegment will generate a new set of Se...
Definition: DigitizeStateColorPicker.cpp:244
DigitizeStateColorPicker::handleContextMenuEventAxis
virtual void handleContextMenuEventAxis(CmdMediator *cmdMediator, const QString &pointIdentifier)
Handle a right click, on an axis point, that was intercepted earlier.
Definition: DigitizeStateColorPicker.cpp:230
DocumentModelColorFilter
Model for DlgSettingsColorFilter and CmdSettingsColorFilter.
Definition: DocumentModelColorFilter.h:20
DigitizeStateAbstractBase.h
DigitizeStateColorPicker::state
virtual QString state() const
State name for debugging.
Definition: DigitizeStateColorPicker.cpp:343
DigitizeStateColorPicker::~DigitizeStateColorPicker
virtual ~DigitizeStateColorPicker()
Definition: DigitizeStateColorPicker.cpp:29
DigitizeStateColorPicker::begin
virtual void begin(CmdMediator *cmdMediator, DigitizeState previousState)
Method that is called at the exact moment a state is entered.
Definition: DigitizeStateColorPicker.cpp:38
DigitizeStateColorPicker::handleContextMenuEventGraph
virtual void handleContextMenuEventGraph(CmdMediator *cmdMediator, const QStringList &pointIdentifiers)
Handle a right click, on a graph point, that was intercepted earlier.
Definition: DigitizeStateColorPicker.cpp:237
DigitizeStateColorPicker
Digitizing state for selecting a color for DigitizeStateSegment.
Definition: DigitizeStateColorPicker.h:20
DigitizeStateColorPicker::cursor
virtual QCursor cursor(CmdMediator *cmdMediator) const
Returns the state-specific cursor shape.
Definition: DigitizeStateColorPicker.cpp:160
DigitizeState
DigitizeState
Set of possible states of Digitize toolbar.
Definition: DigitizeStateAbstractBase.h:23
DigitizeStateColorPicker::updateAfterPointAddition
virtual void updateAfterPointAddition()
Update graphics attributes after possible new points. This is useful for highlight opacity.
Definition: DigitizeStateColorPicker.cpp:348
DigitizeStateColorPicker::handleMousePress
virtual void handleMousePress(CmdMediator *cmdMediator, QPointF posScreen)
Handle a mouse press that was intercepted earlier.
Definition: DigitizeStateColorPicker.cpp:263
DocumentModelSegments
Model for DlgSettingsSegments and CmdSettingsSegments.
Definition: DocumentModelSegments.h:16
DocumentModelDigitizeCurve
Model for DlgSettingsDigitizeCurve and CmdSettingsDigitizeCurve.
Definition: DocumentModelDigitizeCurve.h:17
CmdMediator
Command queue stack.
Definition: CmdMediator.h:22
BackgroundImage
BackgroundImage
Background selection.
Definition: BackgroundImage.h:12
DigitizeStateColorPicker::updateModelSegments
virtual void updateModelSegments(const DocumentModelSegments &modelSegments)
Update the segments given the new settings.
Definition: DigitizeStateColorPicker.cpp:359
DigitizeStateAbstractBase
Base class for all digitizing states. This serves as an interface to DigitizeStateContext.
Definition: DigitizeStateAbstractBase.h:36