| /**************************************************************************** |
| ** |
| ** Copyright (C) 2017 The Qt Company Ltd. |
| ** Contact: https://www.qt.io/licensing/ |
| ** |
| ** This file is part of the Qt Graphical Effects module. |
| ** |
| ** $QT_BEGIN_LICENSE:GPL-EXCEPT$ |
| ** 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. |
| ** |
| ** GNU General Public License Usage |
| ** Alternatively, this file may be used under the terms of the GNU |
| ** General Public License version 3 as published by the Free Software |
| ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT |
| ** included in the packaging of this file. Please review the following |
| ** information to ensure the GNU General Public License requirements will |
| ** be met: https://www.gnu.org/licenses/gpl-3.0.html. |
| ** |
| ** $QT_END_LICENSE$ |
| ** |
| ****************************************************************************/ |
| |
| import QtQuick 2.12 |
| import org.qtproject.pngdumper 1.12 |
| |
| Rectangle { |
| id: main |
| width: 300 |
| height: width |
| property real size: width |
| property real timerInterval: 1 |
| property color background: "white" |
| property bool checkerboard: false |
| color: background |
| |
| Rectangle { |
| id: blurMask |
| anchors.fill: parent |
| visible: false |
| gradient: Gradient { |
| GradientStop { position: 0.3; color: "#ff000000" } |
| GradientStop { position: 0.7; color: "#00000000" } |
| } |
| } |
| |
| |
| Gradient { |
| id: firstGradient |
| GradientStop { position: 0.000; color: Qt.rgba(1, 0, 0, 1) } |
| GradientStop { position: 0.167; color: Qt.rgba(1, 1, 0, 1) } |
| GradientStop { position: 0.333; color: Qt.rgba(0, 1, 0, 1) } |
| GradientStop { position: 0.500; color: Qt.rgba(0, 1, 1, 1) } |
| GradientStop { position: 0.667; color: Qt.rgba(0, 0, 1, 1) } |
| GradientStop { position: 0.833; color: Qt.rgba(1, 0, 1, 1) } |
| GradientStop { position: 1.000; color: Qt.rgba(1, 0, 0, 1) } |
| } |
| Gradient { |
| id: secondGradient |
| GradientStop { position: 0.0; color: "#F0F0F0" } |
| GradientStop { position: 0.5; color: "#000000" } |
| GradientStop { position: 1.0; color: "#F0F0F0" } |
| } |
| Gradient { |
| id: thirdGradient |
| GradientStop { position: 0.0; color: "#00000000" } |
| GradientStop { position: 1.0; color: "#FF000000" } |
| } |
| |
| ItemModel { |
| id: itemModel |
| } |
| |
| Item { |
| id: container |
| width: size |
| height: size |
| clip: true |
| |
| Image { |
| source: '../../tests/manual/testbed/images/checker.png' |
| smooth: true |
| anchors.fill: parent |
| fillMode: Image.Tile |
| visible: main.checkerboard |
| } |
| |
| ListView { |
| id: list |
| width: size |
| height: size |
| model: itemModel |
| highlightMoveDuration: 1 |
| spacing: size |
| anchors.centerIn: parent |
| cacheBuffer: size |
| } |
| } |
| |
| // Sources |
| Image { |
| id: bug |
| source: "../../tests/manual/testbed/images/bug.jpg" |
| smooth: true |
| width: size |
| height: width |
| fillMode: Image.PreserveAspectFit |
| visible: false |
| } |
| ShaderEffectSource { |
| id: butterfly |
| smooth: true |
| width: size |
| height: width |
| visible: false |
| sourceItem: |
| Image { |
| //id: butterfly |
| source: "../../tests/manual/testbed/images/butterfly.png" |
| smooth: true |
| width: size |
| height: width |
| fillMode: Image.PreserveAspectFit |
| visible: false |
| } |
| } |
| Image { |
| id: fog |
| source: "../../tests/manual/testbed/images/fog.png" |
| smooth: true |
| width: size |
| height: width |
| fillMode: Image.PreserveAspectFit |
| visible: false |
| } |
| Rectangle { |
| id: rect |
| width: size / 2 |
| height: size / 2 |
| anchors.centerIn: container |
| color: "#dde4ff" |
| visible: false |
| } |
| Rectangle { |
| id: displacementMapSource |
| visible: false |
| color: Qt.rgba(0.5, 0.5, 1.0, 1.0) |
| smooth: true |
| anchors.fill: bug |
| Image { |
| id: di |
| x: (parent.width - width) / 2 |
| y: (parent.height - height) / 2 |
| sourceSize: Qt.size(128, 128) |
| source: "../../tests/manual/testbed/images/glass_normal.png" |
| smooth: true |
| } |
| } |
| |
| ItemCapturer { |
| id: capturer |
| } |
| |
| Timer { |
| interval: 1000 |
| running: true |
| onTriggered: { |
| // Ugly workaround for listview not updating itself |
| list.contentX = 1 |
| eval("list.currentItem."+list.currentItem.__varyingProperty+"=list.currentItem.__values[0]"); |
| list.contentX = 0 |
| if (list.currentItem.init != undefined) list.currentItem.init() |
| timer.running = true |
| } |
| } |
| |
| |
| property int i: 0 |
| Connections { |
| target: capturer |
| onImageSaved: { |
| if (i >= list.currentItem.__values.length - 1) { |
| var filename = list.currentItem.__name + "_" + list.currentItem.__varyingProperty + (i + 1) + ".png" |
| filename = filename.replace(/\"/g,"") |
| capturer.document("\\table\n") |
| capturer.document("\\header\n") |
| capturer.document("\\o Output examples with different " + list.currentItem.__varyingProperty + " values\n") |
| capturer.document("\\o\n\\o\n\\row\n") |
| var ii = 0 |
| for(ii = 0; ii < list.currentItem.__values.length; ii++) { |
| filename = list.currentItem.__name + "_" + list.currentItem.__varyingProperty + (ii + 1) + ".png" |
| filename = filename.replace(/\"/g,"") |
| //filename = filename.toLowerCase(); |
| capturer.document(" \\o \\image " + filename + "\n") |
| } |
| capturer.document("\\row\n") |
| for(ii = 0; ii < list.currentItem.__values.length; ii++) { |
| capturer.document(" \\o \\bold { " + list.currentItem.__varyingProperty + ": " + list.currentItem.__values[ii] + " }\n") |
| } |
| for (var p = 0; p < list.currentItem.__properties.length; p++) { |
| if (list.currentItem.__properties[p] == list.currentItem.__varyingProperty) continue; |
| |
| capturer.document("\\row\n") |
| |
| for(ii = 0; ii < list.currentItem.__values.length; ii++) { |
| capturer.document(" \\o \\l " + list.currentItem.__properties[p] + ": " + eval("list.currentItem."+list.currentItem.__properties[p]) + "\n") |
| } |
| } |
| capturer.document("\\endtable\n") |
| |
| if (list.currentIndex < list.count-1) { |
| i = 0 |
| if (list.currentItem.uninit != undefined) list.currentItem.uninit() |
| list.currentIndex++ |
| list.positionViewAtIndex(list.currentIndex, ListView.Center) |
| if (list.currentItem.init != undefined) list.currentItem.init() |
| } else Qt.quit() |
| } else i++ |
| |
| eval("list.currentItem."+list.currentItem.__varyingProperty+"=list.currentItem.__values[i]"); |
| timer.running = true |
| } |
| } |
| |
| Timer { |
| id: timer |
| interval: timerInterval |
| running: false |
| onTriggered: { |
| var filename = list.currentItem.__name + "_" + list.currentItem.__varyingProperty + (i + 1) + ".png" |
| filename = filename.replace(/\"/g,"") |
| capturer.grabItem(container, filename) |
| } |
| } |
| } |