QXRD  0.11.16
qxrdmaskrasterdata.cpp
Go to the documentation of this file.
1 #include "qxrddebug.h"
2 #include "qxrdmaskrasterdata.h"
3 
4 #include "qxrdrasterdata.h"
5 #include "qxrdapplication.h"
6 
8  : QwtRasterData(),
9  m_Mask(mask),
10  m_Interpolate(interp)
11 {
13  g_Application->printMessage(QObject::tr("QxrdMaskRasterData::QxrdMaskRasterData(%1,%2) [%3]")
14  .HEXARG(mask.data()).arg(interp).HEXARG(this));
15  }
16 
17  setInterval(Qt::XAxis, QwtInterval(0, (mask?mask->get_Width():0)));
18  setInterval(Qt::YAxis, QwtInterval(0, (mask?mask->get_Height():0)));
19  setInterval(Qt::ZAxis, range());
20 }
21 
22 double QxrdMaskRasterData::value(double x, double y) const
23 {
24  if (m_Mask) {
25  if (m_Interpolate) {
26  int ix = (int) x, iy = (int) y;
27  double dx = x-ix, dy = y-iy;
28 
29  double f00 = m_Mask->maskValue(ix,iy);
30  double f10 = m_Mask->maskValue(ix+1,iy);
31  double f01 = m_Mask->maskValue(ix,iy+1);
32  double f11 = m_Mask->maskValue(ix+1,iy+1);
33 
34  double f0 = f00*(1-dx)+f10*dx;
35  double f1 = f01*(1-dx)+f11*dx;
36 
37  double f = f0*(1-dy)+f1*dy;
38 
39  return f;
40  } else {
41  return m_Mask->maskValue(((int) qRound(x)), ((int) qRound(y)));
42  }
43  } else {
44  return 1;
45  }
46 }
47 
48 short int *QxrdMaskRasterData::data() const
49 {
50  if (m_Mask) {
51  return m_Mask->data();
52  } else {
53  return NULL;
54  }
55 }
56 
57 QwtInterval QxrdMaskRasterData::range() const
58 {
59  return QwtInterval(0.0, 3.0);
60 }
qint64 qcepDebug(int cond)
Definition: qcepdebug.cpp:26
short int * data() const
QcepMaskDataPtr m_Mask
QxrdMaskRasterData(QcepMaskDataPtr mask=QcepMaskDataPtr(), int interp=0)
const QcepMaskDataPtr mask() const
#define HEXARG(a)
Definition: qcepdebug.h:50
virtual void printMessage(QString msg, QDateTime ts=QDateTime::currentDateTime())=0
double value(double x, double y) const
QcepApplication * g_Application
QwtInterval range() const
QSharedPointer< QcepMaskData > QcepMaskDataPtr