Initial Upload
This commit is contained in:
parent
46b7200c73
commit
a98d2d1d71
321
visualizationenlarge.cpp
Normal file
321
visualizationenlarge.cpp
Normal file
@ -0,0 +1,321 @@
|
||||
#include "visualizationenlarge.h"
|
||||
#include "ui_visualizationenlarge.h"
|
||||
|
||||
|
||||
// variables for drawing the enlarged visulization view
|
||||
float squareDim = 10;
|
||||
|
||||
int horizontalSliderValue = 50;
|
||||
int horizontalSliderColorZeroValue = 0;
|
||||
int manualColorZero = 0;
|
||||
int manualColor = 0;
|
||||
int colorScheme = 0;
|
||||
int screenshotcounter = 1;
|
||||
|
||||
bool plotTopViewLog = false;
|
||||
bool silderColorMoved = false;
|
||||
bool useManualColor = false;
|
||||
|
||||
string workFolder;
|
||||
|
||||
VisualizationEnlarge::VisualizationEnlarge(QWidget *parent) :
|
||||
QDialog(parent),
|
||||
ui(new Ui::VisualizationEnlarge)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
setupRunGraph(ui->customPlot);
|
||||
}
|
||||
|
||||
VisualizationEnlarge::~VisualizationEnlarge()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void VisualizationEnlarge::setSquareDimSize(float squareDimSize)
|
||||
{
|
||||
squareDim = squareDimSize;
|
||||
}
|
||||
|
||||
void VisualizationEnlarge::sethorizontalSliderValue(int value)
|
||||
{
|
||||
horizontalSliderValue = value;
|
||||
}
|
||||
|
||||
void VisualizationEnlarge::sethorizontalSliderColorZeroValue(int value)
|
||||
{
|
||||
horizontalSliderColorZeroValue = value;
|
||||
}
|
||||
|
||||
|
||||
void VisualizationEnlarge::setmanualColorZero(int value)
|
||||
{
|
||||
manualColorZero = value;
|
||||
}
|
||||
|
||||
void VisualizationEnlarge::setmanualColor(int value)
|
||||
{
|
||||
manualColor = value;
|
||||
}
|
||||
|
||||
void VisualizationEnlarge::setsilderColorMoved(bool value)
|
||||
{
|
||||
silderColorMoved = value;
|
||||
}
|
||||
|
||||
void VisualizationEnlarge::setplotTopViewLog(bool value)
|
||||
{
|
||||
plotTopViewLog = value;
|
||||
}
|
||||
|
||||
void VisualizationEnlarge::setuseManualColor(bool value)
|
||||
{
|
||||
useManualColor = value;
|
||||
}
|
||||
|
||||
void VisualizationEnlarge::setColorScheme(int value)
|
||||
{
|
||||
colorScheme = value;
|
||||
}
|
||||
|
||||
void VisualizationEnlarge::setWorkFolder(string text)
|
||||
{
|
||||
workFolder = text;
|
||||
}
|
||||
|
||||
|
||||
void VisualizationEnlarge::plotGraph(TH2F* data, int size, float squareDimSize)
|
||||
{
|
||||
setSquareDimSize(squareDimSize);
|
||||
|
||||
float entryWeight, maximumWeight;
|
||||
float pixelsum;
|
||||
|
||||
QColor lightBlue = QColor (215, 237, 255);
|
||||
|
||||
ui->customPlot->clearPlottables();
|
||||
ui->customPlot->plotLayout()->remove(ui->customPlot->plotLayout()->element(0,1));
|
||||
|
||||
int elementCount = ui->customPlot->plotLayout()->elementCount();
|
||||
|
||||
for(int i = 0; i < elementCount; i++)
|
||||
{
|
||||
if(qobject_cast<QCPLayoutGrid*>(ui->customPlot->plotLayout()->elementAt(i))) ui->customPlot->plotLayout()->removeAt(i);
|
||||
}
|
||||
ui->customPlot->plotLayout()->simplify();
|
||||
|
||||
QCPColorMap *colorMap = new QCPColorMap( ui->customPlot->xAxis, ui->customPlot->yAxis);
|
||||
|
||||
if (size == 500) colorMap->data()->setSize(500, 500);
|
||||
if (size == 1000) colorMap->data()->setSize(1000, 1000);
|
||||
if (size == 2000) colorMap->data()->setSize(1000, 1000);
|
||||
if (size == 4000) colorMap->data()->setSize(1000, 1000);
|
||||
colorMap->data()->setRange(QCPRange(-::squareDim/2./1000., ::squareDim/2./1000.), QCPRange(-::squareDim/2./1000., ::squareDim/2./1000.));
|
||||
|
||||
if (plotTopViewLog) colorMap->setDataScaleType(QCPAxis::stLogarithmic);
|
||||
|
||||
QCPColorScale *colorScale = new QCPColorScale(ui->customPlot);
|
||||
|
||||
colorScale->setType(QCPAxis::atRight);
|
||||
colorMap->setColorScale(colorScale);
|
||||
colorScale->axis()->setLabel("Neutron Hit Density");
|
||||
|
||||
colorScale->axis()->setSubTickPen(QPen(lightBlue));
|
||||
colorScale->axis()->setTickPen(QPen(lightBlue));
|
||||
colorScale->axis()->setTickLabelColor(lightBlue);
|
||||
colorScale->axis()->setLabelColor(lightBlue);
|
||||
|
||||
QCPLayoutGrid *subLayout = new QCPLayoutGrid;
|
||||
ui->customPlot->plotLayout()->addElement(0, 1, subLayout);
|
||||
|
||||
subLayout->setMargins(QMargins(10, 10, 10, 5));
|
||||
subLayout->addElement(0, 0, colorScale);
|
||||
|
||||
ui->customPlot->plotLayout()->element(0,0)->setMaximumSize(997,997);
|
||||
|
||||
float minZ = 0;
|
||||
|
||||
if (plotTopViewLog) minZ = 1;
|
||||
|
||||
if (true)
|
||||
{
|
||||
if (size == 500)
|
||||
{
|
||||
for (int x=0; x<500; x+=1)
|
||||
{
|
||||
for (int y=0; y<500; y+=1)
|
||||
{
|
||||
colorMap->data()->setCell((int)x, (int)y, data->GetBinContent(x,y));
|
||||
}
|
||||
}
|
||||
entryWeight = (data->GetEntries())/(500.*500.)*4.; maximumWeight = 1.* data->GetBinContent(data->GetMaximumBin());
|
||||
}
|
||||
if (size == 1000)
|
||||
{
|
||||
for (int x=0; x<1000; x+=1)
|
||||
{
|
||||
for (int y=0; y<1000; y+=1)
|
||||
{
|
||||
colorMap->data()->setCell((int)x, (int)y, data->GetBinContent(x,y));
|
||||
}
|
||||
}
|
||||
entryWeight = (data->GetEntries())/(1000.*1000.)*4.; maximumWeight = 1.* data->GetBinContent(data->GetMaximumBin());
|
||||
}
|
||||
if (size == 2000)
|
||||
{
|
||||
for (int x=0; x<1000; x+=1)
|
||||
{
|
||||
for (int y=0; y<1000; y+=1)
|
||||
{
|
||||
pixelsum = 0;
|
||||
for (int xadd=0; xadd<2; xadd+=1)
|
||||
{
|
||||
for (int yadd=0; yadd<2; yadd+=1)
|
||||
{
|
||||
pixelsum+=data->GetBinContent(2*x+xadd,2*y+yadd);
|
||||
}
|
||||
}
|
||||
pixelsum = pixelsum/4.;
|
||||
|
||||
colorMap->data()->setCell((int)x, (int)y, pixelsum);
|
||||
}
|
||||
}
|
||||
entryWeight = (data->GetEntries())/(1000.*1000.)*4.; maximumWeight = 1.* data->GetBinContent(data->GetMaximumBin());
|
||||
}
|
||||
|
||||
if (size == 4000)
|
||||
{
|
||||
for (int x=0; x<1000; x+=1)
|
||||
{
|
||||
for (int y=0; y<1000; y+=1)
|
||||
{
|
||||
pixelsum = 0;
|
||||
for (int xadd=0; xadd<4; xadd+=1)
|
||||
{
|
||||
for (int yadd=0; yadd<4; yadd+=1)
|
||||
{
|
||||
pixelsum+=data->GetBinContent(4*x+xadd,4*y+yadd);
|
||||
}
|
||||
}
|
||||
pixelsum = pixelsum/16.;
|
||||
|
||||
colorMap->data()->setCell((int)x, (int)y, pixelsum);
|
||||
}
|
||||
}
|
||||
entryWeight = (data->GetEntries())/(1000.*1000.)*4.; maximumWeight = 1.* data->GetBinContent(data->GetMaximumBin());
|
||||
}
|
||||
}
|
||||
|
||||
float colorscaleMax = (horizontalSliderValue*1.)/99.*maximumWeight;
|
||||
if (colorscaleMax < 1) colorscaleMax = 1;
|
||||
|
||||
if (colorScheme==0) {colorMap->setGradient(QCPColorGradient::gpJet); colorScale->setGradient(QCPColorGradient::gpCold); }
|
||||
if (colorScheme==1) {colorMap->setGradient(QCPColorGradient::gpNight); colorScale->setGradient(QCPColorGradient::gpNight); }
|
||||
if (colorScheme==2) {colorMap->setGradient(QCPColorGradient::gpCold); colorScale->setGradient(QCPColorGradient::gpCold);}
|
||||
if (colorScheme==3) {colorMap->setGradient(QCPColorGradient::gpThermal); colorScale->setGradient(QCPColorGradient::gpThermal);}
|
||||
if (colorScheme==4) {colorMap->setGradient(QCPColorGradient::gpHot); colorScale->setGradient(QCPColorGradient::gpHot);}
|
||||
if (colorScheme==5) {colorMap->setGradient(QCPColorGradient::gpPolar); colorScale->setGradient(QCPColorGradient::gpPolar);}
|
||||
if (colorScheme==6) {colorMap->setGradient(QCPColorGradient::gpGrayscale); colorScale->setGradient(QCPColorGradient::gpGrayscale);}
|
||||
|
||||
colorMap->setInterpolate(true);
|
||||
|
||||
if (manualColorZero < minZ) { manualColorZero = minZ;}
|
||||
|
||||
if (!silderColorMoved)
|
||||
{
|
||||
if (entryWeight*1.1 < 5) {colorMap->setDataRange(QCPRange(minZ,5)); colorScale->setDataRange(QCPRange(minZ,5));}
|
||||
else {colorMap->setDataRange(QCPRange(minZ,entryWeight*1.1)); colorScale->setDataRange(QCPRange(minZ,entryWeight*1.1));}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (horizontalSliderColorZeroValue == 0) { colorMap->setDataRange(QCPRange( minZ , colorscaleMax )); colorScale->setDataRange(QCPRange(minZ,colorscaleMax));}
|
||||
else { colorMap->setDataRange(QCPRange( (horizontalSliderColorZeroValue*1.)/99.*colorscaleMax , colorscaleMax )); colorScale->setDataRange(QCPRange((horizontalSliderColorZeroValue*1.)/99.*colorscaleMax,colorscaleMax));}
|
||||
}
|
||||
|
||||
if (useManualColor)
|
||||
{
|
||||
colorMap->setDataRange(QCPRange( manualColorZero,manualColor ));
|
||||
colorScale->setDataRange(QCPRange(manualColorZero,manualColor));
|
||||
}
|
||||
|
||||
ui->customPlot->rescaleAxes();
|
||||
ui->customPlot->replot();
|
||||
}
|
||||
|
||||
void VisualizationEnlarge::setupRunGraph(QCustomPlot *customPlot)
|
||||
{
|
||||
//QColor lightBlue = QColor ( 234 , 246 , 255);
|
||||
QColor lightBlue = QColor ( 215 , 237 , 255);
|
||||
QColor someBlue = QColor ( 0 , 88 , 156);
|
||||
customPlot->setBackground(someBlue);
|
||||
customPlot->axisRect()->setBackground(Qt::white);
|
||||
customPlot->xAxis->setTickLabelColor(lightBlue);
|
||||
customPlot->yAxis->setTickLabelColor(lightBlue);
|
||||
customPlot->xAxis->setLabelColor(lightBlue);
|
||||
customPlot->yAxis->setLabelColor(lightBlue);
|
||||
customPlot->xAxis->setBasePen(QPen(lightBlue));
|
||||
customPlot->xAxis->setSubTickPen(QPen(lightBlue));
|
||||
customPlot->yAxis->setTickPen(QPen(lightBlue));
|
||||
customPlot->yAxis->setBasePen(QPen(lightBlue));
|
||||
customPlot->yAxis->setSubTickPen(QPen(lightBlue));
|
||||
customPlot->setInteractions(QCP::iRangeDrag|QCP::iRangeZoom);
|
||||
|
||||
QCPColorMap *colorMap = new QCPColorMap(customPlot->xAxis,customPlot->yAxis);
|
||||
customPlot->axisRect()->setupFullAxesBox(true);
|
||||
customPlot->xAxis->setLabel("x [m]");
|
||||
customPlot->yAxis->setLabel("y [m]");
|
||||
|
||||
colorMap->data()->setSize(500, 500);
|
||||
colorMap->data()->setRange(QCPRange(-::squareDim/2./1000., ::squareDim/2./1000.), QCPRange(-::squareDim/2./1000., ::squareDim/2./1000.));
|
||||
|
||||
colorMap->setGradient(QCPColorGradient::gpJet);
|
||||
colorMap->rescaleDataRange(true);
|
||||
QCPRange dataR = colorMap->dataRange(); dataR*=2;
|
||||
colorMap->setDataRange(dataR);
|
||||
|
||||
QCPColorScale *colorScale = new QCPColorScale(ui->customPlot);
|
||||
ui->customPlot->plotLayout()->addElement(0, 1, colorScale);
|
||||
colorScale->setType(QCPAxis::atRight);
|
||||
colorMap->setColorScale(colorScale);
|
||||
colorScale->axis()->setLabel("Neutron Flux");
|
||||
|
||||
ui->customPlot->plotLayout()->element(0,0)->setMaximumSize(997,997);
|
||||
|
||||
colorScale->axis()->setSubTickPen(QPen(lightBlue));
|
||||
colorScale->axis()->setTickPen(QPen(lightBlue));
|
||||
colorScale->axis()->setTickLabelColor(lightBlue);
|
||||
colorScale->axis()->setLabelColor(lightBlue);
|
||||
|
||||
colorScale->setDataRange(dataR);
|
||||
|
||||
customPlot->rescaleAxes();
|
||||
|
||||
customPlot->replot();
|
||||
}
|
||||
|
||||
//void VisualizationEnlarge::setFocus(MainWindow* wF)
|
||||
//{
|
||||
//
|
||||
//}
|
||||
|
||||
|
||||
void VisualizationEnlarge::on_pushButtonPNG_toggled(bool checked)
|
||||
{
|
||||
//originalPixmap.save(QString::fromStdString(workFolder)+fileName, format.toAscii());
|
||||
}
|
||||
|
||||
void VisualizationEnlarge::on_pushButtonPNG_clicked()
|
||||
{
|
||||
QScreen *screen = QGuiApplication::primaryScreen();
|
||||
|
||||
QPixmap originalPixmap;
|
||||
|
||||
originalPixmap = screen->grabWindow(ui->customPlot->winId());
|
||||
|
||||
QString fileName = QString::fromStdString(workFolder)+"/neutronHitDensityExport_"+QString::number(screenshotcounter)+".png";
|
||||
|
||||
if (!originalPixmap.save(fileName))
|
||||
{
|
||||
QMessageBox::warning(this, tr("Save Error"), tr("The image could not be saved to \"%1\".").arg(QDir::toNativeSeparators(fileName)));
|
||||
}
|
||||
screenshotcounter++;
|
||||
}
|
62
visualizationenlarge.h
Normal file
62
visualizationenlarge.h
Normal file
@ -0,0 +1,62 @@
|
||||
#ifndef VISUALIZATIONENLARGE_H
|
||||
#define VISUALIZATIONENLARGE_H
|
||||
|
||||
#include <QDialog>
|
||||
|
||||
#include "qcustomplot.h"
|
||||
|
||||
//#include "mainwindow.h"
|
||||
#include "Toolkit.h"
|
||||
|
||||
namespace Ui {
|
||||
class VisualizationEnlarge;
|
||||
}
|
||||
|
||||
class VisualizationEnlarge : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
QMessageBox* msgBox;
|
||||
|
||||
public:
|
||||
explicit VisualizationEnlarge(QWidget *parent = 0);
|
||||
~VisualizationEnlarge();
|
||||
|
||||
|
||||
|
||||
void setSquareDimSize(float squareDimSize);
|
||||
|
||||
void sethorizontalSliderValue(int value);
|
||||
|
||||
void sethorizontalSliderColorZeroValue(int value);
|
||||
|
||||
void setmanualColorZero(int value);
|
||||
|
||||
void setmanualColor(int value);
|
||||
|
||||
void setsilderColorMoved(bool value);
|
||||
|
||||
void setplotTopViewLog(bool value);
|
||||
|
||||
void setuseManualColor(bool value);
|
||||
|
||||
void setColorScheme(int value);
|
||||
|
||||
void setWorkFolder(string text);
|
||||
|
||||
void plotGraph(TH2F* data, int size, float squareDimSize);
|
||||
|
||||
void setupRunGraph(QCustomPlot *customPlot);
|
||||
|
||||
//void setFocus(MainWindow* wF);
|
||||
|
||||
private slots:
|
||||
void on_pushButtonPNG_toggled(bool checked);
|
||||
|
||||
void on_pushButtonPNG_clicked();
|
||||
|
||||
private:
|
||||
Ui::VisualizationEnlarge *ui;
|
||||
|
||||
};
|
||||
|
||||
#endif // VISUALIZATIONENLARGE_H
|
63
visualizationenlarge.ui
Normal file
63
visualizationenlarge.ui
Normal file
@ -0,0 +1,63 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>VisualizationEnlarge</class>
|
||||
<widget class="QDialog" name="VisualizationEnlarge">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>1212</width>
|
||||
<height>1052</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>1250</width>
|
||||
<height>1052</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Enlarged Visualization</string>
|
||||
</property>
|
||||
<widget class="QCustomPlot" name="customPlot" native="true">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>1211</width>
|
||||
<height>1052</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>1250</width>
|
||||
<height>1052</height>
|
||||
</size>
|
||||
</property>
|
||||
<widget class="QPushButton" name="pushButtonPNG">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>1140</x>
|
||||
<y>10</y>
|
||||
<width>61</width>
|
||||
<height>41</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>URANOS
|
||||
Export</string>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>QCustomPlot</class>
|
||||
<extends>QWidget</extends>
|
||||
<header>qcustomplot.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
Loading…
Reference in New Issue
Block a user