mirror of
https://github.com/jkriege2/JKQtPlotter.git
synced 2024-12-26 18:41:40 +08:00
137 lines
4.9 KiB
C++
137 lines
4.9 KiB
C++
#include "TestWidgetImages.h"
|
|
#include <QDebug>
|
|
#include <QDate>
|
|
#include <QDateTime>
|
|
#include <QApplication>
|
|
#include "jkqtplotter/gui/jkqtpcomboboxes.h"
|
|
#include "jkqtplotter/graphs/jkqtpimageoverlays.h"
|
|
#include "jkqtplotter/graphs/jkqtpimagergb.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TestWidgetImages::TestWidgetImages(QWidget *parent) :
|
|
QWidget(parent)
|
|
{
|
|
|
|
QVBoxLayout* layouti=new QVBoxLayout();
|
|
QFormLayout* layWid=new QFormLayout;
|
|
layouti->addLayout(layWid);
|
|
setLayout(layouti);
|
|
resize(1000, 800);
|
|
plotImg=new JKQTPlotter(true, this);
|
|
plotImg->setPlotUpdateEnabled(false);
|
|
plotImg->getPlotter()->setPlotLabel(tr("\\textbf{image plot}"));
|
|
plotImg->setObjectName("plotImg");
|
|
plotImg->getPlotter()->setUserSettigsFilename(QApplication::applicationDirPath()+"/usersettings.ini", "plot_img/");
|
|
|
|
plotImg->getPlotter()->setMaintainAspectRatio(true);
|
|
plotImg->getPlotter()->setAspectRatio(3.0/2.0);
|
|
plotImg->getPlotter()->setMaintainAxisAspectRatio(true);
|
|
plotImg->getPlotter()->setAxisAspectRatio(4.0);
|
|
/*plotImg->getPlotter()->getXAxis()->setLinkedAxis(plotImg->getPlotter()->getYAxis());
|
|
plotImg->getPlotter()->getXAxis()->setChangeWidthToAspectRatio(true);
|
|
plotImg->getPlotter()->getXAxis()->setAspectRatio(1.0);*/
|
|
|
|
|
|
layouti->addWidget(plotImg);
|
|
plotImg->setXY(0,30,0,20);
|
|
plotImg->setAbsoluteXY(0,30,0,20);
|
|
img1=QImage(":/lena.png");
|
|
JKQTPImage* pimg1=new JKQTPImage(0,0,10,20, &img1, plotImg->getPlotter());
|
|
pimg1->setTitle("LENA");
|
|
plotImg->getPlotter()->addGraph(pimg1);
|
|
double* img2=(double*)calloc(100*100,sizeof(double));
|
|
int32_t* img2M=(int32_t*)calloc(100*100,sizeof(int32_t));
|
|
bool* bimg2=(bool*)calloc(100*100,sizeof(bool));
|
|
for (int x=0; x<100; x++) {
|
|
for (int y=0; y<100; y++) {
|
|
img2[y*100+x]=sin(2*M_PI*sqrt(1.0+x*x+y*y)/20);
|
|
img2M[y*100+x]=abs(y-x);
|
|
bimg2[y*100+x]=static_cast<double>(rand())/static_cast<double>(RAND_MAX)>0.9;
|
|
}
|
|
}
|
|
pimg2=new JKQTPMathImage(10,0,10,10, JKQTPMathImageDataType::DoubleArray, img2, 100, 100, JKQTPMathImageGRAY, plotImg->getPlotter());
|
|
pimg2->setImageMin(-1);
|
|
pimg2->setImageMax(0.5);
|
|
pimg2->setImageName("left image");
|
|
pimg2->setTitle("left image");
|
|
pimg2->setAutoImageRange(false);
|
|
pimg2->setColorBarTopVisible(true);
|
|
pimg2->setColorBarRightVisible(false);
|
|
plotImg->getPlotter()->addGraph(pimg2);
|
|
pimg3=new JKQTPMathImage(20,0,10,10, JKQTPMathImageDataType::DoubleArray, img2, 100, 100, JKQTPMathImageMATLAB, plotImg->getPlotter());
|
|
pimg3->setColorBarTopVisible(true);
|
|
pimg3->setColorBarRightVisible(true);
|
|
pimg3->setImageMax(0.5);
|
|
pimg3->setRangeMaxFailAction(JKQTPMathImageGivenColor);
|
|
pimg3->setRangeMaxFailColor(QColor("salmon"));
|
|
pimg3->setImageMin(-0.3);
|
|
pimg3->setRangeMinFailAction(JKQTPMathImageTransparent);
|
|
pimg3->setAutoImageRange(false);
|
|
pimg3->setImageName("I(x,y)=\\sin\\left(\\frac{2\\pi\\cdot\\sqrt{1+x^2+y^2}}{20}\\right)");
|
|
pimg3->setDataModifier(img2M, JKQTPMathImageDataType::Int32Array);
|
|
pimg3->setModifierMode(JKQTPMathImageModifierMode::ModifyNone);
|
|
pimg3->setTitle("right image");
|
|
plotImg->getPlotter()->addGraph(pimg3);
|
|
|
|
QColor ty=QColor("blue");
|
|
ty.setAlphaF(0.1);
|
|
JKQTPOverlayImage* oimg1=new JKQTPOverlayImage(10,0,10,10, bimg2, 100, 100, QColor("blue"), plotImg->getPlotter());
|
|
oimg1->setTitle("overlay");
|
|
oimg1->setFalseColor(ty);
|
|
plotImg->getPlotter()->addGraph(oimg1);
|
|
|
|
JKQTPOverlayImageEnhanced* oimg2=new JKQTPOverlayImageEnhanced(10,0,10,10, bimg2, 100, 100, QColor("red"), plotImg->getPlotter());
|
|
oimg2->setTitle("enhanced overlay");
|
|
oimg2->setDrawMode(JKQTPOverlayImageEnhanced::DrawAsSymbols);
|
|
plotImg->getPlotter()->addGraph(oimg2);
|
|
|
|
plotImg->setPlotUpdateEnabled(true);
|
|
plotImg->zoomToFit();
|
|
|
|
JKQTPMathImageColorPaletteComboBox* cmbPal=new JKQTPMathImageColorPaletteComboBox(this);
|
|
layWid->addRow("left image palette", cmbPal);
|
|
connect(cmbPal, SIGNAL(currentIndexChanged(int)), this, SLOT(setImgPalette1(int)));
|
|
cmbPal=new JKQTPMathImageColorPaletteComboBox(this);
|
|
layWid->addRow("right image palette", cmbPal);
|
|
connect(cmbPal, SIGNAL(currentIndexChanged(int)), this, SLOT(setImgPalette(int)));
|
|
QComboBox* cmb=new QComboBox(this);
|
|
layWid->addRow("image modifier mode", cmb);
|
|
cmb->addItem("none");
|
|
cmb->addItem("value");
|
|
cmb->addItem("lightness");
|
|
cmb->addItem("alpha");
|
|
connect(cmb, SIGNAL(currentIndexChanged(int)), this, SLOT(setImgModifier(int)));
|
|
cmb->setCurrentIndex(1);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
void TestWidgetImages::setImgPalette(int index)
|
|
{
|
|
pimg3->setPalette(index);
|
|
plotImg->redrawPlot();
|
|
}
|
|
|
|
void TestWidgetImages::setImgPalette1(int index)
|
|
{
|
|
pimg2->setPalette(index);
|
|
plotImg->redrawPlot();
|
|
}
|
|
|
|
void TestWidgetImages::setImgModifier(int index)
|
|
{
|
|
pimg3->setModifierMode(static_cast<JKQTPMathImageModifierMode>(index));
|
|
plotImg->redrawPlot();
|
|
}
|