Add support for invert and super pixel
This commit is contained in:
+17
-1
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user