1 #include "HistogramWidget.h"
9 #include <qwt_symbol.h>
10 #include <qwt_scale_div.h>
11 #include <qwt_plot_zoomer.h>
12 #include <qwt_scale_engine.h>
25 setCanvasBackground(Qt::white);
26 enableAxis(QwtPlot::yRight);
27 setAxisScale(QwtPlot::xBottom, 0, 255);
28 setAxisLabelRotation(QwtPlot::xBottom, 45);
29 setAxisScale(QwtPlot::yRight, 0, 255);
33 axisFont.setBold(
true);
34 axisTitle.setFont(axisFont);
35 axisTitle.setText(
"Frequency");
36 setAxisTitle(QwtPlot::yLeft, axisTitle);
37 axisTitle.setText(
"Input (Cube DN)");
38 setAxisTitle(QwtPlot::xBottom, axisTitle);
39 axisTitle.setText(
"Output");
40 setAxisTitle(QwtPlot::yRight, axisTitle);
47 p_stretchCurve->setPen(QPen(QBrush(stretchColor), 2, Qt::DashLine));
48 p_stretchCurve->setSymbol(
new QwtSymbol(QwtSymbol::Ellipse, QBrush(stretchColor), QPen(stretchColor), QSize(5, 5)));
53 p_zoomer =
new QwtPlotZoomer(canvas());
64 std::vector<double> xarray, yarray;
65 for(
int i = 0; i < hist.
Bins(); i++) {
70 yarray.push_back(freq * 100.0);
77 double maxYValue = DBL_MIN;
78 double minYValue = DBL_MAX;
81 for(
unsigned int y = 0; y < yarray.size(); y++) {
82 intervals[y].interval = QwtInterval(xarray[y], xarray[y] + hist.
BinSize());
84 intervals[y].value = yarray[y];
85 if(yarray[y] > maxYValue)
86 maxYValue = yarray[y];
87 if(yarray[y] < minYValue)
88 minYValue = yarray[y];
101 QwtScaleEngine *engine = axisScaleEngine(QwtPlot::xBottom);
102 QwtScaleDiv scale = engine->divideScale(min, max, maxMajor, maxMinor);
103 QwtInterval interval = scale.interval();
104 setAxisScale(QwtPlot::xBottom,
105 interval.minValue() - hist.
BinSize(),
106 interval.maxValue() + hist.
BinSize());
117 for(
int i = 0; i < stretch.
Pairs(); i++) {
118 curvePoints[i] = QPointF(stretch.
Input(i), stretch.
Output(i));