#include "TestWidgetImages.h" #include #include #include #include #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*JKQTPSTATISTICS_PI*sqrt(1.0+x*x+y*y)/20); img2M[y*100+x]=abs(y-x); bimg2[y*100+x]=static_cast(rand())/static_cast(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(index)); plotImg->redrawPlot(); }