summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@digia.com>2013-08-14 10:52:49 +0300
committerTomi Korpipää <tomi.korpipaa@digia.com>2013-08-14 10:57:38 +0300
commit18785c5e4a02d7c9da2f3f469c7aca6fbe644f10 (patch)
treeb73531a9a029ac07f00f2c47399dd65b727449ca /src
parentdf50cbc19ac2b6061b2f1e630a8e5020a1fa2dd0 (diff)
QML: Invokables to properties
Task-number: QTRD-2188 Change-Id: Id0edd2c1fb98621c0b3bf590ff1f0b7239fd7225 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/datavis3dqml2/declarativebars.cpp182
-rw-r--r--src/datavis3dqml2/declarativebars_p.h143
-rw-r--r--src/datavis3dqml2/declarativescatter.cpp129
-rw-r--r--src/datavis3dqml2/declarativescatter_p.h100
4 files changed, 418 insertions, 136 deletions
diff --git a/src/datavis3dqml2/declarativebars.cpp b/src/datavis3dqml2/declarativebars.cpp
index 04bb0adf..1f17d17b 100644
--- a/src/datavis3dqml2/declarativebars.cpp
+++ b/src/datavis3dqml2/declarativebars.cpp
@@ -23,10 +23,14 @@
QT_DATAVIS3D_BEGIN_NAMESPACE
+const QString smoothString(QStringLiteral("Smooth"));
+
DeclarativeBars::DeclarativeBars(QQuickItem *parent)
: QQuickItem(parent),
m_shared(0),
- m_initialisedSize(0, 0)
+ m_initialisedSize(0, 0),
+ m_cameraPreset(NoPreset),
+ m_theme(ThemeDefault)
{
setFlags(QQuickItem::ItemHasContents);
setAcceptedMouseButtons(Qt::AllButtons);
@@ -89,40 +93,155 @@ QSGNode *DeclarativeBars::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData
return node;
}
-void DeclarativeBars::setBarSpecs(QSizeF thickness, QSizeF spacing, bool relative)
+void DeclarativeBars::setupSampleSpace(int rowCount, int columnCount)
{
- m_shared->setBarSpecs(thickness, spacing, relative);
+ m_shared->setupSampleSpace(rowCount, columnCount);
}
-void DeclarativeBars::setBarType(MeshStyle style, bool smooth)
+void DeclarativeBars::setBarColor(QColor baseColor, QColor heightColor, QColor depthColor,
+ bool uniform)
{
- m_shared->setBarType(style, smooth);
+ m_shared->setObjectColor(baseColor, heightColor, depthColor, uniform);
}
-void DeclarativeBars::setupSampleSpace(int rowCount, int columnCount)
+void DeclarativeBars::setCameraPosition(qreal horizontal, qreal vertical, int distance)
{
- m_shared->setupSampleSpace(rowCount, columnCount);
+ m_shared->setCameraPosition(GLfloat(horizontal), GLfloat(vertical), GLint(distance));
+}
+
+// TODO needs proper axis support also in QML
+void DeclarativeBars::setSegmentCount(int segmentCount, qreal step, qreal minimum)
+{
+ QValueAxis *axis = static_cast<QValueAxis *>(m_shared->axisY());
+ if (axis) {
+ axis->setSegmentCount(segmentCount);
+ axis->setRange(minimum, segmentCount * step);
+ }
+}
+
+void DeclarativeBars::setData(QAbstractItemModel *data)
+{
+ static_cast<QItemModelBarDataProxy *>(m_shared->dataProxy())->setItemModel(data);
+}
+
+QAbstractItemModel *DeclarativeBars::data()
+{
+ return static_cast<QItemModelBarDataProxy *>(m_shared->dataProxy())->itemModel();
+}
+
+void DeclarativeBars::setMapping(QItemModelBarDataMapping *mapping)
+{
+ static_cast<QItemModelBarDataProxy *>(m_shared->dataProxy())->setMapping(mapping);
+}
+
+QItemModelBarDataMapping *DeclarativeBars::mapping() const
+{
+ return static_cast<QItemModelBarDataProxy *>(m_shared->dataProxy())->mapping();
+}
+
+void DeclarativeBars::setBarThickness(QSizeF thickness)
+{
+ m_shared->setBarSpecs(thickness, barSpacing(), isBarSpacingRelative());
+}
+
+QSizeF DeclarativeBars::barThickness()
+{
+ return m_shared->barThickness();
+}
+
+void DeclarativeBars::setBarSpacing(QSizeF spacing)
+{
+ m_shared->setBarSpecs(barThickness(), spacing, isBarSpacingRelative());
+}
+
+QSizeF DeclarativeBars::barSpacing()
+{
+ return m_shared->barSpacing();
+}
+
+void DeclarativeBars::setBarSpacingRelative(bool relative)
+{
+ m_shared->setBarSpecs(barThickness(), barSpacing(), relative);
+}
+
+bool DeclarativeBars::isBarSpacingRelative()
+{
+ return m_shared->isBarSpecRelative();
+}
+
+void DeclarativeBars::setBarType(MeshStyle style)
+{
+ QString objFile = m_shared->objFile();
+ bool smooth = objFile.endsWith(smoothString);
+ m_shared->setBarType(QtDataVis3D::MeshStyle(style), smooth);
+}
+
+DeclarativeBars::MeshStyle DeclarativeBars::barType()
+{
+ QString objFile = m_shared->objFile();
+ if (objFile.contains("/sphere"))
+ return Spheres;
+ else
+ return Dots;
+}
+
+void DeclarativeBars::setBarSmooth(bool smooth)
+{
+ QString objFile = m_shared->objFile();
+ if (objFile.endsWith(smoothString)) {
+ if (smooth)
+ return; // Already smooth; do nothing
+ else // Rip Smooth off the end
+ objFile.resize(objFile.indexOf(smoothString));
+ } else {
+ if (!smooth) // Already flat; do nothing
+ return;
+ else // Append Smooth to the end
+ objFile.append(smoothString);
+ }
+ m_shared->setMeshFileName(objFile);
+}
+
+bool DeclarativeBars::barSmooth()
+{
+ QString objFile = m_shared->objFile();
+ return objFile.endsWith(smoothString);
+}
+
+void DeclarativeBars::setMeshFileName(const QString &objFileName)
+{
+ m_shared->setMeshFileName(objFileName);
+}
+
+QString DeclarativeBars::meshFileName()
+{
+ return m_shared->objFile();
}
void DeclarativeBars::setCameraPreset(CameraPreset preset)
{
- m_shared->setCameraPreset(preset);
+ // TODO: Implement correctly once "improved camera api" (QTRD-2122) is implemented
+ // We need to save this locally, as there are no getters for it in controller
+ m_cameraPreset = preset;
+ m_shared->setCameraPreset(QtDataVis3D::CameraPreset(preset));
}
-void DeclarativeBars::setCameraPosition(qreal horizontal, qreal vertical, int distance)
+DeclarativeBars::CameraPreset DeclarativeBars::cameraPreset()
{
- m_shared->setCameraPosition(GLfloat(horizontal), GLfloat(vertical), GLint(distance));
+ return m_cameraPreset;
}
void DeclarativeBars::setTheme(ColorTheme theme)
{
- m_shared->setColorTheme(theme);
+ // TODO: Implement correctly once "user-modifiable themes" (QTRD-2120) is implemented
+ // We need to save this locally, as there are no getters for it in controller
+ m_theme = theme;
+ m_shared->setColorTheme(QtDataVis3D::ColorTheme(theme));
}
-void DeclarativeBars::setBarColor(QColor baseColor, QColor heightColor, QColor depthColor,
- bool uniform)
+DeclarativeBars::ColorTheme DeclarativeBars::theme()
{
- m_shared->setObjectColor(baseColor, heightColor, depthColor, uniform);
+ return m_theme;
}
void DeclarativeBars::setFontSize(float fontsize)
@@ -175,26 +294,6 @@ bool DeclarativeBars::isBackgroundVisible()
return m_shared->backgroundEnabled();
}
-// TODO needs proper axis support also in QML
-void DeclarativeBars::setSegmentCount(int segmentCount, qreal step, qreal minimum)
-{
- QValueAxis *axis = static_cast<QValueAxis *>(m_shared->axisY());
- if (axis) {
- axis->setSegmentCount(segmentCount);
- axis->setRange(minimum, segmentCount * step);
- }
-}
-
-void DeclarativeBars::setData(QAbstractItemModel *data)
-{
- static_cast<QItemModelBarDataProxy *>(m_shared->dataProxy())->setItemModel(data);
-}
-
-QAbstractItemModel *DeclarativeBars::data()
-{
- return static_cast<QItemModelBarDataProxy *>(m_shared->dataProxy())->itemModel();
-}
-
void DeclarativeBars::setSelectionMode(DeclarativeBars::SelectionMode mode)
{
m_shared->setSelectionMode(QtDataVis3D::SelectionMode(mode));
@@ -215,16 +314,6 @@ DeclarativeBars::ShadowQuality DeclarativeBars::shadowQuality()
return DeclarativeBars::ShadowQuality(m_shared->shadowQuality());
}
-QItemModelBarDataMapping *DeclarativeBars::mapping() const
-{
- return static_cast<QItemModelBarDataProxy *>(m_shared->dataProxy())->mapping();
-}
-
-void DeclarativeBars::setMapping(QItemModelBarDataMapping *mapping)
-{
- static_cast<QItemModelBarDataProxy *>(m_shared->dataProxy())->setMapping(mapping);
-}
-
int DeclarativeBars::rows() const
{
return m_shared->rowCount();
@@ -245,11 +334,6 @@ void DeclarativeBars::setColumns(int columns)
setupSampleSpace(rows(), columns);
}
-void DeclarativeBars::setMeshFileName(const QString &objFileName)
-{
- m_shared->setMeshFileName(objFileName);
-}
-
void DeclarativeBars::mousePressEvent(QMouseEvent *event)
{
QPoint mousePos = event->pos();
diff --git a/src/datavis3dqml2/declarativebars_p.h b/src/datavis3dqml2/declarativebars_p.h
index 0abd8398..36f44542 100644
--- a/src/datavis3dqml2/declarativebars_p.h
+++ b/src/datavis3dqml2/declarativebars_p.h
@@ -44,19 +44,30 @@ class DeclarativeBars : public QQuickItem
{
Q_OBJECT
Q_PROPERTY(QAbstractItemModel *data READ data WRITE setData)
+ Q_PROPERTY(QItemModelBarDataMapping *mapping READ mapping WRITE setMapping)
Q_PROPERTY(SelectionMode selectionMode READ selectionMode WRITE setSelectionMode)
Q_PROPERTY(LabelTransparency labelTransparency READ labelTransparency WRITE setLabelTransparency)
Q_PROPERTY(ShadowQuality shadowQuality READ shadowQuality WRITE setShadowQuality)
+ Q_PROPERTY(MeshStyle barType READ barType WRITE setBarType)
+ Q_PROPERTY(CameraPreset cameraPreset READ cameraPreset WRITE setCameraPreset)
+ Q_PROPERTY(ColorTheme theme READ theme WRITE setTheme)
+ Q_PROPERTY(QSizeF barThickness READ barThickness WRITE setBarThickness)
+ Q_PROPERTY(QSizeF barSpacing READ barSpacing WRITE setBarSpacing)
+ Q_PROPERTY(bool barSpacingRelative READ isBarSpacingRelative WRITE setBarSpacingRelative)
+ Q_PROPERTY(bool barSmooth READ barSmooth WRITE setBarSmooth)
+ Q_PROPERTY(QString meshFileName READ meshFileName WRITE setMeshFileName)
Q_PROPERTY(QFont font READ font WRITE setFont)
Q_PROPERTY(float fontSize READ fontSize WRITE setFontSize)
Q_PROPERTY(bool gridVisible READ isGridVisible WRITE setGridVisible)
Q_PROPERTY(bool backgroundVisible READ isBackgroundVisible WRITE setBackgroundVisible)
Q_PROPERTY(int rows READ rows WRITE setRows)
Q_PROPERTY(int columns READ columns WRITE setColumns)
- Q_PROPERTY(QItemModelBarDataMapping *mapping READ mapping WRITE setMapping)
Q_ENUMS(SelectionMode)
Q_ENUMS(ShadowQuality)
Q_ENUMS(LabelTransparency)
+ Q_ENUMS(MeshStyle)
+ Q_ENUMS(CameraPreset)
+ Q_ENUMS(ColorTheme)
public:
// Duplicated here to be able to use the same enums
@@ -83,6 +94,56 @@ public:
TransparencyNoBackground // Draw just text on transparent background
};
+ enum MeshStyle {
+ Bars = 0,
+ Pyramids,
+ Cones,
+ Cylinders,
+ BevelBars,
+ Spheres,
+ Dots
+ };
+
+ enum CameraPreset {
+ NoPreset = -1,
+ PresetFrontLow = 0,
+ PresetFront,
+ PresetFrontHigh,
+ PresetLeftLow,
+ PresetLeft,
+ PresetLeftHigh,
+ PresetRightLow,
+ PresetRight,
+ PresetRightHigh,
+ PresetBehindLow,
+ PresetBehind,
+ PresetBehindHigh,
+ PresetIsometricLeft,
+ PresetIsometricLeftHigh,
+ PresetIsometricRight,
+ PresetIsometricRightHigh,
+ PresetDirectlyAbove,
+ PresetDirectlyAboveCW45,
+ PresetDirectlyAboveCCW45,
+ PresetFrontBelow, // These work only for graphs including negative values.
+ PresetLeftBelow, // They act as Preset...Low for positive-only values.
+ PresetRightBelow,
+ PresetBehindBelow,
+ PresetDirectlyBelow
+ };
+
+ enum ColorTheme {
+ ThemeDefault = -1,
+ ThemeSystem = 0,
+ ThemeBlueCerulean,
+ ThemeBlueIcy,
+ ThemeBlueNcs,
+ ThemeBrownSand,
+ ThemeDark,
+ ThemeHighContrast,
+ ThemeLight
+ };
+
public:
explicit DeclarativeBars(QQuickItem *parent = 0);
~DeclarativeBars();
@@ -90,48 +151,65 @@ public:
void classBegin();
void componentComplete();
- // Add whole data set.
- void setData(QAbstractItemModel *data);
- QAbstractItemModel *data();
-
- // bar thickness, spacing between bars, and is spacing relative to thickness or absolute
- // y -component sets the thickness/spacing of z -direction
- // With relative 0.0f means side-to-side, 1.0f = one thickness in between
- Q_INVOKABLE void setBarSpecs(QSizeF thickness = QSizeF(1.0f, 1.0f),
- QSizeF spacing = QSizeF(1.0f, 1.0f),
- bool relative = true);
-
- // bar type; bars (=cubes), pyramids, cones, cylinders, etc.
- Q_INVOKABLE void setBarType(MeshStyle style, bool smooth = false);
-
- // override bar type with own mesh
- Q_INVOKABLE void setMeshFileName(const QString &objFileName);
-
- // how many samples per row and column
+ // how many samples per row and column
Q_INVOKABLE void setupSampleSpace(int rowCount, int columnCount);
- // Select preset camera placement
- Q_INVOKABLE void setCameraPreset(CameraPreset preset);
+ // Set color if you don't want to use themes. Set uniform to false if you want the (height)
+ // color to change from bottom to top
+ Q_INVOKABLE void setBarColor(QColor baseColor, QColor heightColor, QColor depthColor,
+ bool uniform = true);
// Set camera rotation if you don't want to use the presets (in horizontal (-180...180) and
// vertical (0...90) (or (-90...90) if there are negative values) angles and distance in
// percentage (10...500))
Q_INVOKABLE void setCameraPosition(qreal horizontal, qreal vertical, int distance);
- // Set theme (bar colors, shaders, window color, background colors, light intensity and text
- // colors are affected)
- Q_INVOKABLE void setTheme(ColorTheme theme);
-
- // Set color if you don't want to use themes. Set uniform to false if you want the (height)
- // color to change from bottom to top
- Q_INVOKABLE void setBarColor(QColor baseColor, QColor heightColor, QColor depthColor,
- bool uniform = true);
-
// Set segment count and step. Note; segmentCount * step should be the maximum possible value of data
// set. Minimum is the absolute minimum possible value a bar can have. This is especially
// important to set if values can be negative.
Q_INVOKABLE void setSegmentCount(int segmentCount, qreal step, qreal minimum);
+ // Add whole data set.
+ void setData(QAbstractItemModel *data);
+ QAbstractItemModel *data();
+
+ QItemModelBarDataMapping *mapping() const;
+ void setMapping(QItemModelBarDataMapping *mapping);
+
+ // Set bar thickness. Y -component sets the thickness of z -direction.
+ void setBarThickness(QSizeF thickness);
+ QSizeF barThickness();
+
+ // Set spacing between bars. Y -component sets the spacing of z -direction.
+ // If spacing is relative, 0.0f means side-to-side and 1.0f = one thickness in between.
+ void setBarSpacing(QSizeF spacing);
+ QSizeF barSpacing();
+
+ // Set bar spacing relative to thickness or absolute
+ void setBarSpacingRelative(bool relative);
+ bool isBarSpacingRelative();
+
+ // Bar type
+ void setBarType(MeshStyle style);
+ MeshStyle barType();
+
+ // Bar smoothing
+ void setBarSmooth(bool smooth);
+ bool barSmooth();
+
+ // override object type with own mesh
+ void setMeshFileName(const QString &objFileName);
+ QString meshFileName();
+
+ // Select preset camera placement
+ void setCameraPreset(CameraPreset preset);
+ CameraPreset cameraPreset();
+
+ // Set theme (object colors, shaders, window color, background colors, light intensity and text
+ // colors are affected)
+ void setTheme(ColorTheme theme);
+ ColorTheme theme();
+
// Change selection mode; single bar, bar and row, bar and column, or all
void setSelectionMode(SelectionMode mode);
SelectionMode selectionMode();
@@ -160,9 +238,6 @@ public:
void setShadowQuality(ShadowQuality quality);
ShadowQuality shadowQuality();
- QItemModelBarDataMapping *mapping() const;
- void setMapping(QItemModelBarDataMapping *mapping);
-
int rows() const;
void setRows(int rows);
@@ -189,6 +264,8 @@ protected:
private:
QSize m_initialisedSize;
+ CameraPreset m_cameraPreset;
+ ColorTheme m_theme;
};
QT_DATAVIS3D_END_NAMESPACE
diff --git a/src/datavis3dqml2/declarativescatter.cpp b/src/datavis3dqml2/declarativescatter.cpp
index 17015a2b..ad5ecd26 100644
--- a/src/datavis3dqml2/declarativescatter.cpp
+++ b/src/datavis3dqml2/declarativescatter.cpp
@@ -22,10 +22,14 @@
QT_DATAVIS3D_BEGIN_NAMESPACE
+const QString smoothString(QStringLiteral("Smooth"));
+
DeclarativeScatter::DeclarativeScatter(QQuickItem *parent)
: QQuickItem(parent),
m_shared(0),
- m_initialisedSize(0, 0)
+ m_initialisedSize(0, 0),
+ m_cameraPreset(NoPreset),
+ m_theme(ThemeDefault)
{
setFlags(QQuickItem::ItemHasContents);
setAcceptedMouseButtons(Qt::AllButtons);
@@ -88,30 +92,110 @@ QSGNode *DeclarativeScatter::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeDa
return node;
}
-void DeclarativeScatter::setObjectType(MeshStyle style, bool smooth)
+void DeclarativeScatter::setCameraPosition(qreal horizontal, qreal vertical, int distance)
+{
+ m_shared->setCameraPosition(GLfloat(horizontal), GLfloat(vertical), GLint(distance));
+}
+
+void DeclarativeScatter::setObjectColor(QColor baseColor, QColor heightColor, QColor depthColor,
+ bool uniform)
+{
+ m_shared->setObjectColor(baseColor, heightColor, depthColor, uniform);
+}
+
+void DeclarativeScatter::setData(QAbstractItemModel *data)
+{
+ static_cast<QItemModelScatterDataProxy *>(m_shared->dataProxy())->setItemModel(data);
+}
+
+QAbstractItemModel *DeclarativeScatter::data()
+{
+ return static_cast<QItemModelScatterDataProxy *>(m_shared->dataProxy())->itemModel();
+}
+
+void DeclarativeScatter::setMapping(QItemModelScatterDataMapping *mapping)
+{
+ static_cast<QItemModelScatterDataProxy *>(m_shared->dataProxy())->setMapping(mapping);
+}
+
+QItemModelScatterDataMapping *DeclarativeScatter::mapping() const
+{
+ return static_cast<QItemModelScatterDataProxy *>(m_shared->dataProxy())->mapping();
+}
+
+void DeclarativeScatter::setObjectType(MeshStyle style)
+{
+ QString objFile = m_shared->objFile();
+ bool smooth = objFile.endsWith(smoothString);
+ m_shared->setObjectType(QtDataVis3D::MeshStyle(style), smooth);
+}
+
+DeclarativeScatter::MeshStyle DeclarativeScatter::objectType()
+{
+ QString objFile = m_shared->objFile();
+ if (objFile.contains("/sphere"))
+ return Spheres;
+ else
+ return Dots;
+}
+
+void DeclarativeScatter::setObjectSmooth(bool smooth)
+{
+ QString objFile = m_shared->objFile();
+ if (objFile.endsWith(smoothString)) {
+ if (smooth)
+ return; // Already smooth; do nothing
+ else // Rip Smooth off the end
+ objFile.resize(objFile.indexOf(smoothString));
+ } else {
+ if (!smooth) // Already flat; do nothing
+ return;
+ else // Append Smooth to the end
+ objFile.append(smoothString);
+ }
+ m_shared->setMeshFileName(objFile);
+}
+
+bool DeclarativeScatter::objectSmooth()
+{
+ QString objFile = m_shared->objFile();
+ return objFile.endsWith(smoothString);
+}
+
+void DeclarativeScatter::setMeshFileName(const QString &objFileName)
+{
+ m_shared->setMeshFileName(objFileName);
+}
+
+QString DeclarativeScatter::meshFileName()
{
- m_shared->setObjectType(style, smooth);
+ return m_shared->objFile();
}
void DeclarativeScatter::setCameraPreset(CameraPreset preset)
{
- m_shared->setCameraPreset(preset);
+ // TODO: Implement correctly once "improved camera api" (QTRD-2122) is implemented
+ // We need to save this locally, as there are no getters for it in controller
+ m_cameraPreset = preset;
+ m_shared->setCameraPreset(QtDataVis3D::CameraPreset(preset));
}
-void DeclarativeScatter::setCameraPosition(qreal horizontal, qreal vertical, int distance)
+DeclarativeScatter::CameraPreset DeclarativeScatter::cameraPreset()
{
- m_shared->setCameraPosition(GLfloat(horizontal), GLfloat(vertical), GLint(distance));
+ return m_cameraPreset;
}
void DeclarativeScatter::setTheme(ColorTheme theme)
{
- m_shared->setColorTheme(theme);
+ // TODO: Implement correctly once "user-modifiable themes" (QTRD-2120) is implemented
+ // We need to save this locally, as there are no getters for it in controller
+ m_theme = theme;
+ m_shared->setColorTheme(QtDataVis3D::ColorTheme(theme));
}
-void DeclarativeScatter::setObjectColor(QColor baseColor, QColor heightColor, QColor depthColor,
- bool uniform)
+DeclarativeScatter::ColorTheme DeclarativeScatter::theme()
{
- m_shared->setObjectColor(baseColor, heightColor, depthColor, uniform);
+ return m_theme;
}
void DeclarativeScatter::setFontSize(float fontsize)
@@ -164,16 +248,6 @@ bool DeclarativeScatter::isBackgroundVisible()
return m_shared->backgroundEnabled();
}
-void DeclarativeScatter::setData(QAbstractItemModel *data)
-{
- static_cast<QItemModelScatterDataProxy *>(m_shared->dataProxy())->setItemModel(data);
-}
-
-QAbstractItemModel *DeclarativeScatter::data()
-{
- return static_cast<QItemModelScatterDataProxy *>(m_shared->dataProxy())->itemModel();
-}
-
void DeclarativeScatter::setSelectionMode(DeclarativeScatter::SelectionMode mode)
{
m_shared->setSelectionMode(QtDataVis3D::SelectionMode(mode));
@@ -194,21 +268,6 @@ DeclarativeScatter::ShadowQuality DeclarativeScatter::shadowQuality()
return DeclarativeScatter::ShadowQuality(m_shared->shadowQuality());
}
-QItemModelScatterDataMapping *DeclarativeScatter::mapping() const
-{
- return static_cast<QItemModelScatterDataProxy *>(m_shared->dataProxy())->mapping();
-}
-
-void DeclarativeScatter::setMapping(QItemModelScatterDataMapping *mapping)
-{
- static_cast<QItemModelScatterDataProxy *>(m_shared->dataProxy())->setMapping(mapping);
-}
-
-void DeclarativeScatter::setMeshFileName(const QString &objFileName)
-{
- m_shared->setMeshFileName(objFileName);
-}
-
void DeclarativeScatter::mousePressEvent(QMouseEvent *event)
{
QPoint mousePos = event->pos();
diff --git a/src/datavis3dqml2/declarativescatter_p.h b/src/datavis3dqml2/declarativescatter_p.h
index d64c6811..76a8eca2 100644
--- a/src/datavis3dqml2/declarativescatter_p.h
+++ b/src/datavis3dqml2/declarativescatter_p.h
@@ -44,17 +44,25 @@ class DeclarativeScatter : public QQuickItem
{
Q_OBJECT
Q_PROPERTY(QAbstractItemModel *data READ data WRITE setData)
+ Q_PROPERTY(QItemModelScatterDataMapping *mapping READ mapping WRITE setMapping)
Q_PROPERTY(SelectionMode selectionMode READ selectionMode WRITE setSelectionMode)
Q_PROPERTY(LabelTransparency labelTransparency READ labelTransparency WRITE setLabelTransparency)
Q_PROPERTY(ShadowQuality shadowQuality READ shadowQuality WRITE setShadowQuality)
+ Q_PROPERTY(MeshStyle objectType READ objectType WRITE setObjectType)
+ Q_PROPERTY(CameraPreset cameraPreset READ cameraPreset WRITE setCameraPreset)
+ Q_PROPERTY(ColorTheme theme READ theme WRITE setTheme)
+ Q_PROPERTY(bool objectSmooth READ objectSmooth WRITE setObjectSmooth)
+ Q_PROPERTY(QString meshFileName READ meshFileName WRITE setMeshFileName)
Q_PROPERTY(QFont font READ font WRITE setFont)
Q_PROPERTY(float fontSize READ fontSize WRITE setFontSize)
Q_PROPERTY(bool gridVisible READ isGridVisible WRITE setGridVisible)
Q_PROPERTY(bool backgroundVisible READ isBackgroundVisible WRITE setBackgroundVisible)
- Q_PROPERTY(QItemModelScatterDataMapping *mapping READ mapping WRITE setMapping)
Q_ENUMS(SelectionMode)
Q_ENUMS(ShadowQuality)
Q_ENUMS(LabelTransparency)
+ Q_ENUMS(MeshStyle)
+ Q_ENUMS(CameraPreset)
+ Q_ENUMS(ColorTheme)
public:
// Duplicated here to be able to use the same enums
@@ -81,6 +89,51 @@ public:
TransparencyNoBackground // Draw just text on transparent background
};
+ enum MeshStyle {
+ Spheres = 5,
+ Dots
+ };
+
+ enum CameraPreset {
+ NoPreset = -1,
+ PresetFrontLow = 0,
+ PresetFront,
+ PresetFrontHigh,
+ PresetLeftLow,
+ PresetLeft,
+ PresetLeftHigh,
+ PresetRightLow,
+ PresetRight,
+ PresetRightHigh,
+ PresetBehindLow,
+ PresetBehind,
+ PresetBehindHigh,
+ PresetIsometricLeft,
+ PresetIsometricLeftHigh,
+ PresetIsometricRight,
+ PresetIsometricRightHigh,
+ PresetDirectlyAbove,
+ PresetDirectlyAboveCW45,
+ PresetDirectlyAboveCCW45,
+ PresetFrontBelow, // These work only for graphs including negative values.
+ PresetLeftBelow, // They act as Preset...Low for positive-only values.
+ PresetRightBelow,
+ PresetBehindBelow,
+ PresetDirectlyBelow
+ };
+
+ enum ColorTheme {
+ ThemeDefault = -1,
+ ThemeSystem = 0,
+ ThemeBlueCerulean,
+ ThemeBlueIcy,
+ ThemeBlueNcs,
+ ThemeBrownSand,
+ ThemeDark,
+ ThemeHighContrast,
+ ThemeLight
+ };
+
public:
explicit DeclarativeScatter(QQuickItem *parent = 0);
~DeclarativeScatter();
@@ -88,32 +141,42 @@ public:
void classBegin();
void componentComplete();
+ // Set camera rotation if you don't want to use the presets (in horizontal (-180...180) and
+ // vertical (-90...90) angles and distance in percentage (10...500))
+ Q_INVOKABLE void setCameraPosition(qreal horizontal, qreal vertical, int distance);
+
+ // Set color if you don't want to use themes. Set uniform to false if you want the (height)
+ // color to change from bottom to top
+ Q_INVOKABLE void setObjectColor(QColor baseColor, QColor heightColor, QColor depthColor,
+ bool uniform = true);
+
// Add whole data set.
void setData(QAbstractItemModel *data);
QAbstractItemModel *data();
- // dot type
- Q_INVOKABLE void setObjectType(MeshStyle style, bool smooth = false);
+ QItemModelScatterDataMapping *mapping() const;
+ void setMapping(QItemModelScatterDataMapping *mapping);
+
+ // Object type
+ void setObjectType(MeshStyle style);
+ MeshStyle objectType();
+
+ // Object smoothing
+ void setObjectSmooth(bool smooth);
+ bool objectSmooth();
// override object type with own mesh
- Q_INVOKABLE void setMeshFileName(const QString &objFileName);
+ void setMeshFileName(const QString &objFileName);
+ QString meshFileName();
// Select preset camera placement
- Q_INVOKABLE void setCameraPreset(CameraPreset preset);
-
- // Set camera rotation if you don't want to use the presets (in horizontal (-180...180) and
- // vertical (0...90) (or (-90...90) if there are negative values) angles and distance in
- // percentage (10...500))
- Q_INVOKABLE void setCameraPosition(qreal horizontal, qreal vertical, int distance);
+ void setCameraPreset(CameraPreset preset);
+ CameraPreset cameraPreset();
// Set theme (object colors, shaders, window color, background colors, light intensity and text
// colors are affected)
- Q_INVOKABLE void setTheme(ColorTheme theme);
-
- // Set color if you don't want to use themes. Set uniform to false if you want the (height)
- // color to change from bottom to top
- Q_INVOKABLE void setObjectColor(QColor baseColor, QColor heightColor, QColor depthColor,
- bool uniform = true);
+ void setTheme(ColorTheme theme);
+ ColorTheme theme();
// Change selection mode
void setSelectionMode(SelectionMode mode);
@@ -143,9 +206,6 @@ public:
void setShadowQuality(ShadowQuality quality);
ShadowQuality shadowQuality();
- QItemModelScatterDataMapping *mapping() const;
- void setMapping(QItemModelScatterDataMapping *mapping);
-
public slots:
// Used to detect when shadow quality changes autonomously due to e.g. resizing.
void handleShadowQualityUpdate(QtDataVis3D::ShadowQuality quality);
@@ -165,6 +225,8 @@ protected:
private:
QSize m_initialisedSize;
+ CameraPreset m_cameraPreset;
+ ColorTheme m_theme;
};
QT_DATAVIS3D_END_NAMESPACE