12 #include <OpenMS/VISUAL/OpenMS_GUIConfig.h> 
   21 #include <QTextDocument> 
   33   class Annotation1DItem;
 
  124         p.rx() = area.
minX();
 
  128         p.ry() = area.
minY();
 
  191         p.rx() = area.
maxX();
 
  195         p.ry() = area.
maxY();
 
  235       p[(int)
gravity_axis_] = std::numeric_limits<float>::quiet_NaN();
 
  309     constexpr 
static double TOP_MARGIN{1.09};
 
  352                        const String& basename_extra);
 
  389     void dataToWidget(
double x, 
double y, QPoint& point, 
bool flipped = 
false);
 
  402       dataToWidget_(x, y, point);
 
  405       dataToWidget_(0, 0, zero);
 
  430       auto xy_unit = unit_mapper_.map(data_point); 
 
  431       pushIntoDataRange(xy_unit, layer_index);
 
  432       unit_mapper_.fromXY(xy_unit, data_point);    
 
  443       auto p_range = unit_mapper_.fromXY(xy_unit);
 
  444       const auto all_range = getLayer(layer_index).getRange();
 
  445       p_range.pushInto(all_range);
 
  446       xy_unit = unit_mapper_.mapRange(p_range).minPosition();
 
  480     void paint(QPainter* paint_device, QPaintEvent* e);
 
  544       const auto& xy = visible_area_.getAreaXY();
 
  545       const auto h_px = height();
 
  546       const auto w_px = width();
 
  548       point.setX(
int((x - xy.minX()) / xy.width() * w_px));
 
  552         point.setY(
int((xy.maxY() - y) / xy.height() * h_px));
 
  556         point.setY(h_px - 
int(std::log10((y - xy.minY()) + 1) / std::log10(xy.height() + 1) * h_px));
 
  562       dataToWidget_(xy.
getX(), xy.
getY(), point);
 
  568       dataToWidget_(xy.
getX(), xy.
getY(), point);
 
  634       RangeType& layer_range_1d = overall_data_range_1d_;
 
  637       for (
Size layer_index = 0; layer_index < getLayerCount(); ++layer_index)
 
  639         layer_range_1d.
extend(getLayer(layer_index).getRange1D());
 
  645       auto& gravity_range = getGravityDim().map(layer_range_1d);
 
  646       gravity_range.setMin(0);
 
  676     void zoom_(
int x, 
int y, 
bool zoom_in) 
override;
 
  721     bool mirror_mode_ = 
false;
 
  723     bool moving_annotations_ = 
false;
 
  725     bool show_alignment_ = 
false;
 
  735     double alignment_score_ = 0.0;
 
  737     bool ion_ladder_visible_ = 
true;
 
  739     bool draw_interesting_MZs_ = 
false;
 
An abstract class acting as an interface for the different 1D annotation items.
Definition: Annotation1DItem.h:36
 
DRange< N_DIM > AreaXYType
The Area in X,Y,(Z)... dimension (number of dimensions depends on N_DIM)
Definition: DimMapper.h:796
 
Representation of a coordinate in D-dimensional space.
Definition: DPosition.h:29
 
CoordinateType getY() const
Name accessor for the second dimension. Only for DPosition<2>, for visualization.
Definition: DPosition.h:149
 
CoordinateType getX() const
Name accessor for the first dimension. Only for DPosition<2>, for visualization.
Definition: DPosition.h:142
 
A base class for a dimension which represents a certain unit (e.g. RT or m/z). Derived classes implem...
Definition: DimMapper.h:41
 
DIM_UNIT getUnit() const
The unit of the dimension.
Definition: DimMapper.h:129
 
const DimBase & getDim(DIM d) const
obtain unit/name for X/Y/Z dimension.
Definition: DimMapper.h:758
 
Invalid value exception.
Definition: Exception.h:303
 
Not implemented exception.
Definition: Exception.h:404
 
Manipulates X or Y component of points in the X-Y plane, by assuming one axis (either X or Y axis) ha...
Definition: Plot1DCanvas.h:42
 
DIM gravity_axis_
Where are points in the X-Y plane projected onto when drawing lines?
Definition: Plot1DCanvas.h:279
 
