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 Q_OBJECT
63
64public:
65 IntegrationScopeBase(QObject *parent_p = nullptr);
66 IntegrationScopeBase(const IntegrationScopeBase &other, QObject *parent_p = nullptr);
67 virtual ~IntegrationScopeBase();
68
69 virtual bool getPoint(QPointF &point) const;
70 virtual bool getPoints(std::vector<QPointF> &points) const;
71
72 virtual IntegrationScopeFeatures getLeftMostPoint(QPointF &point) const;
73 virtual IntegrationScopeFeatures getLeftMostPoints(std::vector<QPointF> &points) const;
74 virtual IntegrationScopeFeatures getLeftMostTopPoint(QPointF &point) const;
75 virtual IntegrationScopeFeatures getLeftMostBottomPoint(QPointF &point) const;
76
77 virtual IntegrationScopeFeatures getRightMostPoint(QPointF &point) const;
78 virtual IntegrationScopeFeatures getRightMostPoints(std::vector<QPointF> &points) const;
79 virtual IntegrationScopeFeatures getRightMostTopPoint(QPointF &point) const;
80 virtual IntegrationScopeFeatures getRightMostBottomPoint(QPointF &point) const;
81
82 virtual IntegrationScopeFeatures getTopMostPoint(QPointF &point) const;
83 virtual IntegrationScopeFeatures getTopMostPoints(std::vector<QPointF> &points) const;
84 virtual IntegrationScopeFeatures getBottomMostPoint(QPointF &point) const;
85 virtual IntegrationScopeFeatures getBottomMostPoints(std::vector<QPointF> &points) const;
86
87 virtual IntegrationScopeFeatures getRhombHorizontalSize(double &size) const;
88 virtual IntegrationScopeFeatures getRhombVerticalSize(double &size) const;
89
90 virtual IntegrationScopeFeatures getWidth(double &width) const;
91 virtual IntegrationScopeFeatures getHeight(double &height) const;
92
93 virtual bool range(Enums::Axis axis, double &start, double &end) const;
94
95 virtual void setDataKindX(Enums::DataKind data_kind);
96 virtual bool getDataKindX(Enums::DataKind &data_kind);
97
98 virtual void setDataKindY(Enums::DataKind data_kind);
99 virtual bool getDataKindY(Enums::DataKind &data_kind);
100
101 virtual bool is1D() const;
102 virtual bool is2D() const;
103
104 virtual bool isRectangle() const;
105 virtual bool isRhomboid() const;
106
107 virtual bool transpose();
108
109 virtual bool contains(const QPointF &point) const;
110
111 virtual QString toString() const;
112
113 virtual void reset();
114};
115
116typedef std::shared_ptr<IntegrationScopeBase> IntegrationScopeBaseSPtr;
117typedef std::shared_ptr<const IntegrationScopeBase> IntegrationScopeBaseCstSPtr;
118
119
121{
122
125
126 // NO specification of the axis because it is implicit that MZ is Y and the
127 // checked value is either DT or RT depending on dataKind.
128
130
132 Enums::DataKind data_kind)
133 : integrationScopeSPtr(integration_scope_sp), dataKind(data_kind)
134 {
135 }
136
141
144 {
145 if(this == &other)
146 return *this;
147
149 dataKind = other.dataKind;
150
151 return *this;
152 }
153
154 QString
155 toString() const
156 {
157 QString text = "Integration scope spec:";
158 text += integrationScopeSPtr->toString();
159
160 text += " - data kind: ";
161
163 text += "dt.";
164 else if(dataKind == Enums::DataKind::mz)
165 text += "m/z.";
166 else if(dataKind == Enums::DataKind::rt)
167 text += "rt.";
168 else
169 text += "unset.";
170
171 return text;
172 }
173};
174
175typedef std::shared_ptr<IntegrationScopeSpec> IntegrationScopeSpecSPtr;
176typedef std::shared_ptr<const IntegrationScopeSpec> IntegrationScopeSpecCstSPtr;
177
178} // 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 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 IntegrationScopeFeatures getRightMostPoints(std::vector< QPointF > &points) const
virtual IntegrationScopeFeatures getTopMostPoints(std::vector< QPointF > &points) const
virtual bool getPoint(QPointF &point) const
IntegrationScopeBase(QObject *parent_p=nullptr)
virtual IntegrationScopeFeatures getLeftMostTopPoint(QPointF &point) const
#define PMSPP_LIB_DECL
@ dt
Drift time.
Definition types.h:252
@ rt
Retention time.
Definition types.h:251
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)
IntegrationScopeSpec(const IntegrationScopeSpec &other)
IntegrationScopeBaseSPtr integrationScopeSPtr
IntegrationScopeSpec(IntegrationScopeBaseSPtr integration_scope_sp, Enums::DataKind data_kind)