38 #include <OpenMS/VISUAL/OpenMS_GUIConfig.h> 47 #include <QTextDocument> 59 class Annotation1DItem;
150 p.rx() = area.
minX();
154 p.ry() = area.
minY();
217 p.rx() = area.
maxX();
221 p.ry() = area.
maxY();
261 p[(int)
gravity_axis_] = std::numeric_limits<float>::quiet_NaN();
335 constexpr
static double TOP_MARGIN{1.09};
357 const DimBase& getGravityDim()
const;
360 const DimBase& getNonGravityDim()
const;
371 bool addChromLayer(ExperimentSharedPtrType chrom_exp_sptr,
372 ODExperimentSharedPtrType ondisc_sptr,
387 DrawModes getDrawMode()
const;
390 void setDrawMode(DrawModes mode);
393 void showCurrentLayerPreferences()
override;
396 bool flippedLayersExist();
399 void flipLayer(
Size index);
402 bool mirrorModeActive()
const;
405 void setMirrorModeActive(
bool b);
408 void dataToWidget(
const DPosition<2>& peak, QPoint& point,
bool flipped =
false);
413 void dataToWidget(
double x,
double y, QPoint& point,
bool flipped =
false);
426 dataToWidget_(x, y, point);
429 dataToWidget_(0, 0, zero);
454 auto xy_unit = unit_mapper_.map(data_point);
455 pushIntoDataRange(xy_unit, layer_index);
456 unit_mapper_.fromXY(xy_unit, data_point);
467 auto p_range = unit_mapper_.fromXY(xy_unit);
468 const auto all_range = getLayer(layer_index).getRange();
469 p_range.pushInto(all_range);
470 xy_unit = unit_mapper_.mapRange(p_range).minPosition();
474 void setTextBox(
const QString& html);
483 void performAlignment(
Size layer_index_1,
Size layer_index_2,
const Param& param);
486 void resetAlignment();
489 Size getAlignmentSize();
492 double getAlignmentScore()
const;
495 std::vector<std::pair<Size, Size> > getAlignedPeaksIndices();
498 void activateSpectrum(
Size index,
bool repaint =
true);
501 void setCurrentLayerPeakPenStyle(Qt::PenStyle ps);
504 void paint(QPainter* paint_device, QPaintEvent* e);
507 void setDrawInterestingMZs(
bool enable);
510 bool isDrawInterestingMZs()
const;
513 void setIonLadderVisible(
bool show);
516 bool isIonLadderVisible()
const;
529 void showCurrentPeaksAs2D();
532 void showCurrentPeaksAs3D();
535 void showCurrentPeaksAsIonMobility(
const MSSpectrum& spec);
542 void activateLayer(
Size layer_index)
override;
544 void removeLayer(
Size layer_index)
override;
546 void updateLayer(
Size i)
override;
548 void horizontalScrollBarChange(
int value)
override;
553 void currentLayerParamtersChanged_();
568 const auto& xy = visible_area_.getAreaXY();
569 const auto h_px = height();
570 const auto w_px = width();
572 point.setX(
int((x - xy.minX()) / xy.width() * w_px));
576 point.setY(
int((xy.maxY() - y) / xy.height() * h_px));
580 point.setY(h_px -
int(std::log10((y - xy.minY()) + 1) / std::log10(xy.height() + 1) * h_px));
586 dataToWidget_(xy.
getX(), xy.
getY(), point);
592 dataToWidget_(xy.
getX(), xy.
getY(), point);
597 bool finishAdding_()
override;
600 void drawCoordinates_(QPainter& painter,
const PeakIndex& peak);
605 void drawAlignment_(QPainter& painter);
612 void changeVisibleArea_(
const AreaXYType& new_area,
bool repaint =
true,
bool add_to_stack =
false);
619 void changeVisibleArea_(
const UnitRange& new_area,
bool repaint =
true,
bool add_to_stack =
false);
623 void drawHighlightedPeak_(
Size layer_index,
const PeakIndex& peak, QPainter& painter,
bool draw_elongation =
false);
626 void updatePercentageFactor_(
Size layer_index);
629 void recalculateSnapFactor_()
override;
631 void updateScrollbars_()
override;
633 void intensityModeChange_()
override;
638 void paintEvent(QPaintEvent* e)
override;
639 void mousePressEvent(QMouseEvent* e)
override;
640 void mouseReleaseEvent(QMouseEvent* e)
override;
641 void mouseMoveEvent(QMouseEvent* e)
override;
642 void keyPressEvent(QKeyEvent* e)
override;
643 void contextMenuEvent(QContextMenuEvent* e)
override;
647 void zoomForward_()
override;
649 void zoom_(
int x,
int y,
bool zoom_in)
override;
651 void translateLeft_(Qt::KeyboardModifiers m)
override;
653 void translateRight_(Qt::KeyboardModifiers m)
override;
655 void translateForward_()
override;
657 void translateBackward_()
override;
660 void paintGridLines_(QPainter& painter)
override;
666 void addUserLabelAnnotation_(
const QPoint& screen_position);
668 void addLabelAnnotation_(
const QPoint& screen_position,
const QString& label_text);
670 void addUserPeakAnnotation_(
PeakIndex near_peak);
673 void ensureAnnotationsWithinDataRange_();
691 bool mirror_mode_ =
false;
693 bool moving_annotations_ =
false;
695 bool show_alignment_ =
false;
705 double alignment_score_ = 0.0;
707 bool ion_ladder_visible_ =
true;
709 bool draw_interesting_MZs_ =
false;
An abstract class acting as an interface for the different 1D annotation items.
Definition: Annotation1DItem.h:61
void dataToWidget_(const DPosition< 2 > &xy, QPoint &point)
Definition: Plot1DCanvas.h:584
std::vector< Qt::PenStyle > peak_penstyle_
Draw style (for each layer)
Definition: Plot1DCanvas.h:686
Size alignment_layer_1_
Layer index of the first alignment layer.
Definition: Plot1DCanvas.h:697
A more convenient string class.
Definition: String.h:58
std::vector< DrawModes > draw_modes_
Draw modes (for each layer) - sticks or connected lines.
Definition: Plot1DCanvas.h:684
Precursor meta information.
Definition: Precursor.h:58
std::vector< std::pair< Size, Size > > aligned_peaks_indices_
Stores the peak indices of pairs of aligned peaks in both spectra.
Definition: Plot1DCanvas.h:703
CoordinateType maxX() const
Accessor for min_ coordinate maximum.
Definition: DIntervalBase.h:306
Gravitator(DIM axis)
C'tor to apply gravity on any axis.
Definition: Plot1DCanvas.h:77
Canvas for visualization of one or several spectra.
Definition: Plot1DCanvas.h:319
void dataToWidgetDistance(double x, double y, QPoint &point)
converts a distance in axis values to pixel values
Definition: Plot1DCanvas.h:424
DPosition< D > gravitateWith(DPosition< D > p, const DPosition< D > &delta) const
Same as gravitateWith()
Definition: Plot1DCanvas.h:179
Gravitator swap() const
Swap gravity axis (from X to Y, or vice versa)
Definition: Plot1DCanvas.h:134
Definition: Plot1DCanvas.h:329
int gravityValue(const QPoint &p) const
Definition: Plot1DCanvas.h:269
boost::shared_ptr< OSWData > OSWDataSharedPtrType
SharedPtr on OSWData.
Definition: LayerDataChrom.h:42
CoordinateType getY() const
Name accessor for the second dimension. Only for DPosition<2>, for visualization. ...
Definition: DPosition.h:164
Main OpenMS namespace.
Definition: FeatureDeconvolution.h:47
QPoint gravitateMax(QPoint p, const AreaXYType &area) const
Opposite of gravitateMin()
Definition: Plot1DCanvas.h:213
draw data as peak
Definition: Plot1DCanvas.h:382
Definition: Plot1DCanvas.h:328
Base class for all 1D layers, a special case of LayerData.
Definition: LayerData1DBase.h:53
CoordinateType getX() const
Name accessor for the first dimension. Only for DPosition<2>, for visualization.
Definition: DPosition.h:157
void setIntensityAsGravity(const DimMapper< 2 > &unit_mapper)
Convenience function, which picks the Intensity dimension from a DimMapper as gravity axis...
Definition: Plot1DCanvas.h:110
The representation of a 1D spectrum.
Definition: MSSpectrum.h:66
DPosition< D > gravitateTo(DPosition< D > p, const DPosition< D > &target) const
Same as gravitateTo()
Definition: Plot1DCanvas.h:205
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:452
PointXYType widgetToDataDistance(double x, double y)
compute distance in widget coordinates (unit axis as shown) when moving x/y pixel in chart coordinate...
Definition: Plot1DCanvas.h:436
QPoint gravitateMin(QPoint p, const AreaXYType &area) const
Definition: Plot1DCanvas.h:146
QPoint measurement_start_point_px_
start point of "ruler" in pixel coordinates for measure mode
Definition: Plot1DCanvas.h:689
const Gravitator & getGravitator() const
Get gravity manipulation object to apply gravity to points.
Definition: Plot1DCanvas.h:522
QPoint gravitateTo(QPoint p, const QPoint &target) const
Definition: Plot1DCanvas.h:190
LabelMode
Label modes (percentage or absolute) of x axis and y axis.
Definition: Plot1DCanvas.h:326
const DimBase & getDim(DIM d) const
obtain unit/name for X/Y/Z dimension.
Definition: DimMapper.h:765
A base class for a dimension which represents a certain unit (e.g. RT or m/z). Derived classes implem...
Definition: DimMapper.h:66
int gravityValue(const DPosition< D > &p) const
Definition: Plot1DCanvas.h:287
Logarithmic mode.
Definition: PlotCanvas.h:209
DPosition< D > gravitateNAN(DPosition< D > p) const
Definition: Plot1DCanvas.h:259
QTextDocument text_box_content_
The text box in the upper left corner with the current data coordinates of the cursor.
Definition: Plot1DCanvas.h:711
auto gravityDiff(const DPosition< D > &start, const DPosition< D > &end) const
Definition: Plot1DCanvas.h:298
CoordinateType minY() const
Accessor for max_ coordinate minimum.
Definition: DIntervalBase.h:300
CoordinateType maxY() const
Accessor for max_ coordinate maximum.
Definition: DIntervalBase.h:312
DIM
Definition: DimMapper.h:607
Painter1D for mobilograms.
Definition: Painter1DBase.h:155
Management and storage of parameters / INI files.
Definition: Param.h:69
Invalid value exception.
Definition: Exception.h:327
In-Memory representation of a mass spectrometry run.
Definition: MSExperiment.h:70
DPosition< D > gravitateZero(DPosition< D > p) const
Definition: Plot1DCanvas.h:248
DIM gravity_axis_
Where are points in the X-Y plane projected onto when drawing lines?
Definition: Plot1DCanvas.h:305
DIM_UNIT getUnit() const
The unit of the dimension.
Definition: DimMapper.h:152
size_t Size
Size type e.g. used as variable which can hold result of size()
Definition: Types.h:127
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:701
CoordinateType minX() const
Accessor for min_ coordinate minimum.
Definition: DIntervalBase.h:294
Definition: Plot1DCanvas.h:330
QPoint dataToWidget_(const DPosition< 2 > &xy)
Definition: Plot1DCanvas.h:589
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:465
DRange< N_DIM > AreaXYType
The Area in X,Y,(Z)... dimension (number of dimensions depends on N_DIM)
Definition: DimMapper.h:803
Size alignment_layer_2_
Layer index of the second alignment layer.
Definition: Plot1DCanvas.h:699
void dataToWidget_(double x, double y, QPoint &point)
Convert chart to widget coordinates.
Definition: Plot1DCanvas.h:566
DIM getGravityAxis() const
Which axis is affected by gravity?
Definition: Plot1DCanvas.h:125
Base class for visualization canvas classes.
Definition: PlotCanvas.h:145
QPoint gravitateWith(QPoint p, const QPoint &delta) const
Definition: Plot1DCanvas.h:164
void setGravityAxis(DIM axis)
Definition: Plot1DCanvas.h:96
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:67
Painter1D for spectra.
Definition: Painter1DBase.h:118
DrawModes
Enumerate all available paint styles.
Definition: Plot1DCanvas.h:380
Painter1D for chromatograms.
Definition: Painter1DBase.h:138
Not implemented exception.
Definition: Exception.h:428
Gravitator(const DimMapper< 2 > &unit_mapper)
Convenience c'tor, which picks the Intensity dimension from a DimMapper as gravity axis...
Definition: Plot1DCanvas.h:86
Index of a peak or feature.
Definition: PeakIndex.h:50
QPoint gravitateZero(QPoint p) const
Definition: Plot1DCanvas.h:230
Gravitator gr_
handles pulling/pushing of points to the edges of the widget
Definition: Plot1DCanvas.h:713