Tornado-Visualization/datenvisualisierung_sose2024/opengldisplaywidget.h

75 lines
2.1 KiB
C++

#ifndef OPENGLDISPLAYWIDGET_H
#define OPENGLDISPLAYWIDGET_H
#include <QOpenGLWidget>
#include "flowdatasource.h"
#include "cartesiangridtohorizontalslicefilter.h"
#include "horizontalslicetoimagemapper.h"
#include "horizontalslicetocontourlinemapper.h"
#include "horizontalslicerenderer.h"
#include "horizontalcontourlinesrenderer.h"
#include "QTimer"
#include "streamlinemapper.h"
#include "streamlinerenderer.h"
class OpenGLDisplayWidget : public QOpenGLWidget
{
Q_OBJECT
public:
explicit OpenGLDisplayWidget(QWidget *parent = nullptr);
~OpenGLDisplayWidget() override;
QString openGLString();
void animateVisual();
protected:
void initializeGL() override;
void resizeGL(int w, int h) override;
void paintGL() override;
void mousePressEvent(QMouseEvent *e) override;
void mouseMoveEvent(QMouseEvent *e) override;
void wheelEvent(QWheelEvent *e) override;
void keyPressEvent(QKeyEvent *e) override;
private:
// VIEW PROJECTION:
// ================
// Matrices and related variables that control vertex transformation
// from world space to OpenGL view space.
QMatrix4x4 projectionMatrix;
QMatrix4x4 mvpMatrix;
QVector2D lastMousePosition;
QVector2D rotationAngles;
float distanceToCamera;
bool animate;
QTimer *timey;
// Recompute the mode-view-projection matrix from current rotation angles,
// distance to camera, viewport geometry.
void updateMVPMatrix();
// VIISUALIZATION PIPELINE:
// ========================
FlowDataSource *grid;
CartesianGridToHorizontalSliceFilter *filter;
HorizontalSliceToImageMapper *mapper;
HorizontalSliceToContourLineMapper *contourmapper;
//DataVolumeBoundingBoxRenderer *bboxRenderer;
HorizontalSliceRenderer *renderer;
HorizontalContourLinesRenderer *contourrenderer;
StreamlineMapper *streamlinemapper;
StreamlineRenderer *streamlinerenderer;
// ....
// Initialize the pipeline (create instances of data source, mapping,
// rendering etc. modules and connect them).
void initVisualizationPipeline();
};
#endif // OPENGLDISPLAYWIDGET_H