libpappsomspp
Library for mass spectrometry
Loading...
Searching...
No Matches
pappso::TraceJs Class Reference

#include <tracejs.h>

Inheritance diagram for pappso::TraceJs:

Signals

void sizeChangedSignal ()

Public Member Functions

Q_INVOKABLE TraceJs (QObject *parent=nullptr)
Q_INVOKABLE TraceJs (const Trace &trace, QObject *parent=nullptr)
TraceJsoperator= (const TraceJs &)=delete
Q_INVOKABLE int getSize () const
Q_INVOKABLE void append (double x, double y)
Q_INVOKABLE void append (const DataPointJs *data_point_js_p)
Q_INVOKABLE DataPointJsgetPointAt (int index) const
Q_INVOKABLE QVariantList getTrace () const
Q_INVOKABLE void initialize (const QVariantList &js_points)
Q_INVOKABLE void initialize (const QVariantMap &map)
Q_INVOKABLE std::size_t initialize (const QVariantList &x_values, const QVariantList &y_values)
Q_INVOKABLE std::size_t initialize (const QString &x_text, const QString &y_text)
Q_INVOKABLE std::size_t initialize (const QString &space_sep_text)
Q_INVOKABLE std::size_t initialize (const TraceJs &other)
Q_INVOKABLE QVariantList xValues () const
Q_INVOKABLE QVariantList yValues () const
Q_INVOKABLE QVariantMap toMap () const
Q_INVOKABLE void clear ()

Static Public Member Functions

static void registerJsConstructor (QJSEngine *engine)

Properties

int size

Private Attributes

Trace m_trace

Detailed Description

Definition at line 26 of file tracejs.h.

Constructor & Destructor Documentation

◆ TraceJs() [1/2]

pappso::TraceJs::TraceJs ( QObject * parent = nullptr)
explicit

Definition at line 9 of file tracejs.cpp.

9 : QObject(parent), m_trace()
10{
11}
Trace m_trace
Definition tracejs.h:69

References m_trace.

Referenced by getPointAt(), getTrace(), initialize(), and operator=().

◆ TraceJs() [2/2]

pappso::TraceJs::TraceJs ( const Trace & trace,
QObject * parent = nullptr )
explicit

Definition at line 13 of file tracejs.cpp.

13 : QObject(parent), m_trace(trace)
14{
15}

References m_trace.

Member Function Documentation

◆ append() [1/2]

void pappso::TraceJs::append ( const DataPointJs * data_point_js_p)

Definition at line 31 of file tracejs.cpp.

32{
33 if(data_point_js_p != nullptr)
34 {
35 m_trace.push_back(data_point_js_p->dataPoint());
36 emit sizeChangedSignal();
37 }
38}
void sizeChangedSignal()

References pappso::DataPointJs::dataPoint(), m_trace, and sizeChangedSignal().

◆ append() [2/2]

void pappso::TraceJs::append ( double x,
double y )

Definition at line 24 of file tracejs.cpp.

25{
26 m_trace.push_back(DataPoint(x, y));
27 emit sizeChangedSignal();
28}

References m_trace, sizeChangedSignal(), pappso::x, and pappso::y.

Referenced by operator=().

◆ clear()

void pappso::TraceJs::clear ( )

Definition at line 208 of file tracejs.cpp.

209{
210 m_trace.clear();
211}

References m_trace.

Referenced by operator=().

◆ getPointAt()

DataPointJs * pappso::TraceJs::getPointAt ( int index) const

Definition at line 41 of file tracejs.cpp.

42{
43 if(index < 0 || index >= static_cast<int>(m_trace.size()))
44 {
45 return nullptr;
46 }
47
48 // Simple version: create wrapper on the fly
49 return new DataPointJs(m_trace[index], const_cast<TraceJs *>(this));
50}
Q_INVOKABLE TraceJs(QObject *parent=nullptr)
Definition tracejs.cpp:9

References TraceJs(), and m_trace.

Referenced by operator=().

◆ getSize()

int pappso::TraceJs::getSize ( ) const

Definition at line 18 of file tracejs.cpp.

19{
20 return m_trace.size();
21}

References m_trace.

Referenced by operator=().

◆ getTrace()

QVariantList pappso::TraceJs::getTrace ( ) const

Definition at line 54 of file tracejs.cpp.

55{
56 QVariantList list;
57
58 for(const DataPoint &data_point : m_trace)
59 {
60 DataPointJs *data_point_js_p = new DataPointJs(data_point, const_cast<TraceJs *>(this));
61 list.append(QVariant::fromValue(data_point_js_p));
62 }
63
64 return list;
65}

References TraceJs(), and m_trace.

Referenced by operator=().

◆ initialize() [1/6]

size_t pappso::TraceJs::initialize ( const QString & space_sep_text)

Definition at line 143 of file tracejs.cpp.

144{
145 m_trace.initialize(space_sep_text);
146
147 emit sizeChangedSignal();
148
149 return m_trace.size();
150}

References m_trace, and sizeChangedSignal().

◆ initialize() [2/6]

size_t pappso::TraceJs::initialize ( const QString & x_text,
const QString & y_text )

