summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2017-11-03 07:15:50 +0100
committerLiang Qi <liang.qi@qt.io>2017-11-03 07:15:50 +0100
commit85793744503112e13abe47b31d108f6b6ee998d9 (patch)
treeb818e39a8ff6fa024f81a374724b9fd6e5100d56 /src
parentdad8cdbac13eaf3ed33fdf4157ebc242d5c13db5 (diff)
parentab6f94d6fb186d0003679fb4541c939555fd01c9 (diff)
Merge remote-tracking branch 'origin/5.9' into 5.10
Conflicts: .qmake.conf tests/manual/chartwidgettest/mainwidget.cpp tests/manual/wavechart/wavechart.cpp Change-Id: I18962ddc37a91daa23571eb04e35eec828aceef8
Diffstat (limited to 'src')
-rw-r--r--src/charts/axis/valueaxis/qvalueaxis.cpp16
-rw-r--r--src/charts/xychart/qxyseries.cpp6
-rw-r--r--src/chartsqml2/declarativeopenglrendernode.cpp29
3 files changed, 34 insertions, 17 deletions
diff --git a/src/charts/axis/valueaxis/qvalueaxis.cpp b/src/charts/axis/valueaxis/qvalueaxis.cpp
index e8f9698f..42dd8ed9 100644
--- a/src/charts/axis/valueaxis/qvalueaxis.cpp
+++ b/src/charts/axis/valueaxis/qvalueaxis.cpp
@@ -408,25 +408,13 @@ void QValueAxisPrivate::setRange(qreal min, qreal max)
return;
}
- bool changeMin = false;
- if (m_min == 0 || min == 0)
- changeMin = !qFuzzyCompare(1 + m_min, 1 + min);
- else
- changeMin = !qFuzzyCompare(m_min, min);
-
- bool changeMax = false;
- if (m_max == 0 || max == 0)
- changeMax = !qFuzzyCompare(1 + m_max, 1 + max);
- else
- changeMax = !qFuzzyCompare(m_max, max);
-
- if (changeMin) {
+ if (m_min != min) {
m_min = min;
changed = true;
emit q->minChanged(min);
}
- if (changeMax) {
+ if (m_max != max) {
m_max = max;
changed = true;
emit q->maxChanged(max);
diff --git a/src/charts/xychart/qxyseries.cpp b/src/charts/xychart/qxyseries.cpp
index 40382d15..c85d5340 100644
--- a/src/charts/xychart/qxyseries.cpp
+++ b/src/charts/xychart/qxyseries.cpp
@@ -1001,6 +1001,9 @@ void QXYSeriesPrivate::initializeAnimations(QtCharts::QChart::AnimationOptions o
void QXYSeriesPrivate::drawSeriesPointLabels(QPainter *painter, const QVector<QPointF> &points,
const int offset)
{
+ if (points.size() == 0)
+ return;
+
static const QString xPointTag(QLatin1String("@xPoint"));
static const QString yPointTag(QLatin1String("@yPoint"));
const int labelOffset = offset + 2;
@@ -1010,7 +1013,8 @@ void QXYSeriesPrivate::drawSeriesPointLabels(QPainter *painter, const QVector<QP
QFontMetrics fm(painter->font());
// m_points is used for the label here as it has the series point information
// points variable passed is used for positioning because it has the coordinates
- for (int i(0); i < m_points.size(); i++) {
+ const int pointCount = qMin(points.size(), m_points.size());
+ for (int i(0); i < pointCount; i++) {
QString pointLabel = m_pointLabelsFormat;
pointLabel.replace(xPointTag, presenter()->numberToString(m_points.at(i).x()));
pointLabel.replace(yPointTag, presenter()->numberToString(m_points.at(i).y()));
diff --git a/src/chartsqml2/declarativeopenglrendernode.cpp b/src/chartsqml2/declarativeopenglrendernode.cpp
index a0b4ec7f..742a9301 100644
--- a/src/chartsqml2/declarativeopenglrendernode.cpp
+++ b/src/chartsqml2/declarativeopenglrendernode.cpp
@@ -88,6 +88,26 @@ DeclarativeOpenGLRenderNode::~DeclarativeOpenGLRenderNode()
qDeleteAll(m_mouseEvents);
}
+static const char *vertexSourceCore =
+ "#version 150\n"
+ "in vec2 points;\n"
+ "uniform vec2 min;\n"
+ "uniform vec2 delta;\n"
+ "uniform float pointSize;\n"
+ "uniform mat4 matrix;\n"
+ "void main() {\n"
+ " vec2 normalPoint = vec2(-1, -1) + ((points - min) / delta);\n"
+ " gl_Position = matrix * vec4(normalPoint, 0, 1);\n"
+ " gl_PointSize = pointSize;\n"
+ "}";
+static const char *fragmentSourceCore =
+ "#version 150\n"
+ "uniform vec3 color;\n"
+ "out vec4 fragColor;\n"
+ "void main() {\n"
+ " fragColor = vec4(color,1);\n"
+ "}\n";
+
static const char *vertexSource =
"attribute highp vec2 points;\n"
"uniform highp vec2 min;\n"
@@ -111,8 +131,13 @@ void DeclarativeOpenGLRenderNode::initGL()
recreateFBO();
m_program = new QOpenGLShaderProgram;
- m_program->addShaderFromSourceCode(QOpenGLShader::Vertex, vertexSource);
- m_program->addShaderFromSourceCode(QOpenGLShader::Fragment, fragmentSource);
+ if (QOpenGLContext::currentContext()->format().profile() == QSurfaceFormat::CoreProfile) {
+ m_program->addShaderFromSourceCode(QOpenGLShader::Vertex, vertexSourceCore);
+ m_program->addShaderFromSourceCode(QOpenGLShader::Fragment, fragmentSourceCore);
+ } else {
+ m_program->addShaderFromSourceCode(QOpenGLShader::Vertex, vertexSource);
+ m_program->addShaderFromSourceCode(QOpenGLShader::Fragment, fragmentSource);
+ }
m_program->bindAttributeLocation("points", 0);
m_program->link();