open_iA  2020.01
A tool for the visual analysis and processing of volumetric datasets, with a focus on industrial computed tomography.
Public Types | Public Slots | Signals | Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | List of all members
iAChartWidget Class Reference

A chart widget which can show an arbitrary number of plots. More...

#include <iAChartWidget.h>

Inheritance diagram for iAChartWidget:
Collaboration diagram for iAChartWidget:

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. More...
 
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. More...
 

Signals

void dblClicked ()
 Fires whenever the user double-clicks on the chart. More...
 
void plotsSelected (std::vector< size_t > const &plotIDs)
 Fires whenever one or more plots are selected. More...
 
void xAxisChanged ()
 Fires whenever the displayed x axis has changed (i.e. More...
 

Public Member Functions

virtual int activeHeight () const
 Retrieve height of active region of the chart. More...
 
virtual int activeWidth () const
 Retrieve width of active region of the chart. More...
 
void addImageOverlay (QSharedPointer< QImage > imgOverlay)
 Add an image overlay to the chart. More...
 
void addPlot (QSharedPointer< iAPlot > plot)
 Add a plot to the chart. More...
 
void addXMarker (double xPos, QColor const &color)
 Adds a marker at a specific x position (in data space, see screenX2DataBin for details) in the given color. More...
 
virtual int bottomMargin () const
 Retrieve bottom margin (in pixels). More...
 
bool categoricalAxis () const
 Whether the axis of this chart is categorical type (as determined by the first plot). More...
 
void clearMarkers ()
 Remove all markers. More...
 
void clearPlots ()
 Remove all plots from the chart. More...
 
QPoint contextMenuPos () const
 Get the position where the context menu was last shown. More...
 
int dataBin2ScreenX (long x) const
 Convert a bin number to a screen coordinate. More...
 
QImage drawOffscreen ()
 Draws the chart off screen and returns an image of the result. More...
 
 iAChartWidget (QWidget *parent, QString const &xLabel, QString const &yLabel)
 
bool isContextMenuVisible () const
 Check whether currently a context menu is shown. More...
 
bool isDrawnDiscrete () const
 Check whether all plots currently in the chart have discrete (categorical also counts as discrete for this purpose). More...
 
bool isTooltipShown () const
 Check whether currently tooltips are enabled. More...
 
virtual int leftMargin () const
 Retrieve left margin (in pixels). More...
 
double maxXZoom () const
 Get the maximum zoom factor in x direction that can be in use. More...
 
const std::vector< QSharedPointer< iAPlot > > & plots ()
 Retrieve all plots currently in the chart. More...
 
void removeImageOverlay (QImage *imgOverlay)
 Remove an image overlay from the chart. More...
 
void removePlot (QSharedPointer< iAPlot > plot)
 Remove a plot from the chart. More...
 
void removeXMarker (double xPos)
 Remove the marker at the given x position (in data space, see screenX2DataBin for details). More...
 
void resetYBounds ()
 Reset y bounds to the range specified by the current plots. More...
 
long screenX2DataBin (int x) const
 Convert an x screen coordinate to a bin space index; Note that there are three different spaces to consider: More...
 
void setBackgroundColor (QColor const &color)
 Sets the background color of the whole chart. More...
 
void setCaptionPosition (QFlags< Qt::AlignmentFlag >)
 Set position of x axis caption (Center/Left, Bottom/Top, via Qt::Align... flags). More...
 
void setSelectionMode (SelectionMode mode)
 Determine how a selection works; see SelectionMode: either disable selection, or allow selection of single plots. More...
 
void setShowXAxisLabel (bool show)
 Set whether x axis caption should be shown or not. More...
 
void setXBounds (double minVal, double maxVal)
 Set custom x bounds (the interval the x axis covers). More...
 
void setXCaption (QString const &caption)
 Set the caption shown along the x axis. More...
 
void setYBounds (iAPlotData::DataType minVal, iAPlotData::DataType maxVal)
 Set custom y bounds (the interval the y axis covers). More...
 
void setYCaption (QString const &caption)
 Set the caption shown along the y axis. More...
 
void setYMappingMode (AxisMappingType drawMode)
 Set either linear or logarithmic mapping mode. More...
 
void updateBounds (size_t startPlot=0)
 Update all bounds such that all current plots are in the visible area of the chart. More...
 
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. More...
 
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. More...
 
double xRange () const
 Get the range in x direction (i.e. maximum - minimum of x bounds) More...
 
 ~iAChartWidget ()
 
double xZoom () const
 Get x/y zoom and shift. More...
 
double yZoom () const
 
int xShift () const
 
int yShift () const
 
iAPlotData::DataType minYDataValue (size_t startPlot=0) const
 Retrieve minimum/maximum y data value. More...
 
iAPlotData::DataType maxYDataValue (size_t startPlot=0) const
 
const iAMapperxMapper () const
 Get mapper for x/y coordinates. More...
 
const iAMapperyMapper () const
 
virtual const iAPlotData::DataTypeyBounds () const
 Get x/y bounds as array of size 2 (minimum, maximum) More...
 
virtual const double * 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 drawBackground (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. More...
 
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 paintGL () override
 
void contextMenuEvent (QContextMenuEvent *event) override
 
void keyReleaseEvent (QKeyEvent *event) override
 
bool event (QEvent *event) override
 

Protected Attributes

bool m_contextMenuVisible
 
int m_dragStartPosX
 
int m_dragStartPosY
 
int m_mode
 
int m_translationStartX
 
int m_translationStartY
 
int m_translationX
 
int m_translationY
 
QString m_xCaption
 
QSharedPointer< iAMapperm_xMapper
 Main mappers from diagram coordinates to pixel coordinates, for each axis: More...
 
double m_xZoom
 
double m_xZoomStart
 
QString m_yCaption
 
QSharedPointer< iAMapperm_yMapper
 
AxisMappingType m_yMappingMode
 
double m_yZoom
 
double m_yZoomStart
 
int m_zoomXPos
 
int m_zoomYPos
 

Detailed Description

A chart widget which can show an arbitrary number of plots.

Member Enumeration Documentation

◆ AxisMappingType

Enumerator
Linear 
Logarithmic 

◆ Mode

Enumerator
NO_MODE 
MOVE_VIEW_MODE 
X_ZOOM_MODE 
Y_ZOOM_MODE 

◆ SelectionMode

Enumerator
SelectionDisabled 
SelectPlot 

Constructor & Destructor Documentation

◆ iAChartWidget()

iAChartWidget::iAChartWidget ( QWidget *  parent,
QString const &  xLabel,
QString const &  yLabel 
)

◆ ~iAChartWidget()

iAChartWidget::~iAChartWidget ( )

Member Function Documentation

◆ activeHeight()

int iAChartWidget::activeHeight ( ) const
virtual

Retrieve height of active region of the chart.

The active region is where plots are drawn, without space for axes (in pixels).

◆ activeWidth()

int iAChartWidget::activeWidth ( ) const
virtual

Retrieve width of active region of the chart.

The active region is where plots are drawn, without space for axes (in pixels).

◆ addImageOverlay()

void iAChartWidget::addImageOverlay ( QSharedPointer< QImage >  imgOverlay)

Add an image overlay to the chart.

◆ addPlot()

void iAChartWidget::addPlot ( QSharedPointer< iAPlot plot)

Add a plot to the chart.

◆ addXMarker()

void iAChartWidget::addXMarker ( double  xPos,
QColor const &  color 
)

Adds a marker at a specific x position (in data space, see screenX2DataBin for details) in the given color.

◆ bottomMargin()

int iAChartWidget::bottomMargin ( ) const
virtual

Retrieve bottom margin (in pixels).

◆ categoricalAxis()

bool iAChartWidget::categoricalAxis ( ) const

Whether the axis of this chart is categorical type (as determined by the first plot).

◆ changeMode()

void iAChartWidget::changeMode ( int  newMode,
QMouseEvent *  event 
)
protectedvirtual

Reimplemented in iAChartWithFunctionsWidget.

◆ clearMarkers()

void iAChartWidget::clearMarkers ( )

Remove all markers.

◆ clearPlots()

void iAChartWidget::clearPlots ( )

Remove all plots from the chart.

◆ contextMenuEvent()

void iAChartWidget::contextMenuEvent ( QContextMenuEvent *  event)
overrideprotected

◆ contextMenuPos()

QPoint iAChartWidget::contextMenuPos ( ) const

Get the position where the context menu was last shown.

◆ dataBin2ScreenX()

int iAChartWidget::dataBin2ScreenX ( long  x) const

Convert a bin number to a screen coordinate.

Parameters
xthe bin space index; see screenX2DataBin for details
Returns
the screen space coordinate for the given bin space index

◆ dblClicked

void iAChartWidget::dblClicked ( )
signal

Fires whenever the user double-clicks on the chart.

◆ drawAxes()

void iAChartWidget::drawAxes ( QPainter &  painter)
protectedvirtual

◆ drawBackground()

void iAChartWidget::drawBackground ( QPainter &  painter)
protectedvirtual

◆ drawOffscreen()

QImage iAChartWidget::drawOffscreen ( )

Draws the chart off screen and returns an image of the result.

◆ drawPlots()

void iAChartWidget::drawPlots ( QPainter &  painter)
protectedvirtual

◆ event()

bool iAChartWidget::event ( QEvent *  event)
overrideprotected

◆ isContextMenuVisible()

bool iAChartWidget::isContextMenuVisible ( ) const

Check whether currently a context menu is shown.

◆ isDrawnDiscrete()

bool iAChartWidget::isDrawnDiscrete ( ) const

Check whether all plots currently in the chart have discrete (categorical also counts as discrete for this purpose).

If a single plot is continuous, it will report false.

◆ isTooltipShown()

bool iAChartWidget::isTooltipShown ( ) const

Check whether currently tooltips are enabled.

◆ keyReleaseEvent()

void iAChartWidget::keyReleaseEvent ( QKeyEvent *  event)
overrideprotected

◆ leaveEvent()

void iAChartWidget::leaveEvent ( QEvent *  event)
overrideprotected

◆ leftMargin()

int iAChartWidget::leftMargin ( ) const
virtual

Retrieve left margin (in pixels).

◆ maxXZoom()

double iAChartWidget::maxXZoom ( ) const

Get the maximum zoom factor in x direction that can be in use.

◆ maxYDataValue()

iAPlotData::DataType iAChartWidget::maxYDataValue ( size_t  startPlot = 0) const

◆ minYDataValue()

iAPlotData::DataType iAChartWidget::minYDataValue ( size_t  startPlot = 0) const

Retrieve minimum/maximum y data value.

◆ mouseDoubleClickEvent()

void iAChartWidget::mouseDoubleClickEvent ( QMouseEvent *  event)
overrideprotected

◆ mouseMoveEvent()

void iAChartWidget::mouseMoveEvent ( QMouseEvent *  event)
overrideprotected

Overriden Qt events.

◆ mousePressEvent()

void iAChartWidget::mousePressEvent ( QMouseEvent *  event)
overrideprotected

◆ mouseReleaseEvent()

void iAChartWidget::mouseReleaseEvent ( QMouseEvent *  event)
overrideprotected

◆ paintGL()

void iAChartWidget::paintGL ( )
overrideprotected

◆ plots()

const std::vector< QSharedPointer< iAPlot > > & iAChartWidget::plots ( )

Retrieve all plots currently in the chart.

◆ plotsSelected

void iAChartWidget::plotsSelected ( std::vector< size_t > const &  plotIDs)
signal

Fires whenever one or more plots are selected.

Parameters
plotIDsthe IDs of the selected plots

◆ removeImageOverlay()

void iAChartWidget::removeImageOverlay ( QImage *  imgOverlay)

Remove an image overlay from the chart.

◆ removePlot()

void iAChartWidget::removePlot ( QSharedPointer< iAPlot plot)

Remove a plot from the chart.

◆ removeXMarker()

void iAChartWidget::removeXMarker ( double  xPos)

Remove the marker at the given x position (in data space, see screenX2DataBin for details).

◆ resetView

void iAChartWidget::resetView ( )
slot

Reset view (zoom and shift in x and y direction) such that all plots are fully visible.

◆ resetYBounds()

void iAChartWidget::resetYBounds ( )

Reset y bounds to the range specified by the current plots.

◆ screenX2DataBin()

long iAChartWidget::screenX2DataBin ( int  x) const

Convert an x screen coordinate to a bin space index; Note that there are three different spaces to consider:

  1. the data space (i.e., a coordinate between the minimum/maximum specified by the x bounds),
  2. the bin space (i.e., an index in the data bin array)
  3. the screen space (i.e., a pixel x coordinate on the screen)
Parameters
xthe x screen coordinate to convert
Returns
the bin index for the given x coordinate.

◆ setBackgroundColor()

void iAChartWidget::setBackgroundColor ( QColor const &  color)

Sets the background color of the whole chart.

◆ setCaptionPosition()

void iAChartWidget::setCaptionPosition ( QFlags< Qt::AlignmentFlag >  captionPosition)

Set position of x axis caption (Center/Left, Bottom/Top, via Qt::Align... flags).

◆ setDrawXAxisAtZero

void iAChartWidget::setDrawXAxisAtZero ( bool  enable)
slot

Determines whether the x axis is drawn at location of zero in the data, or at the bottom of the chart region.

Parameters
enableif 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.

◆ setSelectionMode()

void iAChartWidget::setSelectionMode ( SelectionMode  mode)

Determine how a selection works; see SelectionMode: either disable selection, or allow selection of single plots.

◆ setShowXAxisLabel()

void iAChartWidget::setShowXAxisLabel ( bool  show)

Set whether x axis caption should be shown or not.

◆ setXBounds()

void iAChartWidget::setXBounds ( double  minVal,
double  maxVal 
)

Set custom x bounds (the interval the x axis covers).

◆ setXCaption()

void iAChartWidget::setXCaption ( QString const &  caption)

Set the caption shown along the x axis.

◆ setYBounds()

void iAChartWidget::setYBounds ( iAPlotData::DataType  minVal,
iAPlotData::DataType  maxVal 
)

Set custom y bounds (the interval the y axis covers).

◆ setYCaption()

void iAChartWidget::setYCaption ( QString const &  caption)

Set the caption shown along the y axis.

◆ setYMappingMode()

void iAChartWidget::setYMappingMode ( AxisMappingType  drawMode)

Set either linear or logarithmic mapping mode.

◆ showDataTooltip()

void iAChartWidget::showDataTooltip ( QHelpEvent *  event)
protectedvirtual

◆ updateBounds()

void iAChartWidget::updateBounds ( size_t  startPlot = 0)

Update all bounds such that all current plots are in the visible area of the chart.

◆ updateXBounds()

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.

◆ updateYBounds()

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.

◆ wheelEvent()

void iAChartWidget::wheelEvent ( QWheelEvent *  event)
overrideprotected

◆ xAxisChanged

void iAChartWidget::xAxisChanged ( )
signal

Fires whenever the displayed x axis has changed (i.e.

if it has been shifted, zoomed, or reset).

◆ xAxisTickMarkLabel()

QString iAChartWidget::xAxisTickMarkLabel ( double  value,
double  stepWidth 
)
protectedvirtual

◆ xBounds()

const double * iAChartWidget::xBounds ( ) const
virtual

◆ xMapper()

const iAMapper & iAChartWidget::xMapper ( ) const

Get mapper for x/y coordinates.

◆ xRange()

double iAChartWidget::xRange ( ) const

Get the range in x direction (i.e. maximum - minimum of x bounds)

◆ xShift()

int iAChartWidget::xShift ( ) const
inline

◆ xZoom()

double iAChartWidget::xZoom ( ) const
inline

Get x/y zoom and shift.

◆ yBounds()

const iAPlotData::DataType * iAChartWidget::yBounds ( ) const
virtual

Get x/y bounds as array of size 2 (minimum, maximum)

◆ yMapper()

const iAMapper & iAChartWidget::yMapper ( ) const

◆ yShift()

int iAChartWidget::yShift ( ) const
inline

◆ yZoom()

double iAChartWidget::yZoom ( ) const
inline

◆ zoomAlongX()

void iAChartWidget::zoomAlongX ( double  value,
int  x,
bool  deltaMode 
)
protected

◆ zoomAlongY()

void iAChartWidget::zoomAlongY ( double  value,
bool  deltaMode 
)
protected

Member Data Documentation

◆ m_contextMenuVisible

bool iAChartWidget::m_contextMenuVisible
protected

◆ m_dragStartPosX

int iAChartWidget::m_dragStartPosX
protected

◆ m_dragStartPosY

int iAChartWidget::m_dragStartPosY
protected

◆ m_mode

int iAChartWidget::m_mode
protected

◆ m_translationStartX

int iAChartWidget::m_translationStartX
protected

◆ m_translationStartY

int iAChartWidget::m_translationStartY
protected

◆ m_translationX

int iAChartWidget::m_translationX
protected

◆ m_translationY

int iAChartWidget::m_translationY
protected

◆ m_xCaption

QString iAChartWidget::m_xCaption
protected

◆ m_xMapper

QSharedPointer<iAMapper> iAChartWidget::m_xMapper
protected

Main mappers from diagram coordinates to pixel coordinates, for each axis:

◆ m_xZoom

double iAChartWidget::m_xZoom
protected

◆ m_xZoomStart

double iAChartWidget::m_xZoomStart
protected

◆ m_yCaption

QString iAChartWidget::m_yCaption
protected

◆ m_yMapper

QSharedPointer<iAMapper> iAChartWidget::m_yMapper
protected

◆ m_yMappingMode

AxisMappingType iAChartWidget::m_yMappingMode
protected

◆ m_yZoom

double iAChartWidget::m_yZoom
protected

◆ m_yZoomStart

double iAChartWidget::m_yZoomStart
protected

◆ m_zoomXPos

int iAChartWidget::m_zoomXPos
protected

◆ m_zoomYPos

int iAChartWidget::m_zoomYPos
protected

◆ MaxPossiblePlot

const size_t iAChartWidget::MaxPossiblePlot = std::numeric_limits<size_t>::max()
static

The documentation for this class was generated from the following files: