OpenMS
Plot3DCanvas Class Reference

Canvas for 3D-visualization of peak map data. More...

#include <OpenMS/VISUAL/Plot3DCanvas.h>

Inheritance diagram for Plot3DCanvas:
[legend]
Collaboration diagram for Plot3DCanvas:
[legend]

Public Types

enum  ShadeModes { SHADE_FLAT = 0 , SHADE_SMOOTH = 1 }
 Different shade modes. More...
 
- Public Types inherited from PlotCanvas
enum  ActionModes { AM_TRANSLATE , AM_ZOOM , AM_MEASURE }
 Mouse action modes. More...
 
enum  IntensityModes { IM_NONE , IM_PERCENTAGE , IM_SNAP , IM_LOG }
 Display modes of intensity. More...
 
typedef LayerDataBase::ExperimentType ExperimentType
 Main data type (experiment) More...
 
typedef LayerDataBase::ExperimentSharedPtrType ExperimentSharedPtrType
 Main managed data type (experiment) More...
 
typedef LayerDataBase::ConstExperimentSharedPtrType ConstExperimentSharedPtrType
 
typedef LayerDataBase::ODExperimentSharedPtrType ODExperimentSharedPtrType
 
typedef LayerDataBase::FeatureMapType FeatureMapType
 Main data type (features) More...
 
typedef LayerDataBase::FeatureMapSharedPtrType FeatureMapSharedPtrType
 Main managed data type (features) More...
 
typedef LayerDataBase::ConsensusMapType ConsensusMapType
 Main data type (consensus features) More...
 
typedef LayerDataBase::ConsensusMapSharedPtrType ConsensusMapSharedPtrType
 Main managed data type (consensus features) More...
 
typedef ExperimentType::SpectrumType SpectrumType
 Spectrum type. More...
 
typedef SpectrumType::ConstIterator SpectrumConstIteratorType
 Spectrum iterator type (iterates over peaks) More...
 
typedef SpectrumType::PeakType PeakType
 Peak type. More...
 
using RangeType = RangeAllType
 a generic range for the most common units More...
 
using AreaXYType = Area< 2 >::AreaXYType
 The range of data shown on the X and Y axis (unit depends on runtime config) More...
 
using VisibleArea = Area< 2 >
 The visible range of data on X and Y axis as shown on plot axis (not necessarily the range of actual data, e.g. no data to show). More...
 
using GenericArea = Area< 2 >
 A generic range of data on X and Y axis as shown on plot axis. More...
 
using PixelArea = Area< 2 >
 
using UnitRange = RangeAllType
 
using PointOnAxis = DimMapper< 2 >::Point
 

Public Member Functions

 Plot3DCanvas (const Param &preferences, QWidget *parent=nullptr)
 Constructor. More...
 
 ~Plot3DCanvas () override
 Destructor. More...
 
Plot3DOpenGLCanvasopenglwidget () const
 returns the Plot3DOpenGLcanvas More...
 
- Public Member Functions inherited from PlotCanvas
 PlotCanvas (const Param &preferences, QWidget *parent=nullptr)
 Default constructor. More...
 
 ~PlotCanvas () override
 Destructor. More...
 
void setPlotWidget (PlotWidget *widget)
 Sets the spectrum widget. More...
 
PlotWidgetgetPlotWidget () const
 Returns the spectrum widget. More...
 
Int getActionMode () const
 Returns the action mode. More...
 
IntensityModes getIntensityMode () const
 Returns the intensity mode. More...
 
void setIntensityMode (IntensityModes mod)
 Sets the intensity mode. More...
 
bool gridLinesShown () const
 Returns if the grid is currently shown. More...
 
const LayerDataBasegetLayer (Size index) const
 returns the layer data with index index More...
 
LayerDataBasegetLayer (Size index)
 returns the layer data with index index More...
 
const LayerDataBasegetCurrentLayer () const
 returns the layer data of the active layer More...
 
LayerDataBasegetCurrentLayer ()
 returns the layer data of the active layer More...
 
Size getCurrentLayerIndex () const
 returns the index of the active layer More...
 
bool getLayerFlag (LayerDataBase::Flags f) const
 returns a layer flag of the current layer More...
 
void setLayerFlag (LayerDataBase::Flags f, bool value)
 sets a layer flag of the current layer More...
 
bool getLayerFlag (Size layer, LayerDataBase::Flags f) const
 returns a layer flag of the layer layer More...
 
void setLayerFlag (Size layer, LayerDataBase::Flags f, bool value)
 sets a layer flag of the layer layer More...
 
