summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/engine/abstract3drenderer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/datavisualization/engine/abstract3drenderer.cpp')
-rw-r--r--src/datavisualization/engine/abstract3drenderer.cpp45
1 files changed, 43 insertions, 2 deletions
diff --git a/src/datavisualization/engine/abstract3drenderer.cpp b/src/datavisualization/engine/abstract3drenderer.cpp
index 27820067..7aec8adf 100644
--- a/src/datavisualization/engine/abstract3drenderer.cpp
+++ b/src/datavisualization/engine/abstract3drenderer.cpp
@@ -26,9 +26,10 @@
QT_DATAVISUALIZATION_BEGIN_NAMESPACE
+Q_DECLARE_METATYPE(QDataVis::ShadowQuality)
+
Abstract3DRenderer::Abstract3DRenderer(Abstract3DController *controller)
: QObject(0),
- m_controller(controller),
m_hasNegativeValues(false),
m_cachedTheme(),
m_cachedFont(QFont(QStringLiteral("Arial"))),
@@ -50,8 +51,10 @@ Abstract3DRenderer::Abstract3DRenderer(Abstract3DController *controller)
{
QObject::connect(m_drawer, &Drawer::drawerChanged, this, &Abstract3DRenderer::updateTextures);
- QObject::connect(this, &Abstract3DRenderer::needRender, m_controller,
+ QObject::connect(this, &Abstract3DRenderer::needRender, controller,
&Abstract3DController::needRender, Qt::QueuedConnection);
+ QObject::connect(this, &Abstract3DRenderer::requestShadowQuality, controller,
+ &Abstract3DController::handleRequestShadowQuality, Qt::QueuedConnection);
}
Abstract3DRenderer::~Abstract3DRenderer()
@@ -322,5 +325,43 @@ AxisRenderCache &Abstract3DRenderer::axisCacheForOrientation(Q3DAbstractAxis::Ax
}
}
+void Abstract3DRenderer::lowerShadowQuality()
+{
+ QDataVis::ShadowQuality newQuality = QDataVis::ShadowQualityNone;
+
+ switch (m_cachedShadowQuality) {
+ case QDataVis::ShadowQualityHigh:
+ qWarning("Creating high quality shadows failed. Changing to medium quality.");
+ newQuality = QDataVis::ShadowQualityMedium;
+ break;
+ case QDataVis::ShadowQualityMedium:
+ qWarning("Creating medium quality shadows failed. Changing to low quality.");
+ newQuality = QDataVis::ShadowQualityLow;
+ break;
+ case QDataVis::ShadowQualityLow:
+ qWarning("Creating low quality shadows failed. Switching shadows off.");
+ newQuality = QDataVis::ShadowQualityNone;
+ break;
+ case QDataVis::ShadowQualitySoftHigh:
+ qWarning("Creating soft high quality shadows failed. Changing to soft medium quality.");
+ newQuality = QDataVis::ShadowQualitySoftMedium;
+ break;
+ case QDataVis::ShadowQualitySoftMedium:
+ qWarning("Creating soft medium quality shadows failed. Changing to soft low quality.");
+ newQuality = QDataVis::ShadowQualitySoftLow;
+ break;
+ case QDataVis::ShadowQualitySoftLow:
+ qWarning("Creating soft low quality shadows failed. Switching shadows off.");
+ newQuality = QDataVis::ShadowQualityNone;
+ break;
+ default:
+ // You'll never get here
+ break;
+ }
+
+ emit requestShadowQuality(newQuality);
+ updateShadowQuality(newQuality);
+}
+
QT_DATAVISUALIZATION_END_NAMESPACE