Add support for invert and super pixel

This commit is contained in:
2022-04-09 11:10:07 +02:00
parent 68fbcfbb59
commit 46a4715ce5
11 changed files with 150 additions and 126 deletions
+17 -1
View File
@@ -53,6 +53,7 @@ ImageWidget::ImageWidget(QWidget *parent) : QOpenGLWidget(parent)
m_blockRepaint = false;
m_range = UINT16_MAX;
m_imgWidth = m_imgHeight = -1;
m_superpixel = m_invert = false;
}
ImageWidget::~ImageWidget()
@@ -60,7 +61,7 @@ ImageWidget::~ImageWidget()
makeCurrent();
}
void ImageWidget::setImage(RawImage *image)
void ImageWidget::setImage(const RawImage *image)
{
if(image == nullptr)return;
@@ -78,6 +79,7 @@ void ImageWidget::setImage(RawImage *image)
m_image->setWrapMode(QOpenGLTexture::ClampToEdge);
m_image->setBorderColor(0, 0, 0, 0);
m_image->setData(0, rawImageType.pixelFormat, rawImageType.dataType, image->data(), m_transferOptions.get());
m_image->setLevelOfDetailRange(m_superpixel ? 1 : 0, m_image->mipMaxLevel());
m_image->generateMipMaps();
m_bwImg = rawImageType.bw;
update();
@@ -126,6 +128,19 @@ void ImageWidget::setOffset(int dx, int dy)
update();
}
void ImageWidget::superPixel(bool enable)
{
m_superpixel = enable;
m_image->setLevelOfDetailRange(enable ? 1 : 0, m_image->mipMaxLevel());
update();
}
void ImageWidget::invert(bool enable)
{
m_invert = enable;
update();
}
QImage ImageWidget::renderToImage()
{
if(m_imgWidth < 0)return QImage();
@@ -164,6 +179,7 @@ void ImageWidget::paintGL()
m_program->setUniformValue("mtf_param", m_low, m_mid, m_high);
m_program->setUniformValue("zoom", 1.0f/m_scale);
m_program->setUniformValue("bw", m_bwImg);
m_program->setUniformValue("invert", m_invert);
m_image->bind(0);
f->glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);