Definition at line 133 of file tracejs.cpp.

134{
135 m_trace.initialize(x_text, y_text);
136
137 emit sizeChangedSignal();
138
139 return m_trace.size();
140}

References m_trace, and sizeChangedSignal().

◆ initialize() [3/6]

void pappso::TraceJs::initialize ( const QVariantList & js_points)

Definition at line 68 of file tracejs.cpp.

69{
70 m_trace.clear();
71
72 for(const QVariant &variant : js_points)
73 {
74 QObject *obj = variant.value<QObject *>();
75
76 // The cast returns nullptr if the variant did not
77 // convert to DataPointJs.
78 if(auto data_point_js = qobject_cast<DataPointJs *>(obj))
79 {
80 DataPoint data_point = data_point_js->dataPoint();
81 m_trace.push_back(data_point); // Extract the internal DataPoint
82 }
83 else
84 {
85 qWarning() << "Failed initializing Trace because list member is not a DataPointJs object:"
86 << obj;
87 }
88 }
89
90 emit sizeChangedSignal();
91}

References m_trace, and sizeChangedSignal().

Referenced by operator=().

◆ initialize() [4/6]

std::size_t pappso::TraceJs::initialize ( const QVariantList & x_values,
const QVariantList & y_values )

Definition at line 116 of file tracejs.cpp.

117{
118 if(x_values.size() != y_values.size())
119 qFatal() << "The two containers must have the same size.";
120
121 m_trace.clear();
122 m_trace.reserve(x_values.size());
123
124 for(int iter = 0; iter < x_values.size(); ++iter)
125 m_trace.push_back(DataPoint(x_values.at(iter).toDouble(), y_values.at(iter).toDouble()));
126
127 emit sizeChangedSignal();
128
129 return m_trace.size();
130}

References m_trace, and sizeChangedSignal().

◆ initialize() [5/6]

void pappso::TraceJs::initialize ( const QVariantMap & map)

Definition at line 95 of file tracejs.cpp.

96{
97 m_trace.clear();
98 m_trace.reserve(map.size());
99
100 for(auto it = map.constBegin(); it != map.constEnd(); ++it)
101 {
102 bool key_ok, value_ok;
103 double key = it.key().toDouble(&key_ok);
104 double value = it.value().toDouble(&value_ok);
105
106 if(key_ok && value_ok)
107 m_trace.emplace_back(key, value);
108 else
109 qWarning() << "Skipping invalid map entry at key:" << it.key();
110 }
111
112 emit sizeChangedSignal();
113}

References m_trace, and sizeChangedSignal().

◆ initialize() [6/6]

size_t pappso::TraceJs::initialize ( const TraceJs & other)

Definition at line 153 of file tracejs.cpp.

154{
155 m_trace.clear();
156 m_trace.reserve(other.m_trace.size());
157 std::copy(other.m_trace.begin(), other.m_trace.end(), std::back_inserter(m_trace));
158
159 emit sizeChangedSignal();
160
161 return m_trace.size();
162}

References TraceJs(), m_trace, and sizeChangedSignal().

◆ operator=()

TraceJs & pappso::TraceJs::operator= ( const TraceJs & )
delete

◆ registerJsConstructor()

void pappso::TraceJs::registerJsConstructor ( QJSEngine * engine)
static

Definition at line 214 of file tracejs.cpp.

215{
216 if(!engine)
217 {
218 qWarning() << "Cannot register class: engine is null";
219 return;
220 }
221
222 // Register the meta object as a constructor
223 QJSValue jsMetaObject = engine->newQMetaObject(&TraceJs::staticMetaObject);
224 engine->globalObject().setProperty("Trace", jsMetaObject);
225}

Referenced by operator=().

◆ sizeChangedSignal

void pappso::TraceJs::sizeChangedSignal ( )
signal

◆ toMap()

QVariantMap pappso::TraceJs::toMap ( ) const

Definition at line 197 of file tracejs.cpp.

198{
199 QVariantMap map;
200 for(const auto &point : m_trace)
201 {
202 map.insert(QString::number(point.x), point.y);
203 }
204 return map;
205}

References m_trace.

Referenced by operator=().

◆ xValues()

QVariantList pappso::TraceJs::xValues ( ) const

Definition at line 169 of file tracejs.cpp.

170{
171 QVariantList list;
172 list.reserve(m_trace.size());
173
174 for(const DataPoint &point : m_trace)
175 {
176 list.append(QVariant::fromValue(point.x));
177 }
178
179 return list;
180}

References m_trace.

Referenced by operator=().

◆ yValues()

QVariantList pappso::TraceJs::yValues ( ) const

Definition at line 183 of file tracejs.cpp.

184{
185 QVariantList list;
186 list.reserve(m_trace.size());
187
188 for(const DataPoint &point : m_trace)
189 {
190 list.append(QVariant::fromValue(point.y));
191 }
192
193 return list;
194}

References m_trace.

Referenced by operator=().

Member Data Documentation

◆ m_trace

Property Documentation

◆ size

int pappso::TraceJs::size
read

Definition at line 29 of file tracejs.h.


The documentation for this class was generated from the following files: