aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.qmake.conf2
-rw-r--r--src/effects/BrightnessContrast.qml2
-rw-r--r--src/effects/ColorOverlay.qml2
-rw-r--r--src/effects/Colorize.qml2
-rw-r--r--src/effects/Desaturate.qml2
-rw-r--r--src/effects/GammaAdjust.qml2
-rw-r--r--src/effects/HueSaturation.qml2
-rw-r--r--src/effects/LevelAdjust.qml2
-rw-r--r--src/effects/plugin.cpp10
-rw-r--r--src/effects/private/plugin.cpp9
-rw-r--r--tests/manual/manual.pro2
-rw-r--r--tests/manual/smooth/CellContainer.qml9
-rw-r--r--tests/manual/smooth/SourceImage.qml8
-rw-r--r--tests/manual/smooth/main.cpp53
-rw-r--r--tests/manual/smooth/main.qml358
-rw-r--r--tests/manual/smooth/resources.qrc8
-rw-r--r--tests/manual/smooth/smooth.pro30
-rw-r--r--tests/manual/smooth/star.pngbin0 -> 641 bytes
-rw-r--r--tests/manual/testbed/testBed.qml2
19 files changed, 485 insertions, 20 deletions
diff --git a/.qmake.conf b/.qmake.conf
index 76c202a..097d8b9 100644
--- a/.qmake.conf
+++ b/.qmake.conf
@@ -1,3 +1,3 @@
load(qt_build_config)
-MODULE_VERSION = 5.11.2
+MODULE_VERSION = 5.12.0
diff --git a/src/effects/BrightnessContrast.qml b/src/effects/BrightnessContrast.qml
index 04da2f3..c425bfa 100644
--- a/src/effects/BrightnessContrast.qml
+++ b/src/effects/BrightnessContrast.qml
@@ -167,6 +167,8 @@ Item {
SourceProxy {
id: sourceProxy
input: rootItem.source
+ interpolation: rootItem.smooth || (rootItem.layer.enabled && rootItem.layer.smooth)
+ ? SourceProxy.NearestInterpolation : SourceProxy.LinearInterpolation
}
ShaderEffectSource {
diff --git a/src/effects/ColorOverlay.qml b/src/effects/ColorOverlay.qml
index afefa0b..32314bd 100644
--- a/src/effects/ColorOverlay.qml
+++ b/src/effects/ColorOverlay.qml
@@ -123,6 +123,8 @@ Item {
SourceProxy {
id: sourceProxy
input: rootItem.source
+ interpolation: rootItem.smooth || (rootItem.layer.enabled && rootItem.layer.smooth)
+ ? SourceProxy.NearestInterpolation : SourceProxy.LinearInterpolation
}
ShaderEffectSource {
diff --git a/src/effects/Colorize.qml b/src/effects/Colorize.qml
index fd40da2..a4cf524 100644
--- a/src/effects/Colorize.qml
+++ b/src/effects/Colorize.qml
@@ -210,6 +210,8 @@ Item {
SourceProxy {
id: sourceProxy
input: rootItem.source
+ interpolation: rootItem.smooth || (rootItem.layer.enabled && rootItem.layer.smooth)
+ ? SourceProxy.NearestInterpolation : SourceProxy.LinearInterpolation
}
ShaderEffectSource {
diff --git a/src/effects/Desaturate.qml b/src/effects/Desaturate.qml
index 13f3e85..93e1256 100644
--- a/src/effects/Desaturate.qml
+++ b/src/effects/Desaturate.qml
@@ -122,6 +122,8 @@ Item {
SourceProxy {
id: sourceProxy
input: rootItem.source
+ interpolation: rootItem.smooth || (rootItem.layer.enabled && rootItem.layer.smooth)
+ ? SourceProxy.NearestInterpolation : SourceProxy.LinearInterpolation
}
ShaderEffectSource {
diff --git a/src/effects/GammaAdjust.qml b/src/effects/GammaAdjust.qml
index e146d06..419c9a0 100644
--- a/src/effects/GammaAdjust.qml
+++ b/src/effects/GammaAdjust.qml
@@ -159,6 +159,8 @@ luminance = pow(original_luminance, 1.0 / gamma); // The luminance is assumed to
SourceProxy {
id: sourceProxy
input: rootItem.source
+ interpolation: rootItem.smooth || (rootItem.layer.enabled && rootItem.layer.smooth)
+ ? SourceProxy.NearestInterpolation : SourceProxy.LinearInterpolation
}
ShaderEffectSource {
diff --git a/src/effects/HueSaturation.qml b/src/effects/HueSaturation.qml
index 866a8a2..408d449 100644
--- a/src/effects/HueSaturation.qml
+++ b/src/effects/HueSaturation.qml
@@ -199,6 +199,8 @@ Item {
SourceProxy {
id: sourceProxy
input: rootItem.source
+ interpolation: rootItem.smooth || (rootItem.layer.enabled && rootItem.layer.smooth)
+ ? SourceProxy.NearestInterpolation : SourceProxy.LinearInterpolation
}
ShaderEffectSource {
diff --git a/src/effects/LevelAdjust.qml b/src/effects/LevelAdjust.qml
index a13354d..89aa3d7 100644
--- a/src/effects/LevelAdjust.qml
+++ b/src/effects/LevelAdjust.qml
@@ -406,6 +406,8 @@ Item {
SourceProxy {
id: sourceProxy
input: rootItem.source
+ interpolation: rootItem.smooth || (rootItem.layer.enabled && rootItem.layer.smooth)
+ ? SourceProxy.NearestInterpolation : SourceProxy.LinearInterpolation
}
ShaderEffectSource {
diff --git a/src/effects/plugin.cpp b/src/effects/plugin.cpp
index b30e2ae..d2baba2 100644
--- a/src/effects/plugin.cpp
+++ b/src/effects/plugin.cpp
@@ -41,14 +41,6 @@
#include <QtQml/qqml.h>
#include <QtQml/qqmlengine.h>
-static void initResources()
-{
-#ifdef QT_STATIC
- Q_INIT_RESOURCE(qmake_QtGraphicalEffects);
- Q_INIT_RESOURCE(qtgraphicaleffectsshaders);
-#endif
-}
-
QT_BEGIN_NAMESPACE
class QtGraphicalEffectsPlugin : public QQmlExtensionPlugin
@@ -57,7 +49,7 @@ class QtGraphicalEffectsPlugin : public QQmlExtensionPlugin
Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid)
public:
- QtGraphicalEffectsPlugin(QObject *parent = 0) : QQmlExtensionPlugin(parent) { initResources(); }
+ QtGraphicalEffectsPlugin(QObject *parent = 0) : QQmlExtensionPlugin(parent) { }
virtual void registerTypes(const char *uri)
{
Q_ASSERT(QLatin1String(uri) == QLatin1String("QtGraphicalEffects"));
diff --git a/src/effects/private/plugin.cpp b/src/effects/private/plugin.cpp
index 2e5b17a..a9deb94 100644
--- a/src/effects/private/plugin.cpp
+++ b/src/effects/private/plugin.cpp
@@ -44,13 +44,6 @@
#include "qgfxsourceproxy_p.h"
#include "qgfxshaderbuilder_p.h"
-static void initResources()
-{
-#ifdef QT_STATIC
- Q_INIT_RESOURCE(qmake_QtGraphicalEffects_private);
-#endif
-}
-
QT_BEGIN_NAMESPACE
static QObject *qgfxshaderbuilder_provider(QQmlEngine *, QJSEngine *)
@@ -64,7 +57,7 @@ class QtGraphicalEffectsPrivatePlugin : public QQmlExtensionPlugin
Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid)
public:
- QtGraphicalEffectsPrivatePlugin(QObject *parent = 0) : QQmlExtensionPlugin(parent) { initResources(); }
+ QtGraphicalEffectsPrivatePlugin(QObject *parent = 0) : QQmlExtensionPlugin(parent) { }
virtual void registerTypes(const char *uri)
{
Q_ASSERT(QByteArray(uri) == QByteArrayLiteral("QtGraphicalEffects.private"));
diff --git a/tests/manual/manual.pro b/tests/manual/manual.pro
index 0e7e6e4..730f489 100644
--- a/tests/manual/manual.pro
+++ b/tests/manual/manual.pro
@@ -1,4 +1,4 @@
TEMPLATE = subdirs
OTHER_FILES = testbed/*.qml
-#SUBDIRS += testbed
+SUBDIRS += smooth
diff --git a/tests/manual/smooth/CellContainer.qml b/tests/manual/smooth/CellContainer.qml
new file mode 100644
index 0000000..5a04bd3
--- /dev/null
+++ b/tests/manual/smooth/CellContainer.qml
@@ -0,0 +1,9 @@
+import QtQuick 2.9
+import QtQuick.Layouts 1.3
+
+Item {
+ implicitWidth: children[0].implicitWidth * children[0].scale
+ implicitHeight: children[0].implicitHeight * children[0].scale
+
+ Layout.alignment: Qt.AlignHCenter
+}
diff --git a/tests/manual/smooth/SourceImage.qml b/tests/manual/smooth/SourceImage.qml
new file mode 100644
index 0000000..7956190
--- /dev/null
+++ b/tests/manual/smooth/SourceImage.qml
@@ -0,0 +1,8 @@
+import QtQuick 2.0
+
+Image {
+ source: "star.png"
+ smooth: false
+ scale: 4
+ transformOrigin: Item.TopLeft
+}
diff --git a/tests/manual/smooth/main.cpp b/tests/manual/smooth/main.cpp
new file mode 100644
index 0000000..aaca093
--- /dev/null
+++ b/tests/manual/smooth/main.cpp
@@ -0,0 +1,53 @@
+/****************************************************************************
+**
+** Copyright (C) 2018 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later as published by the Free
+** Software Foundation and appearing in the file LICENSE.GPL included in
+** the packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QGuiApplication>
+#include <QQmlApplicationEngine>
+#include <QQuickItem>
+
+int main(int argc, char *argv[])
+{
+ QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
+
+ QGuiApplication app(argc, argv);
+
+ QQmlApplicationEngine engine;
+ engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
+ if (engine.rootObjects().isEmpty())
+ return -1;
+
+ return app.exec();
+}
diff --git a/tests/manual/smooth/main.qml b/tests/manual/smooth/main.qml
new file mode 100644
index 0000000..36bfb12
--- /dev/null
+++ b/tests/manual/smooth/main.qml
@@ -0,0 +1,358 @@
+/****************************************************************************
+**
+** Copyright (C) 2018 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * 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.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
+** OWNER 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."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.9
+import QtQuick.Window 2.3
+import QtQuick.Layouts 1.3
+import QtGraphicalEffects 1.0
+
+/*
+ A testbench for source items (and effects) that set smooth to false.
+
+ Setting smooth to false doesn't make sense for all effects (like blurs).
+*/
+
+Window {
+ id: window
+ width: 1200
+ height: 1000
+ visible: true
+
+ Flickable {
+ anchors.fill: parent
+ contentWidth: rowLayout.width
+ contentHeight: rowLayout.implicitHeight
+
+ GridLayout {
+ id: rowLayout
+ width: window.width
+ columns: 4
+
+ // Header
+ Text {
+ text: "Plain Image"
+ Layout.alignment: Qt.AlignHCenter
+ Layout.column: 1
+ }
+
+ Text {
+ text: "... with standalone effect"
+ Layout.alignment: Qt.AlignHCenter
+ }
+
+ Text {
+ text: "... with layer effect"
+ Layout.alignment: Qt.AlignHCenter
+ }
+
+ // ColorOverlay
+ Text {
+ text: "ColorOverlay"
+ Layout.fillWidth: true
+ }
+
+ CellContainer {
+ SourceImage {}
+ }
+
+ CellContainer {
+ SourceImage {
+ visible: false
+ }
+
+ ColorOverlay {
+ width: parent.children[0].width
+ height: parent.children[0].height
+ source: parent.children[0]
+ color: "#aa0ff000"
+ scale: parent.children[0].scale
+ transformOrigin: Item.TopLeft
+ }
+ }
+
+ CellContainer {
+ SourceImage {
+ layer.enabled: true
+ layer.effect: ColorOverlay {
+ width: parent.children[0].width
+ height: parent.children[0].height
+ source: parent.children[0]
+ color: "#aa0ff000"
+ }
+ }
+ }
+
+ // Colorize
+ Text {
+ text: "Colorize"
+ Layout.fillWidth: true
+ }
+
+ CellContainer {
+ SourceImage {}
+ }
+
+ CellContainer {
+ SourceImage {
+ visible: false
+ }
+
+ Colorize {
+ width: parent.children[0].width
+ height: parent.children[0].height
+ source: parent.children[0]
+ hue: 0.5
+ scale: parent.children[0].scale
+ transformOrigin: Item.TopLeft
+ }
+ }
+
+ CellContainer {
+ SourceImage {
+ layer.enabled: true
+ layer.effect: Colorize {
+ width: parent.children[0].width
+ height: parent.children[0].height
+ source: parent.children[0]
+ hue: 0.5
+ }
+ }
+ }
+
+ // BrightnessContrast
+ Text {
+ text: "BrightnessContrast"
+ Layout.fillWidth: true
+ }
+
+ CellContainer {
+ SourceImage {}
+ }
+
+ CellContainer {
+ SourceImage {
+ visible: false
+ }
+
+ BrightnessContrast {
+ width: parent.children[0].width
+ height: parent.children[0].height
+ source: parent.children[0]
+ brightness: 0.5
+ scale: parent.children[0].scale
+ transformOrigin: Item.TopLeft
+ }
+ }
+
+ CellContainer {
+ SourceImage {
+ layer.enabled: true
+ layer.effect: BrightnessContrast {
+ width: parent.children[0].width
+ height: parent.children[0].height
+ source: parent.children[0]
+ brightness: 0.5
+ }
+ }
+ }
+
+ // HueSaturation
+ Text {
+ text: "HueSaturation"
+ Layout.fillWidth: true
+ }
+
+ CellContainer {
+ SourceImage {}
+ }
+
+ CellContainer {
+ SourceImage {
+ visible: false
+ }
+
+ HueSaturation {
+ width: parent.children[0].width
+ height: parent.children[0].height
+ source: parent.children[0]
+ saturation: 1.0
+ scale: parent.children[0].scale
+ transformOrigin: Item.TopLeft
+ }
+ }
+
+ CellContainer {
+ SourceImage {
+ layer.enabled: true
+ layer.effect: HueSaturation {
+ width: parent.children[0].width
+ height: parent.children[0].height
+ source: parent.children[0]
+ saturation: 1.0
+ }
+ }
+ }
+
+ // Desaturate
+ Text {
+ text: "Desaturate"
+ Layout.fillWidth: true
+ }
+
+ CellContainer {
+ SourceImage {}
+ }
+
+ CellContainer {
+ SourceImage {
+ visible: false
+ }
+
+ Desaturate {
+ width: parent.children[0].width
+ height: parent.children[0].height
+ source: parent.children[0]
+ desaturation: 0.85
+ scale: parent.children[0].scale
+ transformOrigin: Item.TopLeft
+ }
+ }
+
+ CellContainer {
+ SourceImage {
+ layer.enabled: true
+ layer.effect: Desaturate {
+ width: parent.children[0].width
+ height: parent.children[0].height
+ source: parent.children[0]
+ desaturation: 0.85
+ }
+ }
+ }
+
+ // GammaAdjust
+ Text {
+ text: "GammaAdjust"
+ Layout.fillWidth: true
+ }
+
+ CellContainer {
+ SourceImage {}
+ }
+
+ CellContainer {
+ SourceImage {
+ visible: false
+ }
+
+ // doesn't seem to do anything...
+ GammaAdjust {
+ width: parent.children[0].width
+ height: parent.children[0].height
+ source: parent.children[0]
+ gamma: 10
+ scale: parent.children[0].scale
+ transformOrigin: Item.TopLeft
+ }
+ }
+
+ CellContainer {
+ SourceImage {
+ layer.enabled: true
+ layer.effect: GammaAdjust {
+ width: parent.children[0].width
+ height: parent.children[0].height
+ source: parent.children[0]
+ gamma: 10
+ }
+ }
+ }
+
+ // LevelAdjust
+ Text {
+ text: "LevelAdjust"
+ Layout.fillWidth: true
+ }
+
+ CellContainer {
+ SourceImage {}
+ }
+
+ CellContainer {
+ SourceImage {
+ visible: false
+ }
+
+ LevelAdjust {
+ width: parent.children[0].width
+ height: parent.children[0].height
+ source: parent.children[0]
+ minimumOutput: "#00ffffff"
+ maximumOutput: "#ff000000"
+ scale: parent.children[0].scale
+ transformOrigin: Item.TopLeft
+ }
+ }
+
+ CellContainer {
+ SourceImage {
+ layer.enabled: true
+ layer.effect: LevelAdjust {
+ width: parent.children[0].width
+ height: parent.children[0].height
+ source: parent.children[0]
+ minimumOutput: "#00ffffff"
+ maximumOutput: "#ff000000"
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/tests/manual/smooth/resources.qrc b/tests/manual/smooth/resources.qrc
new file mode 100644
index 0000000..b2b4653
--- /dev/null
+++ b/tests/manual/smooth/resources.qrc
@@ -0,0 +1,8 @@
+<RCC>
+ <qresource prefix="/">
+ <file>main.qml</file>
+ <file>CellContainer.qml</file>
+ <file>SourceImage.qml</file>
+ <file>star.png</file>
+ </qresource>
+</RCC>
diff --git a/tests/manual/smooth/smooth.pro b/tests/manual/smooth/smooth.pro
new file mode 100644
index 0000000..5e577f4
--- /dev/null
+++ b/tests/manual/smooth/smooth.pro
@@ -0,0 +1,30 @@
+QT += quick
+CONFIG += c++11
+
+# The following define makes your compiler emit warnings if you use
+# any feature of Qt which as been marked deprecated (the exact warnings
+# depend on your compiler). Please consult the documentation of the
+# deprecated API in order to know how to port your code away from it.
+DEFINES += QT_DEPRECATED_WARNINGS
+
+# You can also make your code fail to compile if you use deprecated APIs.
+# In order to do so, uncomment the following line.
+# You can also select to disable deprecated APIs only up to a certain version of Qt.
+#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
+
+SOURCES += \
+ main.cpp
+
+RESOURCES += \
+ resources.qrc
+
+# Additional import path used to resolve QML modules in Qt Creator's code model
+QML_IMPORT_PATH =
+
+# Additional import path used to resolve QML modules just for Qt Quick Designer
+QML_DESIGNER_IMPORT_PATH =
+
+# Default rules for deployment.
+qnx: target.path = /tmp/$${TARGET}/bin
+else: unix:!android: target.path = /opt/$${TARGET}/bin
+!isEmpty(target.path): INSTALLS += target
diff --git a/tests/manual/smooth/star.png b/tests/manual/smooth/star.png
new file mode 100644
index 0000000..81c9ade
--- /dev/null
+++ b/tests/manual/smooth/star.png
Binary files differ
diff --git a/tests/manual/testbed/testBed.qml b/tests/manual/testbed/testBed.qml
index f42ea4a..c3e5b91 100644
--- a/tests/manual/testbed/testBed.qml
+++ b/tests/manual/testbed/testBed.qml
@@ -32,7 +32,7 @@ Rectangle {
id: main
width: 950
- height: 620
+ height: 800
color: '#171717'
ListView {