diff options
-rw-r--r-- | .qmake.conf | 2 | ||||
-rw-r--r-- | src/effects/BrightnessContrast.qml | 2 | ||||
-rw-r--r-- | src/effects/ColorOverlay.qml | 2 | ||||
-rw-r--r-- | src/effects/Colorize.qml | 2 | ||||
-rw-r--r-- | src/effects/Desaturate.qml | 2 | ||||
-rw-r--r-- | src/effects/GammaAdjust.qml | 2 | ||||
-rw-r--r-- | src/effects/HueSaturation.qml | 2 | ||||
-rw-r--r-- | src/effects/LevelAdjust.qml | 2 | ||||
-rw-r--r-- | src/effects/plugin.cpp | 10 | ||||
-rw-r--r-- | src/effects/private/plugin.cpp | 9 | ||||
-rw-r--r-- | tests/manual/manual.pro | 2 | ||||
-rw-r--r-- | tests/manual/smooth/CellContainer.qml | 9 | ||||
-rw-r--r-- | tests/manual/smooth/SourceImage.qml | 8 | ||||
-rw-r--r-- | tests/manual/smooth/main.cpp | 53 | ||||
-rw-r--r-- | tests/manual/smooth/main.qml | 358 | ||||
-rw-r--r-- | tests/manual/smooth/resources.qrc | 8 | ||||
-rw-r--r-- | tests/manual/smooth/smooth.pro | 30 | ||||
-rw-r--r-- | tests/manual/smooth/star.png | bin | 0 -> 641 bytes | |||
-rw-r--r-- | tests/manual/testbed/testBed.qml | 2 |
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 Binary files differnew file mode 100644 index 0000000..81c9ade --- /dev/null +++ b/tests/manual/smooth/star.png 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 { |