|
open_iA 2025.6
|
A chart widget which can show an arbitrary number of plots. More...
#include <iAChartWidget.h>
Public Types | |
| enum | AxisMappingType { Linear , Logarithmic } |
| enum | Mode { NO_MODE , MOVE_VIEW_MODE , X_ZOOM_MODE , Y_ZOOM_MODE } |
| enum | SelectionMode { SelectionDisabled , SelectPlot } |
Public Slots | |
| void | resetView () |
| Reset view (zoom and shift in x and y direction) such that all plots are fully visible. | |
| void | setDrawXAxisAtZero (bool enable) |
| Determines whether the x axis is drawn at location of zero in the data, or at the bottom of the chart region. | |
Signals | |
| void | axisChanged () |
| Fires whenever the displayed x/y axis has changed (i.e. if it has been shifted, zoomed, or reset). | |
| void | clicked (double x, Qt::KeyboardModifiers modifiers) |
| Fires whenever the user clicks on the chart. | |
| void | dblClicked () |
| Fires whenever the user double-clicks on the chart. | |
| void | legendPlotClicked (size_t plotID) |
| Emitted when a plot is clicked in the legend. | |
| void | plotsSelected (std::vector< size_t > const &plotIDs) |
| Fires whenever one or more plots are selected. | |
Public Member Functions | |
| iAChartWidget (QWidget *parent, QString const &xLabel, QString const &yLabel) | |
| ~iAChartWidget () | |
| void | addImageOverlay (std::shared_ptr< QImage > imgOverlay, bool stretch=true) |
| Add an image overlay to the chart. | |
| void | addPlot (std::shared_ptr< iAPlot > plot) |
| Add a plot to the chart. | |
| virtual int | bottomMargin () const |
| Retrieve bottom margin (in pixels). | |
| bool | categoricalAxis () const |
| Whether the axis of this chart is categorical type (as determined by the first plot). | |
| virtual int | chartHeight () const |
| Retrieve height (in pixels) of the actual chart, i.e. the region where plots are drawn, without space for the margins / axes. | |
| virtual int | chartWidth () const |
| Retrieve width (in pixels) of the actual chart, i.e. the region where plots are drawn, without space for margins / axes. | |
| void | clearImageOverlays () |
| Clear all image overlays: | |
| void | clearMarkers () |
| Remove all markers. | |
| void | clearPlots () |
| Remove all plots from the chart. | |
| QPoint | contextMenuPos () const |
| Get the position where the context menu was last shown. | |
| int | dataBin2ScreenX (long x) const |
| Convert a bin number to a screen coordinate. | |
| QImage | drawOffscreen () |
| Draws the chart off screen and returns an image of the result. | |
| double | fullChartWidth () const |
| width in pixels that the chart would have if it were fully shown (considering current zoom level)k | |
| bool | isTooltipShown () const |
| Check whether currently tooltips are enabled. | |
| virtual int | leftMargin () const |
| Retrieve left margin (in pixels). | |
| double | maxXZoom () const |
| Get the maximum zoom factor in x direction that can be in use. | |
| std::vector< std::shared_ptr< iAPlot > > const & | plots () |
| Retrieve all plots currently in the chart. | |
| void | removeImageOverlay (QImage *imgOverlay) |
| Remove an image overlay from the chart. | |
| void | removePlot (std::shared_ptr< iAPlot > plot) |
| Remove a plot from the chart. | |
| void | removeXMarker (double xPos) |
| Remove the marker at the given x position (in data space, see screenX2DataBin for details). | |
| void | resetYBounds () |
| Reset y bounds to the range specified by the current plots. | |
| long | screenX2DataBin (int x) const |
| Convert an x screen coordinate to a bin space index; Note that there are (at least) four different coordinate spaces to consider: | |
| void | setCaptionPosition (Qt::Alignment captionAlignment) |
| Set position of x axis caption (Center/Left, Bottom/Top, via Qt::Align... flags). | |
| void | setEmptyText (QString const &text) |
| Set text shown when no plot available. | |
| void | setSelectionMode (SelectionMode mode) |
| Determine how a selection works; see SelectionMode: either disable selection, or allow selection of single plots. | |
| void | setXBounds (double minVal, double maxVal) |
| Set custom x bounds (the interval the x axis covers). | |
| void | setXCaption (QString const &caption) |
| Set the caption shown along the x axis. | |
| void | setXMarker (double xPos, QColor const &color, Qt::PenStyle penStyle=Qt::SolidLine) |
| Add or update a marker at a specific x position (in data space, see screenX2DataBin for details) in the given color. | |
| void | setYBounds (iAPlotData::DataType minVal, iAPlotData::DataType maxVal) |
| Set custom y bounds (the interval the y axis covers). | |
| void | setYCaption (QString const &caption) |
| Set the caption shown along the y axis. | |
| void | setYMappingMode (AxisMappingType drawMode) |
| Set either linear or logarithmic mapping mode. | |
| void | showLegend (bool show) |
| Set whether legend should be shown or not. | |
| void | showXAxisLabel (bool show) |
| Set whether x axis caption should be shown or not. | |
| void | updateBounds (size_t startPlot=0) |
| Update all bounds such that all current plots are in the visible area of the chart. | |
| void | updateXBounds (size_t startPlot=0) |
| Update x bounds of the chart such that the x bounds of all current plots are in the visible area of the chart. | |
| void | updateYBounds (size_t startPlot=0) |
| Update y bounds of the chart such that the y bounds of all current plots are in the visible area of the chart. | |
| double | xRange () const |
| Get the range in x direction (i.e. maximum - minimum of x bounds) | |
| double | xZoom () const |
| Get x/y zoom and shift. | |
| double | yZoom () const |
| double | xShift () const |
| int | yShift () const |
| void | setXShift (double xShift) |
| set the x zoom/shift: | |
| void | setXZoom (double xZoom) |
| void | setYZoom (double yZoom) |
| iAPlotData::DataType | minYDataValue (size_t startPlot=0) const |
| Retrieve minimum/maximum y data value. | |
| iAPlotData::DataType | maxYDataValue (size_t startPlot=0) const |
| iAMapper const & | xMapper () const |
| Get mapper for x/y coordinates. | |
| iAMapper const & | yMapper () const |
| int | data2MouseX (double dataX) |
| Convert mouse X coordinates (in chart already, i.e. | |
| double | mouse2DataX (int mouseX) |
| virtual iAPlotData::DataType const * | yBounds () const |
| Get x/y bounds as array of size 2 (minimum, maximum) | |
| virtual double const * | xBounds () const |
Static Public Attributes | |
| static const size_t | MaxPossiblePlot = std::numeric_limits<size_t>::max() |
Protected Member Functions | |
| virtual void | changeMode (int newMode, QMouseEvent *event) |
| virtual void | drawAxes (QPainter &painter) |
| virtual void | drawLegend (QPainter &painter) |
| virtual void | drawPlots (QPainter &painter) |
| virtual void | showDataTooltip (QHelpEvent *event) |
| virtual QString | xAxisTickMarkLabel (double value, double stepWidth) |
| void | zoomAlongX (double value, int x, bool deltaMode) |
| void | zoomAlongY (double value, bool deltaMode) |
| void | mouseMoveEvent (QMouseEvent *event) override |
| Overriden Qt events. | |
| void | mousePressEvent (QMouseEvent *event) override |
| void | mouseReleaseEvent (QMouseEvent *event) override |
| void | mouseDoubleClickEvent (QMouseEvent *event) override |
| void | wheelEvent (QWheelEvent *event) override |
| void | leaveEvent (QEvent *event) override |
| void | paintEvent (QPaintEvent *event) override |
| void | contextMenuEvent (QContextMenuEvent *event) override |
| bool | event (QEvent *event) override |
Protected Attributes | |
| int | m_dragStartPosX |
| int | m_dragStartPosY |
| int | m_mode |
| int | m_translationStartY |
| int | m_translationY |
| QString | m_xCaption |
| std::shared_ptr< iAMapper > | m_xMapper |
| Main mappers from diagram coordinates to pixel coordinates, for each axis: | |
| double | m_xShift |
| double | m_xShiftStart |
| double | m_xZoom |
| double | m_xZoomStart |
| QString | m_yCaption |
| std::shared_ptr< iAMapper > | m_yMapper |
| AxisMappingType | m_yMappingMode |
| double | m_yZoom |
| double | m_yZoomStart |
| int | m_zoomXPos |
| int | m_zoomYPos |
A chart widget which can show an arbitrary number of plots.
| enum iAChartWidget::Mode |
| iAChartWidget::iAChartWidget | ( | QWidget * | parent, |
| QString const & | xLabel, | ||
| QString const & | yLabel ) |
| iAChartWidget::~iAChartWidget | ( | ) |
| void iAChartWidget::addImageOverlay | ( | std::shared_ptr< QImage > | imgOverlay, |
| bool | stretch = true ) |
Add an image overlay to the chart.
| void iAChartWidget::addPlot | ( | std::shared_ptr< iAPlot > | plot | ) |
Add a plot to the chart.
|
signal |
Fires whenever the displayed x/y axis has changed (i.e. if it has been shifted, zoomed, or reset).
|
virtual |
Retrieve bottom margin (in pixels).
| bool iAChartWidget::categoricalAxis | ( | ) | const |
Whether the axis of this chart is categorical type (as determined by the first plot).
|
protectedvirtual |
Reimplemented in iAChartWithFunctionsWidget.
|
virtual |
Retrieve height (in pixels) of the actual chart, i.e. the region where plots are drawn, without space for the margins / axes.
|
virtual |
Retrieve width (in pixels) of the actual chart, i.e. the region where plots are drawn, without space for margins / axes.
| void iAChartWidget::clearImageOverlays | ( | ) |
Clear all image overlays:
| void iAChartWidget::clearMarkers | ( | ) |
Remove all markers.
| void iAChartWidget::clearPlots | ( | ) |
Remove all plots from the chart.
|
signal |
Fires whenever the user clicks on the chart.
| x | coordinate x of the click position, in chart coordinates |
| modifiers | modifier keys that were pressed at time of click |
|
overrideprotected |
| QPoint iAChartWidget::contextMenuPos | ( | ) | const |
Get the position where the context menu was last shown.
| int iAChartWidget::data2MouseX | ( | double | dataX | ) |
Convert mouse X coordinates (in chart already, i.e.
without left/bottom margin) to chart x coordinates and vice versa
| int iAChartWidget::dataBin2ScreenX | ( | long | x | ) | const |
Convert a bin number to a screen coordinate.
| x | the bin space index; see screenX2DataBin for details |
|
signal |
Fires whenever the user double-clicks on the chart.
|
protectedvirtual |
|
protectedvirtual |
| QImage iAChartWidget::drawOffscreen | ( | ) |
Draws the chart off screen and returns an image of the result.
|
protectedvirtual |
|
overrideprotected |
| double iAChartWidget::fullChartWidth | ( | ) | const |
width in pixels that the chart would have if it were fully shown (considering current zoom level)k
| bool iAChartWidget::isTooltipShown | ( | ) | const |
Check whether currently tooltips are enabled.
|
overrideprotected |
|
virtual |
Retrieve left margin (in pixels).
|
signal |
Emitted when a plot is clicked in the legend.
| plotID | the index of the plot that was clicked (in the vector accessible via plots()) |
| double iAChartWidget::maxXZoom | ( | ) | const |
Get the maximum zoom factor in x direction that can be in use.
| iAPlotData::DataType iAChartWidget::maxYDataValue | ( | size_t | startPlot = 0 | ) | const |
| iAPlotData::DataType iAChartWidget::minYDataValue | ( | size_t | startPlot = 0 | ) | const |
Retrieve minimum/maximum y data value.
| double iAChartWidget::mouse2DataX | ( | int | mouseX | ) |
|
overrideprotected |
|
overrideprotected |
Overriden Qt events.
|
overrideprotected |
|
overrideprotected |
|
overrideprotected |
| std::vector< std::shared_ptr< iAPlot > > const & iAChartWidget::plots | ( | ) |
Retrieve all plots currently in the chart.
|
signal |
Fires whenever one or more plots are selected.
| plotIDs | the IDs of the selected plots |
| void iAChartWidget::removeImageOverlay | ( | QImage * | imgOverlay | ) |
Remove an image overlay from the chart.
| void iAChartWidget::removePlot | ( | std::shared_ptr< iAPlot > | plot | ) |
Remove a plot from the chart.
| void iAChartWidget::removeXMarker | ( | double | xPos | ) |
Remove the marker at the given x position (in data space, see screenX2DataBin for details).
|
slot |
Reset view (zoom and shift in x and y direction) such that all plots are fully visible.
| void iAChartWidget::resetYBounds | ( | ) |
Reset y bounds to the range specified by the current plots.
| long iAChartWidget::screenX2DataBin | ( | int | x | ) | const |
Convert an x screen coordinate to a bin space index; Note that there are (at least) four different coordinate spaces to consider:
| x | the x screen coordinate to convert |
| void iAChartWidget::setCaptionPosition | ( | Qt::Alignment | captionAlignment | ) |
Set position of x axis caption (Center/Left, Bottom/Top, via Qt::Align... flags).
|
slot |
Determines whether the x axis is drawn at location of zero in the data, or at the bottom of the chart region.
| enable | if true, the x axis is drawn where the value 0 is on the y axis; if false, it is drawn at the bottom of the chart region. |
| void iAChartWidget::setEmptyText | ( | QString const & | text | ) |
Set text shown when no plot available.
| void iAChartWidget::setSelectionMode | ( | SelectionMode | mode | ) |
Determine how a selection works; see SelectionMode: either disable selection, or allow selection of single plots.
| void iAChartWidget::setXBounds | ( | double | minVal, |
| double | maxVal ) |
Set custom x bounds (the interval the x axis covers).
| void iAChartWidget::setXCaption | ( | QString const & | caption | ) |
Set the caption shown along the x axis.
| void iAChartWidget::setXMarker | ( | double | xPos, |
| QColor const & | color, | ||
| Qt::PenStyle | penStyle = Qt::SolidLine ) |
Add or update a marker at a specific x position (in data space, see screenX2DataBin for details) in the given color.
| void iAChartWidget::setXShift | ( | double | xShift | ) |
set the x zoom/shift:
| void iAChartWidget::setXZoom | ( | double | xZoom | ) |
| void iAChartWidget::setYBounds | ( | iAPlotData::DataType | minVal, |
| iAPlotData::DataType | maxVal ) |
Set custom y bounds (the interval the y axis covers).
| void iAChartWidget::setYCaption | ( | QString const & | caption | ) |
Set the caption shown along the y axis.
| void iAChartWidget::setYMappingMode | ( | AxisMappingType | drawMode | ) |
Set either linear or logarithmic mapping mode.
| void iAChartWidget::setYZoom | ( | double | yZoom | ) |
|
protectedvirtual |
| void iAChartWidget::showLegend | ( | bool | show | ) |
Set whether legend should be shown or not.
| void iAChartWidget::showXAxisLabel | ( | bool | show | ) |
Set whether x axis caption should be shown or not.
| void iAChartWidget::updateBounds | ( | size_t | startPlot = 0 | ) |
Update all bounds such that all current plots are in the visible area of the chart.
| void iAChartWidget::updateXBounds | ( | size_t | startPlot = 0 | ) |
Update x bounds of the chart such that the x bounds of all current plots are in the visible area of the chart.
| void iAChartWidget::updateYBounds | ( | size_t | startPlot = 0 | ) |
Update y bounds of the chart such that the y bounds of all current plots are in the visible area of the chart.
|
overrideprotected |
|
protectedvirtual |
|
virtual |
| iAMapper const & iAChartWidget::xMapper | ( | ) | const |
Get mapper for x/y coordinates.
| double iAChartWidget::xRange | ( | ) | const |
Get the range in x direction (i.e. maximum - minimum of x bounds)
|
inline |
|
inline |
Get x/y zoom and shift.
|
virtual |
Get x/y bounds as array of size 2 (minimum, maximum)
| iAMapper const & iAChartWidget::yMapper | ( | ) | const |
|
inline |
|
inline |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
mutableprotected |
Main mappers from diagram coordinates to pixel coordinates, for each axis:
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
static |