summaryrefslogtreecommitdiffstats
path: root/src/charts/glwidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/charts/glwidget.cpp')
-rw-r--r--src/charts/glwidget.cpp17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/charts/glwidget.cpp b/src/charts/glwidget.cpp
index c0070dcd..ea2734fc 100644
--- a/src/charts/glwidget.cpp
+++ b/src/charts/glwidget.cpp
@@ -42,7 +42,7 @@
QT_CHARTS_BEGIN_NAMESPACE
-GLWidget::GLWidget(GLXYSeriesDataManager *xyDataManager, QWidget *parent)
+GLWidget::GLWidget(GLXYSeriesDataManager *xyDataManager, QGraphicsView *parent)
: QOpenGLWidget(parent),
m_program(0),
m_shaderAttribLoc(-1),
@@ -50,7 +50,9 @@ GLWidget::GLWidget(GLXYSeriesDataManager *xyDataManager, QWidget *parent)
m_minUniformLoc(-1),
m_deltaUniformLoc(-1),
m_pointSizeUniformLoc(-1),
- m_xyDataManager(xyDataManager)
+ m_xyDataManager(xyDataManager),
+ m_antiAlias(parent->renderHints().testFlag(QPainter::Antialiasing)),
+ m_view(parent)
{
setAttribute(Qt::WA_TranslucentBackground);
setAttribute(Qt::WA_AlwaysStackOnTop);
@@ -65,6 +67,7 @@ GLWidget::GLWidget(GLXYSeriesDataManager *xyDataManager, QWidget *parent)
surfaceFormat.setAlphaBufferSize(8);
surfaceFormat.setSwapBehavior(QSurfaceFormat::DoubleBuffer);
surfaceFormat.setRenderableType(QSurfaceFormat::DefaultRenderableType);
+ surfaceFormat.setSamples(m_antiAlias ? 4 : 0);
setFormat(surfaceFormat);
connect(xyDataManager, &GLXYSeriesDataManager::seriesRemoved,
@@ -182,14 +185,15 @@ void GLWidget::paintGL()
m_program->setUniformValue(m_minUniformLoc, data->min);
m_program->setUniformValue(m_deltaUniformLoc, data->delta);
m_program->setUniformValue(m_matrixUniformLoc, data->matrix);
-
+ bool dirty = data->dirty;
if (!vbo) {
vbo = new QOpenGLBuffer;
m_seriesBufferMap.insert(i.key(), vbo);
vbo->create();
+ dirty = true;
}
vbo->bind();
- if (data->dirty) {
+ if (dirty) {
vbo->allocate(data->array.constData(), data->array.count() * sizeof(GLfloat));
data->dirty = false;
}
@@ -231,6 +235,11 @@ void GLWidget::resizeGL(int w, int h)
Q_UNUSED(h)
}
+bool GLWidget::needsReset() const
+{
+ return m_view->renderHints().testFlag(QPainter::Antialiasing) != m_antiAlias;
+}
+
QT_CHARTS_END_NAMESPACE
#endif