QXRD  0.11.16
Public Slots | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | List of all members
QxrdImageDisplayWidget Class Reference

#include <qxrdimagedisplaywidget.h>

Inheritance diagram for QxrdImageDisplayWidget:
Inheritance graph
[legend]
Collaboration diagram for QxrdImageDisplayWidget:
Collaboration graph
[legend]

Public Slots

void updateImage (QcepDoubleImageDataPtr img, QcepMaskDataPtr ovflow=QcepMaskDataPtr(), QcepMaskDataPtr mask=QcepMaskDataPtr())
 
void setGrayscale ()
 

Public Member Functions

 QxrdImageDisplayWidget (QWidget *parent=0)
 
void paintEvent (QPaintEvent *event)
 
QSize sizeHint () const
 

Static Public Member Functions

static QxrdImageDisplayWidgetinsertNew (QxrdApplication *app, QTabWidget *tw)
 

Private Member Functions

void rebuildImage ()
 

Private Attributes

QcepDoubleImageDataPtr m_Data
 
QcepMaskDataPtr m_Mask
 
QcepMaskDataPtr m_Overflow
 
QImage m_DataImage
 
double m_Minimum
 
double m_Maximum
 
double m_StepSize
 
int m_TableMax
 
QVector< QRgb > m_ColorTable
 
double m_DisplayScale
 

Detailed Description

Definition at line 15 of file qxrdimagedisplaywidget.h.

Constructor & Destructor Documentation

QxrdImageDisplayWidget::QxrdImageDisplayWidget ( QWidget *  parent = 0)
explicit

Definition at line 9 of file qxrdimagedisplaywidget.cpp.

References setGrayscale().

Referenced by insertNew().

9  :
10  QWidget(parent),
11  m_Data(NULL),
12  m_Mask(NULL),
13  m_Overflow(NULL),
14  m_Minimum(0),
15  m_Maximum(25.5),
16  m_StepSize(0.1),
17  m_TableMax(255),
18  m_ColorTable(256),
19  m_DisplayScale(0.5)
20 {
21  setGrayscale();
22 }
QcepDoubleImageDataPtr m_Data

Here is the call graph for this function:

Here is the caller graph for this function:

Member Function Documentation

QxrdImageDisplayWidget * QxrdImageDisplayWidget::insertNew ( QxrdApplication app,
QTabWidget *  tw 
)
static

Definition at line 129 of file qxrdimagedisplaywidget.cpp.

References QxrdImageDisplayWidget().

130 {
131  QxrdImageDisplayWidget *res = NULL;
132 
133  if (tw) {
134  QScrollArea *sa = new QScrollArea();
135 
136  res = new QxrdImageDisplayWidget();
137 
138  sa -> setWidget(res);
139 
140  tw->insertTab(1, sa, "Image");
141  }
142 
143  return res;
144 }
QxrdImageDisplayWidget(QWidget *parent=0)

Here is the call graph for this function:

void QxrdImageDisplayWidget::paintEvent ( QPaintEvent *  event)

Definition at line 33 of file qxrdimagedisplaywidget.cpp.

References m_DataImage, and m_DisplayScale.

34 {
35  QPainter painter(this);
36 
37  QRegion rgn = event->region();
38  QVector<QRect> rects = rgn.rects();
39 
40  foreach(QRect rect, rects) {
41 // printf("paint rect %d,%d,%d,%d\n",
42 // rect.left(), rect.top(),
43 // rect.right(), rect.bottom());
44 
45  QRect srcRect(rect.left()/m_DisplayScale, rect.top()/m_DisplayScale,
46  rect.width()/m_DisplayScale+1, rect.height()/m_DisplayScale+1);
47  QRect dstRect(srcRect.left()*m_DisplayScale, srcRect.top()*m_DisplayScale,
48  srcRect.width()*m_DisplayScale, srcRect.height()*m_DisplayScale);
49 
50  painter.drawImage(dstRect, m_DataImage, srcRect);
51  }
52 
53 // painter.fillRect(rect(), Qt::lightGray);
54 //
55 // painter.drawImage(rect(), m_DataImage, m_DataImage.rect());
56 
57 // painter.fillRect(QRect(10,10,40,40), Qt::red);
58 }
void QxrdImageDisplayWidget::rebuildImage ( )
private

Definition at line 100 of file qxrdimagedisplaywidget.cpp.

References m_ColorTable, m_Data, m_DataImage, m_Maximum, m_Minimum, m_StepSize, and m_TableMax.

