42 #include <qcustomplot.h>
46 #include "../../exportinmportconfig.h"
47 #include "../../types.h"
48 #include "../../processing/combiners/selectionpolygon.h"
73 const QString &x_axis_label,
74 const QString &y_axis_label);
78 virtual bool setupWidget();
80 virtual void setPen(
const QPen &pen);
81 virtual const QPen &getPen()
const;
83 virtual void setPlottingColor(QCPAbstractPlottable *plottable_p,
84 const QColor &new_color);
85 virtual void setPlottingColor(
int index,
const QColor &new_color);
87 virtual QColor getPlottingColor(QCPAbstractPlottable *plottable_p)
const;
88 virtual QColor getPlottingColor(
int index = 0)
const;
90 virtual void setAxisLabelX(
const QString &label);
91 virtual void setAxisLabelY(
const QString &label);
94 virtual void resetAxesRangeHistory();
95 virtual void updateAxesRangeHistory();
96 virtual void restorePreviousAxesRangeHistory();
97 virtual void restoreAxesRangeHistory(std::size_t index);
102 virtual void keyPressEvent(QKeyEvent *event);
103 virtual void keyReleaseEvent(QKeyEvent *event);
105 virtual void spaceKeyReleaseEvent(QKeyEvent *event);
107 virtual void directionKeyPressEvent(QKeyEvent *event);
108 virtual void directionKeyReleaseEvent(QKeyEvent *event);
110 virtual void mousePseudoButtonKeyPressEvent(QKeyEvent *event);
111 virtual void mousePseudoButtonKeyReleaseEvent(QKeyEvent *event);
116 virtual void mousePressHandler(QMouseEvent *event);
117 virtual void mouseReleaseHandler(QMouseEvent *event);
118 virtual void mouseReleaseHandlerLeftButton();
119 virtual void mouseReleaseHandlerRightButton();
121 virtual void mouseWheelHandler(QWheelEvent *event);
123 virtual void mouseMoveHandler(QMouseEvent *event);
124 virtual void mouseMoveHandlerNotDraggingCursor();
125 virtual void mouseMoveHandlerDraggingCursor();
126 virtual void mouseMoveHandlerLeftButtonDraggingCursor();
127 virtual void mouseMoveHandlerRightButtonDraggingCursor();
129 virtual void axisDoubleClickHandler(QCPAxis *axis,
130 QCPAxis::SelectablePart part,
132 bool isClickOntoXAxis(
const QPointF &mousePoint);
133 bool isClickOntoYAxis(
const QPointF &mousePoint);
139 virtual void moveMouseCursorGraphCoordToGlobal(QPointF plot_coordinates);
140 virtual void moveMouseCursorPixelCoordToGlobal(QPointF local_coordinates);
141 virtual void horizontalMoveMouseCursorCountPixels(
int pixel_count);
142 virtual QPointF horizontalGetGraphCoordNewPointCountPixels(
int pixel_count);
143 virtual void verticalMoveMouseCursorCountPixels(
int pixel_count);
144 virtual QPointF verticalGetGraphCoordNewPointCountPixels(
int pixel_count);
149 virtual QCPRange getRangeX(
bool &found_range,
int index)
const;
150 virtual QCPRange getRangeY(
bool &found_range,
int index)
const;
151 QCPRange getRange(
Axis axis,
RangeType range_type,
bool &found_range)
const;
153 virtual QCPRange getInnermostRangeX(
bool &found_range)
const;
154 virtual QCPRange getOutermostRangeX(
bool &found_range)
const;
156 virtual QCPRange getInnermostRangeY(
bool &found_range)
const;
157 virtual QCPRange getOutermostRangeY(
bool &found_range)
const;
161 QCPAbstractPlottable *plottable_p =
nullptr);
167 virtual void axisRescale();
168 virtual void axisReframe();
169 virtual void axisZoom();
170 virtual void axisPan();
172 virtual void replotWithAxesRanges(QCPRange xAxisRange,
176 virtual void replotWithAxisRangeX(
double lower,
double upper);
177 virtual void replotWithAxisRangeY(
double lower,
double upper);
182 virtual void hideAllPlotItems();
184 virtual void showTracers();
185 virtual void hideTracers();
187 virtual void drawXDeltaFeatures();
188 virtual void drawYDeltaFeatures();
190 virtual void calculateDragDeltas();
192 virtual bool isVerticalDisplacementAboveThreshold();
195 drawSelectionRectangleAndPrepareZoom(
bool as_line_segment =
false,
196 bool for_integration =
false);
198 virtual void updateSelectionRectangle(
bool as_line_segment =
false,
199 bool for_integration =
false);
201 virtual void resetSelectionRectangle();
202 virtual void hideSelectionRectangle(
bool reset_values =
false);
203 virtual bool isSelectionRectangleVisible();
204 virtual PolygonType whatIsVisibleOfTheSelectionRectangle();
209 virtual void setFocus();
211 virtual void redrawPlotBackground(QWidget *focusedPlotWidget);
213 virtual void updateContextXandYAxisRanges();
240 QCPAbstractPlottable *plottable_p,
245 QString m_name =
"NOT_SET";
248 QString m_desc =
"NOT_SET";
258 int m_leftMousePseudoButtonKey = Qt::Key_Less;
259 int m_rightMousePseudoButtonKey = Qt::Key_Greater;
265 QCPItemLine *mp_selectionRectangeLine1 =
nullptr;
266 QCPItemLine *mp_selectionRectangeLine2 =
nullptr;
267 QCPItemLine *mp_selectionRectangeLine3 =
nullptr;
268 QCPItemLine *mp_selectionRectangeLine4 =
nullptr;
271 QCPItemText *mp_xDeltaTextItem =
nullptr;
272 QCPItemText *mp_yDeltaTextItem =
nullptr;
275 bool m_shouldTracersBeVisible =
true;
278 QCPItemLine *mp_hPosTracerItem =
nullptr;
281 QCPItemLine *mp_vPosTracerItem =
nullptr;
284 QCPItemLine *mp_vStartTracerItem =
nullptr;
287 QCPItemLine *mp_vEndTracerItem =
nullptr ;
298 std::size_t m_lastAxisRangeHistoryIndex = 0;
316 int m_mouseMoveHandlerSkipAmount = 10;
324 int m_mouseMoveHandlerSkipCount = 0;
330 QColor m_unfocusedColor = QColor(
"lightgray");
332 QBrush m_unfocusedBrush = QBrush(m_unfocusedColor);
335 QColor m_focusedColor = QColor(Qt::transparent);
337 QBrush m_focusedBrush = QBrush(m_focusedColor);
342 virtual void createAllAncillaryItems();
343 virtual void update1DSelectionRectangle(
bool for_integration =
false);
344 virtual void update2DSelectionRectangleSquare(
bool for_integration =
false);
345 virtual void update2DSelectionRectangleSkewed(
bool for_integration =
false);
346 virtual QString allLayerNamesToString()
const;
347 virtual QString layerableLayerName(QCPLayerable *layerable_p)
const;
348 virtual int layerableLayerIndex(QCPLayerable *layerable_p)
const;
tries to keep as much as possible monoisotopes, removing any possible C13 peaks and changes multichar...
std::shared_ptr< const BasePlotWidget > BasePlotWidgetCstSPtr
std::shared_ptr< BasePlotWidget > BasePlotWidgetSPtr