90 const QString &x_axis_label,
91 const QString &y_axis_label);
95 virtual bool setupWidget();
97 virtual void setPen(
const QPen &pen);
98 virtual const QPen &getPen()
const;
100 virtual void setPlottingColor(QCPAbstractPlottable *plottable_p,
101 const QColor &new_color);
102 virtual void setPlottingColor(
int index,
const QColor &new_color);
104 virtual QColor getPlottingColor(QCPAbstractPlottable *plottable_p)
const;
105 virtual QColor getPlottingColor(
int index = 0)
const;
107 virtual void setAxisLabelX(
const QString &label);
108 virtual void setAxisLabelY(
const QString &label);
111 virtual void resetAxesRangeHistory();
112 virtual void updateAxesRangeHistory();
113 virtual void restorePreviousAxesRangeHistory();
114 virtual void restoreAxesRangeHistory(std::size_t index);
119 virtual void keyPressEvent(QKeyEvent *event);
120 virtual void keyReleaseEvent(QKeyEvent *event);
122 virtual void spaceKeyReleaseEvent(QKeyEvent *event);
124 virtual void directionKeyPressEvent(QKeyEvent *event);
125 virtual void directionKeyReleaseEvent(QKeyEvent *event);
127 virtual void mousePseudoButtonKeyPressEvent(QKeyEvent *event);
128 virtual void mousePseudoButtonKeyReleaseEvent(QKeyEvent *event);
133 virtual void mousePressHandler(QMouseEvent *event);
134 virtual void mouseReleaseHandler(QMouseEvent *event);
135 virtual void mouseReleaseHandlerLeftButton();
136 virtual void mouseReleaseHandlerRightButton();
138 virtual void mouseWheelHandler(QWheelEvent *event);
140 virtual void mouseMoveHandler(QMouseEvent *event);
141 virtual void mouseMoveHandlerNotDraggingCursor();
142 virtual void mouseMoveHandlerDraggingCursor();
143 virtual void mouseMoveHandlerLeftButtonDraggingCursor();
144 virtual void mouseMoveHandlerRightButtonDraggingCursor();
146 virtual void axisDoubleClickHandler(QCPAxis *axis,
147 QCPAxis::SelectablePart part,
149 bool isClickOntoXAxis(
const QPointF &mousePoint);
150 bool isClickOntoYAxis(
const QPointF &mousePoint);
156 virtual void moveMouseCursorGraphCoordToGlobal(QPointF plot_coordinates);
157 virtual void moveMouseCursorPixelCoordToGlobal(QPointF local_coordinates);
158 virtual void horizontalMoveMouseCursorCountPixels(
int pixel_count);
159 virtual QPointF horizontalGetGraphCoordNewPointCountPixels(
int pixel_count);
160 virtual void verticalMoveMouseCursorCountPixels(
int pixel_count);
161 virtual QPointF verticalGetGraphCoordNewPointCountPixels(
int pixel_count);
166 virtual QCPRange getRangeX(
bool &found_range,
int index)
const;
167 virtual QCPRange getRangeY(
bool &found_range,
int index)
const;
168 QCPRange getRange(
Axis axis,
RangeType range_type,
bool &found_range)
const;
170 virtual QCPRange getInnermostRangeX(
bool &found_range)
const;
171 virtual QCPRange getOutermostRangeX(
bool &found_range)
const;
173 virtual QCPRange getInnermostRangeY(
bool &found_range)
const;
174 virtual QCPRange getOutermostRangeY(
bool &found_range)
const;
178 QCPAbstractPlottable *plottable_p =
nullptr);
184 virtual void axisRescale();
185 virtual void axisReframe();
186 virtual void axisZoom();
187 virtual void axisPan();
190 replotWithAxesRanges(QCPRange xAxisRange, QCPRange yAxisRange,
Axis axis);
192 virtual void replotWithAxisRangeX(
double lower,
double upper);
193 virtual void replotWithAxisRangeY(
double lower,
double upper);
198 virtual void hideAllPlotItems();
200 virtual void showTracers();
201 virtual void hideTracers();
203 virtual void drawXScopeSpanFeatures();
204 virtual void drawYScopeSpanFeatures();
206 virtual void calculateDragDeltas();
208 virtual bool isVerticalDisplacementAboveThreshold();
211 drawSelectionRectangleAndPrepareZoom(
bool as_line_segment =
false,
212 bool for_integration =
false);
214 virtual void updateIntegrationScopeDrawing(
bool as_line_segment =
false,
215 bool for_integration =
false);
217 virtual void resetSelectionRectangle();
218 virtual void hideSelectionRectangle(
bool reset_values =
false);
219 virtual bool isSelectionRectangleVisible();
225 virtual void setFocus();
227 virtual void redrawPlotBackground(QWidget *focusedPlotWidget);
229 virtual void updateContextXandYAxisRanges();
256 QCPAbstractPlottable *plottable_p,
261 QString m_name =
"NOT_SET";
264 QString m_desc =
"NOT_SET";
274 int m_leftMousePseudoButtonKey = Qt::Key_Less;
275 int m_rightMousePseudoButtonKey = Qt::Key_Greater;
281 QCPItemLine *mp_selectionRectangeLine1 =
nullptr;
282 QCPItemLine *mp_selectionRectangeLine2 =
nullptr;
283 QCPItemLine *mp_selectionRectangeLine3 =
nullptr;
284 QCPItemLine *mp_selectionRectangeLine4 =
nullptr;
287 QCPItemText *mp_xDeltaTextItem =
nullptr;
288 QCPItemText *mp_yDeltaTextItem =
nullptr;
291 bool m_shouldTracersBeVisible =
true;
294 QCPItemLine *mp_hPosTracerItem =
nullptr;
297 QCPItemLine *mp_vPosTracerItem =
nullptr;
300 QCPItemLine *mp_vStartTracerItem =
nullptr;
303 QCPItemLine *mp_vEndTracerItem =
nullptr ;
314 std::size_t m_lastAxisRangeHistoryIndex = 0;
332 int m_mouseMoveHandlerSkipAmount = 10;
340 int m_mouseMoveHandlerSkipCount = 0;
346 QColor m_unfocusedColor = QColor(
"lightgray");
348 QBrush m_unfocusedBrush = QBrush(m_unfocusedColor);
351 QColor m_focusedColor = QColor(Qt::transparent);
353 QBrush m_focusedBrush = QBrush(m_focusedColor);
358 virtual void createAllAncillaryItems();
359 virtual void updateIntegrationScope(
bool for_integration =
false);
360 virtual void updateIntegrationScopeRect(
bool for_integration =
false);
361 virtual void updateIntegrationScopeHorizontalRhomb(
bool for_integration =
false);
362 virtual void updateIntegrationScopeVerticalRhomb(
bool for_integration =
false);
363 virtual void updateIntegrationScopeRhomb(
bool for_integration =
false);
364 virtual QString allLayerNamesToString()
const;
365 virtual QString layerableLayerName(QCPLayerable *layerable_p)
const;
366 virtual int layerableLayerIndex(QCPLayerable *layerable_p)
const;