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 mouseMoveHandler(QMouseEvent *event);
122 virtual void mouseMoveHandlerNotDraggingCursor();
123 virtual void mouseMoveHandlerDraggingCursor();
124 virtual void mouseMoveHandlerLeftButtonDraggingCursor();
125 virtual void mouseMoveHandlerRightButtonDraggingCursor();
127 virtual void axisDoubleClickHandler(QCPAxis *axis,
128 QCPAxis::SelectablePart part,
130 bool isClickOntoXAxis(
const QPointF &mousePoint);
131 bool isClickOntoYAxis(
const QPointF &mousePoint);
137 virtual void moveMouseCursorGraphCoordToGlobal(QPointF plot_coordinates);
138 virtual void moveMouseCursorPixelCoordToGlobal(QPointF local_coordinates);
139 virtual void horizontalMoveMouseCursorCountPixels(
int pixel_count);
140 virtual QPointF horizontalGetGraphCoordNewPointCountPixels(
int pixel_count);
141 virtual void verticalMoveMouseCursorCountPixels(
int pixel_count);
142 virtual QPointF verticalGetGraphCoordNewPointCountPixels(
int pixel_count);
147 virtual QCPRange getRangeX(
bool &found_range,
int index)
const;
148 virtual QCPRange getRangeY(
bool &found_range,
int index)
const;
150 getRange(
Axis axis,
RangeType range_type,
bool &found_range)
const;
152 virtual QCPRange getInnermostRangeX(
bool &found_range)
const;
153 virtual QCPRange getOutermostRangeX(
bool &found_range)
const;
155 virtual QCPRange getInnermostRangeY(
bool &found_range)
const;
156 virtual QCPRange getOutermostRangeY(
bool &found_range)
const;
160 QCPAbstractPlottable *plottable_p =
nullptr);
166 virtual void axisRescale();
167 virtual void axisReframe();
168 virtual void axisZoom();
169 virtual void axisPan();
171 virtual void replotWithAxesRanges(QCPRange xAxisRange,
174 virtual void replotWithAxisRangeX(
double lower,
double upper);
175 virtual void replotWithAxisRangeY(
double lower,
double upper);
180 virtual void hideAllPlotItems();
182 virtual void showTracers();
183 virtual void hideTracers();
185 virtual void drawXDeltaFeatures();
186 virtual void drawYDeltaFeatures();
188 virtual void calculateDragDeltas();
190 virtual bool isVerticalDisplacementAboveThreshold();
193 drawSelectionRectangleAndPrepareZoom(
bool as_line_segment =
false,
194 bool for_integration =
false);
196 virtual void updateSelectionRectangle(
bool as_line_segment =
false,
197 bool for_integration =
false);
199 virtual void resetSelectionRectangle();
200 virtual void hideSelectionRectangle(
bool reset_values =
false);
201 virtual bool isSelectionRectangleVisible();
202 virtual PolygonType whatIsVisibleOfTheSelectionRectangle();
207 virtual void setFocus();
209 virtual void redrawPlotBackground(QWidget *focusedPlotWidget);
211 virtual void updateContextXandYAxisRanges();
236 QCPAbstractPlottable *plottable_p,
241 QString m_name =
"NOT_SET";
244 QString m_desc =
"NOT_SET";
254 int m_leftMousePseudoButtonKey = Qt::Key_Less;
255 int m_rightMousePseudoButtonKey = Qt::Key_Greater;
261 QCPItemLine *mp_selectionRectangeLine1 =
nullptr;
262 QCPItemLine *mp_selectionRectangeLine2 =
nullptr;
263 QCPItemLine *mp_selectionRectangeLine3 =
nullptr;
264 QCPItemLine *mp_selectionRectangeLine4 =
nullptr;
267 QCPItemText *mp_xDeltaTextItem =
nullptr;
268 QCPItemText *mp_yDeltaTextItem =
nullptr;
271 bool m_shouldTracersBeVisible =
true;
274 QCPItemLine *mp_hPosTracerItem =
nullptr;
277 QCPItemLine *mp_vPosTracerItem =
nullptr;
280 QCPItemLine *mp_vStartTracerItem =
nullptr;
283 QCPItemLine *mp_vEndTracerItem =
nullptr ;
294 std::size_t m_lastAxisRangeHistoryIndex = 0;
312 int m_mouseMoveHandlerSkipAmount = 10;
320 int m_mouseMoveHandlerSkipCount = 0;
326 QColor m_unfocusedColor = QColor(
"lightgray");
328 QBrush m_unfocusedBrush = QBrush(m_unfocusedColor);
331 QColor m_focusedColor = QColor(Qt::transparent);
333 QBrush m_focusedBrush = QBrush(m_focusedColor);
338 virtual void createAllAncillaryItems();
340 update1DSelectionRectangle(
bool for_integration =
false);
341 virtual void update2DSelectionRectangleSquare(
bool for_integration =
false);
342 virtual void update2DSelectionRectangleSkewed(
bool for_integration =
false);
343 virtual QString allLayerNamesToString()
const;
344 virtual QString layerableLayerName(QCPLayerable *layerable_p)
const;
345 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