void setLabel (LayerDataBase::LabelType label)
 
const VisibleAreagetVisibleArea () const
 Returns the currently visible area. This is the authority which determines the X and Y axis' scale. More...
 
bool isVisible (const PointOnAxis &p) const
 
PixelArea getPixelRange () const
 
virtual void setFilters (const DataFilters &filters)
 Sets the filters applied to the data before drawing (for the current layer) More...
 
Size getLayerCount () const
 Returns the number of layers. More...
 
virtual void activateLayer (Size layer_index)=0
 change the active layer (the one that is used for selecting and so on) More...
 
virtual void removeLayer (Size layer_index)=0
 removes the layer with index layer_index More...
 
void removeLayers ()
 removes all layers by calling removeLayer() for all layer indices (from highest to lowest) More...
 
bool addLayer (std::unique_ptr< LayerData1DBase > layer)
 Add an already constructed layer (e.g. for projections) More...
 
bool addPeakLayer (const ExperimentSharedPtrType &map, ODExperimentSharedPtrType od_map, const String &filename="", const bool use_noise_cutoff=false)
 Add a peak data layer. More...
 
bool addChromLayer (const ExperimentSharedPtrType &map, ODExperimentSharedPtrType od_map, const String &filename="")
 Add a chrom data layer. More...
 
bool addLayer (FeatureMapSharedPtrType map, const String &filename="")
 Add a feature data layer. More...
 
bool addLayer (ConsensusMapSharedPtrType map, const String &filename="")
 Add a consensus feature data layer. More...
 
bool addLayer (std::vector< PeptideIdentification > &peptides, const String &filename="")
 Add an identification data layer. More...
 
float getCurrentMinIntensity () const
 Returns the minimum intensity of the active layer. More...
 
float getCurrentMaxIntensity () const
 Returns the maximum intensity of the active layer. More...
 
float getMinIntensity (Size index) const
 Returns the minimum intensity of the layer with index index. More...
 
float getMaxIntensity (Size index) const
 Returns the maximum intensity of the layer with index index. More...
 
void setLayerName (Size i, const String &name)
 Sets the name of layer i. More...
 
String getLayerName (Size i)
 Gets the name of layer i. More...
 
void setCurrentLayerParameters (const Param &param)
 Sets the parameters of the current layer. More...
 
const RangeTypegetDataRange () const
 Returns the area which encloses all data points of all layers. More...
 
double getSnapFactor ()
 Returns the first intensity scaling factor for 'snap to maximum intensity mode' (for the currently visible data range). More...
 
double getPercentageFactor () const
 Returns the percentage factor. More...
 
virtual void showMetaData (bool modifiable=false, Int index=-1)
 Shows a dialog with the meta data. More...
 
- Public Member Functions inherited from DefaultParamHandler
 DefaultParamHandler (const String &name)
 Constructor with name that is displayed in error messages. More...
 
 DefaultParamHandler (const DefaultParamHandler &rhs)
 Copy constructor. More...
 
virtual ~DefaultParamHandler ()
 Destructor. More...
 
DefaultParamHandleroperator= (const DefaultParamHandler &rhs)
 Assignment operator. More...
 
virtual bool operator== (const DefaultParamHandler &rhs) const
 Equality operator. More...
 
void setParameters (const Param &param)
 Sets the parameters. More...
 
const ParamgetParameters () const
 Non-mutable access to the parameters. More...
 
const ParamgetDefaults () const
 Non-mutable access to the default parameters. More...
 
const StringgetName () const
 Non-mutable access to the name. More...
 
void setName (const String &name)
 Mutable access to the name. More...
 
const std::vector< String > & getSubsections () const
 Non-mutable access to the registered subsections. More...
 

Friends

class Plot3DOpenGLCanvas
 

Reimplemented Qt events

Plot3DOpenGLCanvasopenglcanvas_
 pointer to the SpectrumOpenGLCanvas implementation More...
 
bool legend_shown_
 whether the legend is shown or not More...
 
MultiGradient linear_gradient_
 stores the linear color gradient for non-log modes More...
 
void resizeEvent (QResizeEvent *e) override
 
void contextMenuEvent (QContextMenuEvent *e) override
 
bool isLegendShown () const
 Returns if the legend is shown. More...
 
void showLegend (bool)
 Shows/hides the legend. More...
 
void showCurrentLayerPreferences () override
 Shows the preferences dialog of the active layer. More...
 
void showCurrentPeaksAs2D ()
 Requests to display all spectra in 2D plot. More...
 
void activateLayer (Size layer_index) override
 
