15 #include <QtGui/QContextMenuEvent>
16 #include <QtGui/QGridLayout>
17 #include <QtGui/QSlider>
18 #include <QtGui/QMenu>
19 #include <QtGui/QFrame>
22 #include <QtCore/QtDebug>
44 mpPlot->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
45 mpPlot->setRotation(30, 0, 15);
47 mpPlot->setShift(0, 0, 0);
55 mpPlot->coordinates()->setAutoScale(
false);
69 qDebug() <<
"-- in qwt3dPlot.cpp Plot3d::setZoom --";
78 mpPlot->setZoom(zoom);
87 qDebug() <<
"-- in qwt3dPlot.cpp Plot3d::plotData --";
100 mpPlot->setCoordinateStyle(Qwt3D::FRAME);
101 mpPlot->updateData();
108 qDebug() <<
"-- in qwt3dPlot.cpp Plot3d::setAxes --";
111 double majorTicLength, minorTicLength;
129 mpPlot->coordinates()->setLineSmooth(
true);
130 mpPlot->coordinates()->setGridLinesColor(Qwt3D::RGBA(0, 0, 0.5));
131 mpPlot->coordinates()->setNumberFont(
"Courier", 8);
132 mpPlot->coordinates()->setLabelFont(
"Courier", 8);
133 mpPlot->coordinates()->adjustLabels(35);
135 mpPlot->coordinates()->setLabelColor(Qwt3D::RGBA(1, 0, 0));
139 mpPlot->coordinates()->axes[Qwt3D::Z1].setScale(
new ValueScale);
142 mpPlot->coordinates()->axes[Qwt3D::Z1].setMajors(2);
144 mpPlot->coordinates()->axes[Qwt3D::Z1].setMajors(1);
146 mpPlot->coordinates()->axes[Qwt3D::Z1].setMinors(0);
147 mpPlot->coordinates()->axes[Qwt3D::Z1].setLineWidth(2, 0.7, 0.2);
148 mpPlot->coordinates()->axes[Qwt3D::Z1].setTicOrientation(-1, 1, 0);
149 mpPlot->coordinates()->axes[Qwt3D::Z1].setTicLength(majorTicLength, minorTicLength);
151 mpPlot->coordinates()->axes[Qwt3D::Z2].setScale(
new ValueScale);
154 mpPlot->coordinates()->axes[Qwt3D::Z2].setMajors(2);
156 mpPlot->coordinates()->axes[Qwt3D::Z2].setMajors(1);
158 mpPlot->coordinates()->axes[Qwt3D::Z2].setMinors(0);
159 mpPlot->coordinates()->axes[Qwt3D::Z2].setLineWidth(2, 0.7, 0.2);
160 mpPlot->coordinates()->axes[Qwt3D::Z2].setTicOrientation(-1, -1, 0);
161 mpPlot->coordinates()->axes[Qwt3D::Z2].setTicLength(majorTicLength, minorTicLength);
163 mpPlot->coordinates()->axes[Qwt3D::Z3].setScale(
new ValueScale);
166 mpPlot->coordinates()->axes[Qwt3D::Z3].setMajors(2);
168 mpPlot->coordinates()->axes[Qwt3D::Z3].setMajors(1);
170 mpPlot->coordinates()->axes[Qwt3D::Z3].setMinors(0);
171 mpPlot->coordinates()->axes[Qwt3D::Z3].setLineWidth(2, 0.7, 0.2);
172 mpPlot->coordinates()->axes[Qwt3D::Z3].setTicOrientation(1, -1, 0);
173 mpPlot->coordinates()->axes[Qwt3D::Z3].setTicLength(majorTicLength, minorTicLength);
175 mpPlot->coordinates()->axes[Qwt3D::Z4].setScale(
new ValueScale);
178 mpPlot->coordinates()->axes[Qwt3D::Z4].setMajors(2);
180 mpPlot->coordinates()->axes[Qwt3D::Z4].setMajors(1); mpPlot->coordinates()->axes[Qwt3D::Z4].setMinors(0);
182 mpPlot->coordinates()->axes[Qwt3D::Z4].setLineWidth(2, 0.7, 0.2);
183 mpPlot->coordinates()->axes[Qwt3D::Z4].setTicOrientation(1, 1, 0);
184 mpPlot->coordinates()->axes[Qwt3D::Z4].setTicLength(majorTicLength, minorTicLength);
187 mpPlot->coordinates()->axes[Qwt3D::X1].setLabelString(
"columns");
188 mpPlot->coordinates()->axes[Qwt3D::X1].setMajors(
mData.
columns - 1);
189 mpPlot->coordinates()->axes[Qwt3D::X1].setMinors(0);
193 mpPlot->coordinates()->axes[Qwt3D::X1].setTicLength(majorTicLength, 0);
195 mpPlot->coordinates()->axes[Qwt3D::X1].setTicLength(0, 0);
198 mpPlot->coordinates()->axes[Qwt3D::X2].setLabelString(
"columns");
199 mpPlot->coordinates()->axes[Qwt3D::X2].setMajors(
mData.
columns - 1);
200 mpPlot->coordinates()->axes[Qwt3D::X2].setMinors(0);
204 mpPlot->coordinates()->axes[Qwt3D::X2].setTicLength(majorTicLength, 0);
206 mpPlot->coordinates()->axes[Qwt3D::X2].setTicLength(0, 0);
209 mpPlot->coordinates()->axes[Qwt3D::X3].setLabelString(
"columns");
210 mpPlot->coordinates()->axes[Qwt3D::X3].setMajors(
mData.
columns - 1);
211 mpPlot->coordinates()->axes[Qwt3D::X3].setMinors(0);
215 mpPlot->coordinates()->axes[Qwt3D::X3].setTicLength(majorTicLength, 0);
217 mpPlot->coordinates()->axes[Qwt3D::X3].setTicLength(0, 0);
220 mpPlot->coordinates()->axes[Qwt3D::X4].setLabelString(
"columns");
221 mpPlot->coordinates()->axes[Qwt3D::X4].setMajors(
mData.
columns - 1);
225 mpPlot->coordinates()->axes[Qwt3D::X4].setTicLength(majorTicLength, 0);
227 mpPlot->coordinates()->axes[Qwt3D::X4].setTicLength(0, 0);
229 mpPlot->coordinates()->axes[Qwt3D::Y1].setLabelString(
"rows");
231 mpPlot->coordinates()->axes[Qwt3D::Y1].setMajors(
mData.
rows - 1);
232 mpPlot->coordinates()->axes[Qwt3D::Y1].setMinors(0);
234 mpPlot->coordinates()->axes[Qwt3D::Y1].setTicLength(majorTicLength, 0);
236 mpPlot->coordinates()->axes[Qwt3D::Y2].setLabelString(
"rows");
238 mpPlot->coordinates()->axes[Qwt3D::Y2].setMajors(
mData.
rows - 1);
239 mpPlot->coordinates()->axes[Qwt3D::Y2].setMinors(0);
241 mpPlot->coordinates()->axes[Qwt3D::Y2].setTicLength(majorTicLength, 0);
243 mpPlot->coordinates()->axes[Qwt3D::Y3].setLabelString(
"rows");
245 mpPlot->coordinates()->axes[Qwt3D::Y3].setMajors(
mData.
rows - 1);
246 mpPlot->coordinates()->axes[Qwt3D::Y3].setMinors(0);
248 mpPlot->coordinates()->axes[Qwt3D::Y3].setTicLength(majorTicLength, 0);
250 mpPlot->coordinates()->axes[Qwt3D::Y4].setLabelString(
"rows");
252 mpPlot->coordinates()->axes[Qwt3D::Y4].setMajors(
mData.
rows - 1);
253 mpPlot->coordinates()->axes[Qwt3D::Y4].setMinors(0);
255 mpPlot->coordinates()->axes[Qwt3D::Y4].setTicLength(majorTicLength, 0);
261 qDebug() <<
"-- in qwt3dPlot.cpp Plot3d::setLegend --";
264 mpPlot->legend()->setLimits(mpPlot->hull().minVertex.z, mpPlot->hull().maxVertex.z);
266 if ((mpPlot->hull().minVertex.z < 0) && (mpPlot->hull().maxVertex.z < 0))
267 mpPlot->legend()->setLimits(mpPlot->hull().minVertex.z, 0);
269 if ((mpPlot->hull().minVertex.z > 0) && (mpPlot->hull().maxVertex.z > 0))
270 mpPlot->legend()->setLimits(0, mpPlot->hull().maxVertex.z);
272 mpPlot->legend()->setMajors(4);
273 mpPlot->legend()->setMinors(0);
275 mpPlot->showColorLegend(
true);
281 qDebug() <<
"-- in qwt3dPlot.cpp Plot3d::setPlotTitle --";
284 mpPlot->setTitlePosition(0.97, 0.5, Qwt3D::TopCenter);
285 mpPlot->setTitleFont(
"Courier", 8);
286 mpPlot->setTitleColor(Qwt3D::RGBA(0, 0, 0));
290 void CQBarChart::setScale(
const std::vector<std::string> *columnsDescript,
const std::vector<std::string> *rowsDescript)
293 qDebug() <<
"-- in qwt3dPlot.cpp Plot3d::setPlotTitle --";
302 qDebug() <<
"-- in qwt3dPlot.cpp Plot3d::setColors --";
307 Qwt3D::ColorVector cv;
311 for (i = 0; i < mColors.size(); i++)
314 r = (mColors[i].red()); g = (mColors[i].green()); b = (mColors[i].blue());
315 rgb.r = r / 254; rgb.g = g / 254; rgb.b = b / 254;
322 mpPlot->setDataColor(mpCol);
328 qDebug() <<
"-- in qwt3dPlot.cpp Plot3d::setData --";
342 double** dataExpand =
new double * [2];
346 for (j = 0; j < rows; j++)
348 dataExpand[0][j] = data[0][j];
349 dataExpand[1][j] = data[0][j];
372 qDebug() <<
"-- in qwt3dPlot.cpp Plot3d::setSlider --";
378 mpSliderColumn->setMinimum(0);
385 mpSliderRow->setMinimum(0);
388 mpSliderRow->setMaximum((
mData.
rows - 1) * 1000);
390 mpSliderRow->setMaximum(
mData.
rows * 1000);
392 sliderMoved(mpSliderColumn->value() / 1000, mpSliderRow->value() / 1000);
399 qDebug() <<
"-- in qwt3dPlot.cpp Plot3d::resizeCoordSys --";
401 double minZ = mpPlot->hull().minVertex.z;
402 double maxZ = mpPlot->hull().maxVertex.z;
404 if ((mpPlot->hull().minVertex.z < 0) && (mpPlot->hull().maxVertex.z > 0))
406 if (mpPlot->hull().maxVertex.z > fabs(mpPlot->hull().minVertex.z))
408 minZ = -mpPlot->hull().maxVertex.z;
409 maxZ = mpPlot->hull().maxVertex.z;
412 if (mpPlot->hull().maxVertex.z < fabs(mpPlot->hull().minVertex.z))
414 minZ = mpPlot->hull().minVertex.z;
415 maxZ = -mpPlot->hull().minVertex.z;
419 if ((mpPlot->hull().minVertex.z < 0) && (mpPlot->hull().maxVertex.z < 0))
421 minZ = mpPlot->hull().minVertex.z;
425 if ((mpPlot->hull().minVertex.z > 0) && (mpPlot->hull().maxVertex.z > 0))
428 maxZ = mpPlot->hull().maxVertex.z;
431 mpPlot->coordinates()->init(Qwt3D::Triple(mpPlot->hull().minVertex.x, mpPlot->hull().minVertex.y, minZ),
432 Qwt3D::Triple(mpPlot->hull().maxVertex.x, mpPlot->hull().maxVertex.y, maxZ));
438 qDebug() <<
"-- in qwt3dPlot.cpp Plot3d::getColSliderPos --";
446 return mpSliderColumn->value();
452 qDebug() <<
"-- in qwt3dPlot.cpp Plot3d::getRowSliderPos --";
460 return mpSliderRow->value();
468 qDebug() <<
"-- in qwt3dPlot.cpp Plot3d::sliderMoved --";
469 qDebug() <<
"Plot3d::sliderMoved -> col = " << column <<
" - row = " << row;
496 mpPlot->updateData();
505 qDebug() <<
"-- in qwt3dPlot.cpp Plot3d::emptyPlot --";
508 data =
new double * [1];
509 data[0] =
new double[1];
515 mpPlot->showColorLegend(
false);
522 qDebug() <<
"-- in qwt3dPlot.cpp Plot3d::contextMenuEvent --";
524 QMenu* mpContextMenu =
new QMenu(
this);
525 Q_CHECK_PTR(mpContextMenu);
526 mpContextMenu->addAction(
"handling information",
this, SLOT(
hotKeysMessage()));
529 mpContextMenu->addAction(
"hide legend",
this, SLOT(
showLegend()));
531 mpContextMenu->addAction(
"show legend",
this, SLOT(
showLegend()));
533 mpContextMenu->addAction(
"Print to &file",
this, SLOT(
saveDataToFile()));
535 mpContextMenu->exec(QCursor::pos());
536 delete mpContextMenu;
542 qDebug() <<
"-- in qwt3dPlot.cpp Plot3d::saveDataToFile --";
544 C_INT32 Answer = QMessageBox::No;
545 QString fileName, filetype_;
547 while (Answer == QMessageBox::No)
550 QString *userFilter =
new QString;
554 "ILDMResults-barsPrint",
"BMP Files (*.bmp);;PS Files (*.ps);;PDF Files (*.pdf)",
"Save to",
557 if (fileName.isNull())
return;
559 if (*userFilter ==
"BMP Files (*.bmp)")
561 else if (*userFilter ==
"PS Files (*.ps)")
563 else if (*userFilter ==
"PDF Files (*.pdf)")
567 qDebug() <<
"user's filter pointer = " << *userFilter;
568 qDebug() <<
"filetype_ = " << filetype_;
574 if (Answer == QMessageBox::Cancel)
return;
578 QCursor oldCursor = cursor();
579 setCursor(Qt::WaitCursor);
580 failed = !Qwt3D::IO::save(mpPlot, fileName, filetype_);
581 setCursor(oldCursor);
585 std::string s =
"Could not save data to ";
596 mpPlot->showColorLegend(
false);
601 mpPlot->showColorLegend(
true);
608 "You can perform shifts, turns, scales and zooms. \n \n"
609 "Try Ctrl, Shift, Alt in combination with your wheel and left mouse \n"
610 "button to get a clue (or use instead your cursor keys).\n"
virtual void sliderMoved(int column, int row)
void contextMenuEvent(QContextMenuEvent *)
The standard (1:1) mapping class for axis numbering.
void setColorVector(Qwt3D::ColorVector const &cv)
static StandardButton information(QWidget *parent, const QString &title, const QString &text, StandardButtons buttons=Ok, StandardButton defaultButton=NoButton)
void setDescriptions(const std::vector< std::string > *columnsDes, const std::vector< std::string > *rowsDes)
CQBarChart(QWidget *parent=0, const char *name=0)
void showColorLegend(bool CLegend)
C_INT32 checkSelection(const QString &file)
const std::vector< std::string > * mpRowScale
static StandardButton critical(QWidget *parent, const QString &title, const QString &text, StandardButtons buttons=Ok, StandardButton defaultButton=NoButton)
const std::vector< std::string > * mpColumnScale
void setScale(const std::vector< std::string > *columnsDescript, const std::vector< std::string > *rowsDescript)
void setColors(std::vector< QColor > mColors, double min, double max)
static QString getSaveFileName(QWidget *parent=0, const char *name=0, const QString &startWith=QString::null, const QString &filter=QString::null, const QString &caption=QString::null, QString *pSelectedFilter=NULL, QFileDialog::Options options=0)