26 #include <QFileDialog> 27 #include <QPrintDialog> 30 #include <QMessageBox> 32 #include <QVBoxLayout> 34 #include <qwt_plot_curve.h> 35 #include <qwt_plot_zoomer.h> 48 p_zoomer =
new QwtPlotZoomer(this->canvas());
49 setTitle(
"Histogram Plot");
51 QwtText *leftLabel =
new QwtText(
"Frequency", QwtText::PlainText);
52 leftLabel->setColor(Qt::red);
53 QFont font = leftLabel->font();
54 font.setPointSize(13);
56 leftLabel->setFont(font);
57 setAxisTitle(QwtPlot::yLeft, *leftLabel);
59 QwtText *rtLabel =
new QwtText(
"Percentage");
60 rtLabel->setColor(Qt::blue);
61 rtLabel->setFont(font);
62 setAxisTitle(QwtPlot::yRight, *rtLabel);
64 setAxisTitle(QwtPlot::xBottom,
"Pixel Value (DN)");
66 setAxisScale(QwtPlot::yRight, 0, 100);
67 enableAxis(QwtPlot::yRight,
true);
68 setCanvasBackground(Qt::white);
88 for(
int i = 0; i < hist.
Bins(); i++) {
94 cdfData.append(QPointF(hist.
BinMiddle(i), cumpct));
97 QPen *pen =
new QPen(Qt::red);
99 p_histCurve->setData(
new QwtPointSeriesData(histData));
104 pen->setColor(Qt::blue);
105 p_cdfCurve->setData(
new QwtPointSeriesData(cdfData));
120 if(
p_zoomer->trackerMode() == QwtPicker::ActiveOnly) {
121 p_zoomer->setTrackerMode(QwtPicker::AlwaysOn);
124 p_zoomer->setTrackerMode(QwtPicker::ActiveOnly);
145 static QPrinter *printer = NULL;
146 if(printer == NULL) printer =
new QPrinter;
147 printer->setPageSize(QPrinter::Letter);
148 printer->setColorMode(QPrinter::Color);
150 QPrintDialog printDialog(printer, (
QWidget *)parent());
151 if(printDialog.exec() == QDialog::Accepted) {
153 QPixmap pixmap = this->grab();
154 QImage img = pixmap.toImage();
157 QPainter painter(printer);
158 QRect rect = painter.viewport();
159 QSize size = img.size();
160 size.scale(rect.size(), Qt::KeepAspectRatio);
161 painter.setViewport(rect.x(), rect.y(),
162 size.width(), size.height());
163 painter.setWindow(img.rect());
164 painter.drawImage(0, 0, img);
176 QFileDialog::getSaveFileName((
QWidget *)parent(),
177 "Choose output file",
179 QString(
"Images (*.png *.jpg *.tif)"));
180 if(output.isEmpty())
return;
182 QString format = QFileInfo(output).suffix();
183 QPixmap pixmap = this->grab();
184 std::string formatString = format.toStdString();
185 if(!pixmap.save(output, formatString.c_str())) {
186 QMessageBox::information((
QWidget *)parent(),
"Error",
"Unable to save" + output);
197 QPen *pen =
new QPen(Qt::white);
198 if(canvasBackground() == Qt::white) {
199 setCanvasBackground(Qt::black);
204 setCanvasBackground(Qt::white);
205 pen->setColor(Qt::black);
219 d->setWindowTitle(
"Basic Help");
221 QLabel *zoomLabel =
new QLabel(
"Zoom Options:");
223 QLabel(
" <b>Left click</b> on the mouse, drag, and release to select an area to zoom in on");
224 QLabel *zoomOut =
new 225 QLabel(
" <b>Middle click</b> on the mouse to zoom out one level");
226 QLabel *zoomReset =
new 227 QLabel(
" <b>Right click</b> on the mouse to clear the zoom and return to the original plot");
229 QVBoxLayout *layout =
new QVBoxLayout();
230 layout->addWidget(zoomLabel);
231 layout->addWidget(zoomIn);
232 layout->addWidget(zoomOut);
233 layout->addWidget(zoomReset);
235 d->setLayout(layout);
void trackerEnabled()
Enables mouse tracking on the plot.
Namespace for the standard library.
QwtPlotCurve * p_histCurve
Historgram plot curve.
void showHelp()
Provides help text in a dialog box.
BigInt ValidPixels() const
Returns the total number of valid pixels processed.
BigInt BinCount(const int index) const
Returns the count at a bin position in the histogram.
double BinMiddle(const int index) const
Returns the value represented by a bin.
void cdfCurveVisible()
Hide/show the cdf curve.
QwtPlotZoomer * p_zoomer
Plot Zoomer.
Container of a cube histogram.
QwtPlotCurve * p_cdfCurve
CDF plot curve.
void printPlot()
Provide printing capabilities.
Namespace for ISIS/Bullet specific routines.
void switchBackground()
Switches the plot background color between black and white.
void Load(Histogram &hist)
Plots the given Isis Histogram in the plot window.
int Bins() const
Returns the number of bins in the histogram.
void savePlot()
Allows user to save the plot to an image file.