void removeLayer (Size layer_index) override
 
void updateLayer (Size i) override
 
void intensityModeChange_ () override
 
void currentLayerParamtersChanged_ ()
 Reacts on changed layer parameters. More...
 
bool finishAdding_ () override
 Method that is called when a new layer has been added. More...
 
void update_ (const char *caller_name=nullptr) override
 Updates the displayed data. More...
 

Additional Inherited Members

- Public Slots inherited from PlotCanvas
void changeVisibility (Size i, bool b)
 change the visibility of a layer More...
 
void changeLayerFilterState (Size i, bool b)
 change if the defined data filters are used More...
 
void showGridLines (bool show)
 Whether or not to show grid lines. More...
 
virtual void resetZoom (bool repaint=true)
 Zooms fully out and resets the zoom stack. More...
 
void setVisibleArea (const VisibleArea &area)
 Sets the visible area. More...
 
void setVisibleArea (const RangeAllType &area)
 Sets the visible area. More...
 
void setVisibleArea (const AreaXYType &area)
 Sets the visible area. More...
 
void setVisibleAreaX (double min, double max)
 Set only the visible area for the x axis; other axes are untouched. More...
 
void setVisibleAreaY (double min, double max)
 Set only the visible area for the y axis; other axes are untouched. More...
 
void saveCurrentLayer (bool visible)
 Saves the current layer data. More...
 
virtual void horizontalScrollBarChange (int value)
 Notifies the canvas that the horizontal scrollbar has been moved. More...
 
virtual void verticalScrollBarChange (int value)
 Notifies the canvas that the vertical scrollbar has been moved. More...
 
void setAdditionalContextMenu (QMenu *menu)
 Sets the additional context menu. If not 0, this menu is added to the context menu of the canvas. More...
 
virtual void updateLayer (Size i)=0
 Updates layer i when the data in the corresponding file changes. More...
 
AreaXYType canvasPixelArea () const
 Get the Area in pixel coordinates of the current canvas for X and Y axis. More...
 
const DimMapper< 2 > & getMapper () const
 Get Mapper to translate between values for axis (X/Y) and units (m/z, RT, intensity, ...) More...
 
void setMapper (const DimMapper< 2 > &mapper)
 Set a new mapper for the canvas. More...
 
- Signals inherited from PlotCanvas
void layerModficationChange (Size layer, bool modified)
 Signal emitted whenever the modification status of a layer changes (editing and storing) More...
 
void layerActivated (QWidget *w)
 Signal emitted whenever a new layer is activated within the current window. More...
 
void layerZoomChanged (QWidget *w)
 Signal emitted whenever the zoom changed. More...
 
void visibleAreaChanged (const VisibleArea &area)
 Change of the visible area. More...
 
void sendCursorStatus (const String &x_value, const String &y_value)
 Emitted when the cursor position changes (for displaying e.g. in status bar) More...
 
void sendStatusMessage (std::string message, OpenMS::UInt time)
 Emits a status message that should be displayed for time ms. If time is 0 the message should be displayed until the next message is emitted. More...
 
void recalculateAxes ()
 Forces recalculation of axis ticks in the connected widget. More...
 
void updateVScrollbar (float f_min, float disp_min, float disp_max, float f_max)
 Triggers the update of the vertical scrollbar. More...
 
void updateHScrollbar (float f_min, float disp_min, float disp_max, float f_max)
 Triggers the update of the horizontal scrollbar. More...
 
void changeLegendVisibility ()
 Toggle axis legend visibility change. More...
 
void actionModeChange ()
 Emitted when the action mode changes. More...
 
void preferencesChange ()
 Emitted when the layer preferences have changed. More...
 
- Static Public Member Functions inherited from DefaultParamHandler
static void writeParametersToMetaValues (const Param &write_this, MetaInfoInterface &write_here, const String &key_prefix="")
 Writes all parameters to meta values. More...
 
- Protected Slots inherited from PlotCanvas
void updateCursor_ ()
 Updates the cursor according to the current action mode. More...
 
- Protected Member Functions inherited from PlotCanvas
void resizeEvent (QResizeEvent *e) override
 
void wheelEvent (QWheelEvent *e) override
 
void keyPressEvent (QKeyEvent *e) override
 
void keyReleaseEvent (QKeyEvent *e) override
 
void focusOutEvent (QFocusEvent *e) override
 
void leaveEvent (QEvent *e) override
 
void enterEvent (QEvent *e) override
 
virtual void intensityModeChange_ ()
 This method is called whenever the intensity mode changes. Reimplement if you need to react on such changes. More...
 
