49 lines
1.0 KiB
C++
49 lines
1.0 KiB
C++
#ifndef IMAGESCROLLAREAGL_H
|
|
#define IMAGESCROLLAREAGL_H
|
|
|
|
#include <memory>
|
|
#include <QObject>
|
|
#include <QOpenGLWidget>
|
|
#include <QOpenGLFunctions>
|
|
#include <QOpenGLShaderProgram>
|
|
#include <QOpenGLBuffer>
|
|
#include <QOpenGLTexture>
|
|
#include <QOpenGLVertexArrayObject>
|
|
#include "rawimage.h"
|
|
|
|
typedef enum
|
|
{
|
|
Linear,
|
|
Log,
|
|
Sqrt,
|
|
Power,
|
|
Asinh,
|
|
}StretchFunc;
|
|
|
|
class ImageScrollAreaGL : public QOpenGLWidget
|
|
{
|
|
Q_OBJECT
|
|
QOpenGLFunctions *f;
|
|
std::unique_ptr<QOpenGLShaderProgram> m_program;
|
|
std::unique_ptr<QOpenGLBuffer> m_buffer;
|
|
std::unique_ptr<QOpenGLTexture> m_image;
|
|
std::unique_ptr<QOpenGLVertexArrayObject> m_vao;
|
|
int m_width, m_height;
|
|
float m_low;
|
|
float m_high;
|
|
float m_range;
|
|
public:
|
|
explicit ImageScrollAreaGL(QWidget *parent = nullptr);
|
|
~ImageScrollAreaGL();
|
|
void setImage(RawImageAbs *image);
|
|
public slots:
|
|
void setLow(int low);
|
|
void setHigh(int high);
|
|
protected:
|
|
void paintGL();
|
|
void resizeGL(int w, int h);
|
|
void initializeGL();
|
|
};
|
|
|
|
#endif // IMAGESCROLLAREAGL_H
|