QPoint gravitateWith(QPoint p, const QPoint &delta) const
Definition: Plot1DCanvas.h:138
 
void setIntensityAsGravity(const DimMapper< 2 > &unit_mapper)
Convenience function, which picks the Intensity dimension from a DimMapper as gravity axis.
Definition: Plot1DCanvas.h:84
 
QPoint gravitateMin(QPoint p, const AreaXYType &area) const
Definition: Plot1DCanvas.h:120
 
void setGravityAxis(DIM axis)
Definition: Plot1DCanvas.h:70
 
DPosition< D > gravitateZero(DPosition< D > p) const
Definition: Plot1DCanvas.h:222
 
int gravityValue(const QPoint &p) const
Definition: Plot1DCanvas.h:243
 
QPoint gravitateZero(QPoint p) const
Definition: Plot1DCanvas.h:204
 
DPosition< D > gravitateWith(DPosition< D > p, const DPosition< D > &delta) const
Same as gravitateWith()
Definition: Plot1DCanvas.h:153
 
int gravityValue(const DPosition< D > &p) const
Definition: Plot1DCanvas.h:261
 
QPoint gravitateTo(QPoint p, const QPoint &target) const
Definition: Plot1DCanvas.h:164
 
QPoint gravitateMax(QPoint p, const AreaXYType &area) const
Opposite of gravitateMin()
Definition: Plot1DCanvas.h:187
 
DPosition< D > gravitateTo(DPosition< D > p, const DPosition< D > &target) const
Same as gravitateTo()
Definition: Plot1DCanvas.h:179
 
Gravitator swap() const
Swap gravity axis (from X to Y, or vice versa)
Definition: Plot1DCanvas.h:108
 
Gravitator(const DimMapper< 2 > &unit_mapper)
Convenience c'tor, which picks the Intensity dimension from a DimMapper as gravity axis.
Definition: Plot1DCanvas.h:60
 
auto gravityDiff(const DPosition< D > &start, const DPosition< D > &end) const
Definition: Plot1DCanvas.h:272
 
Gravitator(DIM axis)
C'tor to apply gravity on any axis.
Definition: Plot1DCanvas.h:51
 
DPosition< D > gravitateNAN(DPosition< D > p) const
Definition: Plot1DCanvas.h:233
 
DIM getGravityAxis() const
Which axis is affected by gravity?
Definition: Plot1DCanvas.h:99
 
CoordinateType minX() const
Accessor for min_ coordinate minimum.
Definition: DIntervalBase.h:268
 
CoordinateType maxX() const
Accessor for min_ coordinate maximum.
Definition: DIntervalBase.h:280
 
CoordinateType maxY() const
Accessor for max_ coordinate maximum.
Definition: DIntervalBase.h:286
 
CoordinateType minY() const
Accessor for max_ coordinate minimum.
Definition: DIntervalBase.h:274
 
Base class for all 1D layers, a special case of LayerData.
Definition: LayerData1DBase.h:28
 
In-Memory representation of a mass spectrometry run.
Definition: MSExperiment.h:46
 
The representation of a 1D spectrum.
Definition: MSSpectrum.h:44
 
Painter1D for chromatograms.
Definition: Painter1DBase.h:71
 
Painter1D for mobilograms.
Definition: Painter1DBase.h:88
 
Painter1D for spectra.
Definition: Painter1DBase.h:51
 
Management and storage of parameters / INI files.
Definition: Param.h:44
 
Canvas for visualization of one or several spectra.
Definition: Plot1DCanvas.h:295
 
void dataToWidget(const DPosition< 2 > &xy_point, DPosition< 2 > &point, bool flipped)
For convenience - calls dataToWidget.
 
void translateForward_() override
Translation bound to the 'Up' key.
 