void dimensionsChanged_ ()
 Call this whenever the DimMapper receives new dimensions; will update the axes and scrollbars. More...
 
virtual void changeVisibleArea_ (VisibleArea new_area, bool repaint=true, bool add_to_stack=false)
 Sets the visible area. More...
 
virtual void recalculateSnapFactor_ ()
 Recalculates the intensity scaling factor for 'snap to maximum intensity mode'. More...
 
virtual void zoom_ (int x, int y, bool zoom_in)
 Zooms such that screen point x, y would still point to the same data point. More...
 
void zoomBack_ ()
 Go backward in zoom history. More...
 
virtual void zoomForward_ ()
 Go forward in zoom history. More...
 
void zoomAdd_ (const VisibleArea &area)
 Add a visible area to the zoom stack. More...
 
void zoomClear_ ()
 Clears the zoom stack and invalidates the current zoom position. After calling this, a valid zoom position has to be added immediately. More...
 
virtual void translateLeft_ (Qt::KeyboardModifiers m)
 Translation bound to the 'Left' key. More...
 
virtual void translateRight_ (Qt::KeyboardModifiers m)
 Translation bound to the 'Right' key. More...
 
virtual void translateForward_ ()
 Translation bound to the 'Up' key. More...
 
virtual void translateBackward_ ()
 Translation bound to the 'Down' key. More...
 
virtual void updateScrollbars_ ()
 Updates the scroll bars. More...
 
PointXYType widgetToData_ (double x, double y)
 Convert widget (pixel) to chart (unit) coordinates. More...
 
PointXYType widgetToData_ (const QPoint &pos)
 Calls widgetToData_ with x and y position of pos. More...
 
virtual void paintGridLines_ (QPainter &painter)
 Helper function to paint grid lines. More...
 
virtual void recalculateRanges_ ()
 Recalculates the overall_data_range_. More...
 
void modificationStatus_ (Size layer_index, bool modified)
 Takes all actions necessary when the modification status of a layer changes (signals etc.) More...
 
void addDataProcessing_ (PeakMap &map, DataProcessing::ProcessingAction action) const
 Data processing setter for peak maps. More...
 
void drawText_ (QPainter &painter, const QStringList &text)
 Draws several lines of text to the upper right corner of the widget. More...
 
double getIdentificationMZ_ (const Size layer_index, const PeptideIdentification &peptide) const
 Returns the m/z value of an identification depending on the m/z source of the layer (precursor mass/theoretical peptide mass) More...
 
void popIncompleteLayer_ (const QString &error_message="")
 
- Protected Member Functions inherited from DefaultParamHandler
virtual void updateMembers_ ()
 This method is used to update extra member variables at the end of the setParameters() method. More...
 
void defaultsToParam_ ()
 Updates the parameters after the defaults have been set in the constructor. More...
 
- Protected Attributes inherited from PlotCanvas
QImage buffer_
 Buffer that stores the actual peak information. More...
 
DimMapper< 2 > unit_mapper_
 Mapper for X and Y axis. More...
 
ActionModes action_mode_ = AM_TRANSLATE
 Stores the current action mode (Pick, Zoom, Translate) More...
 
IntensityModes intensity_mode_ = IM_NONE
 Stores the used intensity mode function. More...
 
LayerStack layers_
 Layer data. More...
 
VisibleArea visible_area_
 Stores the currently visible area in data units (e.g. seconds, m/z, intensity etc) and axis (X,Y) area. More...
 
RangeType overall_data_range_
 Stores the data range (m/z, RT and intensity) of all layers. More...
 
bool show_grid_ = true
 Stores whether or not to show a grid. More...
 
std::vector< VisibleAreazoom_stack_
 The zoom stack. More...
 
std::vector< VisibleArea >::iterator zoom_pos_ = zoom_stack_.end()
 The current position in the zoom stack. More...
 
bool update_buffer_ = false
 Whether to recalculate the data in the buffer when repainting. More...
 
PlotWidgetspectrum_widget_ = nullptr
 Back-pointer to the enclosing spectrum widget. More...
 
QPoint last_mouse_pos_
 start position of mouse actions More...
 
double percentage_factor_ = 1.0
 Intensity scaling factor for relative scale with multiple layers. More...
 
std::vector< double > snap_factors_
 Intensity scaling factor for 'snap to maximum intensity mode'. More...
 
QRubberBand rubber_band_
 Rubber band for selected area. More...
 
QMenu * context_add_ = nullptr
 External context menu extension. More...
 
bool show_timing_ = false
 Flag that determines if timing data is printed to the command line. More...
 
