42 #include <qcustomplot.h>
46 #include "../../exportinmportconfig.h"
47 #include "../../types.h"
73 bool isMouseDragging =
false;
74 bool wasMouseDragging =
false;
76 bool isKeyBoardDragging =
false;
77 bool isLeftPseudoButtonKeyPressed =
false;
78 bool isRightPseudoButtonKeyPressed =
false;
79 bool wassKeyBoardDragging =
false;
93 bool wasClickOnXAxis =
false;
94 bool wasClickOnYAxis =
false;
96 bool isMeasuringDistance =
false;
104 double xRegionRangeStart = std::numeric_limits<double>::min();
105 double xRegionRangeEnd = std::numeric_limits<double>::min();
107 double yRegionRangeStart = std::numeric_limits<double>::min();
108 double yRegionRangeEnd = std::numeric_limits<double>::min();
126 QString toString()
const;
142 const QString &x_axis_label,
143 const QString &y_axis_label);
147 virtual bool setupWidget();
149 virtual void setPen(
const QPen &pen);
150 virtual const QPen &getPen()
const;
152 virtual void setPlottingColor(QCPAbstractPlottable *plottable_p,
153 const QColor &new_color);
154 virtual void setPlottingColor(
int index,
const QColor &new_color);
156 virtual QColor getPlottingColor(QCPAbstractPlottable *plottable_p)
const;
157 virtual QColor getPlottingColor(
int index = 0)
const;
159 virtual void setAxisLabelX(
const QString &label);
160 virtual void setAxisLabelY(
const QString &label);
163 virtual void resetAxesRangeHistory();
164 virtual void updateAxesRangeHistory();
165 virtual void restorePreviousAxesRangeHistory();
166 virtual void restoreAxesRangeHistory(std::size_t index);
171 virtual void keyPressEvent(QKeyEvent *event);
172 virtual void keyReleaseEvent(QKeyEvent *event);
174 virtual void spaceKeyReleaseEvent(QKeyEvent *event);
176 virtual void directionKeyPressEvent(QKeyEvent *event);
177 virtual void directionKeyReleaseEvent(QKeyEvent *event);
179 virtual void mousePseudoButtonKeyPressEvent(QKeyEvent *event);
180 virtual void mousePseudoButtonKeyReleaseEvent(QKeyEvent *event);
185 virtual void mousePressHandler(QMouseEvent *event);
186 virtual void mouseReleaseHandler(QMouseEvent *event);
187 virtual void mouseReleaseHandlerLeftButton();
188 virtual void mouseReleaseHandlerRightButton();
190 virtual void mouseMoveHandler(QMouseEvent *event);
191 virtual void mouseMoveHandlerNotDraggingCursor();
192 virtual void mouseMoveHandlerDraggingCursor();
193 virtual void mouseMoveHandlerLeftButtonDraggingCursor();
194 virtual void mouseMoveHandlerRightButtonDraggingCursor();
196 virtual void axisDoubleClickHandler(QCPAxis *axis,
197 QCPAxis::SelectablePart part,
199 bool isClickOntoXAxis(
const QPointF &mousePoint);
200 bool isClickOntoYAxis(
const QPointF &mousePoint);
206 virtual void moveMouseCursorGraphCoordToGlobal(QPointF plot_coordinates);
207 virtual void moveMouseCursorPixelCoordToGlobal(QPointF local_coordinates);
208 virtual void horizontalMoveMouseCursorCountPixels(
int pixel_count);
209 virtual QPointF horizontalGetGraphCoordNewPointCountPixels(
int pixel_count);
210 virtual void verticalMoveMouseCursorCountPixels(
int pixel_count);
211 virtual QPointF verticalGetGraphCoordNewPointCountPixels(
int pixel_count);
216 virtual QCPRange getRangeX(
bool &found_range,
int index)
const;
217 virtual QCPRange getRangeY(
bool &found_range,
int index)
const;
221 virtual QCPRange getInnermostRangeX(
bool &found_range)
const;
222 virtual QCPRange getOutermostRangeX(
bool &found_range)
const;
224 virtual QCPRange getInnermostRangeY(
bool &found_range)
const;
225 virtual QCPRange getOutermostRangeY(
bool &found_range)
const;
229 QCPAbstractPlottable *plottable_p =
nullptr);
235 virtual void axisRescale();
236 virtual void axisReframe();
237 virtual void axisZoom();
238 virtual void axisPan();
240 virtual void replotWithAxesRanges(QCPRange xAxisRange,
243 virtual void replotWithAxisRangeX(
double lower,
double upper);
244 virtual void replotWithAxisRangeY(
double lower,
double upper);
249 virtual void hideAllPlotItems();
251 virtual void showTracers();
252 virtual void hideTracers();
254 virtual void drawRectangleAndPrepareZoom();
256 virtual void prepareXDeltaLineAndMeasure();
257 virtual void drawXDeltaLineAndMeasure();
258 virtual void drawXDeltaLineForIntegration();
260 virtual void calculateDragDeltas();
261 virtual void calculateDragDeltasAndUnSortedRegionCorners();
263 virtual bool isProperSelectionRectangle();
267 virtual void setFocus();
269 virtual void redrawPlotBackground(QWidget *focusedPlotWidget);
271 virtual void updateContextRanges();
296 QCPAbstractPlottable *plottable_p,
301 QString m_name =
"NOT_SET";
304 QString m_desc =
"NOT_SET";
314 int m_leftMousePseudoButtonKey = Qt::Key_Less;
315 int m_rightMousePseudoButtonKey = Qt::Key_Greater;
318 QCPItemRect *mp_zoomRectItem =
nullptr;
321 QCPItemLine *mp_selectLineItem =
nullptr;
324 QCPItemText *mp_xDeltaTextItem =
nullptr;
327 bool m_shouldTracersBeVisible =
true;
339 QCPItemLine *mp_vEndTracerItem ;
350 std::size_t m_lastAxisRangeHistoryIndex = 0;
368 int m_mouseMoveHandlerSkipAmount = 10;
376 int m_mouseMoveHandlerSkipCount = 0;
382 QColor m_unfocusedColor = QColor(
"lightgray");
384 QBrush m_unfocusedBrush = QBrush(m_unfocusedColor);
387 QColor m_focusedColor = QColor(Qt::transparent);
389 QBrush m_focusedBrush = QBrush(m_focusedColor);