summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@digia.com>2013-09-02 13:30:09 +0300
committerTomi Korpipää <tomi.korpipaa@digia.com>2013-09-02 13:56:22 +0300
commitbc6b29ced98354e83125444f0f1340c1a3a86a5e (patch)
treea69cb8ecae97f85e06d02c932a892087cfe4a3a4 /src
parent2fec9dde166f5b251b9f8a1170e0bc9e9e418638 (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.cpp31
-rw-r--r--src/datavis3d/engine/scatter3drenderer.cpp23
-rw-r--r--src/datavis3d/engine/theme.cpp4
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));