PeakIndex selected_peak_
 selected peak More...
 
PeakIndex measurement_start_
 start peak of measuring mode More...
 
- Protected Attributes inherited from DefaultParamHandler
Param param_
 Container for current parameters. More...
 
Param defaults_
 Container for default parameters. This member should be filled in the constructor of derived classes! More...
 
std::vector< Stringsubsections_
 Container for registered subsections. This member should be filled in the constructor of derived classes! More...
 
String error_name_
 Name that is displayed in error messages during the parameter checking. More...
 
bool check_defaults_
 If this member is set to false no checking if parameters in done;. More...
 
bool warn_empty_defaults_
 If this member is set to false no warning is emitted when defaults are empty;. More...
 

Detailed Description

Canvas for 3D-visualization of peak map data.

The Plot3DCanvas uses the helper class Plot3DOpenGLCanvas for the actual 3D rendering. Deriving Plot3DCanvas directly from QGLWidget is not possible due to the "Deadly Diamond" shape of inheritance.

Parameters of this class are:

NameTypeDefaultRestrictionsDescription
default_path string.  Default path for loading/storing data.
background_color string@#ffffff  Background color
dot:shade_mode int1 min: 0 max: 1Shade mode: single-color ('flat') or gradient peaks ('smooth').
dot:gradient stringLinear|0,@#ffea00;6,@#ff0000;14,@#aa00ff;23,@#5500ff;100,@#000000  Peak color gradient.
dot:interpolation_steps int1000 min: 1 max: 1000Interpolation steps for peak color gradient precalculation.
dot:line_width int2 min: 1 max: 99Line width for peaks.

Note:
  • If a section name is documented, the documentation is displayed as tooltip.
  • Advanced parameter names are italic.

Member Enumeration Documentation

◆ ShadeModes

enum ShadeModes

Different shade modes.

Enumerator
SHADE_FLAT 
SHADE_SMOOTH 

Constructor & Destructor Documentation

◆ Plot3DCanvas()

Plot3DCanvas ( const Param preferences,
QWidget parent = nullptr 
)

Constructor.

◆ ~Plot3DCanvas()

~Plot3DCanvas ( )
override

Destructor.

Member Function Documentation

◆ activateLayer

void activateLayer ( Size  layer_index)
overrideslot

◆ contextMenuEvent()

void contextMenuEvent ( QContextMenuEvent *  e)
override

◆ currentLayerParamtersChanged_

void currentLayerParamtersChanged_ ( )
protectedslot

Reacts on changed layer parameters.

◆ finishAdding_()

bool finishAdding_ ( )
overrideprotectedvirtual

Method that is called when a new layer has been added.

Implements PlotCanvas.

◆ intensityModeChange_

void intensityModeChange_ ( )
overrideslot

◆ isLegendShown()

bool isLegendShown ( ) const

Returns if the legend is shown.

◆ openglwidget()

Plot3DOpenGLCanvas* openglwidget ( ) const

returns the Plot3DOpenGLcanvas

Referenced by TOPPViewBase::showCurrentPeaksAs3D().

◆ removeLayer

void removeLayer ( Size  layer_index)
overrideslot

◆ resizeEvent()

void resizeEvent ( QResizeEvent *  e)
override

◆ showCurrentLayerPreferences()

void showCurrentLayerPreferences ( )
overridevirtual

Shows the preferences dialog of the active layer.

Implements PlotCanvas.

◆ showCurrentPeaksAs2D

void showCurrentPeaksAs2D ( )
signal

Requests to display all spectra in 2D plot.

◆ showLegend()

void showLegend ( bool  )

Shows/hides the legend.

◆ update_()

void update_ ( const char *  caller_name = nullptr)
overrideprotectedvirtual

Updates the displayed data.

The default implementation calls QWidget::update().

This method is reimplemented in the 3D view to update the OpenGL widget.

Parameters
caller_nameName of the calling function (use OPENMS_PRETTY_FUNCTION).

Reimplemented from PlotCanvas.

◆ updateLayer

void updateLayer ( Size  i)
overrideslot

Friends And Related Function Documentation

◆ Plot3DOpenGLCanvas

friend class Plot3DOpenGLCanvas
friend

Member Data Documentation

◆ legend_shown_

bool legend_shown_
protected

whether the legend is shown or not

◆ linear_gradient_

MultiGradient linear_gradient_
protected

stores the linear color gradient for non-log modes

◆ openglcanvas_

Plot3DOpenGLCanvas* openglcanvas_

pointer to the SpectrumOpenGLCanvas implementation