101 {
102  if (m_Data) {
103  int width = m_Data->get_Width();
104  int height = m_Data->get_Height();
105  double *data = m_Data->data();
106  QRgb *table = m_ColorTable.data();
107 
108  m_DataImage = QImage(width, height, QImage::Format_ARGB32_Premultiplied);
109 
110  for (int row=0; row<height; row++) {
111  QRgb* line = (QRgb*)(m_DataImage.scanLine(row));
112 
113  for (int col=0; col<width; col++) {
114  double val = *data++;
115 
116  if (val<m_Minimum) {
117  *line++ = table[0];
118  } else if (val>m_Maximum) {
119  *line++ = table[m_TableMax];
120  } else {
121  int n = (int)((val - m_Minimum)/m_StepSize);
122  *line++ = table[n];
123  }
124  }
125  }
126  }
127 }
QcepDoubleImageDataPtr m_Data
void QxrdImageDisplayWidget::setGrayscale ( )
slot

Definition at line 24 of file qxrdimagedisplaywidget.cpp.

References m_ColorTable.

Referenced by QxrdImageDisplayWidget().

25 {
26  m_ColorTable.resize(257);
27 
28  for (int i=0; i<256; i++) {
29  m_ColorTable[i] = qRgb(i,i,i);
30  }
31 }

Here is the caller graph for this function:

QSize QxrdImageDisplayWidget::sizeHint ( ) const

Definition at line 90 of file qxrdimagedisplaywidget.cpp.

References m_Data, and m_DisplayScale.

91 {
92  if (m_Data) {
93  return QSize(m_Data->get_Width()*m_DisplayScale,
94  m_Data->get_Height()*m_DisplayScale);
95  } else {
96  return QSize(128,128);
97  }
98 }
QcepDoubleImageDataPtr m_Data
void QxrdImageDisplayWidget::updateImage ( QcepDoubleImageDataPtr  img,
QcepMaskDataPtr  ovflow = QcepMaskDataPtr(),
QcepMaskDataPtr  mask = QcepMaskDataPtr() 
)
slot

Definition at line 61 of file qxrdimagedisplaywidget.cpp.

References g_Application, and QcepApplication::printMessage().

Referenced by QxrdWindow::newMask().

64 {
65  QTime tic;
66  tic.start();
67 
68  if (img) {
69  m_Data = img;
70  }
71 
72  if (ovflow) {
73  m_Overflow = ovflow;
74  }
75 
76  if (mask) {
77  m_Mask = mask;
78  }
79 
80  rebuildImage();
81 
82  adjustSize();
83  repaint();
84 
85  if (g_Application) {
86  g_Application->printMessage(tr("Image rebuilt after %1 msec").arg(tic.elapsed()));
87  }
88 }
virtual void printMessage(QString msg, QDateTime ts=QDateTime::currentDateTime())=0
QcepApplication * g_Application
QcepDoubleImageDataPtr m_Data

Here is the call graph for this function:

Here is the caller graph for this function:

Member Data Documentation

QVector<QRgb> QxrdImageDisplayWidget::m_ColorTable
private

Definition at line 49 of file qxrdimagedisplaywidget.h.

Referenced by rebuildImage(), and setGrayscale().

QcepDoubleImageDataPtr QxrdImageDisplayWidget::m_Data
private

Definition at line 38 of file qxrdimagedisplaywidget.h.

Referenced by rebuildImage(), and sizeHint().

QImage QxrdImageDisplayWidget::m_DataImage
private

Definition at line 42 of file qxrdimagedisplaywidget.h.

Referenced by paintEvent(), and rebuildImage().

double QxrdImageDisplayWidget::m_DisplayScale
private

Definition at line 51 of file qxrdimagedisplaywidget.h.

Referenced by paintEvent(), and sizeHint().

QcepMaskDataPtr QxrdImageDisplayWidget::m_Mask
private

Definition at line 39 of file qxrdimagedisplaywidget.h.

double QxrdImageDisplayWidget::m_Maximum
private

Definition at line 45 of file qxrdimagedisplaywidget.h.

Referenced by rebuildImage().

double QxrdImageDisplayWidget::m_Minimum
private

Definition at line 44 of file qxrdimagedisplaywidget.h.

Referenced by rebuildImage().

QcepMaskDataPtr QxrdImageDisplayWidget::m_Overflow
private

Definition at line 40 of file qxrdimagedisplaywidget.h.

double QxrdImageDisplayWidget::m_StepSize
private

Definition at line 46 of file qxrdimagedisplaywidget.h.

Referenced by rebuildImage().

int QxrdImageDisplayWidget::m_TableMax
private

Definition at line 48 of file qxrdimagedisplaywidget.h.

Referenced by rebuildImage().


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