void recalculatePercentageFactor_(Size layer_index)
Recalculates the current scale factor based on the specified layer (= 1.0 if intensity mode !...
 
const DimBase & getGravityDim() const
Get the dimension on which gravity is currently acting upon (usually it's the Y axis' unit)
 
PointXYType widgetToData(double x, double y)
Calls PlotCanvas::widgetToData_(), takes mirror mode into account.
 
RangeAllType correctGravityAxisOfVisibleArea_(UnitRange area)
 
~Plot1DCanvas() override
Destructor.
 
std::vector< std::pair< Size, Size > > getAlignedPeaksIndices()
Returns aligned_peaks_indices_.
 
void changeVisibleAreaCommon_(const UnitRange &new_area, bool repaint, bool add_to_stack)
internal method, called before calling parent function PlotCanvas::changeVisibleArea_
 
void drawCoordinates_(QPainter &painter, const PeakIndex &peak)
Draws the coordinates (or coordinate deltas) to the widget's upper left corner.
 
std::vector< std::pair< double, double > > aligned_peaks_mz_delta_
Stores the alignment as MZ values of pairs of aligned peaks in both spectra.
Definition: Plot1DCanvas.h:731
 
void addUserPeakAnnotation_(PeakIndex near_peak)
Shows dialog and calls addPeakAnnotation_.
 
const DimBase & getNonGravityDim() const
Get the dimension on which gravity is currently not acting upon (the orthogonal axis; usually it's th...
 
void dataToWidget(const DPosition< 2 > &peak, QPoint &point, bool flipped=false)
For convenience - calls dataToWidget.
 
void zoomForward_() override
Go forward in zoom history.
 
bool finishAdding_() override
Method that is called when a new layer has been added.
 
void dataToWidget(double x, double y, QPoint &point, bool flipped=false)
Calls PlotCanvas::dataToWidget_(), takes mirror mode into account.
 
void removeLayer(Size layer_index) override
 
void mousePressEvent(QMouseEvent *e) override
 
void setDrawInterestingMZs(bool enable)
interesting (e.g., high-intensity) get live annotated with m/s's
 
DrawModes getDrawMode() const
Returns the draw mode of the current layer.
 
LabelMode
Label modes (percentage or absolute) of x axis and y axis.
Definition: Plot1DCanvas.h:301
 
@ LM_XPERCENT_YABSOLUTE
Definition: Plot1DCanvas.h:303
 
@ LM_XABSOLUTE_YPERCENT
Definition: Plot1DCanvas.h:304
 
@ LM_XABSOLUTE_YABSOLUTE
Definition: Plot1DCanvas.h:302
 
void horizontalScrollBarChange(int value) override
 
void setCurrentLayerPeakPenStyle(Qt::PenStyle ps)
Set's the Qt PenStyle of the active layer.
 
void mouseMoveEvent(QMouseEvent *e) override
 
std::vector< DrawModes > draw_modes_
Draw modes (for each layer) - sticks or connected lines.
Definition: Plot1DCanvas.h:714
 
void setMirrorModeActive(bool b)
Sets whether this widget is currently in mirror mode.
 
void resetZoom(bool repaint=true) override
Zooms fully out and resets the zoom stack.
Definition: Plot1DCanvas.h:615
 
void mouseReleaseEvent(QMouseEvent *e) override
 
void dataToWidget_(const DPosition< 2 > &xy, QPoint &point)
Definition: Plot1DCanvas.h:560
 
void currentLayerParamtersChanged_()
Reacts on changed layer parameters.
 
bool isIonLadderVisible() const
 
PeakIndex findPeakAtPosition_(QPoint)
Find peak next to the given position.
 
const LayerData1DBase & getCurrentLayer() const
 
void changeVisibleArea_(const UnitRange &new_area, bool repaint=true, bool add_to_stack=false)
Changes visible area interval.
 
void keyPressEvent(QKeyEvent *e) override
 
void activateSpectrum(Size index, bool repaint=true)
Sets current spectrum index of current layer to index.
 
void showCurrentPeaksAs2D()
Requests to display all spectra in 2D plot.
 
void showCurrentPeaksAsIonMobility(const MSSpectrum &spec)
Requests to display all spectra in ion mobility plot.
 
void updateScrollbars_() override
Updates the scroll bars.
 
void dataToWidgetDistance(double x, double y, QPoint &point)
converts a distance in axis values to pixel values
Definition: Plot1DCanvas.h:400
 
LayerData1DBase & getLayer(Size index)
 
DrawModes
Enumerate all available paint styles.
Definition: Plot1DCanvas.h:357
 
@ DM_PEAKS
draw data as peak
Definition: Plot1DCanvas.h:358
 
bool addChromLayer(ExperimentSharedPtrType chrom_exp_sptr, ODExperimentSharedPtrType ondisc_sptr, OSWDataSharedPtrType chrom_annotation, const int index, const String &filename, const String &basename, const String &basename_extra)
 
void showCurrentLayerPreferences() override
Shows the preferences dialog of the active layer.
 
void translateLeft_(Qt::KeyboardModifiers m) override
Translation bound to the 'Left' key.
 
bool mirrorModeActive() const
Returns whether this widget is currently in mirror mode.
 
void setIonLadderVisible(bool show)
 
void drawHighlightedPeak_(Size layer_index, const PeakIndex &peak, QPainter &painter, bool draw_elongation=false)
Draws a highlighted peak; if draw_elongation is true, the elongation line is drawn (for measuring)
 
void setTextBox(const QString &html)
Display a static text box on the top right.
 
void drawDeltas_(QPainter &painter, const PeakIndex &start, const PeakIndex &end)
Draws the coordinates (or coordinate deltas) to the widget's upper left corner.
 
const LayerData1DBase & getLayer(Size index) const
 
void flipLayer(Size index)
Flips the layer with index up/downwards.
 
void performAlignment(Size layer_index_1, Size layer_index_2, const Param ¶m)
 
bool isDrawInterestingMZs() const
Return true if interesting m/s are annotated.
 
std::vector< std::pair< Size, Size > > aligned_peaks_indices_
Stores the peak indices of pairs of aligned peaks in both spectra.
Definition: Plot1DCanvas.h:733
 
std::vector< Qt::PenStyle > peak_penstyle_
Draw style (for each layer)
Definition: Plot1DCanvas.h:716
 
void addLabelAnnotation_(const QPoint &screen_position, const QString &label_text)
Adds an annotation item at the given screen position.
 
const Gravitator & getGravitator() const
Get gravity manipulation object to apply gravity to points.
Definition: Plot1DCanvas.h:498
 
void paint(QPainter *paint_device, QPaintEvent *e)
Actual painting takes place here.
 
void intensityModeChange_() override
This method is called whenever the intensity mode changes. Reimplement if you need to react on such c...
 
double getAlignmentScore() const
Returns the score of the alignment.
 
QPoint measurement_start_point_px_
start point of "ruler" in pixel coordinates for measure mode
Definition: Plot1DCanvas.h:719
 
void activateLayer(Size layer_index) override
 
void changeVisibleArea_(const AreaXYType &new_area, bool repaint=true, bool add_to_stack=false)
Changes visible area interval.
 
void translateRight_(Qt::KeyboardModifiers m) override
Translation bound to the 'Right' key.
 
void showCurrentPeaksAsDIA(const Precursor &pc, const MSExperiment &exp)
Requests to display all spectra as DIA.
 
void updateLayer(Size i) override
 
void pushIntoDataRange(T &data_point, const int layer_index)
Pushes a data point back into the valid data range of the current layer area. Useful for annotation i...
Definition: Plot1DCanvas.h:428
 
void contextMenuEvent(QContextMenuEvent *e) override
 
void addUserLabelAnnotation_(const QPoint &screen_position)
Shows dialog and calls addLabelAnnotation_.
 
void setDrawMode(DrawModes mode)
Sets draw mode of the current layer.
 
Plot1DCanvas(const Param &preferences, const DIM gravity_axis=DIM::Y, QWidget *parent=nullptr)
Default constructor.
 
QTextDocument text_box_content_
The text box in the upper left corner with the current data coordinates of the cursor.
Definition: Plot1DCanvas.h:741
 
void showCurrentPeaksAs3D()
Requests to display all spectra in 3D plot.
 
void drawAlignment_(QPainter &painter)
Draws the alignment on painter.
 
void zoom_(int x, int y, bool zoom_in) override
Zooms such that screen point x, y would still point to the same data point.
 
void changeVisibleArea_(VisibleArea new_area, bool repaint=true, bool add_to_stack=false) override
Sets the visible area.
 
void paintGridLines_(QPainter &painter) override
Helper function to paint grid lines.
 
void dataToWidget_(double x, double y, QPoint &point)
Convert chart to widget coordinates.
Definition: Plot1DCanvas.h:542
 
PointXYType widgetToData(const QPoint &pos)
For convenience - calls widgetToData.
 
void recalculateRanges_() override
Recalculates the overall_data_range_ (by calling PlotCanvas::recalculateRanges_) plus the overall_dat...
Definition: Plot1DCanvas.h:630
 
void ensureAnnotationsWithinDataRange_()
Ensure that all annotations are within data range.
 
Annotation1DItem * addPeakAnnotation(const PeakIndex &peak_index, const QString &text, const QColor &color)
—– Annotations
 
PointXYType widgetToDataDistance(double x, double y)
compute distance in data coordinates (unit axis as shown) when moving x/y pixel in chart/widget coord...
Definition: Plot1DCanvas.h:412
 
RangeType overall_data_range_1d_
The data range (m/z, RT and intensity) of the current(!) spec/chrom for all layers.
Definition: Plot1DCanvas.h:711
 
Size alignment_layer_1_
Layer index of the first alignment layer.
Definition: Plot1DCanvas.h:727
 
QPoint dataToWidget_(const DPosition< 2 > &xy)
Definition: Plot1DCanvas.h:565
 
void translateBackward_() override
Translation bound to the 'Down' key.
 
Size getAlignmentSize()
Returns the number of aligned pairs of peaks.
 
Size alignment_layer_2_
Layer index of the second alignment layer.
Definition: Plot1DCanvas.h:729
 
void pushIntoDataRange(PointXYType &xy_unit, const int layer_index)
Pushes a data point back into the valid data range of the current layer area. Useful for annotation i...
Definition: Plot1DCanvas.h:441
 
Gravitator gr_
handles pulling/pushing of points to the edges of the widget
Definition: Plot1DCanvas.h:743
 
void paintEvent(QPaintEvent *e) override
 
bool flippedLayersExist()
Returns whether flipped layers exist or not.
 
LayerData1DBase & getCurrentLayer()
 
void resetAlignment()
Resets alignment_.
 
Base class for visualization canvas classes.
Definition: PlotCanvas.h:120
 
virtual void recalculateRanges_()
Recalculates the overall_data_range_.
 
Area< 2 >::AreaXYType AreaXYType
The range of data shown on the X and Y axis (unit depends on runtime config)
Definition: PlotCanvas.h:152
 
@ IM_LOG
Logarithmic version of normal mode.
Definition: PlotCanvas.h:181
 
virtual void changeVisibleArea_(VisibleArea new_area, bool repaint=true, bool add_to_stack=false)
Sets the visible area.
 
LayerDataBase::ExperimentSharedPtrType ExperimentSharedPtrType
Main managed data type (experiment)
Definition: PlotCanvas.h:130
 
LayerDataBase::ODExperimentSharedPtrType ODExperimentSharedPtrType
Definition: PlotCanvas.h:132
 
Precursor meta information.
Definition: Precursor.h:35
 
void scaleBy(const double factor)
calls RangeBase::scale() for each dimension
Definition: RangeManager.h:628
 
void minSpanIfSingular(const double min_span)
If any dimension is a single point, e.g. min==max, then extend this dimension by min_span / 2 on eith...
Definition: RangeManager.h:643
 
void clearRanges()
Resets all ranges.
Definition: RangeManager.h:795
 
void extend(const RangeManager< RangeBasesOther... > &rhs)
Definition: RangeManager.h:619
 
A more convenient string class.
Definition: String.h:34
 
size_t Size
Size type e.g. used as variable which can hold result of size()
Definition: Types.h:101
 
Main OpenMS namespace.
Definition: FeatureDeconvolution.h:22
 
DIM
Definition: DimMapper.h:601
 
boost::shared_ptr< OSWData > OSWDataSharedPtrType
SharedPtr on OSWData.
Definition: LayerDataChrom.h:16
 
Index of a peak or feature.
Definition: PeakIndex.h:25