summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSami Varanka <sami.varanka@qt.io>2021-08-18 14:33:26 +0300
committerSami Varanka <sami.varanka@qt.io>2021-08-24 07:25:12 +0000
commitd01fa6654f9b3d5ae4b542a85f10277318cfebd4 (patch)
treeceb71e9903b00181cca3623d77758544182b12d5
parent6248cca3f2a801b27059ffc0a720db1686832f41 (diff)
Add: Margin between series columns in Bars3D
Added a new property to Bars3D. The property controls the margin between the columns of series. It can be used to show bars belonging to same column, but different series side by side. Also added autotest for qml and cpp. Fixes: QTBUG-69036 Change-Id: I3c353e9097a8be8cafc05f8f5120e4266baa4a5c Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
-rw-r--r--examples/datavisualization/qmlbars/doc/images/qmlbars-example.pngbin146667 -> 204973 bytes
-rw-r--r--examples/datavisualization/qmlbars/qml/qmlbars/main.qml20
-rw-r--r--src/datavisualization/doc/src/qtdatavisualization-qml-bars3d.qdoc8
-rw-r--r--src/datavisualization/engine/bars3dcontroller.cpp18
-rw-r--r--src/datavisualization/engine/bars3dcontroller_p.h8
-rw-r--r--src/datavisualization/engine/bars3drenderer.cpp33
-rw-r--r--src/datavisualization/engine/bars3drenderer_p.h3
-rw-r--r--src/datavisualization/engine/q3dbars.cpp27
-rw-r--r--src/datavisualization/engine/q3dbars.h5
-rw-r--r--src/datavisualizationqml/declarativebars.cpp15
-rw-r--r--src/datavisualizationqml/declarativebars_p.h7
-rw-r--r--tests/auto/cpptest/q3dbars/tst_bars.cpp3
-rw-r--r--tests/auto/qmltest/bars3d/tst_bars.qml6
-rw-r--r--tests/auto/qmltest/bars3d/tst_barseries.qml2
-rw-r--r--tests/auto/qmltest/bars3d/tst_basic.qml18
-rw-r--r--tests/auto/qmltest/bars3d/tst_proxy.qml2
-rw-r--r--tests/manual/barstest/chart.cpp14
-rw-r--r--tests/manual/barstest/chart.h4
-rw-r--r--tests/manual/barstest/main.cpp20
19 files changed, 194 insertions, 19 deletions
diff --git a/examples/datavisualization/qmlbars/doc/images/qmlbars-example.png b/examples/datavisualization/qmlbars/doc/images/qmlbars-example.png
index c2ab2459..4230e4d9 100644
--- a/examples/datavisualization/qmlbars/doc/images/qmlbars-example.png
+++ b/examples/datavisualization/qmlbars/doc/images/qmlbars-example.png
Binary files differ
diff --git a/examples/datavisualization/qmlbars/qml/qmlbars/main.qml b/examples/datavisualization/qmlbars/qml/qmlbars/main.qml
index 76eff0f2..4a81df7e 100644
--- a/examples/datavisualization/qmlbars/qml/qmlbars/main.qml
+++ b/examples/datavisualization/qmlbars/qml/qmlbars/main.qml
@@ -357,6 +357,26 @@ Item {
}
//! [0]
}
+
+ Button {
+ id: marginToggle
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ text: "Use Margin"
+ clip: true
+
+ onClicked: {
+ if (text === "Use Margin") {
+ barGraph.barSeriesMargin = Qt.size(0.2, 0.2)
+ barGraph.barSpacing = Qt.size(0.0, 0.0)
+ text = "Use Spacing"
+ } else if (text === "Use Spacing") {
+ barGraph.barSeriesMargin = Qt.size(0.0, 0.0)
+ barGraph.barSpacing = Qt.size(0.5, 0.5)
+ text = "Use Margin"
+ }
+ }
+ }
}
states: [
diff --git a/src/datavisualization/doc/src/qtdatavisualization-qml-bars3d.qdoc b/src/datavisualization/doc/src/qtdatavisualization-qml-bars3d.qdoc
index 9fd5107c..0a18a912 100644
--- a/src/datavisualization/doc/src/qtdatavisualization-qml-bars3d.qdoc
+++ b/src/datavisualization/doc/src/qtdatavisualization-qml-bars3d.qdoc
@@ -108,6 +108,14 @@
*/
/*!
+ * \qmlproperty size Bars3D::barSeriesMargin
+ * \since 6.3
+ *
+ * Margin between series columns in X and Z dimensions. Preset to \c {(0.0, 0.0)} by default.
+ * Sensible values are on the range [0,1).
+ */
+
+/*!
* \qmlproperty Bar3DSeries Bars3D::selectedSeries
* The selected series or \c null. If \l {QAbstract3DGraph::selectionMode}{selectionMode} has
* the \c SelectionMultiSeries flag set, this property holds the series that
diff --git a/src/datavisualization/engine/bars3dcontroller.cpp b/src/datavisualization/engine/bars3dcontroller.cpp
index 2a007360..74ea1076 100644
--- a/src/datavisualization/engine/bars3dcontroller.cpp
+++ b/src/datavisualization/engine/bars3dcontroller.cpp
@@ -49,6 +49,7 @@ Bars3DController::Bars3DController(QRect boundRect, Q3DScene *scene)
m_barThicknessRatio(1.0f),
m_barSpacing(QSizeF(1.0, 1.0)),
m_floorLevel(0.0f),
+ m_barSeriesMargin(0.0f, 0.0f),
m_renderer(0)
{
// Setting a null axis creates a new default axis according to orientation and graph type.
@@ -108,6 +109,11 @@ void Bars3DController::synchDataToRenderer()
m_changeTracker.floorLevelChanged = false;
}
+ if (m_changeTracker.barSeriesMarginChanged) {
+ m_renderer->updateBarSeriesMargin(m_barSeriesMargin);
+ m_changeTracker.barSeriesMarginChanged = false;
+ }
+
Abstract3DController::synchDataToRenderer();
// Notify changes to renderer
@@ -510,6 +516,18 @@ QSizeF Bars3DController::barSpacing()
return m_barSpacing;
}
+void Bars3DController::setBarSeriesMargin(const QSizeF &margin)
+{
+ m_barSeriesMargin = margin;
+ m_changeTracker.barSeriesMarginChanged = true;
+ emitNeedRender();
+}
+
+QSizeF Bars3DController::barSeriesMargin()
+{
+ return m_barSeriesMargin;
+}
+
bool Bars3DController::isBarSpecRelative()
{
return m_isBarSpecRelative;
diff --git a/src/datavisualization/engine/bars3dcontroller_p.h b/src/datavisualization/engine/bars3dcontroller_p.h
index e57263a1..3662b43c 100644
--- a/src/datavisualization/engine/bars3dcontroller_p.h
+++ b/src/datavisualization/engine/bars3dcontroller_p.h
@@ -55,6 +55,7 @@ struct Bars3DChangeBitField {
bool rowsChanged : 1;
bool itemChanged : 1;
bool floorLevelChanged : 1;
+ bool barSeriesMarginChanged : 1;
Bars3DChangeBitField() :
multiSeriesScalingChanged(true),
@@ -62,7 +63,8 @@ struct Bars3DChangeBitField {
selectedBarChanged(true),
rowsChanged(false),
itemChanged(false),
- floorLevelChanged(false)
+ floorLevelChanged(false),
+ barSeriesMarginChanged(false)
{
}
};
@@ -98,6 +100,7 @@ private:
GLfloat m_barThicknessRatio;
QSizeF m_barSpacing;
float m_floorLevel;
+ QSizeF m_barSeriesMargin;
// Rendering
Bars3DRenderer *m_renderer;
@@ -118,6 +121,9 @@ public:
void setBarSpecs(GLfloat thicknessRatio = 1.0f,
const QSizeF &spacing = QSizeF(1.0, 1.0),
bool relative = true);
+ void setBarSeriesMargin(const QSizeF &margin);
+ QSizeF barSeriesMargin();
+
GLfloat barThickness();
QSizeF barSpacing();
bool isBarSpecRelative();
diff --git a/src/datavisualization/engine/bars3drenderer.cpp b/src/datavisualization/engine/bars3drenderer.cpp
index 3f36f8d1..0c51d187 100644
--- a/src/datavisualization/engine/bars3drenderer.cpp
+++ b/src/datavisualization/engine/bars3drenderer.cpp
@@ -49,6 +49,7 @@ Bars3DRenderer::Bars3DRenderer(Bars3DController *controller)
m_cachedIsSlicingActivated(false),
m_cachedRowCount(0),
m_cachedColumnCount(0),
+ m_cachedBarSeriesMargin(0.0f, 0.0f),
m_selectedBar(0),
m_sliceCache(0),
m_sliceTitleItem(0),
@@ -198,7 +199,8 @@ void Bars3DRenderer::updateData()
m_seriesScaleX = 1.0f / float(m_visibleSeriesCount);
m_seriesStep = 1.0f / float(m_visibleSeriesCount);
- m_seriesStart = -((float(m_visibleSeriesCount) - 1.0f) / 2.0f) * m_seriesStep;
+ m_seriesStart = -((float(m_visibleSeriesCount) - 1.0f) / 2.0f)
+ * (m_seriesStep - (m_seriesStep * m_cachedBarSeriesMargin.width()));
if (m_keepSeriesUniform)
m_seriesScaleZ = m_seriesScaleX;
@@ -1077,7 +1079,9 @@ void Bars3DRenderer::drawScene(GLuint defaultFboHandle)
foreach (SeriesRenderCache *baseCache, m_renderCacheList) {
if (baseCache->isVisible()) {
BarSeriesRenderCache *cache = static_cast<BarSeriesRenderCache *>(baseCache);
- float seriesPos = m_seriesStart + m_seriesStep * cache->visualIndex() + 0.5f;
+ float seriesPos = m_seriesStart + m_seriesStep
+ * (cache->visualIndex() - (cache->visualIndex()
+ * m_cachedBarSeriesMargin.width())) + 0.5f;
ObjectHelper *barObj = cache->object();
QQuaternion seriesRotation(cache->meshRotation());
const BarRenderItemArray &renderArray = cache->renderArray();
@@ -1199,7 +1203,9 @@ void Bars3DRenderer::drawScene(GLuint defaultFboHandle)
foreach (SeriesRenderCache *baseCache, m_renderCacheList) {
if (baseCache->isVisible()) {
BarSeriesRenderCache *cache = static_cast<BarSeriesRenderCache *>(baseCache);
- float seriesPos = m_seriesStart + m_seriesStep * cache->visualIndex() + 0.5f;
+ float seriesPos = m_seriesStart + m_seriesStep
+ * (cache->visualIndex() - (cache->visualIndex()
+ * m_cachedBarSeriesMargin.width())) + 0.5f;
ObjectHelper *barObj = cache->object();
QQuaternion seriesRotation(cache->meshRotation());
const BarRenderItemArray &renderArray = cache->renderArray();
@@ -1459,7 +1465,9 @@ bool Bars3DRenderer::drawBars(BarRenderItem **selectedBar,
foreach (SeriesRenderCache *baseCache, m_renderCacheList) {
if (baseCache->isVisible()) {
BarSeriesRenderCache *cache = static_cast<BarSeriesRenderCache *>(baseCache);
- float seriesPos = m_seriesStart + m_seriesStep * cache->visualIndex() + 0.5f;
+ float seriesPos = m_seriesStart + m_seriesStep
+ * (cache->visualIndex() - (cache->visualIndex()
+ * m_cachedBarSeriesMargin.width())) + 0.5f;
ObjectHelper *barObj = cache->object();
QQuaternion seriesRotation(cache->meshRotation());
Q3DTheme::ColorStyle colorStyle = cache->colorStyle();
@@ -2464,6 +2472,13 @@ void Bars3DRenderer::updateBarSpecs(GLfloat thicknessRatio, const QSizeF &spacin
calculateSceneScalingFactors();
}
+void Bars3DRenderer::updateBarSeriesMargin(const QSizeF &margin)
+{
+ m_cachedBarSeriesMargin = margin;
+ calculateSeriesStartPosition();
+ calculateSceneScalingFactors();
+}
+
void Bars3DRenderer::updateAxisRange(QAbstract3DAxis::AxisOrientation orientation, float min,
float max)
{
@@ -2596,6 +2611,10 @@ void Bars3DRenderer::calculateSceneScalingFactors()
m_scaleX = m_cachedBarThickness.width() / m_scaleFactor;
m_scaleZ = m_cachedBarThickness.height() / m_scaleFactor;
+ // Adjust scaling according to margin
+ m_scaleX -= m_scaleX * m_cachedBarSeriesMargin.width();
+ m_scaleZ -= m_scaleZ * m_cachedBarSeriesMargin.height();
+
// Whole graph scale factors
m_xScaleFactor = m_rowWidth / m_scaleFactor;
m_zScaleFactor = m_columnDepth / m_scaleFactor;
@@ -2659,6 +2678,12 @@ void Bars3DRenderer::calculateHeightAdjustment()
}
}
+void Bars3DRenderer::calculateSeriesStartPosition()
+{
+ m_seriesStart = -((float(m_visibleSeriesCount) - 1.0f) / 2.0f)
+ * (m_seriesStep - (m_seriesStep * m_cachedBarSeriesMargin.width()));
+}
+
Bars3DController::SelectionType Bars3DRenderer::isSelected(int row, int bar,
const BarSeriesRenderCache *cache)
{
diff --git a/src/datavisualization/engine/bars3drenderer_p.h b/src/datavisualization/engine/bars3drenderer_p.h
index 6c96c3e2..9f7e7c1d 100644
--- a/src/datavisualization/engine/bars3drenderer_p.h
+++ b/src/datavisualization/engine/bars3drenderer_p.h
@@ -68,6 +68,7 @@ private:
bool m_cachedIsSlicingActivated;
int m_cachedRowCount;
int m_cachedColumnCount;
+ QSizeF m_cachedBarSeriesMargin;
// Internal state
BarRenderItem *m_selectedBar; // points to renderitem array
@@ -144,6 +145,7 @@ public Q_SLOTS:
void updateBarSpecs(GLfloat thicknessRatio = 1.0f,
const QSizeF &spacing = QSizeF(1.0, 1.0),
bool relative = true);
+ void updateBarSeriesMargin(const QSizeF &margin);
void updateSlicingActive(bool isSlicing);
void updateSelectedBar(const QPoint &position, QBar3DSeries *series);
inline QPoint clickedPosition() const { return m_clickedPosition; }
@@ -186,6 +188,7 @@ private:
void updateDepthBuffer() override;
void calculateSceneScalingFactors();
void calculateHeightAdjustment();
+ void calculateSeriesStartPosition();
Abstract3DController::SelectionType isSelected(int row, int bar,
const BarSeriesRenderCache *cache);
QPoint selectionColorToArrayPosition(const QVector4D &selectionColor);
diff --git a/src/datavisualization/engine/q3dbars.cpp b/src/datavisualization/engine/q3dbars.cpp
index 53519a4d..ccc8edd5 100644
--- a/src/datavisualization/engine/q3dbars.cpp
+++ b/src/datavisualization/engine/q3dbars.cpp
@@ -247,7 +247,7 @@ float Q3DBars::barThickness() const
* Preset to \c {(1.0, 1.0)} by default. Spacing is affected by the
* barSpacingRelative property.
*
- * \sa barSpacingRelative, multiSeriesUniform
+ * \sa barSpacingRelative, multiSeriesUniform, barSeriesMargin
*/
void Q3DBars::setBarSpacing(const QSizeF &spacing)
{
@@ -285,6 +285,31 @@ bool Q3DBars::isBarSpacingRelative() const
}
/*!
+ * \property Q3DBars::barSeriesMargin
+ * \since 6.3
+ *
+ * \brief Margin between series columns in X and Z dimensions.
+ * Sensible values are on the range [0,1).
+ *
+ * Preset to \c {(0.0, 0.0)} by default. This property enables
+ * showing bars from different series side by side, but with space between columns.
+ *
+ * \sa barSpacing
+ */
+void Q3DBars::setBarSeriesMargin(const QSizeF &margin)
+{
+ if (margin != barSeriesMargin()) {
+ dptr()->m_shared->setBarSeriesMargin(margin);
+ emit barSeriesMarginChanged(margin);
+ }
+}
+
+QSizeF Q3DBars::barSeriesMargin() const
+{
+ return dptrc()->m_shared->barSeriesMargin();
+}
+
+/*!
* \property Q3DBars::rowAxis
*
* \brief The axis attached to the active row.
diff --git a/src/datavisualization/engine/q3dbars.h b/src/datavisualization/engine/q3dbars.h
index 5b782931..cc4e6634 100644
--- a/src/datavisualization/engine/q3dbars.h
+++ b/src/datavisualization/engine/q3dbars.h
@@ -46,6 +46,7 @@ class QT_DATAVISUALIZATION_EXPORT Q3DBars : public QAbstract3DGraph
Q_PROPERTY(float barThickness READ barThickness WRITE setBarThickness NOTIFY barThicknessChanged)
Q_PROPERTY(QSizeF barSpacing READ barSpacing WRITE setBarSpacing NOTIFY barSpacingChanged)
Q_PROPERTY(bool barSpacingRelative READ isBarSpacingRelative WRITE setBarSpacingRelative NOTIFY barSpacingRelativeChanged)
+ Q_PROPERTY(QSizeF barSeriesMargin READ barSeriesMargin WRITE setBarSeriesMargin NOTIFY barSeriesMarginChanged REVISION(6, 3))
Q_PROPERTY(QCategory3DAxis *rowAxis READ rowAxis WRITE setRowAxis NOTIFY rowAxisChanged)
Q_PROPERTY(QCategory3DAxis *columnAxis READ columnAxis WRITE setColumnAxis NOTIFY columnAxisChanged)
Q_PROPERTY(QValue3DAxis *valueAxis READ valueAxis WRITE setValueAxis NOTIFY valueAxisChanged)
@@ -76,6 +77,9 @@ public:
void setBarSpacingRelative(bool relative);
bool isBarSpacingRelative() const;
+ void setBarSeriesMargin(const QSizeF &margin);
+ QSizeF barSeriesMargin() const;
+
void setRowAxis(QCategory3DAxis *axis);
QCategory3DAxis *rowAxis() const;
void setColumnAxis(QCategory3DAxis *axis);
@@ -95,6 +99,7 @@ Q_SIGNALS:
void barThicknessChanged(float thicknessRatio);
void barSpacingChanged(const QSizeF &spacing);
void barSpacingRelativeChanged(bool relative);
+ Q_REVISION(6, 3) void barSeriesMarginChanged(const QSizeF &margin);
void rowAxisChanged(QCategory3DAxis *axis);
void columnAxisChanged(QCategory3DAxis *axis);
void valueAxisChanged(QValue3DAxis *axis);
diff --git a/src/datavisualizationqml/declarativebars.cpp b/src/datavisualizationqml/declarativebars.cpp
index fe90e159..59d64f4e 100644
--- a/src/datavisualizationqml/declarativebars.cpp
+++ b/src/datavisualizationqml/declarativebars.cpp
@@ -112,7 +112,7 @@ float DeclarativeBars::barThickness() const
return m_barsController->barThickness();
}
-void DeclarativeBars::setBarSpacing(QSizeF spacing)
+void DeclarativeBars::setBarSpacing(const QSizeF &spacing)
{
if (spacing != barSpacing()) {
m_barsController->setBarSpecs(GLfloat(barThickness()), spacing, isBarSpacingRelative());
@@ -138,6 +138,19 @@ bool DeclarativeBars::isBarSpacingRelative() const
return m_barsController->isBarSpecRelative();
}
+void DeclarativeBars::setBarSeriesMargin(const QSizeF &margin)
+{
+ if (margin != barSeriesMargin()) {
+ m_barsController->setBarSeriesMargin(margin);
+ emit barSeriesMarginChanged(barSeriesMargin());
+ }
+}
+
+QSizeF DeclarativeBars::barSeriesMargin() const
+{
+ return m_barsController->barSeriesMargin();
+}
+
QBar3DSeries *DeclarativeBars::selectedSeries() const
{
return m_barsController->selectedSeries();
diff --git a/src/datavisualizationqml/declarativebars_p.h b/src/datavisualizationqml/declarativebars_p.h
index acf1a030..d63eafc1 100644
--- a/src/datavisualizationqml/declarativebars_p.h
+++ b/src/datavisualizationqml/declarativebars_p.h
@@ -56,6 +56,7 @@ class DeclarativeBars : public AbstractDeclarative
Q_PROPERTY(float barThickness READ barThickness WRITE setBarThickness NOTIFY barThicknessChanged)
Q_PROPERTY(QSizeF barSpacing READ barSpacing WRITE setBarSpacing NOTIFY barSpacingChanged)
Q_PROPERTY(bool barSpacingRelative READ isBarSpacingRelative WRITE setBarSpacingRelative NOTIFY barSpacingRelativeChanged)
+ Q_PROPERTY(QSizeF barSeriesMargin READ barSeriesMargin WRITE setBarSeriesMargin NOTIFY barSeriesMarginChanged REVISION(6, 3))
Q_PROPERTY(QQmlListProperty<QBar3DSeries> seriesList READ seriesList)
Q_PROPERTY(QBar3DSeries *selectedSeries READ selectedSeries NOTIFY selectedSeriesChanged)
Q_PROPERTY(QBar3DSeries *primarySeries READ primarySeries WRITE setPrimarySeries NOTIFY primarySeriesChanged)
@@ -82,12 +83,15 @@ public:
void setBarThickness(float thicknessRatio);
float barThickness() const;
- void setBarSpacing(QSizeF spacing);
+ void setBarSpacing(const QSizeF &spacing);
QSizeF barSpacing() const;
void setBarSpacingRelative(bool relative);
bool isBarSpacingRelative() const;
+ void setBarSeriesMargin(const QSizeF &margin);
+ QSizeF barSeriesMargin() const;
+
QQmlListProperty<QBar3DSeries> seriesList();
static void appendSeriesFunc(QQmlListProperty<QBar3DSeries> *list, QBar3DSeries *series);
static qsizetype countSeriesFunc(QQmlListProperty<QBar3DSeries> *list);
@@ -116,6 +120,7 @@ Q_SIGNALS:
void barThicknessChanged(float thicknessRatio);
void barSpacingChanged(QSizeF spacing);
void barSpacingRelativeChanged(bool relative);
+ Q_REVISION(6, 3) void barSeriesMarginChanged(QSizeF margin);
void meshFileNameChanged(QString filename);
void primarySeriesChanged(QBar3DSeries *series);
void selectedSeriesChanged(QBar3DSeries *series);
diff --git a/tests/auto/cpptest/q3dbars/tst_bars.cpp b/tests/auto/cpptest/q3dbars/tst_bars.cpp
index 02de1fba..47529285 100644
--- a/tests/auto/cpptest/q3dbars/tst_bars.cpp
+++ b/tests/auto/cpptest/q3dbars/tst_bars.cpp
@@ -121,6 +121,7 @@ void tst_bars::initialProperties()
QCOMPARE(m_graph->isMultiSeriesUniform(), false);
QCOMPARE(m_graph->barThickness(), 1.0);
QCOMPARE(m_graph->barSpacing(), QSizeF(1.0f, 1.0f));
+ QCOMPARE(m_graph->barSeriesMargin(), QSizeF(0.0f, 0.0f));
QCOMPARE(m_graph->isBarSpacingRelative(), true);
QCOMPARE(m_graph->seriesList().length(), 0);
QVERIFY(!m_graph->selectedSeries());
@@ -157,12 +158,14 @@ void tst_bars::initializeProperties()
m_graph->setMultiSeriesUniform(true);
m_graph->setBarThickness(0.2f);
m_graph->setBarSpacing(QSizeF(0.1f, 0.1f));
+ m_graph->setBarSeriesMargin(QSizeF(0.3f, 0.3f));
m_graph->setBarSpacingRelative(false);
m_graph->setFloorLevel(1.0f);
QCOMPARE(m_graph->isMultiSeriesUniform(), true);
QCOMPARE(m_graph->barThickness(), 0.2f);
QCOMPARE(m_graph->barSpacing(), QSizeF(0.1f, 0.1f));
+ QCOMPARE(m_graph->barSeriesMargin(), QSizeF(0.3f, 0.3f));
QCOMPARE(m_graph->isBarSpacingRelative(), false);
QCOMPARE(m_graph->floorLevel(), 1.0f);
diff --git a/tests/auto/qmltest/bars3d/tst_bars.qml b/tests/auto/qmltest/bars3d/tst_bars.qml
index 75cf10a2..349e28b2 100644
--- a/tests/auto/qmltest/bars3d/tst_bars.qml
+++ b/tests/auto/qmltest/bars3d/tst_bars.qml
@@ -28,7 +28,7 @@
****************************************************************************/
import QtQuick 2.0
-import QtDataVisualization 1.2
+import QtDataVisualization
import QtTest 1.0
Item {
@@ -41,7 +41,7 @@ Item {
function constructBars() {
bars3d = Qt.createQmlObject("
import QtQuick 2.2
- import QtDataVisualization 1.2
+ import QtDataVisualization
Bars3D {
anchors.fill: parent
}", top)
@@ -104,7 +104,7 @@ Item {
function constructBarsWithCustomItemList() {
bars3d = Qt.createQmlObject("
import QtQuick 2.2
- import QtDataVisualization 1.2
+ import QtDataVisualization
Bars3D {
anchors.fill: parent
customItemList: [item1, item2]
diff --git a/tests/auto/qmltest/bars3d/tst_barseries.qml b/tests/auto/qmltest/bars3d/tst_barseries.qml
index 3db19615..77eba61a 100644
--- a/tests/auto/qmltest/bars3d/tst_barseries.qml
+++ b/tests/auto/qmltest/bars3d/tst_barseries.qml
@@ -28,7 +28,7 @@
****************************************************************************/
import QtQuick 2.0
-import QtDataVisualization 1.2
+import QtDataVisualization
import QtTest 1.0
Item {
diff --git a/tests/auto/qmltest/bars3d/tst_basic.qml b/tests/auto/qmltest/bars3d/tst_basic.qml
index 3ef7101d..ea303356 100644
--- a/tests/auto/qmltest/bars3d/tst_basic.qml
+++ b/tests/auto/qmltest/bars3d/tst_basic.qml
@@ -28,7 +28,7 @@
****************************************************************************/
import QtQuick 2.0
-import QtDataVisualization 1.2
+import QtDataVisualization
import QtTest 1.0
Item {
@@ -44,7 +44,7 @@ Item {
function constructEmpty() {
empty = Qt.createQmlObject("
import QtQuick 2.2
- import QtDataVisualization 1.2
+ import QtDataVisualization
Bars3D {
}", top)
}
@@ -52,13 +52,15 @@ Item {
function constructBasic() {
basic = Qt.createQmlObject("
import QtQuick 2.2
- import QtDataVisualization 1.2
+ import QtDataVisualization
Bars3D {
anchors.fill: parent
multiSeriesUniform: true
barThickness: 0.1
barSpacing.width: 0.1
barSpacing.height: 0.1
+ barSeriesMargin.width: 0.3
+ barSeriesMargin.height: 0.3
barSpacingRelative: false
floorLevel: 1.0
}", top)
@@ -68,7 +70,7 @@ Item {
function constructCommon() {
common = Qt.createQmlObject("
import QtQuick 2.2
- import QtDataVisualization 1.2
+ import QtDataVisualization
Bars3D {
anchors.fill: parent
}", top)
@@ -78,7 +80,7 @@ Item {
function constructCommonInit() {
common_init = Qt.createQmlObject("
import QtQuick 2.2
- import QtDataVisualization 1.2
+ import QtDataVisualization
Bars3D {
anchors.fill: parent
selectionMode: AbstractGraph3D.SelectionNone
@@ -112,6 +114,7 @@ Item {
compare(empty.multiSeriesUniform, false, "multiSeriesUniform")
compare(empty.barThickness, 1.0, "barThickness")
compare(empty.barSpacing, Qt.size(1.0, 1.0), "barSpacing")
+ compare(empty.barSeriesMargin, Qt.size(0.0, 0.0), "barSeriesMargin")
compare(empty.barSpacingRelative, true, "barSpacingRelative")
compare(empty.seriesList.length, 0, "seriesList")
compare(empty.selectedSeries, null, "selectedSeries")
@@ -140,6 +143,7 @@ Item {
compare(basic.multiSeriesUniform, true, "multiSeriesUniform")
compare(basic.barThickness, 0.1, "barThickness")
compare(basic.barSpacing, Qt.size(0.1, 0.1), "barSpacing")
+ compare(basic.barSeriesMargin, Qt.size(0.3, 0.3), "barSeriesMargin")
compare(basic.barSpacingRelative, false, "barSpacingRelative")
compare(basic.floorLevel, 1.0, "floorLevel")
waitForRendering(top)
@@ -149,11 +153,13 @@ Item {
basic.multiSeriesUniform = false
basic.barThickness = 0.5
basic.barSpacing = Qt.size(1.0, 0.0)
+ basic.barSeriesMargin = Qt.size(0.5, 0.0)
basic.barSpacingRelative = true
basic.floorLevel = 0.2
compare(basic.multiSeriesUniform, false, "multiSeriesUniform")
compare(basic.barThickness, 0.5, "barThickness")
compare(basic.barSpacing, Qt.size(1.0, 0.0), "barSpacing")
+ compare(basic.barSeriesMargin, Qt.size(0.5, 0.0), "barSeriesMargin")
compare(basic.barSpacingRelative, true, "barSpacingRelative")
compare(basic.floorLevel, 0.2, "floorLevel")
waitForRendering(top)
@@ -162,8 +168,10 @@ Item {
function test_3_basic_change_invalid() {
basic.barThickness = -1
basic.barSpacing = Qt.size(-1.0, -1.0)
+ basic.barSeriesMargin = Qt.size(-1.0, -1.0)
compare(basic.barThickness, -1/*0.5*/, "barThickness") // TODO: Fix once QTRD-3367 is done
compare(basic.barSpacing, Qt.size(-1.0, -1.0), "barSpacing")
+ compare(basic.barSeriesMargin, Qt.size(-1.0, -1.0), "barSeriesMargin")
waitForRendering(top)
basic.destroy()
waitForRendering(top)
diff --git a/tests/auto/qmltest/bars3d/tst_proxy.qml b/tests/auto/qmltest/bars3d/tst_proxy.qml
index ca8b8516..428000ac 100644
--- a/tests/auto/qmltest/bars3d/tst_proxy.qml
+++ b/tests/auto/qmltest/bars3d/tst_proxy.qml
@@ -28,7 +28,7 @@
****************************************************************************/
import QtQuick 2.0
-import QtDataVisualization 1.2
+import QtDataVisualization
import QtTest 1.0
Item {
diff --git a/tests/manual/barstest/chart.cpp b/tests/manual/barstest/chart.cpp
index 7d878046..4f006024 100644
--- a/tests/manual/barstest/chart.cpp
+++ b/tests/manual/barstest/chart.cpp
@@ -54,6 +54,8 @@ GraphModifier::GraphModifier(Q3DBars *barchart, QColorDialog *colorDialog)
m_static(true),
m_barSpacingX(0.1f),
m_barSpacingZ(0.1f),
+ m_barSeriesMarginX(0.0f),
+ m_barSeriesMarginZ(0.0f),
m_fontSize(20),
m_segments(10),
m_subSegments(3),
@@ -1624,6 +1626,18 @@ void GraphModifier::setSpacingSpecsZ(int spacing)
m_graph->setBarSpacing(QSizeF(m_barSpacingX, m_barSpacingZ));
}
+void GraphModifier::setMarginX(int margin)
+{
+ m_barSeriesMarginX = (float)margin / 100.0f;
+ m_graph->setBarSeriesMargin(QSizeF(m_barSeriesMarginX, m_barSeriesMarginZ));
+}
+
+void GraphModifier::setMarginZ(int margin)
+{
+ m_barSeriesMarginZ = (float)margin / 100.0f;
+ m_graph->setBarSeriesMargin(QSizeF(m_barSeriesMarginX, m_barSeriesMarginZ));
+}
+
void GraphModifier::setSampleCountX(int samples)
{
m_columnCount = samples;
diff --git a/tests/manual/barstest/chart.h b/tests/manual/barstest/chart.h
index 9a4cd60e..dabaa5e2 100644
--- a/tests/manual/barstest/chart.h
+++ b/tests/manual/barstest/chart.h
@@ -75,6 +75,8 @@ public:
void setSpecsZ(int bardepth);
void setSpacingSpecsX(int spacing);
void setSpacingSpecsZ(int spacing);
+ void setMarginX(int margin);
+ void setMarginZ(int margin);
void setSampleCountX(int samples);
void setSampleCountZ(int samples);
void setMinX(int min);
@@ -153,6 +155,8 @@ private:
bool m_static;
float m_barSpacingX;
float m_barSpacingZ;
+ float m_barSeriesMarginX;
+ float m_barSeriesMarginZ;
int m_fontSize;
int m_segments;
int m_subSegments;
diff --git a/tests/manual/barstest/main.cpp b/tests/manual/barstest/main.cpp
index a0379fd7..1b14d08d 100644
--- a/tests/manual/barstest/main.cpp
+++ b/tests/manual/barstest/main.cpp
@@ -304,6 +304,18 @@ int main(int argc, char **argv)
spacingSliderZ->setValue(10);
spacingSliderZ->setMaximum(200);
+ QSlider *marginSliderX = new QSlider(Qt::Horizontal, widget);
+ marginSliderX->setTickInterval(1);
+ marginSliderX->setMinimum(0);
+ marginSliderX->setValue(0);
+ marginSliderX->setMaximum(100);
+
+ QSlider *marginSliderZ = new QSlider(Qt::Horizontal, widget);
+ marginSliderZ->setTickInterval(1);
+ marginSliderZ->setMinimum(0);
+ marginSliderZ->setValue(0);
+ marginSliderZ->setMaximum(100);
+
QSlider *sampleSliderX = new QSlider(Qt::Horizontal, widget);
sampleSliderX->setTickInterval(1);
sampleSliderX->setMinimum(1);
@@ -433,6 +445,9 @@ int main(int argc, char **argv)
vLayout2->addWidget(new QLabel(QStringLiteral("Adjust relative bar spacing")), 0, Qt::AlignTop);
vLayout2->addWidget(spacingSliderX, 0, Qt::AlignTop);
vLayout2->addWidget(spacingSliderZ, 0, Qt::AlignTop);
+ vLayout2->addWidget(new QLabel(QStringLiteral("Adjust margin")), 0, Qt::AlignTop);
+ vLayout2->addWidget(marginSliderX, 0, Qt::AlignTop);
+ vLayout2->addWidget(marginSliderZ, 0, Qt::AlignTop);
vLayout2->addWidget(new QLabel(QStringLiteral("Adjust sample count")), 0, Qt::AlignTop);
vLayout2->addWidget(sampleSliderX, 0, Qt::AlignTop);
vLayout2->addWidget(sampleSliderZ, 0, Qt::AlignTop);
@@ -472,7 +487,7 @@ int main(int argc, char **argv)
vLayout3->addWidget(toggleCustomItemButton, 0, Qt::AlignTop);
vLayout3->addWidget(new QLabel(QStringLiteral("Adjust floor level")), 0, Qt::AlignTop);
vLayout3->addWidget(floorLevelSlider, 0, Qt::AlignTop);
- vLayout3->addWidget(new QLabel(QStringLiteral("Adjust margin")), 0, Qt::AlignTop);
+ vLayout3->addWidget(new QLabel(QStringLiteral("Adjust bar series margin")), 0, Qt::AlignTop);
vLayout3->addWidget(marginSlider, 1, Qt::AlignTop);
widget->show();
@@ -489,6 +504,9 @@ int main(int argc, char **argv)
QObject::connect(spacingSliderZ, &QSlider::valueChanged, modifier,
&GraphModifier::setSpacingSpecsZ);
+ QObject::connect(marginSliderX, &QSlider::valueChanged, modifier, &GraphModifier::setMarginX);
+ QObject::connect(marginSliderZ, &QSlider::valueChanged, modifier, &GraphModifier::setMarginZ);
+
QObject::connect(sampleSliderX, &QSlider::valueChanged, modifier,
&GraphModifier::setSampleCountX);
QObject::connect(sampleSliderZ, &QSlider::valueChanged, modifier,