Merge remote-tracking branch 'origin/5.11' into 5.12

Change-Id: I66c7f18a2abd13601da0947919436f7da3549ae9
This commit is contained in:
Qt Forward Merge Bot 2018-09-07 01:00:20 +02:00
commit 295cd87c6d
26 changed files with 166 additions and 44 deletions

View File

@ -53,7 +53,7 @@
#include <QtConcurrentRun>
#include <QTime>
static float quadVert[] = {
static float quadVert[] = { // Y up, front = CW
-1, -1, 0,
-1, 1, 0,
1, -1, 0,

View File

@ -59,7 +59,7 @@
// Vulkan Y is negated in clip space and the near/far plane is at 0/1 instead
// of -1/1. These will be corrected for by an extra transformation when
// calculating the modelview-projection matrix.
static float vertexData[] = {
static float vertexData[] = { // Y up, front = CW
// x, y, z, u, v
-1, -1, 0, 0, 1,
-1, 1, 0, 0, 0,

View File

@ -56,7 +56,7 @@
// Vulkan Y is negated in clip space and the near/far plane is at 0/1 instead
// of -1/1. These will be corrected for by an extra transformation when
// calculating the modelview-projection matrix.
static float vertexData[] = {
static float vertexData[] = { // Y up, front = CCW
0.0f, 0.5f, 1.0f, 0.0f, 0.0f,
-0.5f, -0.5f, 0.0f, 1.0f, 0.0f,
0.5f, -0.5f, 0.0f, 0.0f, 1.0f
@ -337,7 +337,7 @@ void TriangleRenderer::initResources()
rs.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO;
rs.polygonMode = VK_POLYGON_MODE_FILL;
rs.cullMode = VK_CULL_MODE_NONE; // we want the back face as well
rs.frontFace = VK_FRONT_FACE_CLOCKWISE;
rs.frontFace = VK_FRONT_FACE_COUNTER_CLOCKWISE;
rs.lineWidth = 1.0f;
pipelineInfo.pRasterizationState = &rs;

View File

@ -232,7 +232,7 @@ void MainWindow::highlight(const QModelIndex &index)
return;
QModelIndex sourceIndex = proxy->mapToSource(index);
treeView->selectionModel()->select(sourceIndex, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);
treeView->scrollTo(index);
treeView->scrollTo(sourceIndex);
}
//! [6]

22
src/3rdparty/pcre2/LICENCE-SLJIT vendored Normal file
View File

@ -0,0 +1,22 @@
Copyright 2013-2013 Tilera Corporation(jiwang@tilera.com). All rights reserved.
Copyright Zoltan Herczeg (hzmester@freemail.hu). All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are
permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of
conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list
of conditions and the following disclaimer in the documentation and/or other materials
provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND CONTRIBUTORS ``AS IS'' AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL THE COPYRIGHT HOLDER(S) OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -1,3 +1,4 @@
[
{
"Id": "pcre2",
"Name": "PCRE2",
@ -15,4 +16,22 @@
Copyright (c) 2009-2018 Zoltan Herczeg
Copyright (c) 2007-2012 Google Inc.
Copyright (c) 2013-2013 Tilera Corporation (jiwang@tilera.com)"
},
{
"Id": "pcre2-sljit",
"Name": "PCRE2 - Stack-less Just-In-Time Compiler",
"QDocModule": "qtcore",
"QtUsage": "Optionally used in Qt Core (QRegularExpression). Configure with -system-pcre or -no-pcre to avoid.",
"Path": "src/sljit",
"Description": "The PCRE library is a set of functions that implement regular expression pattern matching using the same syntax and semantics as Perl 5.",
"Homepage": "http://www.pcre.org/",
"Version": "10.31",
"DownloadLocation": "https://ftp.pcre.org/pub/pcre/pcre2-10.31.tar.bz2",
"License": "BSD 2-clause \"Simplified\" License",
"LicenseId": "BSD-2-Clause",
"LicenseFile": "LICENCE-SLJIT",
"Copyright": "Copyright (c) Zoltan Herczeg
Copyright 2013-2013 Tilera Corporation(jiwang@tilera.com)"
}
]

View File

@ -6,6 +6,7 @@
"Description": "pixman is a library that provides low-level pixel manipulation features such as image compositing and trapezoid rasterization.",
"Homepage": "http://www.pixman.org/",
"Version": "0.17.12",
"License": "MIT License",
"LicenseFile": "LICENSE",
"LicenseId": "MIT",

View File

@ -1,6 +1,6 @@
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Copyright (C) 2018 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the documentation of the Qt Toolkit.
@ -49,6 +49,17 @@
****************************************************************************/
//! [0]
qreal myEasingFunction(qreal progress);
QEasingCurve easing(QEasingCurve::InOutQuad);
for (qreal t = 0.0; t < 1.0; t+=0.1)
qWarning() << "Effective progress" << t << " is
<< easing.valueForProgress(t);
//! [0]
//! [1]
QPropertyAnimation animation;
animation.setStartValue(0);
animation.setEndValue(1000);
animation.setDuration(1000);
animation.setEasingCurve(QEasingCurve::InOutQuad);
//! [1]

View File

@ -291,7 +291,7 @@ void Widget::argFunction()
//! [97]
//! [98]
str = "%1%2%3";
str = "%1%3%2";
str.arg("Hello", QString::number(20), QString::number(50)); // returns "Hello5020"
//! [98]

View File

@ -72,24 +72,15 @@
curve is a linear curve. This is the default behaviour.
For example,
\code
QEasingCurve easing(QEasingCurve::InOutQuad);
for(qreal t = 0.0; t < 1.0; t+=0.1)
qWarning() << "Effective progress" << t << " is
<< easing.valueForProgress(t);
\endcode
\snippet code/src_corelib_tools_qeasingcurve.cpp 0
will print the effective progress of the interpolation between 0 and 1.
When using a QPropertyAnimation, the associated easing curve will be used to control the
progress of the interpolation between startValue and endValue:
\code
QPropertyAnimation animation;
animation.setStartValue(0);
animation.setEndValue(1000);
animation.setDuration(1000);
animation.setEasingCurve(QEasingCurve::InOutQuad);
\endcode
\snippet code/src_corelib_tools_qeasingcurve.cpp 1
The ability to set an amplitude, overshoot, or period depends on
the QEasingCurve type. Amplitude access is available to curves

View File

@ -51,6 +51,7 @@
\snippet code/doc_src_qtdbus.cpp 0
\if !defined(qtforpython)
If you're using qmake to build your application, you can add this
line to your .pro file to make it link against the Qt D-Bus
libraries:
@ -60,6 +61,7 @@
\note The source code for this module is located in the \c{src/qdbus}
directory. When installing Qt from source, this module is built when Qt's
tools are built.
\endif
See the \l {Qt D-Bus}{D-Bus} page for detailed information on
how to use this module.

View File

@ -46,11 +46,12 @@
\snippet code/doc_src_qtgui.pro 0
\if !defined(qtforpython)
If you use \l qmake to build your projects, \l{Qt GUI} is included by
default. To disable Qt GUI, add the following line to your \c .pro file:
\snippet code/doc_src_qtgui.pro 1
\endif
*/
/*!
@ -75,10 +76,12 @@
\snippet code/doc_src_qtgui.pro 0
\if !defined(qtforpython)
If you use \l qmake to build your projects, Qt GUI is included by
default. To disable Qt GUI, add the following line to your \c .pro file:
\snippet code/doc_src_qtgui.pro 1
\endif
\section1 Application Windows

View File

@ -5689,6 +5689,46 @@ static inline int qRgbAvg(QRgb rgb)
return (qRed(rgb) * 5 + qGreen(rgb) * 6 + qBlue(rgb) * 5) / 16;
}
static inline QRgb rgbBlend(QRgb d, QRgb s, uint rgbAlpha)
{
#if defined(__SSE2__)
__m128i vd = _mm_cvtsi32_si128(d);
__m128i vs = _mm_cvtsi32_si128(s);
__m128i va = _mm_cvtsi32_si128(rgbAlpha);
const __m128i vz = _mm_setzero_si128();
vd = _mm_unpacklo_epi8(vd, vz);
vs = _mm_unpacklo_epi8(vs, vz);
va = _mm_unpacklo_epi8(va, vz);
__m128i vb = _mm_xor_si128(_mm_set1_epi16(255), va);
vs = _mm_mullo_epi16(vs, va);
vd = _mm_mullo_epi16(vd, vb);
vd = _mm_add_epi16(vd, vs);
vd = _mm_add_epi16(vd, _mm_srli_epi16(vd, 8));
vd = _mm_add_epi16(vd, _mm_set1_epi16(0x80));
vd = _mm_srli_epi16(vd, 8);
vd = _mm_packus_epi16(vd, vd);
return _mm_cvtsi128_si32(vd);
#else
const int dr = qRed(d);
const int dg = qGreen(d);
const int db = qBlue(d);
const int sr = qRed(s);
const int sg = qGreen(s);
const int sb = qBlue(s);
const int mr = qRed(rgbAlpha);
const int mg = qGreen(rgbAlpha);
const int mb = qBlue(rgbAlpha);
const int nr = qt_div_255(sr * mr + dr * (255 - mr));
const int ng = qt_div_255(sg * mg + dg * (255 - mg));
const int nb = qt_div_255(sb * mb + db * (255 - mb));
return 0xff000000 | (nr << 16) | (ng << 8) | nb;
#endif
}
static inline void alphargbblend_generic(uint coverage, QRgba64 *dest, int x, const QRgba64 &srcLinear, const QRgba64 &src, const QColorProfile *colorProfile)
{
if (coverage == 0xff000000) {
@ -5711,20 +5751,20 @@ static inline void alphargbblend_generic(uint coverage, QRgba64 *dest, int x, co
}
}
static inline void alphargbblend_argb32(quint32 *dst, uint coverage, QRgba64 srcLinear, quint32 src, const QColorProfile *colorProfile)
static inline void alphargbblend_argb32(quint32 *dst, uint coverage, const QRgba64 &srcLinear, quint32 src, const QColorProfile *colorProfile)
{
if (coverage == 0xff000000) {
// nothing
} else if (coverage == 0xffffffff) {
*dst = src;
} else {
if (*dst >= 0xff000000) {
rgbBlendPixel(dst, coverage, srcLinear, colorProfile);
} else {
// Give up and do a naive gray alphablend. Needed to deal with ARGB32 and invalid ARGB32_premultiplied, see QTBUG-60571
const int a = qRgbAvg(coverage);
*dst = INTERPOLATE_PIXEL_255(src, a, *dst, 255 - a);
}
} else if (*dst < 0xff000000) {
// Give up and do a naive gray alphablend. Needed to deal with ARGB32 and invalid ARGB32_premultiplied, see QTBUG-60571
const int a = qRgbAvg(coverage);
*dst = INTERPOLATE_PIXEL_255(src, a, *dst, 255 - a);
} else if (!colorProfile) {
*dst = rgbBlend(*dst, src, coverage);
} else {
rgbBlendPixel(dst, coverage, srcLinear, colorProfile);
}
}

View File

@ -2694,15 +2694,11 @@ QImage QVulkanWindow::grab()
system differences between OpenGL and Vulkan.
By pre-multiplying the projection matrix with this matrix, applications can
continue to assume OpenGL-style Y coordinates in clip space (i.e. Y pointing
upwards), and can set minDepth and maxDepth to 0 and 1, respectively,
without any further corrections to the vertex Z positions, while using the
projection matrices retrieved from the QMatrix4x4 functions, such as
QMatrix4x4::perspective(), as-is.
\note With vertex data following the default OpenGL rules (that is, the
front face being CCW), the correct winding order in the rasterization state
after applying this matrix is clockwise (\c{VK_FRONT_FACE_CLOCKWISE}).
continue to assume that Y is pointing upwards, and can set minDepth and
maxDepth in the viewport to 0 and 1, respectively, without having to do any
further corrections to the vertex Z positions. Geometry from OpenGL
applications can then be used as-is, assuming a rasterization state matching
the OpenGL culling and front face settings.
*/
QMatrix4x4 QVulkanWindow::clipCorrectionMatrix()
{

View File

@ -40,10 +40,13 @@
\code
#include <QtNetwork>
\endcode
\if !defined(qtforpython)
To link against the Qt Network module, add this line to the project file:
\code
QT += network
\endcode
\endif
\section1 Articles and Guides

View File

@ -51,10 +51,12 @@
\snippet code/doc_src_qtopengl.cpp 0
\if !defined(qtforpython)
To link against the module, add this line to your \l qmake \c
.pro file:
\snippet code/doc_src_qtopengl.pro 1
\endif
The Qt OpenGL module is implemented as a platform-independent Qt/C++
wrapper around the platform-dependent GLX (version 1.3 or later),

View File

@ -57,10 +57,12 @@
\snippet code/doc_src_qtopengl.cpp 0
\if !defined(qtforpython)
To link against the module, add this line to your \l qmake \c
.pro file:
\snippet code/doc_src_qtopengl.pro 1
\endif
The Qt OpenGL module is implemented as a platform-independent Qt/C++
wrapper around the platform-dependent GLX (version 1.3 or later),

View File

@ -57,11 +57,25 @@ QWindow *windowForAccessible(const QAccessibleInterface *accessible)
{
QWindow *window = accessible->window();
if (!window) {
QAccessibleInterface *acc = accessible->parent();
while (acc && acc->isValid() && !window) {
window = acc->window();
QAccessibleInterface *par = acc->parent();
const QAccessibleInterface *acc = accessible;
const QAccessibleInterface *par = accessible->parent();
while (par && par->isValid() && !window) {
window = par->window();
acc = par;
par = par->parent();
}
if (!window) {
// Workaround for WebEngineView not knowing its parent.
const auto appWindows = QGuiApplication::topLevelWindows();
for (QWindow *w : appWindows) {
if (QAccessibleInterface *root = w->accessibleRoot()) {
int count = root->childCount();
for (int i = 0; i < count; ++i) {
if (root->child(i) == acc)
return w;
}
}
}
}
}
return window;

View File

@ -38,8 +38,10 @@
\snippet code/doc_src_qtprintsupport.cpp 1
\if !defined(qtforpython)
To link against the module, add this line to your \l qmake \c
.pro file:
\snippet code/doc_src_qtprintsupport.pro 0
\endif
*/

View File

@ -87,10 +87,12 @@
\snippet code/doc_src_qtsql.cpp 0
\if !defined(qtforpython)
To link against the module, add this line to your \l qmake \c
.pro file:
\snippet code/doc_src_qtsql.pro 1
\endif
See the \l{SQL Programming} guide for information about using this
module in your applications.

View File

@ -41,9 +41,11 @@
\snippet code/doc_src_qttest.cpp 0
\if !define(qtforpython)
To link against Qt Test, add this line to the project file:
\snippet code/doc_src_qttest.pro 1
\endif
\section1 Articles and Guides

View File

@ -42,10 +42,12 @@
\snippet code/doc_src_qttest.cpp 0
\if !defined(qtforpython)
To link against the module, add this line to your \l qmake \c
.pro file:
\snippet code/doc_src_qttest.pro 1
\endif
See \l{Qt Test Overview} for an introduction on how to use
Qt's unit testing features with your applications.

View File

@ -109,6 +109,7 @@
For more examples, refer to the \l{Qt Test Tutorial}.
\if !defined(qtforpython)
\section1 Building a Test
If you are using \c qmake as your build tool, just add the
@ -132,6 +133,7 @@
See \l {Chapter 1: Writing a Unit Test}{Writing a Unit Test} for a step by
step explanation.
\endif
\section1 Qt Test Command Line Arguments

View File

@ -38,9 +38,11 @@
\snippet code/doc_src_qtwidgets.cpp 1
\if !defined(qtforpython)
To link against the module, add this line to your \l qmake \c
.pro file:
\snippet code/doc_src_qtwidgets.pro 0
\endif
*/

View File

@ -38,10 +38,12 @@
\snippet code/doc_src_qtxml.cpp 0
\if !defined(qtforpython)
To link against the module, add this line to your \l qmake \c
.pro file:
\snippet code/doc_src_qtxml.pro 1
\endif
The \l{Qt XML C++ Classes} page gives an overview over the available classes
in this module.

View File

@ -41,8 +41,10 @@
\snippet code/doc_src_qtxml.cpp 0
\if !defined(qtforpython)
To link against the module, add this line to your \l qmake \c
.pro file:
\snippet code/doc_src_qtxml.pro 1
\endif
*/