libpappsomspp
Library for mass spectrometry
Loading...
Searching...
No Matches
integrationscopebase.h
Go to the documentation of this file.
1// Copyright 2021 Filippo Rusconi
2// GPLv3+
3
4#pragma once
5
6/////////////////////// StdLib includes
7#include <vector>
8#include <limits>
9
10/////////////////////// Qt includes
11#include <QObject>
12#include <QString>
13#include <QPointF>
14
15
16/////////////////////// Local includes
18#include "../../types.h"
19
20
21namespace pappso
22{
23
24/*
25 Bitwise stuff (from StackOverflow)
26
27 It is sometimes worth using an enum to name the bits:
28
29 enum ThingFlags = {
30 ThingMask = 0x0000,
31 ThingFlag0 = 1 << 0,
32 ThingFlag1 = 1 << 1,
33 ThingError = 1 << 8,
34 }
35
36 Then use the names later on. I.e. write
37
38 thingstate |= ThingFlag1;
39 thingstate &= ~ThingFlag0;
40 if (thing & ThingError) {...}
41
42 to set, clear and test. This way you hide the magic numbers from the rest of
43 your code.
44 */
45
47{
48 // This one needs to be 0 because of (if!<function>() syntax)
49 FAILURE = 0x0000,
50 // As soon as not 0, success and potentially with more info.
51 SUCCESS = 1 << 1,
56 NOT_PRINTABLE = 1 << 6,
58};
59
61{
62
63 public:
66 virtual ~IntegrationScopeBase();
67
68 virtual IntegrationScopeBase *clone() const;
69
71
72 virtual bool getPoint(QPointF &point) const;
73 virtual bool getPoints(std::vector<QPointF> &points) const;
74
75 virtual IntegrationScopeFeatures getLeftMostPoint(QPointF &point) const;
76 virtual IntegrationScopeFeatures getLeftMostPoints(std::vector<QPointF> &points) const;
77 virtual IntegrationScopeFeatures getLeftMostTopPoint(QPointF &point) const;
78 virtual IntegrationScopeFeatures getLeftMostBottomPoint(QPointF &point) const;
79
80 virtual IntegrationScopeFeatures getRightMostPoint(QPointF &point) const;
81 virtual IntegrationScopeFeatures getRightMostPoints(std::vector<QPointF> &points) const;
82 virtual IntegrationScopeFeatures getRightMostTopPoint(QPointF &point) const;
83 virtual IntegrationScopeFeatures getRightMostBottomPoint(QPointF &point) const;
84
85 virtual IntegrationScopeFeatures getTopMostPoint(QPointF &point) const;
86 virtual IntegrationScopeFeatures getTopMostPoints(std::vector<QPointF> &points) const;
87 virtual IntegrationScopeFeatures getBottomMostPoint(QPointF &point) const;
88 virtual IntegrationScopeFeatures getBottomMostPoints(std::vector<QPointF> &points) const;
89
90 virtual IntegrationScopeFeatures getRhombHorizontalSize(double &size) const;
91 virtual IntegrationScopeFeatures getRhombVerticalSize(double &size) const;
92
93 virtual IntegrationScopeFeatures getWidth(double &width) const;
94 virtual IntegrationScopeFeatures getHeight(double &height) const;
95
96 virtual bool range(Enums::Axis axis, double &start, double &end) const;
97
98 virtual void setDataKindX(Enums::DataKind data_kind);
99 virtual bool getDataKindX(Enums::DataKind &data_kind);
100
101 virtual void setDataKindY(Enums::DataKind data_kind);
102 virtual bool getDataKindY(Enums::DataKind &data_kind);
103
104 virtual bool is1D() const;
105 virtual bool is2D() const;
106
107 virtual bool isRectangle() const;
108 virtual bool isRhomboid() const;
109
110 virtual bool transpose();
111
112 virtual bool contains(const QPointF &point) const;
113
114 virtual QString toString() const;
115
116 virtual void reset();
117};
118
119typedef std::shared_ptr<IntegrationScopeBase> IntegrationScopeBaseSPtr;
120typedef std::shared_ptr<const IntegrationScopeBase> IntegrationScopeBaseCstSPtr;
121
122
124{
125
128
129 // NO specification of the axis because it is implicit that MZ is Y and the
130 // checked value is either DT or RT depending on dataKind.
131
133
134 IntegrationScopeSpec(IntegrationScopeBase *integration_scope_base_p, Enums::DataKind data_kind)
135 : mpa_integrationScope(integration_scope_base_p->clone()), dataKind(data_kind)
136 {
137 }
138
143
144
147 {
148 if(this == &other)
149 return *this;
150
152 dataKind = other.dataKind;
153
154 return *this;
155 }
156
157 QString
158 toString() const
159 {
160 QString text = "Integration scope spec:";
161 text += mpa_integrationScope->toString();
162
163 text += " - data kind: ";
164
166 text += "dt.";
167 else if(dataKind == Enums::DataKind::mz)
168 text += "m/z.";
169 else if(dataKind == Enums::DataKind::rt)
170 text += "rt.";
171 else
172 text += "unset.";
173
174 return text;
175 }
176};
177
178typedef std::shared_ptr<IntegrationScopeSpec> IntegrationScopeSpecSPtr;
179typedef std::shared_ptr<const IntegrationScopeSpec> IntegrationScopeSpecCstSPtr;
180
181} // namespace pappso
virtual IntegrationScopeFeatures getBottomMostPoint(QPointF &point) const
virtual bool range(Enums::Axis axis, double &start, double &end) const
virtual void setDataKindY(Enums::DataKind data_kind)
virtual IntegrationScopeFeatures getLeftMostPoints(std::vector< QPointF > &points) const
virtual IntegrationScopeFeatures getWidth(double &width) const
virtual IntegrationScopeFeatures getLeftMostPoint(QPointF &point) const
virtual IntegrationScopeFeatures getHeight(double &height) const
virtual bool contains(const QPointF &point) const
virtual IntegrationScopeFeatures getRightMostTopPoint(QPointF &point) const
virtual IntegrationScopeFeatures getRightMostPoint(QPointF &point) const
virtual IntegrationScopeFeatures getBottomMostPoints(std::vector< QPointF > &points) const
virtual IntegrationScopeFeatures getTopMostPoint(QPointF &point) const
virtual void setDataKindX(Enums::DataKind data_kind)
virtual IntegrationScopeBase * clone() const
virtual bool getDataKindX(Enums::DataKind &data_kind)
virtual bool getPoints(std::vector< QPointF > &points) const
virtual bool getDataKindY(Enums::DataKind &data_kind)
virtual IntegrationScopeFeatures getRightMostBottomPoint(QPointF &point) const
virtual IntegrationScopeFeatures getRhombHorizontalSize(double &size) const
virtual IntegrationScopeFeatures getLeftMostBottomPoint(QPointF &point) const
virtual IntegrationScopeFeatures getRhombVerticalSize(double &size) const
virtual IntegrationScopeBase & operator=(const IntegrationScopeBase &other)
virtual IntegrationScopeFeatures getRightMostPoints(std::vector< QPointF > &points) const
virtual IntegrationScopeFeatures getTopMostPoints(std::vector< QPointF > &points) const
virtual bool getPoint(QPointF &point) const
virtual IntegrationScopeFeatures getLeftMostTopPoint(QPointF &point) const
#define PMSPP_LIB_DECL
@ dt
Drift time.
Definition types.h:241
@ rt
Retention time.
Definition types.h:240
tries to keep as much as possible monoisotopes, removing any possible C13 peaks and changes multichar...
Definition aa.cpp:39
std::shared_ptr< const IntegrationScopeSpec > IntegrationScopeSpecCstSPtr
std::shared_ptr< IntegrationScopeBase > IntegrationScopeBaseSPtr
std::shared_ptr< IntegrationScopeSpec > IntegrationScopeSpecSPtr
std::shared_ptr< const IntegrationScopeBase > IntegrationScopeBaseCstSPtr
IntegrationScopeSpec & operator=(const IntegrationScopeSpec &other)
IntegrationScopeBase * mpa_integrationScope
IntegrationScopeSpec(const IntegrationScopeSpec &other)
IntegrationScopeSpec(IntegrationScopeBase *integration_scope_base_p, Enums::DataKind data_kind)