diff options
author | Liang Qi <liang.qi@qt.io> | 2017-11-03 07:15:50 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2017-11-03 07:15:50 +0100 |
commit | 85793744503112e13abe47b31d108f6b6ee998d9 (patch) | |
tree | b818e39a8ff6fa024f81a374724b9fd6e5100d56 /src | |
parent | dad8cdbac13eaf3ed33fdf4157ebc242d5c13db5 (diff) | |
parent | ab6f94d6fb186d0003679fb4541c939555fd01c9 (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.cpp | 16 | ||||
-rw-r--r-- | src/charts/xychart/qxyseries.cpp | 6 | ||||
-rw-r--r-- | src/chartsqml2/declarativeopenglrendernode.cpp | 29 |
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(); |