QXRD  0.11.16
qxrdpowderpoint.cpp
Go to the documentation of this file.
1 #include "qcepdebug.h"
2 #include "qxrdpowderpoint.h"
3 #include <QString>
4 #include <QScriptEngine>
5 #include "qcepproperty.h"
6 
7 QxrdPowderPoint::QxrdPowderPoint(int n1, int n2, int n3, double x, double y, double r1, double r2, double az) :
8  m_N1(n1),
9  m_N2(n2),
10  m_N3(n3),
11  m_X(x),
12  m_Y(y),
13  m_R1(r1),
14  m_R2(r2),
15  m_Az(az)
16 {
17 }
18 
20  m_N1(pt.n1()),
21  m_N2(pt.n2()),
22  m_N3(pt.n3()),
23  m_X(pt.x()),
24  m_Y(pt.y()),
25  m_R1(pt.r1()),
26  m_R2(pt.r2()),
27  m_Az(pt.az())
28 {
29 }
30 
32  m_N1(-1),
33  m_N2(-1),
34  m_N3(-1),
35  m_X(0.0),
36  m_Y(0.0),
37  m_R1(0.0),
38  m_R2(0.0),
39  m_Az(0.0)
40 {
41 }
42 
44 {
45  return (m_N1 >= 0 && m_N2 >= 0 && m_N3 >= 0);
46 }
47 
49 {
50  return n1()==pt.n1() && n2()==pt.n2() && n3()==pt.n3() && x()==pt.x() && y()==pt.y() && r1()==pt.r1() && r2() == pt.r2() && az()==pt.az();
51 }
52 
54 {
55  return n1()!=pt.n1() || n2()!=pt.n2() || n3()!=pt.n3() || x()!=pt.x() || y()!=pt.y() || r1()!=pt.r1() || r2() != pt.r2() || az()!=pt.az();
56 }
57 
58 void QxrdPowderPoint::setSettingsValue(QSettings *settings, QString name)
59 {
60  settings->beginGroup(name);
61 
62  settings->setValue("n1", n1());
63  settings->setValue("n2", n2());
64  settings->setValue("n3", n3());
65  settings->setValue("x", x());
66  settings->setValue("y", y());
67  settings->setValue("r1", r1());
68  settings->setValue("r2", r2());
69  settings->setValue("az", az());
70 
71  settings->endGroup();
72 }
73 
74 void QxrdPowderPoint::customSaver(const QVariant &val, QSettings *settings, QString name)
75 {
76  QxrdPowderPoint pt = val.value<QxrdPowderPoint>();
77 
78  pt.setSettingsValue(settings, name);
79 }
80 
82 {
83  return QObject::tr("[%1, %2, %3, %4, %5, %6, %7, %8]").arg(n1()).arg(n2()).arg(n3()).arg(x()).arg(y()).arg(r1()).arg(r2()).arg(az());
84 }
85 
87 {
88  qRegisterMetaType< QxrdPowderPoint >("QxrdPowderPoint");
89 
90  qRegisterMetaTypeStreamOperators< QxrdPowderPoint >("QxrdPowderPoint");
91 
93 }
94 
95 QScriptValue QxrdPowderPoint::toScriptValue(QScriptEngine *engine, const QxrdPowderPoint &pt)
96 {
97  QScriptValue obj = engine->newObject();
98 
99  obj.setProperty("n1", pt.n1());
100  obj.setProperty("n2", pt.n2());
101  obj.setProperty("n3", pt.n3());
102  obj.setProperty("x", pt.x());
103  obj.setProperty("y", pt.y());
104  obj.setProperty("r1", pt.r1());
105  obj.setProperty("r2", pt.r2());
106  obj.setProperty("az", pt.az());
107 
108  return obj;
109 }
110 
111 void QxrdPowderPoint::fromScriptValue(const QScriptValue &obj, QxrdPowderPoint &pt)
112 {
113  pt.n1() = obj.property("n1").toInteger();
114  pt.n2() = obj.property("n2").toInteger();
115  pt.n3() = obj.property("n3").toInteger();
116  pt.x() = obj.property("x").toNumber();
117  pt.y() = obj.property("y").toNumber();
118  pt.r1() = obj.property("r1").toNumber();
119  pt.r2() = obj.property("r2").toNumber();
120  pt.az() = obj.property("az").toNumber();
121 }
122 
123 void QxrdPowderPointVector::setSettingsValue(QSettings *settings, QString name)
124 {
125  settings->beginWriteArray(name, count());
126 
127  for (int i=0; i<count(); i++) {
128  settings->setArrayIndex(i);
129  const QxrdPowderPoint &pt = at(i);
130  settings->setValue("n1", pt.n1());
131  settings->setValue("n2", pt.n2());
132  settings->setValue("n3", pt.n3());
133  settings->setValue("x", pt.x());
134  settings->setValue("y", pt.y());
135  settings->setValue("r1", pt.r1());
136  settings->setValue("r2", pt.r2());
137  settings->setValue("az", pt.az());
138  }
139 
140  settings->endArray();
141 }
142 
143 void QxrdPowderPointVector::customSaver(const QVariant &val, QSettings *settings, QString name)
144 {
145  QxrdPowderPointVector vec = val.value<QxrdPowderPointVector>();
146 
147  vec.setSettingsValue(settings, name);
148 }
149 
151 {
152  QString res="[";
153 
154  for (int i=0; i<count(); i++) {
155  if (i != 0) {
156  res += ", \n";
157  }
158 
159  res += at(i).toString();
160  }
161 
162  res += "]";
163 
164  return res;
165 }
166 
168 {
169  qRegisterMetaType< QxrdPowderPointVector >("QxrdPowderPointVector");
170 
171  qRegisterMetaTypeStreamOperators< QxrdPowderPointVector >("QxrdPowderPointVector");
172 
174 }
175 
176 QScriptValue QxrdPowderPointVector::toScriptValue(QScriptEngine *engine,
177  const QxrdPowderPointVector &vec)
178 {
179  int n = vec.count();
180 
181  QScriptValue res = engine->newArray(n);
182 
183  for (int i=0; i<n; i++) {
184  const QxrdPowderPoint &pt = vec.at(i);
185  QScriptValue obj = engine->newObject();
186 
187  obj.setProperty("n1", pt.n1());
188  obj.setProperty("n2", pt.n2());
189  obj.setProperty("n3", pt.n3());
190  obj.setProperty("x", pt.x());
191  obj.setProperty("y", pt.y());
192  obj.setProperty("r1", pt.r1());
193  obj.setProperty("r2", pt.r2());
194  obj.setProperty("az", pt.az());
195 
196  res.setProperty(i, obj);
197  }
198 
199  return res;
200 }
201 
202 void QxrdPowderPointVector::fromScriptValue(const QScriptValue &obj,
204 {
205  int n=obj.property("length").toInteger();
206 
207  vec.resize(n);
208 
209  for (int i=0; i<n; i++) {
210  QScriptValue pt = obj.property(i);
211 
212  if (pt.isValid()) {
213  vec[i].n1() = pt.property("n1").toInteger();
214  vec[i].n2() = pt.property("n2").toInteger();
215  vec[i].n3() = pt.property("n3").toInteger();
216  vec[i].x() = pt.property("x").toNumber();
217  vec[i].y() = pt.property("y").toNumber();
218  vec[i].r1() = pt.property("r1").toNumber();
219  vec[i].r2() = pt.property("r2").toNumber();
220  vec[i].az() = pt.property("az").toNumber();
221  }
222  }
223 }
224 
225 #ifndef QT_NO_DATASTREAM
226 
227 QDataStream &operator<<(QDataStream &stream, const QxrdPowderPoint &pt)
228 {
229  stream << pt.n1() << pt.n2() << pt.n3() << pt.x() << pt.y() << pt.r1() << pt.r2() << pt.az();
230 
231  return stream;
232 }
233 
234 QDataStream &operator>>(QDataStream &stream, QxrdPowderPoint &pt)
235 {
236  stream >> pt.n1() >> pt.n2() >> pt.n3() >> pt.x() >> pt.y() >> pt.r1() >> pt.r2() >> pt.az();
237 
238  return stream;
239 }
240 
241 #endif
double y() const
double az() const
static void registerMetaTypes()
int n2() const
bool operator==(const QxrdPowderPoint &pt) const
double r2() const
QString toString() const
static void fromScriptValue(const QScriptValue &obj, QxrdPowderPoint &pt)
QString toString() const
int n3() const
static void registerMetaTypes()
void setSettingsValue(QSettings *settings, QString name)
static void customSaver(const QVariant &val, QSettings *settings, QString name)
static QScriptValue toScriptValue(QScriptEngine *engine, const QxrdPowderPoint &pt)
static QScriptValue toScriptValue(QScriptEngine *engine, const QxrdPowderPointVector &vec)
bool isValid() const
double x() const
int n1() const
void setSettingsValue(QSettings *settings, QString name)
double r1() const
bool operator!=(const QxrdPowderPoint &pt) const
QDataStream & operator>>(QDataStream &stream, QxrdPowderPoint &pt)
QDataStream & operator<<(QDataStream &stream, const QxrdPowderPoint &pt)
static void fromScriptValue(const QScriptValue &obj, QxrdPowderPointVector &vec)
static void registerCustomSaver(QString typeName, CustomSettingsSaver *saver)
static void customSaver(const QVariant &val, QSettings *settings, QString name)