diff options
author | Tomi Korpipää <tomi.korpipaa@digia.com> | 2013-09-02 13:30:09 +0300 |
---|---|---|
committer | Tomi Korpipää <tomi.korpipaa@digia.com> | 2013-09-02 13:56:22 +0300 |
commit | bc6b29ced98354e83125444f0f1340c1a3a86a5e (patch) | |
tree | a69cb8ecae97f85e06d02c932a892087cfe4a3a4 /src | |
parent | 2fec9dde166f5b251b9f8a1170e0bc9e9e418638 (diff) |
Fixed general issues from Improve examples task
Task-number: QTRD-2239
+ single-color bars
+ margins for labels
Change-Id: Ib3c47bdcca1f34455359e36bdcf596b013678def
Change-Id: Ib3c47bdcca1f34455359e36bdcf596b013678def
Reviewed-by: Mika Salmela <mika.salmela@digia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/datavis3d/engine/bars3drenderer.cpp | 31 | ||||
-rw-r--r-- | src/datavis3d/engine/scatter3drenderer.cpp | 23 | ||||
-rw-r--r-- | src/datavis3d/engine/theme.cpp | 4 |
3 files changed, 42 insertions, 16 deletions
diff --git a/src/datavis3d/engine/bars3drenderer.cpp b/src/datavis3d/engine/bars3drenderer.cpp index ba028256..03c304d5 100644 --- a/src/datavis3d/engine/bars3drenderer.cpp +++ b/src/datavis3d/engine/bars3drenderer.cpp @@ -43,6 +43,7 @@ QT_DATAVIS3D_BEGIN_NAMESPACE +const GLfloat labelMargin = 0.05f; const GLfloat gridLineWidth = 0.005f; static QVector3D selectionSkipColor = QVector3D(255, 255, 255); // Selection texture's background color @@ -271,10 +272,14 @@ void Bars3DRenderer::drawSlicedScene(CameraHelper *camera, MVPMatrix = projectionMatrix * viewMatrix * modelMatrix; +#if 0 QVector3D baseColor = Utils::vectorFromColor(m_cachedTheme.m_baseColor); QVector3D heightColor = Utils::vectorFromColor(m_cachedTheme.m_heightColor) * item->height(); QVector3D barColor = baseColor + heightColor; +#else + QVector3D barColor = Utils::vectorFromColor(m_cachedTheme.m_baseColor); +#endif if (item->height() != 0) { // Set shader bindings @@ -739,12 +744,16 @@ void Bars3DRenderer::drawScene(CameraHelper *camera, #endif depthMVPMatrix = depthProjectionMatrix * depthViewMatrix * modelMatrix; +#if 0 QVector3D baseColor = Utils::vectorFromColor(m_cachedTheme.m_baseColor); QVector3D heightColor = Utils::vectorFromColor(m_cachedTheme.m_heightColor) * item.height(); QVector3D depthColor = Utils::vectorFromColor(m_cachedTheme.m_depthColor) * (float(row) / GLfloat(m_cachedRowCount)); QVector3D barColor = baseColor + heightColor + depthColor; +#else + QVector3D barColor = Utils::vectorFromColor(m_cachedTheme.m_baseColor); +#endif GLfloat lightStrength = m_cachedTheme.m_lightStrength; @@ -1173,7 +1182,7 @@ void Bars3DRenderer::drawScene(CameraHelper *camera, // Go through all rows and get position of max+1 or min-1 column, depending on x flip // We need only positions for them, labels have already been generated at QDataSetPrivate. Just add LabelItems rowPos = (row + 0.5f) * m_cachedBarSpacing.height(); - colPos = m_rowWidth; + colPos = (m_rowWidth / m_scaleFactor) + labelMargin; GLfloat rotLabelX = -90.0f; GLfloat rotLabelY = 0.0f; GLfloat rotLabelZ = 0.0f; @@ -1181,7 +1190,7 @@ void Bars3DRenderer::drawScene(CameraHelper *camera, if (m_zFlipped) rotLabelY = 180.0f; if (m_xFlipped) { - colPos = -m_rowWidth; + colPos = -(m_rowWidth / m_scaleFactor) - labelMargin; alignment = Qt::AlignLeft; } if (m_yFlipped) { @@ -1191,7 +1200,7 @@ void Bars3DRenderer::drawScene(CameraHelper *camera, rotLabelY = 180.0f; rotLabelZ = 180.0f; } - QVector3D labelPos = QVector3D(colPos / m_scaleFactor, + QVector3D labelPos = QVector3D(colPos, -m_yAdjustment + 0.005f, // raise a bit over background to avoid depth "glimmering" (m_columnDepth - rowPos) / m_scaleFactor + zComp); @@ -1213,7 +1222,7 @@ void Bars3DRenderer::drawScene(CameraHelper *camera, // Go through all columns and get position of max+1 or min-1 row, depending on z flip // We need only positions for them, labels have already been generated at QDataSetPrivate. Just add LabelItems colPos = (column + 0.5f) * m_cachedBarSpacing.width(); - rowPos = m_columnDepth; + rowPos = (m_columnDepth / m_scaleFactor) + labelMargin; GLfloat rotLabelX = -90.0f; GLfloat rotLabelY = 90.0f; GLfloat rotLabelZ = 0.0f; @@ -1221,7 +1230,7 @@ void Bars3DRenderer::drawScene(CameraHelper *camera, if (m_xFlipped) rotLabelY = -90.0f; if (m_zFlipped) { - rowPos = -m_columnDepth; + rowPos = -(m_columnDepth / m_scaleFactor) - labelMargin; alignment = Qt::AlignRight; } if (m_yFlipped) { @@ -1233,7 +1242,7 @@ void Bars3DRenderer::drawScene(CameraHelper *camera, } QVector3D labelPos = QVector3D((colPos - m_rowWidth) / m_scaleFactor, -m_yAdjustment + 0.005f, // raise a bit over background to avoid depth "glimmering" - rowPos / m_scaleFactor + zComp); + rowPos + zComp); m_dummyBarRenderItem.setTranslation(labelPos); const LabelItem &axisLabelItem = *m_axisCacheZ.labelItems().at(column); @@ -1258,6 +1267,8 @@ void Bars3DRenderer::drawScene(CameraHelper *camera, for (int i = 0; i < labelCount; i++) { if (m_axisCacheY.labelItems().size() > labelNbr) { + GLfloat labelMarginXTrans = labelMargin; + GLfloat labelMarginZTrans = labelMargin; GLfloat labelXTrans = m_rowWidth / m_scaleFactor; GLfloat labelZTrans = m_columnDepth / m_scaleFactor; GLfloat labelYTrans = 2.0f * labelPos / m_heightNormalizer - m_yAdjustment; @@ -1267,17 +1278,20 @@ void Bars3DRenderer::drawScene(CameraHelper *camera, Qt::AlignmentFlag alignment = Qt::AlignLeft; if (!m_xFlipped) { labelXTrans = -labelXTrans; + labelMarginXTrans = -labelMargin; rotLabelY = 90.0f; } if (m_zFlipped) { labelZTrans = -labelZTrans; + labelMarginZTrans = -labelMargin; alignment = Qt::AlignRight; } const LabelItem &axisLabelItem = *m_axisCacheY.labelItems().at(labelNbr); // Back wall - QVector3D labelTrans = QVector3D(labelXTrans, labelYTrans, labelZTrans + zComp); + QVector3D labelTrans = QVector3D(labelXTrans, labelYTrans, + labelZTrans + labelMarginZTrans + zComp); //qDebug() << "labelPos, value:" << labelTrans; @@ -1299,7 +1313,8 @@ void Bars3DRenderer::drawScene(CameraHelper *camera, else rotLabelY = 0.0f; - labelTrans = QVector3D(-labelXTrans, labelYTrans, -labelZTrans + zComp); + labelTrans = QVector3D(-labelXTrans - labelMarginXTrans, labelYTrans, + -labelZTrans + zComp); m_dummyBarRenderItem.setTranslation(labelTrans); m_drawer->drawLabel(m_dummyBarRenderItem, axisLabelItem, viewMatrix, projectionMatrix, diff --git a/src/datavis3d/engine/scatter3drenderer.cpp b/src/datavis3d/engine/scatter3drenderer.cpp index 8f28e050..03e61043 100644 --- a/src/datavis3d/engine/scatter3drenderer.cpp +++ b/src/datavis3d/engine/scatter3drenderer.cpp @@ -43,6 +43,7 @@ QT_DATAVIS3D_BEGIN_NAMESPACE //#define USE_UNIFORM_SCALING // Scale x and z uniformly, or based on autoscaled values const GLfloat aspectRatio = 2.0f; // Forced ratio of x and z to y. Dynamic will make it look odd. +const GLfloat labelMargin = 0.05f; // TODO: Make margin modifiable? const GLfloat backgroundMargin = 1.1f; // Margin for background (1.1f = make it 10% larger to avoid items being drawn inside background) const GLfloat gridLineWidth = 0.005f; @@ -543,11 +544,15 @@ void Scatter3DRenderer::drawScene(CameraHelper *camera, #endif depthMVPMatrix = depthProjectionMatrix * depthViewMatrix * modelMatrix; +#if 0 QVector3D baseColor = Utils::vectorFromColor(m_cachedTheme.m_baseColor); QVector3D heightColor = Utils::vectorFromColor(m_cachedTheme.m_heightColor) * item.translation().y(); QVector3D dotColor = baseColor + heightColor; +#else + QVector3D dotColor = Utils::vectorFromColor(m_cachedTheme.m_baseColor); +#endif GLfloat lightStrength = m_cachedTheme.m_lightStrength; if (m_cachedSelectionMode > QDataVis::ModeNone && (selectedIndex == dot)) { @@ -1124,10 +1129,10 @@ void Scatter3DRenderer::drawScene(CameraHelper *camera, #ifndef USE_UNIFORM_SCALING // Use this if we want to use autoscaling for x and z if (m_axisCacheZ.labelItems().size() > labelNbr) { GLfloat labelXTrans = (aspectRatio * backgroundMargin * m_areaSize.width()) - / m_scaleFactor; + / m_scaleFactor + labelMargin; #else // ..and this if we want uniform scaling based on largest dimension if (axisCacheMax->labelItems().size() > labelNbr) { - GLfloat labelXTrans = aspectRatio * backgroundMargin; + GLfloat labelXTrans = aspectRatio * backgroundMargin + labelMargin; #endif GLfloat labelYTrans = -backgroundMargin; GLfloat rotLabelX = -90.0f; @@ -1185,10 +1190,10 @@ void Scatter3DRenderer::drawScene(CameraHelper *camera, #ifndef USE_UNIFORM_SCALING // Use this if we want to use autoscaling for x and z if (m_axisCacheX.labelItems().size() > labelNbr) { GLfloat labelZTrans = (aspectRatio * backgroundMargin * m_areaSize.height()) - / m_scaleFactor; + / m_scaleFactor + labelMargin; #else // ..and this if we want uniform scaling based on largest dimension if (axisCacheMax->labelItems().size() > labelNbr) { - GLfloat labelZTrans = aspectRatio * backgroundMargin; + GLfloat labelZTrans = aspectRatio * backgroundMargin + labelMargin; #endif GLfloat labelYTrans = -backgroundMargin; GLfloat rotLabelX = -90.0f; @@ -1245,6 +1250,8 @@ void Scatter3DRenderer::drawScene(CameraHelper *camera, GLfloat labelXTrans = aspectRatio * backgroundMargin; GLfloat labelZTrans = labelXTrans; #endif + GLfloat labelMarginXTrans = labelMargin; + GLfloat labelMarginZTrans = labelMargin; GLfloat labelYTrans = labelPos / m_heightNormalizer; GLfloat rotLabelX = 0.0f; GLfloat rotLabelY = -90.0f; @@ -1252,17 +1259,20 @@ void Scatter3DRenderer::drawScene(CameraHelper *camera, Qt::AlignmentFlag alignment = Qt::AlignLeft; if (!m_xFlipped) { labelXTrans = -labelXTrans; + labelMarginXTrans = -labelMargin; rotLabelY = 90.0f; } if (m_zFlipped) { labelZTrans = -labelZTrans; + labelMarginZTrans = -labelMargin; alignment = Qt::AlignRight; } const LabelItem &axisLabelItem = *m_axisCacheY.labelItems().at(labelNbr); // Back wall - QVector3D labelTrans = QVector3D(labelXTrans, labelYTrans, labelZTrans + zComp); + QVector3D labelTrans = QVector3D(labelXTrans, labelYTrans, + labelZTrans + labelMarginZTrans + zComp); // Draw the label here m_dummyRenderItem.setTranslation(labelTrans); @@ -1283,7 +1293,8 @@ void Scatter3DRenderer::drawScene(CameraHelper *camera, else rotLabelY = 0.0f; - labelTrans = QVector3D(-labelXTrans, labelYTrans, -labelZTrans + zComp); + labelTrans = QVector3D(-labelXTrans - labelMarginXTrans, labelYTrans, + -labelZTrans + zComp); // Draw the label here m_dummyRenderItem.setTranslation(labelTrans); diff --git a/src/datavis3d/engine/theme.cpp b/src/datavis3d/engine/theme.cpp index 7cdd6779..0ed39e65 100644 --- a/src/datavis3d/engine/theme.cpp +++ b/src/datavis3d/engine/theme.cpp @@ -241,8 +241,8 @@ void Theme::useColorTheme(QDataVis::ColorTheme colorTheme) break; } case QDataVis::ThemeHighContrast: { - m_baseColor = QColor(QRgb(0x202020)); - m_heightColor = QColor(QRgb(0xff4a41)); + m_baseColor = QColor(QRgb(0xff4a41)); + m_heightColor = QColor(QRgb(0x202020)); m_depthColor = QColor(QRgb(0x596a74)); m_backgroundColor = QColor(QRgb(0xffffff)); m_windowColor = QColor(QRgb(0x000000)); |