diff --git a/advancedSettings.pro b/advancedSettings.pro index 3b6b121..09fb8d3 100644 --- a/advancedSettings.pro +++ b/advancedSettings.pro @@ -4,7 +4,7 @@ # #------------------------------------------------- -QT += core gui +QT += core gui qml quick greaterThan(QT_MAJOR_VERSION, 4): QT += widgets @@ -13,26 +13,27 @@ TEMPLATE = app SOURCES += src/main.cpp\ - src/overlaywidget.cpp \ src/overlaycontroller.cpp \ + src/tabcontrollers/AudioTabController.cpp \ src/tabcontrollers/ChaperoneTabController.cpp \ src/tabcontrollers/FixFloorTabController.cpp \ src/tabcontrollers/MoveCenterTabController.cpp \ src/tabcontrollers/SettingsTabController.cpp \ src/tabcontrollers/StatisticsTabController.cpp \ - src/tabcontrollers/SteamVRTabController.cpp + src/tabcontrollers/SteamVRTabController.cpp \ + src/tabcontrollers/audiomanager/AudioManagerWindows.cpp -HEADERS += src/overlaywidget.h \ - src/overlaycontroller.h \ +HEADERS += src/overlaycontroller.h \ src/logging.h \ + src/tabcontrollers/AudioTabController.h \ src/tabcontrollers/ChaperoneTabController.h \ src/tabcontrollers/FixFloorTabController.h \ src/tabcontrollers/MoveCenterTabController.h \ src/tabcontrollers/SettingsTabController.h \ src/tabcontrollers/StatisticsTabController.h \ - src/tabcontrollers/SteamVRTabController.h - -FORMS += ui/overlaywidget.ui + src/tabcontrollers/SteamVRTabController.h \ + src/tabcontrollers/AudioManager.h \ + src/tabcontrollers/audiomanager/AudioManagerWindows.h INCLUDEPATH += third-party/openvr/include \ third-party/easylogging++ diff --git a/bin/win64/D3Dcompiler_47.dll b/bin/win64/D3Dcompiler_47.dll new file mode 100644 index 0000000..56512f5 Binary files /dev/null and b/bin/win64/D3Dcompiler_47.dll differ diff --git a/bin/win64/Material/ApplicationWindow.qml b/bin/win64/Material/ApplicationWindow.qml new file mode 100644 index 0000000..db27f25 --- /dev/null +++ b/bin/win64/Material/ApplicationWindow.qml @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Window 2.2 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.ApplicationWindow { + id: window + + color: Material.backgroundColor + + overlay.modal: Rectangle { + color: window.Material.backgroundDimColor + Behavior on opacity { NumberAnimation { duration: 150 } } + } + + overlay.modeless: Rectangle { + color: window.Material.backgroundDimColor + Behavior on opacity { NumberAnimation { duration: 150 } } + } +} diff --git a/bin/win64/Material/BoxShadow.qml b/bin/win64/Material/BoxShadow.qml new file mode 100644 index 0000000..b70fcee --- /dev/null +++ b/bin/win64/Material/BoxShadow.qml @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtGraphicalEffects 1.0 + +/*! + A implementation of CSS's box-shadow, used by ElevationEffect for a Material Design + elevation shadow effect. + */ +RectangularGlow { + // The 4 properties from CSS box-shadow, plus the inherited color property + property int offsetX + property int offsetY + property int blurRadius + property int spreadRadius + + // The source item the shadow is being applied to, used for correctly + // calculating the corner radious + property Item source + + property bool fullWidth + property bool fullHeight + + x: (parent.width - width)/2 + offsetX + y: (parent.height - height)/2 + offsetY + + implicitWidth: source ? source.width : parent.width + implicitHeight: source ? source.height : parent.height + + width: implicitWidth + 2 * spreadRadius + (fullWidth ? 2 * cornerRadius : 0) + height: implicitHeight + 2 * spreadRadius + (fullHeight ? 2 * cornerRadius : 0) + glowRadius: blurRadius/2 + spread: 0.05 + cornerRadius: blurRadius + (source && source.radius || 0) +} diff --git a/bin/win64/Material/BusyIndicator.qml b/bin/win64/Material/BusyIndicator.qml new file mode 100644 index 0000000..bf3d445 --- /dev/null +++ b/bin/win64/Material/BusyIndicator.qml @@ -0,0 +1,72 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.BusyIndicator { + id: control + + implicitWidth: contentItem.implicitWidth + leftPadding + rightPadding + implicitHeight: contentItem.implicitHeight + topPadding + bottomPadding + + padding: 6 + + //! [contentItem] + contentItem: ProgressRing { + id: ring + x: control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + implicitWidth: 48 + implicitHeight: 48 + width: size + height: size + opacity: control.running ? 1 : 0 + color: control.Material.accentColor + + readonly property real size: Math.min(control.availableWidth, control.availableHeight) + + Behavior on opacity { OpacityAnimator { duration: 250 } } + + RingAnimator { + target: ring + running: control.visible && control.running + } + } + //! [contentItem] +} diff --git a/bin/win64/Material/Button.qml b/bin/win64/Material/Button.qml new file mode 100644 index 0000000..a7d9910 --- /dev/null +++ b/bin/win64/Material/Button.qml @@ -0,0 +1,110 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.Button { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + // external vertical padding is 6 (to increase touch area) + padding: 12 + leftPadding: padding - 4 + rightPadding: padding - 4 + + Material.elevation: flat ? control.down || control.hovered ? 2 : 0 + : control.down ? 8 : 2 + Material.background: flat ? "transparent" : undefined + + //! [contentItem] + contentItem: Text { + text: control.text + font: control.font + color: !control.enabled ? control.Material.hintTextColor : + control.flat && control.highlighted ? control.Material.accentColor : + control.highlighted ? control.Material.primaryHighlightedTextColor : control.Material.primaryTextColor + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + elide: Text.ElideRight + } + //! [contentItem] + + //! [background] + // TODO: Add a proper ripple/ink effect for mouse/touch input and focus state + background: Rectangle { + implicitWidth: 64 + implicitHeight: 48 + + // external vertical padding is 6 (to increase touch area) + y: 6 + width: parent.width + height: parent.height - 12 + radius: 2 + color: !control.enabled + ? control.Material.buttonDisabledColor + : control.down + ? control.highlighted ? control.Material.highlightedButtonPressColor + : control.Material.buttonPressColor + : control.visualFocus || control.checked + ? control.highlighted ? control.Material.highlightedButtonHoverColor + : control.Material.buttonHoverColor + : control.highlighted ? control.Material.highlightedButtonColor + : control.Material.buttonColor + + Behavior on color { + ColorAnimation { + duration: 400 + } + } + + // The layer is disabled when the button color is transparent so you can do + // Material.background: "transparent" and get a proper flat button without needing + // to set Material.elevation as well + layer.enabled: control.enabled && control.Material.buttonColor.a > 0 + layer.effect: ElevationEffect { + elevation: control.Material.elevation + } + } + //! [background] +} diff --git a/bin/win64/Material/CheckBox.qml b/bin/win64/Material/CheckBox.qml new file mode 100644 index 0000000..0163e37 --- /dev/null +++ b/bin/win64/Material/CheckBox.qml @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.CheckBox { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + spacing: 8 + padding: 8 + topPadding: padding + 7 + bottomPadding: padding + 7 + + //! [indicator] + indicator: CheckIndicator { + x: text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + //! [indicator] + + //! [contentItem] + contentItem: Text { + leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + color: control.enabled ? control.Material.primaryTextColor : control.Material.hintTextColor + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + } + //! [contentItem] +} diff --git a/bin/win64/Material/CheckDelegate.qml b/bin/win64/Material/CheckDelegate.qml new file mode 100644 index 0000000..549a957 --- /dev/null +++ b/bin/win64/Material/CheckDelegate.qml @@ -0,0 +1,88 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.CheckDelegate { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 16 + topPadding: 14 + bottomPadding: 14 + spacing: 16 + + //! [indicator] + indicator: CheckIndicator { + x: text ? (control.mirrored ? control.leftPadding : control.width - width - control.rightPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + //! [indicator] + + //! [contentItem] + contentItem: Text { + leftPadding: !control.mirrored ? 0 : control.indicator.width + control.spacing + rightPadding: control.mirrored ? 0 : control.indicator.width + control.spacing + + text: control.text + font: control.font + color: control.enabled ? control.Material.primaryTextColor : control.Material.hintTextColor + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitHeight: 48 + + visible: control.down || control.highlighted + color: control.down ? control.Material.buttonPressColor : control.Material.listHighlightColor + } + //! [background] +} diff --git a/bin/win64/Material/CheckIndicator.qml b/bin/win64/Material/CheckIndicator.qml new file mode 100644 index 0000000..c541e22 --- /dev/null +++ b/bin/win64/Material/CheckIndicator.qml @@ -0,0 +1,110 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Controls.Material 2.0 + +Rectangle { + id: indicatorItem + implicitWidth: 18 + implicitHeight: 18 + color: "transparent" + border.color: control.checked ? control.Material.accentColor : control.Material.secondaryTextColor + border.width: control.checked ? width / 2 : 2 + radius: 2 + + property alias control: ripple.control + + Behavior on border.width { + NumberAnimation { + duration: 100 + easing.type: Easing.OutCubic + } + } + + Behavior on border.color { + ColorAnimation { + duration: 100 + easing.type: Easing.OutCubic + } + } + + Ripple { + id: ripple + width: parent.width + height: width + control: control + colored: control.checked + opacity: control.down || control.visualFocus ? 1 : 0 + } + + // TODO: This needs to be transparent + Image { + id: checkImage + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: 14 + height: 14 + source: "qrc:/qt-project.org/imports/QtQuick/Controls.2/Material/images/check.png" + fillMode: Image.PreserveAspectFit + + scale: control.checked ? 1 : 0 + Behavior on scale { NumberAnimation { duration: 100 } } + } + + states: State { + name: "checked" + when: control.checked + } + + transitions: Transition { + SequentialAnimation { + NumberAnimation { + target: indicatorItem + property: "scale" + // Go down 2 pixels in size. + to: 1 - 2 / indicatorItem.width + duration: 120 + } + NumberAnimation { + target: indicatorItem + property: "scale" + to: 1 + duration: 120 + } + } + } +} diff --git a/bin/win64/Material/ComboBox.qml b/bin/win64/Material/ComboBox.qml new file mode 100644 index 0000000..b573a31 --- /dev/null +++ b/bin/win64/Material/ComboBox.qml @@ -0,0 +1,164 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Window 2.2 +import QtQuick.Controls 2.0 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.ComboBox { + id: control + + Material.elevation: control.pressed ? 8 : 2 + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + spacing: 6 + padding: 16 + + //! [delegate] + delegate: MenuItem { + width: control.width + text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] : model[control.textRole]) : modelData + Material.foreground: control.currentIndex === index ? control.Material.accent : control.Material.foreground + highlighted: control.highlightedIndex === index + } + //! [delegate] + + //! [indicator] + indicator: Image { + x: control.mirrored ? control.leftPadding : control.width - width - control.rightPadding + y: control.topPadding + (control.availableHeight - height) / 2 + opacity: !control.enabled ? 0.5 : 1.0 + source: "qrc:/qt-project.org/imports/QtQuick/Controls.2/Material/images/drop-indicator.png" + } + //! [indicator] + + //! [contentItem] + contentItem: Text { + leftPadding: control.mirrored && control.indicator ? control.indicator.width + control.spacing : 0 + rightPadding: !control.mirrored && control.indicator ? control.indicator.width + control.spacing : 0 + + text: control.displayText + font: control.font + color: control.enabled ? control.Material.primaryTextColor : control.Material.hintTextColor + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + elide: Text.ElideRight + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitWidth: 120 + implicitHeight: 48 + + radius: 2 + color: control.Material.dialogColor + + Behavior on color { + ColorAnimation { + duration: 400 + } + } + + layer.enabled: control.enabled && control.Material.elevation > 0 + layer.effect: ElevationEffect { + elevation: control.Material.elevation + } + + Rectangle { + width: parent.width + height: parent.height + radius: parent.radius + visible: control.visualFocus + color: control.Material.checkBoxUncheckedRippleColor + } + } + //! [background] + + //! [popup] + popup: T.Popup { + width: control.width + implicitHeight: listview.contentHeight + transformOrigin: Item.Top + topMargin: 12 + bottomMargin: 12 + + Material.theme: control.Material.theme + Material.accent: control.Material.accent + Material.primary: control.Material.primary + + enter: Transition { + // grow_fade_in + NumberAnimation { property: "scale"; from: 0.9; to: 1.0; easing.type: Easing.OutQuint; duration: 220 } + NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; easing.type: Easing.OutCubic; duration: 150 } + } + + exit: Transition { + // shrink_fade_out + NumberAnimation { property: "scale"; from: 1.0; to: 0.9; easing.type: Easing.OutQuint; duration: 220 } + NumberAnimation { property: "opacity"; from: 1.0; to: 0.0; easing.type: Easing.OutCubic; duration: 150 } + } + + contentItem: ListView { + id: listview + clip: true + model: control.popup.visible ? control.delegateModel : null + currentIndex: control.highlightedIndex + + T.ScrollIndicator.vertical: ScrollIndicator { } + } + + background: Rectangle { + radius: 3 + color: control.Material.dialogColor + + layer.enabled: control.enabled + layer.effect: ElevationEffect { + elevation: 8 + } + } + } + //! [popup] +} diff --git a/bin/win64/Material/Dial.qml b/bin/win64/Material/Dial.qml new file mode 100644 index 0000000..5d1f627 --- /dev/null +++ b/bin/win64/Material/Dial.qml @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.Dial { + id: control + + implicitWidth: 100 + implicitHeight: 100 + + //! [background] + background: Rectangle { + x: control.width / 2 - width / 2 + y: control.height / 2 - height / 2 + width: Math.max(64, Math.min(control.width, control.height)) + height: width + color: "transparent" + radius: width / 2 + + border.color: control.enabled ? control.Material.accentColor : control.Material.hintTextColor + } + //! [background] + + //! [handle] + handle: Rectangle { + id: handleItem + + x: background.x + background.width / 2 - handle.width / 2 + y: background.y + background.height / 2 - handle.height / 2 + transform: [ + Translate { + y: -background.height * 0.4 + handle.height / 2 + }, + Rotation { + angle: control.angle + origin.x: handle.width / 2 + origin.y: handle.height / 2 + } + ] + implicitWidth: 14 + implicitHeight: 14 + radius: width / 2 + color: control.enabled ? control.Material.accentColor : control.Material.hintTextColor + } + //! [handle] +} diff --git a/bin/win64/Material/Drawer.qml b/bin/win64/Material/Drawer.qml new file mode 100644 index 0000000..822bf1c --- /dev/null +++ b/bin/win64/Material/Drawer.qml @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.Drawer { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) + + contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) + contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) + + //! [enter] + enter: Transition { SmoothedAnimation { velocity: 5 } } + //! [enter] + + //! [exit] + exit: Transition { SmoothedAnimation { velocity: 5 } } + //! [exit] + + //! [contentItem] + contentItem: Item { } + //! [contentItem] + + //! [background] + background: Rectangle { + color: control.Material.dialogColor + + layer.enabled: control.position > 0 + layer.effect: ElevationEffect { + elevation: 16 + fullHeight: true + } + } + //! [background] +} diff --git a/bin/win64/Material/ElevationEffect.qml b/bin/win64/Material/ElevationEffect.qml new file mode 100644 index 0000000..4ee4369 --- /dev/null +++ b/bin/win64/Material/ElevationEffect.qml @@ -0,0 +1,279 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +/*! + An effect for standard Material Design elevation shadows. Useful for using as \c layer.effect. + */ +Item { + id: effect + + /*! + The source the effect is applied to. + */ + property var source + + /*! + The elevation of the \l source Item. + */ + property int elevation: 0 + + /*! + Set to \c true if the \l source Item is the same width as its parent and the shadow + should be full width instead of rounding around the corner of the Item. + + \sa fullHeight + */ + property bool fullWidth: false + + /*! + Set to \c true if the \l source Item is the same height as its parent and the shadow + should be full height instead of rounding around the corner of the Item. + + \sa fullWidth + */ + property bool fullHeight: false + + /*! + \internal + + The actual source Item the effect is applied to. + */ + readonly property Item sourceItem: source.sourceItem + + /* + * The following shadow values are taken from Angular Material + * + * The MIT License (MIT) + * + * Copyright (c) 2014-2016 Google, Inc. http://angularjs.org + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + /*! + \internal + + The shadows to use for each possible elevation. There are three shadows that when combined + make up the elevation. + */ + readonly property var _shadows: [ + [{offset: 0, blur: 0, spread: 0}, + {offset: 0, blur: 0, spread: 0}, + {offset: 0, blur: 0, spread: 0}], + + [{offset: 1, blur: 3, spread: 0}, + {offset: 1, blur: 1, spread: 0}, + {offset: 2, blur: 1, spread: -1}], + + [{offset: 1, blur: 5, spread: 0}, + {offset: 2, blur: 2, spread: 0}, + {offset: 3, blur: 1, spread: -2}], + + [{offset: 1, blur: 8, spread: 0}, + {offset: 3, blur: 4, spread: 0}, + {offset: 3, blur: 3, spread: -2}], + + [{offset: 2, blur: 4, spread: -1}, + {offset: 4, blur: 5, spread: 0}, + {offset: 1, blur: 10, spread: 0}], + + [{offset: 3, blur: 5, spread: -1}, + {offset: 5, blur: 8, spread: 0}, + {offset: 1, blur: 14, spread: 0}], + + [{offset: 3, blur: 5, spread: -1}, + {offset: 6, blur: 10, spread: 0}, + {offset: 1, blur: 18, spread: 0}], + + [{offset: 4, blur: 5, spread: -2}, + {offset: 7, blur: 10, spread: 1}, + {offset: 2, blur: 16, spread: 1}], + + [{offset: 5, blur: 5, spread: -3}, + {offset: 8, blur: 10, spread: 1}, + {offset: 3, blur: 14, spread: 2}], + + [{offset: 5, blur: 6, spread: -3}, + {offset: 9, blur: 12, spread: 1}, + {offset: 3, blur: 16, spread: 2}], + + [{offset: 6, blur: 6, spread: -3}, + {offset: 10, blur: 14, spread: 1}, + {offset: 4, blur: 18, spread: 3}], + + [{offset: 6, blur: 7, spread: -4}, + {offset: 11, blur: 15, spread: 1}, + {offset: 4, blur: 20, spread: 3}], + + [{offset: 7, blur: 8, spread: -4}, + {offset: 12, blur: 17, spread: 2}, + {offset: 5, blur: 22, spread: 4}], + + [{offset: 7, blur: 8, spread: -4}, + {offset: 13, blur: 19, spread: 2}, + {offset: 5, blur: 24, spread: 4}], + + [{offset: 7, blur: 9, spread: -4}, + {offset: 14, blur: 21, spread: 2}, + {offset: 5, blur: 26, spread: 4}], + + [{offset: 8, blur: 9, spread: -5}, + {offset: 15, blur: 22, spread: 2}, + {offset: 6, blur: 28, spread: 5}], + + [{offset: 8, blur: 10, spread: -5}, + {offset: 16, blur: 24, spread: 2}, + {offset: 6, blur: 30, spread: 5}], + + [{offset: 8, blur: 11, spread: -5}, + {offset: 17, blur: 26, spread: 2}, + {offset: 6, blur: 32, spread: 5}], + + [{offset: 9, blur: 11, spread: -5}, + {offset: 18, blur: 28, spread: 2}, + {offset: 7, blur: 34, spread: 6}], + + [{offset: 9, blur: 12, spread: -6}, + {offset: 19, blur: 29, spread: 2}, + {offset: 7, blur: 36, spread: 6}], + + [{offset: 10, blur: 13, spread: -6}, + {offset: 20, blur: 31, spread: 3}, + {offset: 8, blur: 38, spread: 7}], + + [{offset: 10, blur: 13, spread: -6}, + {offset: 21, blur: 33, spread: 3}, + {offset: 8, blur: 40, spread: 7}], + + [{offset: 10, blur: 14, spread: -6}, + {offset: 22, blur: 35, spread: 3}, + {offset: 8, blur: 42, spread: 7}], + + [{offset: 11, blur: 14, spread: -7}, + {offset: 23, blur: 36, spread: 3}, + {offset: 9, blur: 44, spread: 8}], + + [{offset: 11, blur: 15, spread: -7}, + {offset: 24, blur: 38, spread: 3}, + {offset: 9, blur: 46, spread: 8}] + ] + + /*! + \internal + + The current shadow based on the elevation. + */ + readonly property var _shadow: _shadows[Math.max(0, Math.min(elevation, _shadows.length - 1))] + + // Nest the shadows and source view in two items rendered as a layer + // so the shadow is not clipped by the bounds of the source view + Item { + property int margin: -100 + + x: margin + y: margin + width: parent.width - 2 * margin + height: parent.height - 2 * margin + + // By rendering as a layer, the shadow will never show through the source item, + // even when the source item's opacity is less than 1 + layer.enabled: true + + // The box shadows automatically pick up the size of the source Item and not + // the size of the parent, so we don't need to worry about the extra padding + // in the parent Item + BoxShadow { + offsetY: _shadow[0].offset + blurRadius: _shadow[0].blur + spreadRadius: _shadow[0].spread + color: Qt.rgba(0,0,0, 0.2) + + fullWidth: effect.fullWidth + fullHeight: effect.fullHeight + source: effect.sourceItem + } + + BoxShadow { + offsetY: _shadow[1].offset + blurRadius: _shadow[1].blur + spreadRadius: _shadow[1].spread + color: Qt.rgba(0,0,0, 0.14) + + fullWidth: effect.fullWidth + fullHeight: effect.fullHeight + source: effect.sourceItem + } + + BoxShadow { + offsetY: _shadow[2].offset + blurRadius: _shadow[2].blur + spreadRadius: _shadow[2].spread + color: Qt.rgba(0,0,0, 0.12) + + fullWidth: effect.fullWidth + fullHeight: effect.fullHeight + source: effect.sourceItem + } + + ShaderEffect { + property alias source: effect.source + + x: (parent.width - width)/2 + y: (parent.height - height)/2 + width: sourceItem.width + height: sourceItem.height + } + } +} diff --git a/bin/win64/Material/Frame.qml b/bin/win64/Material/Frame.qml new file mode 100644 index 0000000..65eab21 --- /dev/null +++ b/bin/win64/Material/Frame.qml @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.Frame { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) + + contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) + contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) + + padding: 12 + + //! [contentItem] + contentItem: Item { } + //! [contentItem] + + //! [background] + background: Rectangle { + radius: 3 + color: "transparent" + border.color: control.Material.frameColor + } + //! [background] +} diff --git a/bin/win64/Material/GroupBox.qml b/bin/win64/Material/GroupBox.qml new file mode 100644 index 0000000..8e7704a --- /dev/null +++ b/bin/win64/Material/GroupBox.qml @@ -0,0 +1,85 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.GroupBox { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + label ? label.implicitWidth + leftPadding + rightPadding : 0, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) + + contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) + contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) + + spacing: 6 + padding: 12 + topPadding: padding + (label && label.implicitWidth > 0 ? label.implicitHeight + spacing : 0) + + //! [contentItem] + contentItem: Item {} + //! [contentItem] + + //! [label] + label: Text { + x: control.leftPadding + width: control.availableWidth + + text: control.title + font: control.font + color: control.enabled ? control.Material.primaryTextColor : control.Material.hintTextColor + elide: Text.ElideRight + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + } + //! [label] + + //! [background] + background: Rectangle { + y: control.topPadding - control.padding + width: parent.width + height: parent.height - control.topPadding + control.padding + + radius: 3 + color: "transparent" + border.color: control.Material.frameColor + } + //! [background] +} diff --git a/bin/win64/Material/ItemDelegate.qml b/bin/win64/Material/ItemDelegate.qml new file mode 100644 index 0000000..19c832c --- /dev/null +++ b/bin/win64/Material/ItemDelegate.qml @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.ItemDelegate { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 16 + spacing: 16 + + //! [contentItem] + contentItem: Text { + leftPadding: control.checkable && !control.mirrored ? (control.indicator ? control.indicator.width : 0) + control.spacing : 0 + rightPadding: control.checkable && control.mirrored ? (control.indicator ? control.indicator.width : 0) + control.spacing : 0 + + text: control.text + font: control.font + color: control.enabled ? control.Material.primaryTextColor : control.Material.hintTextColor + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitHeight: 48 + + visible: control.down || control.highlighted + color: control.down ? control.Material.buttonPressColor : control.Material.listHighlightColor + } + //! [background] +} diff --git a/bin/win64/Material/Label.qml b/bin/win64/Material/Label.qml new file mode 100644 index 0000000..8bda5cc --- /dev/null +++ b/bin/win64/Material/Label.qml @@ -0,0 +1,46 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.Label { + id: control + + color: enabled ? Material.primaryTextColor : Material.hintTextColor + linkColor: Material.accentColor +} diff --git a/bin/win64/Material/Menu.qml b/bin/win64/Material/Menu.qml new file mode 100644 index 0000000..557c691 --- /dev/null +++ b/bin/win64/Material/Menu.qml @@ -0,0 +1,100 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Controls 2.0 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.Menu { + id: control + + Material.elevation: 8 + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem ? contentItem.implicitWidth + leftPadding + rightPadding : 0) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem ? contentItem.implicitHeight : 0) + topPadding + bottomPadding + + margins: 0 + topPadding: 8 + bottomPadding: 8 + + transformOrigin: Item.Top + + enter: Transition { + // grow_fade_in + NumberAnimation { property: "scale"; from: 0.9; to: 1.0; easing.type: Easing.OutQuint; duration: 220 } + NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; easing.type: Easing.OutCubic; duration: 150 } + } + + exit: Transition { + // shrink_fade_out + NumberAnimation { property: "scale"; from: 1.0; to: 0.9; easing.type: Easing.OutQuint; duration: 220 } + NumberAnimation { property: "opacity"; from: 1.0; to: 0.0; easing.type: Easing.OutCubic; duration: 150 } + } + + //! [contentItem] + contentItem: ListView { + implicitHeight: contentHeight + + model: control.contentModel + // TODO: improve this? + interactive: ApplicationWindow.window ? contentHeight > ApplicationWindow.window.height : false + clip: true + keyNavigationWraps: false + currentIndex: -1 + + ScrollIndicator.vertical: ScrollIndicator {} + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitWidth: 200 + implicitHeight: 48 + + radius: 3 + color: control.Material.dialogColor + + layer.enabled: control.Material.elevation > 0 + layer.effect: ElevationEffect { + elevation: control.Material.elevation + } + } + //! [background] +} diff --git a/bin/win64/Material/MenuItem.qml b/bin/win64/Material/MenuItem.qml new file mode 100644 index 0000000..85deb23 --- /dev/null +++ b/bin/win64/Material/MenuItem.qml @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.MenuItem { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 16 + topPadding: 12 + bottomPadding: 12 + spacing: 16 + + //! [indicator] + indicator: CheckIndicator { + x: text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + visible: control.checkable + control: control + } + //! [indicator] + + //! [contentItem] + contentItem: Text { + leftPadding: control.checkable && !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.checkable && control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + color: control.enabled ? control.Material.primaryTextColor : control.Material.hintTextColor + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitWidth: 200 + implicitHeight: 48 + visible: control.down || control.highlighted + color: control.down ? control.Material.buttonPressColor : control.Material.listHighlightColor + } + //! [background] +} diff --git a/bin/win64/Material/Page.qml b/bin/win64/Material/Page.qml new file mode 100644 index 0000000..b155b2e --- /dev/null +++ b/bin/win64/Material/Page.qml @@ -0,0 +1,53 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.Page { + id: control + + //! [contentItem] + contentItem: Item { } + //! [contentItem] + + //! [background] + background: Rectangle { + color: control.Material.backgroundColor + } + //! [background] +} diff --git a/bin/win64/Material/PageIndicator.qml b/bin/win64/Material/PageIndicator.qml new file mode 100644 index 0000000..085a131 --- /dev/null +++ b/bin/win64/Material/PageIndicator.qml @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.PageIndicator { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + + padding: 6 + spacing: 6 + + //! [delegate] + delegate: Rectangle { + implicitWidth: 8 + implicitHeight: 8 + + radius: width / 2 + color: control.enabled ? control.Material.primaryTextColor : control.Material.hintTextColor + + opacity: index === currentIndex ? 0.95 : pressed ? 0.7 : 0.45 + Behavior on opacity { OpacityAnimator { duration: 100 } } + } + //! [delegate] + + //! [contentItem] + contentItem: Row { + spacing: control.spacing + + Repeater { + model: control.count + delegate: control.delegate + } + } + //! [contentItem] +} diff --git a/bin/win64/Material/Pane.qml b/bin/win64/Material/Pane.qml new file mode 100644 index 0000000..434c676 --- /dev/null +++ b/bin/win64/Material/Pane.qml @@ -0,0 +1,67 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.Pane { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) + + contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) + contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) + + padding: 12 + + //! [contentItem] + contentItem: Item { } + //! [contentItem] + + //! [background] + background: Rectangle { + color: control.Material.backgroundColor + + layer.enabled: control.enabled && control.Material.elevation > 0 + layer.effect: ElevationEffect { + elevation: control.Material.elevation + } + } + //! [background] +} diff --git a/bin/win64/Material/Popup.qml b/bin/win64/Material/Popup.qml new file mode 100644 index 0000000..04d15fa --- /dev/null +++ b/bin/win64/Material/Popup.qml @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.Popup { + id: control + + Material.elevation: 24 + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentWidth > 0 ? contentWidth + leftPadding + rightPadding : 0) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentWidth > 0 ? contentHeight + topPadding + bottomPadding : 0) + + contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) + contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) + + padding: 12 + + enter: Transition { + // grow_fade_in + NumberAnimation { property: "scale"; from: 0.9; to: 1.0; easing.type: Easing.OutQuint; duration: 220 } + NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; easing.type: Easing.OutCubic; duration: 150 } + } + + exit: Transition { + // shrink_fade_out + NumberAnimation { property: "scale"; from: 1.0; to: 0.9; easing.type: Easing.OutQuint; duration: 220 } + NumberAnimation { property: "opacity"; from: 1.0; to: 0.0; easing.type: Easing.OutCubic; duration: 150 } + } + + contentItem: Item { } + + background: Rectangle { + radius: 3 + color: control.Material.dialogColor + + layer.enabled: control.Material.elevation > 0 + layer.effect: ElevationEffect { + elevation: control.Material.elevation + } + } +} diff --git a/bin/win64/Material/ProgressBar.qml b/bin/win64/Material/ProgressBar.qml new file mode 100644 index 0000000..d5e2870 --- /dev/null +++ b/bin/win64/Material/ProgressBar.qml @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.ProgressBar { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + + //! [contentItem] + contentItem: ProgressStrip { + id: strip + implicitHeight: 4 + + scale: control.mirrored ? -1 : 1 + indeterminate: control.indeterminate + color: control.Material.accentColor + progress: control.position + + StripAnimator { + target: strip + running: control.visible && control.indeterminate + } + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitWidth: 200 + implicitHeight: 4 + x: control.leftPadding + y: control.topPadding + (control.availableHeight - height) / 2 + width: control.availableWidth + height: 4 + + color: Qt.rgba(control.Material.accentColor.r, control.Material.accentColor.g, control.Material.accentColor.b, 0.25) + } + //! [background] +} diff --git a/bin/win64/Material/RadioButton.qml b/bin/win64/Material/RadioButton.qml new file mode 100644 index 0000000..ddf496a --- /dev/null +++ b/bin/win64/Material/RadioButton.qml @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.RadioButton { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + spacing: 8 + padding: 8 + topPadding: padding + 6 + bottomPadding: padding + 6 + + //! [indicator] + indicator: RadioIndicator { + x: text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + //! [indicator] + + //! [contentItem] + contentItem: Text { + leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + color: control.enabled ? control.Material.primaryTextColor : control.Material.hintTextColor + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + } + //! [contentItem] +} diff --git a/bin/win64/Material/RadioDelegate.qml b/bin/win64/Material/RadioDelegate.qml new file mode 100644 index 0000000..ba443be --- /dev/null +++ b/bin/win64/Material/RadioDelegate.qml @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.RadioDelegate { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 16 + topPadding: 8 + bottomPadding: 8 + spacing: 16 + + //! [indicator] + indicator: RadioIndicator { + x: text ? (control.mirrored ? control.leftPadding : control.width - width - control.rightPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + //! [indicator] + + //! [contentItem] + contentItem: Text { + leftPadding: !control.mirrored ? 0 : control.indicator.width + control.spacing + rightPadding: control.mirrored ? 0 : control.indicator.width + control.spacing + + text: control.text + font: control.font + color: control.enabled ? control.Material.primaryTextColor : control.Material.hintTextColor + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitHeight: 48 + + visible: control.down || control.highlighted + color: control.down ? control.Material.buttonPressColor : control.Material.listHighlightColor + } + //! [background] +} diff --git a/bin/win64/Material/RadioIndicator.qml b/bin/win64/Material/RadioIndicator.qml new file mode 100644 index 0000000..4090c73 --- /dev/null +++ b/bin/win64/Material/RadioIndicator.qml @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +Rectangle { + implicitWidth: 20 + implicitHeight: 20 + radius: width / 2 + border.width: 2 + border.color: control.checked || control.down ? control.Material.accentColor : control.Material.secondaryTextColor + color: "transparent" + + property alias control: ripple.control + + Ripple { + id: ripple + width: parent.width + height: width + control: control + colored: control.checked + opacity: control.down || control.visualFocus ? 1 : 0 + } + + Rectangle { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: 10 + height: 10 + radius: width / 2 + color: parent.border.color + visible: control.checked || control.down + } +} diff --git a/bin/win64/Material/RangeSlider.qml b/bin/win64/Material/RangeSlider.qml new file mode 100644 index 0000000..d7589cf --- /dev/null +++ b/bin/win64/Material/RangeSlider.qml @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.RangeSlider { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + Math.max(background ? background.implicitWidth : 0, + first.handle ? first.handle.implicitWidth : 0, + second.handle ? second.handle.implicitWidth : 0) + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(background ? background.implicitHeight : 0, + first.handle ? first.handle.implicitHeight : 0, + second.handle ? second.handle.implicitHeight : 0) + topPadding + bottomPadding) + + padding: 6 + + //! [firstHandle] + first.handle: SliderHandle { + x: control.leftPadding + (horizontal ? control.first.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) + y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : control.first.visualPosition * (control.availableHeight - height)) + value: first.value + handleHasFocus: activeFocus + handlePressed: first.pressed + } + //! [firstHandle] + + //! [secondHandle] + second.handle: SliderHandle { + x: control.leftPadding + (horizontal ? control.second.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) + y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : control.second.visualPosition * (control.availableHeight - height)) + value: second.value + handleHasFocus: activeFocus + handlePressed: second.pressed + } + //! [secondHandle] + + //! [background] + background: Rectangle { + x: control.leftPadding + (horizontal ? 0 : (control.availableWidth - width) / 2) + y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : 0) + implicitWidth: horizontal ? 200 : 1 + implicitHeight: horizontal ? 1 : 200 + width: horizontal ? control.availableWidth : implicitWidth + height: horizontal ? implicitHeight : control.availableHeight + color: control.Material.primaryTextColor + scale: horizontal && control.mirrored ? -1 : 1 + + readonly property bool horizontal: control.orientation === Qt.Horizontal + + Rectangle { + x: parent.horizontal ? control.first.position * parent.width : -1 + y: parent.horizontal ? -1 : control.second.visualPosition * parent.height + 3 + width: parent.horizontal ? control.second.position * parent.width - control.first.position * parent.width - 3 : 3 + height: parent.horizontal ? 3 : control.second.position * parent.height - control.first.position * parent.height - 3 + + color: control.Material.accentColor + } + } + //! [background] +} diff --git a/bin/win64/Material/Ripple.qml b/bin/win64/Material/Ripple.qml new file mode 100644 index 0000000..1565038 --- /dev/null +++ b/bin/win64/Material/Ripple.qml @@ -0,0 +1,51 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Controls.Material 2.0 + +Rectangle { + property Item control + property bool colored: false + + radius: width / 2 + scale: 2.5 + color: colored ? control.Material.checkBoxCheckedRippleColor : control.Material.checkBoxUncheckedRippleColor + + Behavior on opacity { + NumberAnimation {} + } +} diff --git a/bin/win64/Material/ScrollBar.qml b/bin/win64/Material/ScrollBar.qml new file mode 100644 index 0000000..41ee5ef --- /dev/null +++ b/bin/win64/Material/ScrollBar.qml @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.ScrollBar { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + + padding: 2 + + //! [contentItem] + contentItem: Rectangle { + id: handle + + implicitWidth: 4 + implicitHeight: 4 + + color: control.pressed ? control.Material.scrollBarPressedColor : control.Material.scrollBarColor + visible: control.size < 1.0 + opacity: 0.0 + + states: State { + name: "active" + when: control.active + PropertyChanges { target: handle; opacity: 0.75 } + } + + transitions: Transition { + from: "active" + SequentialAnimation { + PauseAnimation { duration: 450 } + NumberAnimation { target: handle; duration: 200; property: "opacity"; to: 0.0 } + } + } + } + //! [contentItem] +} diff --git a/bin/win64/Material/ScrollIndicator.qml b/bin/win64/Material/ScrollIndicator.qml new file mode 100644 index 0000000..0219aa2 --- /dev/null +++ b/bin/win64/Material/ScrollIndicator.qml @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.ScrollIndicator { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + + padding: 2 + + //! [contentItem] + contentItem: Rectangle { + id: indicator + + implicitWidth: 4 + implicitHeight: 4 + + color: control.Material.scrollBarColor + visible: control.size < 1.0 + opacity: 0.0 + + states: State { + name: "active" + when: control.active + PropertyChanges { target: indicator; opacity: 0.75 } + } + + transitions: [ + Transition { + from: "active" + SequentialAnimation { + PauseAnimation { duration: 450 } + NumberAnimation { target: indicator; duration: 200; property: "opacity"; to: 0.0 } + } + } + ] + } + //! [contentItem] +} diff --git a/bin/win64/Material/Slider.qml b/bin/win64/Material/Slider.qml new file mode 100644 index 0000000..d6280b6 --- /dev/null +++ b/bin/win64/Material/Slider.qml @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.Slider { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + Math.max(background ? background.implicitWidth : 0, + handle ? handle.implicitWidth : 0) + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(background ? background.implicitHeight : 0, + handle ? handle.implicitHeight : 0) + topPadding + bottomPadding) + + padding: 6 + + //! [handle] + handle: SliderHandle { + x: control.leftPadding + (horizontal ? control.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) + y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : control.visualPosition * (control.availableHeight - height)) + value: control.value + handleHasFocus: control.visualFocus + handlePressed: control.pressed + } + //! [handle] + + //! [background] + background: Rectangle { + x: control.leftPadding + (horizontal ? 0 : (control.availableWidth - width) / 2) + y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : 0) + implicitWidth: horizontal ? 200 : 1 + implicitHeight: horizontal ? 1 : 200 + width: horizontal ? control.availableWidth : implicitWidth + height: horizontal ? implicitHeight : control.availableHeight + color: control.Material.primaryTextColor + scale: horizontal && control.mirrored ? -1 : 1 + + readonly property bool horizontal: control.orientation === Qt.Horizontal + + Rectangle { + x: parent.horizontal ? 0 : (parent.width - width) / 2 + y: parent.horizontal ? (parent.height - height) / 2 : control.visualPosition * parent.height + width: parent.horizontal ? control.position * parent.width : 3 + height: parent.horizontal ? 3 : control.position * parent.height + + color: control.Material.accentColor + } + } + //! [background] +} diff --git a/bin/win64/Material/SliderHandle.qml b/bin/win64/Material/SliderHandle.qml new file mode 100644 index 0000000..49f833d --- /dev/null +++ b/bin/win64/Material/SliderHandle.qml @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Controls.Material 2.0 + +Item { + id: root + implicitWidth: initialSize + implicitHeight: initialSize + + property real value: 0 + property bool handleHasFocus: false + property bool handlePressed: false + readonly property int initialSize: 13 + readonly property bool horizontal: control.orientation === Qt.Horizontal + readonly property var control: parent + + Rectangle { + id: handleRect + width: parent.width + height: parent.height + radius: width / 2 + color: root.control.Material.accentColor + scale: root.handlePressed ? 1.5 : 1 + + Behavior on scale { + NumberAnimation { + duration: 250 + } + } + } + + Ripple { + width: parent.width + height: width + control: root.control + colored: true + opacity: root.handleHasFocus && !root.handlePressed ? 1 : 0 + } +} diff --git a/bin/win64/Material/SpinBox.qml b/bin/win64/Material/SpinBox.qml new file mode 100644 index 0000000..567fbfe --- /dev/null +++ b/bin/win64/Material/SpinBox.qml @@ -0,0 +1,178 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.SpinBox { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + + (up.indicator ? up.indicator.implicitWidth : 0) + + (down.indicator ? down.indicator.implicitWidth : 0)) + implicitHeight: Math.max(contentItem.implicitHeight + topPadding + bottomPadding, + background ? background.implicitHeight : 0, + up.indicator ? up.indicator.implicitHeight : 0, + down.indicator ? down.indicator.implicitHeight : 0) + baselineOffset: contentItem.y + contentItem.baselineOffset + + spacing: 6 + topPadding: 8 + bottomPadding: 16 + leftPadding: (control.mirrored ? (up.indicator ? up.indicator.width : 0) : (down.indicator ? down.indicator.width : 0)) + rightPadding: (control.mirrored ? (down.indicator ? down.indicator.width : 0) : (up.indicator ? up.indicator.width : 0)) + + //! [validator] + validator: IntValidator { + locale: control.locale.name + bottom: Math.min(control.from, control.to) + top: Math.max(control.from, control.to) + } + //! [validator] + + //! [contentItem] + contentItem: TextInput { + text: control.textFromValue(control.value, control.locale) + + font: control.font + color: control.Material.primaryTextColor + selectionColor: control.Material.textSelectionColor + selectedTextColor: control.Material.primaryTextColor + horizontalAlignment: Qt.AlignHCenter + verticalAlignment: Qt.AlignVCenter + cursorDelegate: Rectangle { + id: cursor + color: control.Material.accentColor + width: 2 + visible: control.activeFocus && contentItem.selectionStart === contentItem.selectionEnd + + Connections { + target: contentItem + onCursorPositionChanged: { + // keep a moving cursor visible + cursor.opacity = 1 + timer.restart() + } + } + + Timer { + id: timer + running: control.activeFocus + repeat: true + interval: Qt.styleHints.cursorFlashTime + onTriggered: cursor.opacity = !cursor.opacity ? 1 : 0 + // force the cursor visible when gaining focus + onRunningChanged: cursor.opacity = 1 + } + } + + readOnly: !control.editable + validator: control.validator + inputMethodHints: Qt.ImhFormattedNumbersOnly + } + //! [contentItem] + + //! [up.indicator] + up.indicator: PaddedRectangle { + x: control.mirrored ? 0 : parent.width - width + implicitWidth: 48 + implicitHeight: 48 + height: parent.height + width: height + padding: control.spacing + radius: 3 + color: Qt.tint(Qt.tint(control.Material.buttonColor, + control.activeFocus ? control.Material.buttonHoverColor : "transparent"), + control.up.pressed ? control.Material.buttonPressColor: "transparent") + + Rectangle { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: Math.min(parent.width / 3, parent.width / 3) + height: 2 + color: enabled ? control.Material.primaryTextColor : control.Material.spinBoxDisabledIconColor + } + Rectangle { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: 2 + height: Math.min(parent.width / 3, parent.width / 3) + color: enabled ? control.Material.primaryTextColor : control.Material.spinBoxDisabledIconColor + } + } + //! [up.indicator] + + //! [down.indicator] + down.indicator: PaddedRectangle { + x: control.mirrored ? parent.width - width : 0 + implicitWidth: 48 + implicitHeight: 48 + height: parent.height + width: height + padding: control.spacing + radius: 3 + color: Qt.tint(Qt.tint(control.Material.buttonColor, + control.activeFocus ? control.Material.buttonHoverColor : "transparent"), + control.down.pressed ? control.Material.buttonPressColor : "transparent") + + Rectangle { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: parent.width / 3 + height: 2 + color: enabled ? control.Material.primaryTextColor : control.Material.spinBoxDisabledIconColor + } + } + //! [down.indicator] + + //! [background] + background: Item { + implicitWidth: 192 + implicitHeight: 48 + + Rectangle { + x: parent.width / 2 - width / 2 + y: parent.y + parent.height - height - control.bottomPadding / 2 + width: control.availableWidth + height: control.activeFocus ? 2 : 1 + color: control.activeFocus ? control.Material.accentColor : control.Material.hintTextColor + } + } + //! [background] +} diff --git a/bin/win64/Material/StackView.qml b/bin/win64/Material/StackView.qml new file mode 100644 index 0000000..f375630 --- /dev/null +++ b/bin/win64/Material/StackView.qml @@ -0,0 +1,90 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.4 +import QtQuick.Templates 2.0 as T + +T.StackView { + id: control + + //! [popEnter] + popEnter: Transition { + // slide_in_left + NumberAnimation { property: "x"; from: (control.mirrored ? -0.5 : 0.5) * -control.width; to: 0; duration: 200; easing.type: Easing.OutCubic } + NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; duration: 200; easing.type: Easing.OutCubic } + } + //! [popEnter] + + //! [popExit] + popExit: Transition { + // slide_out_right + NumberAnimation { property: "x"; from: 0; to: (control.mirrored ? -0.5 : 0.5) * control.width; duration: 200; easing.type: Easing.OutCubic } + NumberAnimation { property: "opacity"; from: 1.0; to: 0.0; duration: 200; easing.type: Easing.OutCubic } + } + //! [popExit] + + //! [pushEnter] + pushEnter: Transition { + // slide_in_right + NumberAnimation { property: "x"; from: (control.mirrored ? -0.5 : 0.5) * control.width; to: 0; duration: 200; easing.type: Easing.OutCubic } + NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; duration: 200; easing.type: Easing.OutCubic } + } + //! [pushEnter] + + //! [pushExit] + pushExit: Transition { + // slide_out_left + NumberAnimation { property: "x"; from: 0; to: (control.mirrored ? -0.5 : 0.5) * -control.width; duration: 200; easing.type: Easing.OutCubic } + NumberAnimation { property: "opacity"; from: 1.0; to: 0.0; duration: 200; easing.type: Easing.OutCubic } + } + //! [pushExit] + + //! [replaceEnter] + replaceEnter: Transition { + // slide_in_right + NumberAnimation { property: "x"; from: (control.mirrored ? -0.5 : 0.5) * control.width; to: 0; duration: 200; easing.type: Easing.OutCubic } + NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; duration: 200; easing.type: Easing.OutCubic } + } + //! [replaceEnter] + + //! [replaceExit] + replaceExit: Transition { + // slide_out_left + NumberAnimation { property: "x"; from: 0; to: (control.mirrored ? -0.5 : 0.5) * -control.width; duration: 200; easing.type: Easing.OutCubic } + NumberAnimation { property: "opacity"; from: 1.0; to: 0.0; duration: 200; easing.type: Easing.OutCubic } + } + //! [replaceExit] +} diff --git a/bin/win64/Material/SwipeDelegate.qml b/bin/win64/Material/SwipeDelegate.qml new file mode 100644 index 0000000..e1375f7 --- /dev/null +++ b/bin/win64/Material/SwipeDelegate.qml @@ -0,0 +1,104 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.SwipeDelegate { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 16 + topPadding: 8 + bottomPadding: 8 + spacing: 16 + + //! [contentItem] + contentItem: Text { + leftPadding: !control.mirrored ? (control.indicator ? control.indicator.width + control.spacing : 0) : 0 + rightPadding: control.mirrored ? (control.indicator ? control.indicator.width + control.spacing : 0) : 0 + + text: control.text + font: control.font + color: control.enabled ? control.Material.primaryTextColor : control.Material.hintTextColor + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + + Behavior on x { + enabled: !control.down + NumberAnimation { + easing.type: Easing.InOutCubic + duration: 400 + } + } + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitHeight: 48 + + color: control.Material.backgroundColor + + Rectangle { + width: parent.width + height: parent.height + visible: control.down || control.highlighted || control.visualFocus + color: control.down ? control.Material.buttonPressColor : + control.visualFocus || control.hovered ? control.Material.swipeDelegateHoverColor : + control.Material.listHighlightColor + } + + Behavior on x { + enabled: !control.down + NumberAnimation { + easing.type: Easing.InOutCubic + duration: 400 + } + } + } + //! [background] +} diff --git a/bin/win64/Material/SwipeView.qml b/bin/win64/Material/SwipeView.qml new file mode 100644 index 0000000..ab53203 --- /dev/null +++ b/bin/win64/Material/SwipeView.qml @@ -0,0 +1,64 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T + +T.SwipeView { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + + //! [contentItem] + contentItem: ListView { + model: control.contentModel + currentIndex: control.currentIndex + + spacing: control.spacing + orientation: Qt.Horizontal + snapMode: ListView.SnapOneItem + boundsBehavior: Flickable.StopAtBounds + + highlightRangeMode: ListView.StrictlyEnforceRange + preferredHighlightBegin: 0 + preferredHighlightEnd: 0 + highlightMoveDuration: 250 + } + //! [contentItem] +} diff --git a/bin/win64/Material/Switch.qml b/bin/win64/Material/Switch.qml new file mode 100644 index 0000000..3777610 --- /dev/null +++ b/bin/win64/Material/Switch.qml @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 +import QtQuick.Templates 2.0 as T + +T.Switch { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 8 + spacing: 8 + + //! [indicator] + indicator: SwitchIndicator { + x: text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + //! [indicator] + + //! [contentItem] + contentItem: Text { + leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + color: control.enabled ? control.Material.primaryTextColor : control.Material.hintTextColor + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + } + //! [contentItem] +} diff --git a/bin/win64/Material/SwitchDelegate.qml b/bin/win64/Material/SwitchDelegate.qml new file mode 100644 index 0000000..b729f01 --- /dev/null +++ b/bin/win64/Material/SwitchDelegate.qml @@ -0,0 +1,88 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.SwitchDelegate { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 16 + topPadding: 8 + bottomPadding: 8 + spacing: 16 + + //! [indicator] + indicator: SwitchIndicator { + x: text ? (control.mirrored ? control.leftPadding : control.width - width - control.rightPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + //! [indicator] + + //! [contentItem] + contentItem: Text { + leftPadding: !control.mirrored ? 0 : control.indicator.width + control.spacing + rightPadding: control.mirrored ? 0 : control.indicator.width + control.spacing + + text: control.text + font: control.font + color: control.enabled ? control.Material.primaryTextColor : control.Material.hintTextColor + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitHeight: 48 + + visible: control.down || control.highlighted + color: control.down ? control.Material.buttonPressColor : control.Material.listHighlightColor + } + //! [background] +} diff --git a/bin/win64/Material/SwitchIndicator.qml b/bin/win64/Material/SwitchIndicator.qml new file mode 100644 index 0000000..0d2163b --- /dev/null +++ b/bin/win64/Material/SwitchIndicator.qml @@ -0,0 +1,90 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +Item { + id: indicator + implicitWidth: 38 + implicitHeight: 32 + + property alias control: ripple.control + + Material.elevation: 1 + + Ripple { + id: ripple + x: handle.x + handle.width / 2 - width / 2 + y: handle.y + handle.height / 2 - height / 2 + width: handle.width + height: width + colored: control.checked + opacity: control.pressed || control.visualFocus ? 1 : 0 + } + + Rectangle { + width: parent.width + height: 14 + radius: height / 2 + y: parent.height / 2 - height / 2 + color: control.enabled ? (control.checked ? control.Material.switchCheckedTrackColor : control.Material.switchUncheckedTrackColor) + : control.Material.switchDisabledTrackColor + } + + Rectangle { + id: handle + x: Math.max(0, Math.min(parent.width - width, control.visualPosition * parent.width - (width / 2))) + y: (parent.height - height) / 2 + width: 20 + height: 20 + radius: width / 2 + color: control.enabled ? (control.checked ? control.Material.switchCheckedHandleColor : control.Material.switchUncheckedHandleColor) + : control.Material.switchDisabledHandleColor + + Behavior on x { + enabled: !control.pressed + SmoothedAnimation { + duration: 300 + } + } + layer.enabled: indicator.Material.elevation > 0 + layer.effect: ElevationEffect { + elevation: indicator.Material.elevation + } + } +} diff --git a/bin/win64/Material/TabBar.qml b/bin/win64/Material/TabBar.qml new file mode 100644 index 0000000..79238da --- /dev/null +++ b/bin/win64/Material/TabBar.qml @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.TabBar { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + + spacing: 1 + + //! [contentItem] + contentItem: ListView { + implicitWidth: contentWidth + implicitHeight: 48 + + model: control.contentModel + currentIndex: control.currentIndex + + spacing: control.spacing + orientation: ListView.Horizontal + boundsBehavior: Flickable.StopAtBounds + snapMode: ListView.SnapToItem + + highlightMoveDuration: 250 + highlightResizeDuration: 0 + highlightFollowsCurrentItem: true + highlight: Item { + z: 2 + Rectangle { + height: 2 + width: parent.width + y: control.position === T.TabBar.Footer ? 0 : parent.height - height + color: control.Material.accentColor + } + } + } + //! [contentItem] + + //! [background] + background: Rectangle { + color: control.Material.backgroundColor + } + //! [background] +} diff --git a/bin/win64/Material/TabButton.qml b/bin/win64/Material/TabButton.qml new file mode 100644 index 0000000..9659205 --- /dev/null +++ b/bin/win64/Material/TabButton.qml @@ -0,0 +1,68 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.TabButton { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.contentHeight + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 12 + + //! [contentItem] + contentItem: Text { + text: control.text + font: control.font + elide: Text.ElideRight + color: !control.enabled ? control.Material.hintTextColor : control.down || control.checked ? control.Material.accentColor : control.Material.primaryTextColor + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + } + //! [contentItem] + + //! [background] + background: Item { + implicitHeight: 48 + } + //! [background] +} diff --git a/bin/win64/Material/TextArea.qml b/bin/win64/Material/TextArea.qml new file mode 100644 index 0000000..8098ac4 --- /dev/null +++ b/bin/win64/Material/TextArea.qml @@ -0,0 +1,109 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.TextArea { + id: control + + implicitWidth: Math.max(contentWidth + leftPadding + rightPadding, + background ? background.implicitWidth : 0, + placeholder.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(contentHeight + 1 + topPadding + bottomPadding, + background ? background.implicitHeight : 0, + placeholder.implicitHeight + 1 + topPadding + bottomPadding) + + topPadding: 8 + bottomPadding: 16 + + color: enabled ? Material.primaryTextColor : Material.hintTextColor + selectionColor: Material.accentColor + selectedTextColor: Material.primaryHighlightedTextColor + cursorDelegate: Rectangle { + id: cursor + clip: true // TODO + color: control.Material.accentColor + width: 2 + visible: control.activeFocus && control.selectionStart === control.selectionEnd + + Connections { + target: control + onCursorPositionChanged: { + // keep a moving cursor visible + cursor.opacity = 1 + timer.restart() + } + } + + Timer { + id: timer + running: control.activeFocus + repeat: true + interval: Qt.styleHints.cursorFlashTime + onTriggered: cursor.opacity = !cursor.opacity ? 1 : 0 + // force the cursor visible when gaining focus + onRunningChanged: cursor.opacity = 1 + } + } + + //! [placeholder] + Text { + id: placeholder + x: control.leftPadding + y: control.topPadding + width: control.width - (control.leftPadding + control.rightPadding) + height: control.height - (control.topPadding + control.bottomPadding) + text: control.placeholderText + font: control.font + color: control.Material.hintTextColor + horizontalAlignment: control.horizontalAlignment + verticalAlignment: control.verticalAlignment + elide: Text.ElideRight + visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) + } + //! [placeholder] + + //! [background] + background: Rectangle { + y: parent.height - height - control.bottomPadding / 2 + implicitWidth: 120 + height: control.activeFocus ? 2 : 1 + color: control.activeFocus ? control.Material.accentColor : control.Material.hintTextColor + } + //! [background] +} diff --git a/bin/win64/Material/TextField.qml b/bin/win64/Material/TextField.qml new file mode 100644 index 0000000..2f3b9f2 --- /dev/null +++ b/bin/win64/Material/TextField.qml @@ -0,0 +1,108 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.TextField { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + placeholder.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + placeholder.implicitHeight + 1 + topPadding + bottomPadding) + + topPadding: 8 + bottomPadding: 16 + + color: enabled ? Material.primaryTextColor : Material.hintTextColor + selectionColor: Material.accentColor + selectedTextColor: Material.primaryHighlightedTextColor + verticalAlignment: TextInput.AlignVCenter + cursorDelegate: Rectangle { + id: cursor + color: control.Material.accentColor + width: 2 + visible: control.activeFocus && control.selectionStart === control.selectionEnd + + Connections { + target: control + onCursorPositionChanged: { + // keep a moving cursor visible + cursor.opacity = 1 + timer.restart() + } + } + + Timer { + id: timer + running: control.activeFocus + repeat: true + interval: Qt.styleHints.cursorFlashTime + onTriggered: cursor.opacity = !cursor.opacity ? 1 : 0 + // force the cursor visible when gaining focus + onRunningChanged: cursor.opacity = 1 + } + } + + //! [placeholder] + Text { + id: placeholder + x: control.leftPadding + y: control.topPadding + width: control.width - (control.leftPadding + control.rightPadding) + height: control.height - (control.topPadding + control.bottomPadding) + text: control.placeholderText + font: control.font + color: control.Material.hintTextColor + horizontalAlignment: control.horizontalAlignment + verticalAlignment: control.verticalAlignment + elide: Text.ElideRight + visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) + + } + //! [placeholder] + + //! [background] + background: Rectangle { + y: control.height - height - control.bottomPadding / 2 + implicitWidth: 120 + height: control.activeFocus ? 2 : 1 + color: control.activeFocus ? control.Material.accentColor : control.Material.hintTextColor + } + //! [background] +} diff --git a/bin/win64/Material/ToolBar.qml b/bin/win64/Material/ToolBar.qml new file mode 100644 index 0000000..e41c669 --- /dev/null +++ b/bin/win64/Material/ToolBar.qml @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.ToolBar { + id: control + + Material.elevation: 4 + + implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) + + contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) + contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) + + Material.foreground: Material.toolTextColor + + //! [contentItem] + contentItem: Item { } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitHeight: 48 + color: control.Material.primaryColor + + layer.enabled: control.Material.elevation > 0 + layer.effect: ElevationEffect { + elevation: control.Material.elevation + fullWidth: true + } + } + //! [background] +} diff --git a/bin/win64/Material/ToolButton.qml b/bin/win64/Material/ToolButton.qml new file mode 100644 index 0000000..2fcae7e --- /dev/null +++ b/bin/win64/Material/ToolButton.qml @@ -0,0 +1,72 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.ToolButton { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 6 + + //! [contentItem] + contentItem: Text { + text: control.text + font: control.font + color: control.enabled ? control.Material.primaryTextColor : control.Material.hintTextColor + elide: Text.ElideRight + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitWidth: 48 + implicitHeight: 48 + + color: control.down ? control.Material.buttonPressColor : control.Material.buttonHoverColor + visible: control.enabled && (control.down || control.visualFocus || control.checked || control.highlighted) + } + //! [background] +} diff --git a/bin/win64/Material/ToolTip.qml b/bin/win64/Material/ToolTip.qml new file mode 100644 index 0000000..5b1b966 --- /dev/null +++ b/bin/win64/Material/ToolTip.qml @@ -0,0 +1,88 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.ToolTip { + id: control + + x: parent ? (parent.width - implicitWidth) / 2 : 0 + y: -implicitHeight - 24 + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + + margins: 12 + padding: 8 + leftPadding: padding + 8 + rightPadding: padding + 8 + + closePolicy: T.Popup.CloseOnEscape | T.Popup.CloseOnPressOutsideParent | T.Popup.CloseOnReleaseOutsideParent + + Material.theme: Material.Dark + + enter: Transition { + // toast_enter + NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; easing.type: Easing.OutQuad; duration: 500 } + } + + exit: Transition { + // toast_exit + NumberAnimation { property: "opacity"; from: 1.0; to: 0.0; easing.type: Easing.InQuad; duration: 500 } + } + + //! [contentItem] + contentItem: Text { + text: control.text + font: control.font + // TODO: wrapMode: Label.Wrap + color: control.Material.primaryTextColor + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitHeight: 32 + color: control.Material.tooltipColor + opacity: 0.9 + radius: 2 + } + //! [background] +} diff --git a/bin/win64/Material/Tumbler.qml b/bin/win64/Material/Tumbler.qml new file mode 100644 index 0000000..67baa82 --- /dev/null +++ b/bin/win64/Material/Tumbler.qml @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Controls 2.0 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.Tumbler { + id: control + implicitWidth: 60 + implicitHeight: 200 + + //! [delegate] + delegate: Text { + id: label + text: modelData + color: control.Material.primaryTextColor + font: control.font + opacity: (1.0 - Math.abs(Tumbler.displacement) / (visibleItemCount / 2)) * (control.enabled ? 1 : 0.6) + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + } + //! [delegate] + + //! [contentItem] + contentItem: PathView { + id: pathView + model: control.model + delegate: control.delegate + clip: true + pathItemCount: control.visibleItemCount + 1 + preferredHighlightBegin: 0.5 + preferredHighlightEnd: 0.5 + dragMargin: width / 2 + + path: Path { + startX: pathView.width / 2 + startY: -pathView.delegateHeight / 2 + PathLine { + x: pathView.width / 2 + y: pathView.pathItemCount * pathView.delegateHeight - pathView.delegateHeight / 2 + } + } + + property real delegateHeight: control.availableHeight / control.visibleItemCount + } + //! [contentItem] +} diff --git a/bin/win64/Material/plugins.qmltypes b/bin/win64/Material/plugins.qmltypes new file mode 100644 index 0000000..0ff6408 --- /dev/null +++ b/bin/win64/Material/plugins.qmltypes @@ -0,0 +1,92 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by: +// 'qmlplugindump -nonrelocatable QtQuick.Controls.Material 2.0' + +Module { + dependencies: [] + Component { + name: "QQuickMaterialStyle" + prototype: "QQuickStyle" + exports: ["QtQuick.Controls.Material/Material 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "Theme" + values: { + "Light": 0, + "Dark": 1 + } + } + Enum { + name: "Color" + values: { + "Red": 0, + "Pink": 1, + "Purple": 2, + "DeepPurple": 3, + "Indigo": 4, + "Blue": 5, + "LightBlue": 6, + "Cyan": 7, + "Teal": 8, + "Green": 9, + "LightGreen": 10, + "Lime": 11, + "Yellow": 12, + "Amber": 13, + "Orange": 14, + "DeepOrange": 15, + "Brown": 16, + "Grey": 17, + "BlueGrey": 18 + } + } + Enum { + name: "Shade" + values: { + "Shade50": 0, + "Shade100": 1, + "Shade200": 2, + "Shade300": 3, + "Shade400": 4, + "Shade500": 5, + "Shade600": 6, + "Shade700": 7, + "Shade800": 8, + "Shade900": 9, + "ShadeA100": 10, + "ShadeA200": 11, + "ShadeA400": 12, + "ShadeA700": 13 + } + } + Property { name: "theme"; type: "Theme" } + Property { name: "primary"; type: "QVariant" } + Property { name: "accent"; type: "QVariant" } + Property { name: "foreground"; type: "QVariant" } + Property { name: "background"; type: "QVariant" } + Signal { name: "paletteChanged" } + Method { + name: "color" + type: "QColor" + Parameter { name: "color"; type: "Color" } + Parameter { name: "shade"; type: "Shade" } + } + Method { + name: "color" + type: "QColor" + Parameter { name: "color"; type: "Color" } + } + Method { + name: "shade" + type: "QColor" + Parameter { name: "color"; type: "QColor" } + Parameter { name: "shade"; type: "Shade" } + } + } + Component { name: "QQuickStyle"; prototype: "QObject" } +} diff --git a/bin/win64/Material/qmldir b/bin/win64/Material/qmldir new file mode 100644 index 0000000..51dafa0 --- /dev/null +++ b/bin/win64/Material/qmldir @@ -0,0 +1,5 @@ +module QtQuick.Controls.Material +plugin qtquickcontrols2materialstyleplugin +classname QtQuickControls2MaterialStylePlugin +depends QtQuick.Controls 2.0 +depends QtGraphicalEffects 1.0 diff --git a/bin/win64/Material/qtquickcontrols2materialstyleplugin.dll b/bin/win64/Material/qtquickcontrols2materialstyleplugin.dll new file mode 100644 index 0000000..115942d Binary files /dev/null and b/bin/win64/Material/qtquickcontrols2materialstyleplugin.dll differ diff --git a/bin/win64/Qt/labs/folderlistmodel/plugins.qmltypes b/bin/win64/Qt/labs/folderlistmodel/plugins.qmltypes new file mode 100644 index 0000000..02127c6 --- /dev/null +++ b/bin/win64/Qt/labs/folderlistmodel/plugins.qmltypes @@ -0,0 +1,327 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by: +// 'qmlplugindump -nonrelocatable Qt.labs.folderlistmodel 2.1' + +Module { + dependencies: [] + Component { + name: "QAbstractItemModel" + prototype: "QObject" + Enum { + name: "LayoutChangeHint" + values: { + "NoLayoutChangeHint": 0, + "VerticalSortHint": 1, + "HorizontalSortHint": 2 + } + } + Signal { + name: "dataChanged" + Parameter { name: "topLeft"; type: "QModelIndex" } + Parameter { name: "bottomRight"; type: "QModelIndex" } + Parameter { name: "roles"; type: "QVector" } + } + Signal { + name: "dataChanged" + Parameter { name: "topLeft"; type: "QModelIndex" } + Parameter { name: "bottomRight"; type: "QModelIndex" } + } + Signal { + name: "headerDataChanged" + Parameter { name: "orientation"; type: "Qt::Orientation" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "layoutChanged" + Parameter { name: "parents"; type: "QList" } + Parameter { name: "hint"; type: "QAbstractItemModel::LayoutChangeHint" } + } + Signal { + name: "layoutChanged" + Parameter { name: "parents"; type: "QList" } + } + Signal { name: "layoutChanged" } + Signal { + name: "layoutAboutToBeChanged" + Parameter { name: "parents"; type: "QList" } + Parameter { name: "hint"; type: "QAbstractItemModel::LayoutChangeHint" } + } + Signal { + name: "layoutAboutToBeChanged" + Parameter { name: "parents"; type: "QList" } + } + Signal { name: "layoutAboutToBeChanged" } + Signal { + name: "rowsAboutToBeInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "rowsInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "rowsAboutToBeRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "rowsRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsAboutToBeInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsAboutToBeRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { name: "modelAboutToBeReset" } + Signal { name: "modelReset" } + Signal { + name: "rowsAboutToBeMoved" + Parameter { name: "sourceParent"; type: "QModelIndex" } + Parameter { name: "sourceStart"; type: "int" } + Parameter { name: "sourceEnd"; type: "int" } + Parameter { name: "destinationParent"; type: "QModelIndex" } + Parameter { name: "destinationRow"; type: "int" } + } + Signal { + name: "rowsMoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + Parameter { name: "destination"; type: "QModelIndex" } + Parameter { name: "row"; type: "int" } + } + Signal { + name: "columnsAboutToBeMoved" + Parameter { name: "sourceParent"; type: "QModelIndex" } + Parameter { name: "sourceStart"; type: "int" } + Parameter { name: "sourceEnd"; type: "int" } + Parameter { name: "destinationParent"; type: "QModelIndex" } + Parameter { name: "destinationColumn"; type: "int" } + } + Signal { + name: "columnsMoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + Parameter { name: "destination"; type: "QModelIndex" } + Parameter { name: "column"; type: "int" } + } + Method { name: "submit"; type: "bool" } + Method { name: "revert" } + Method { + name: "hasIndex" + type: "bool" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "hasIndex" + type: "bool" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + } + Method { + name: "index" + type: "QModelIndex" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "index" + type: "QModelIndex" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + } + Method { + name: "parent" + type: "QModelIndex" + Parameter { name: "child"; type: "QModelIndex" } + } + Method { + name: "sibling" + type: "QModelIndex" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + Parameter { name: "idx"; type: "QModelIndex" } + } + Method { + name: "rowCount" + type: "int" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { name: "rowCount"; type: "int" } + Method { + name: "columnCount" + type: "int" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { name: "columnCount"; type: "int" } + Method { + name: "hasChildren" + type: "bool" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { name: "hasChildren"; type: "bool" } + Method { + name: "data" + type: "QVariant" + Parameter { name: "index"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + } + Method { + name: "data" + type: "QVariant" + Parameter { name: "index"; type: "QModelIndex" } + } + Method { + name: "setData" + type: "bool" + Parameter { name: "index"; type: "QModelIndex" } + Parameter { name: "value"; type: "QVariant" } + Parameter { name: "role"; type: "int" } + } + Method { + name: "setData" + type: "bool" + Parameter { name: "index"; type: "QModelIndex" } + Parameter { name: "value"; type: "QVariant" } + } + Method { + name: "headerData" + type: "QVariant" + Parameter { name: "section"; type: "int" } + Parameter { name: "orientation"; type: "Qt::Orientation" } + Parameter { name: "role"; type: "int" } + } + Method { + name: "headerData" + type: "QVariant" + Parameter { name: "section"; type: "int" } + Parameter { name: "orientation"; type: "Qt::Orientation" } + } + Method { + name: "fetchMore" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "canFetchMore" + type: "bool" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "flags" + type: "Qt::ItemFlags" + Parameter { name: "index"; type: "QModelIndex" } + } + Method { + name: "match" + type: "QModelIndexList" + Parameter { name: "start"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + Parameter { name: "value"; type: "QVariant" } + Parameter { name: "hits"; type: "int" } + Parameter { name: "flags"; type: "Qt::MatchFlags" } + } + Method { + name: "match" + type: "QModelIndexList" + Parameter { name: "start"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + Parameter { name: "value"; type: "QVariant" } + Parameter { name: "hits"; type: "int" } + } + Method { + name: "match" + type: "QModelIndexList" + Parameter { name: "start"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + Parameter { name: "value"; type: "QVariant" } + } + } + Component { name: "QAbstractListModel"; prototype: "QAbstractItemModel" } + Component { + name: "QQuickFolderListModel" + prototype: "QAbstractListModel" + exports: [ + "Qt.labs.folderlistmodel/FolderListModel 1.0", + "Qt.labs.folderlistmodel/FolderListModel 2.0", + "Qt.labs.folderlistmodel/FolderListModel 2.1" + ] + exportMetaObjectRevisions: [0, 0, 1] + Enum { + name: "SortField" + values: { + "Unsorted": 0, + "Name": 1, + "Time": 2, + "Size": 3, + "Type": 4 + } + } + Property { name: "folder"; type: "QUrl" } + Property { name: "rootFolder"; type: "QUrl" } + Property { name: "parentFolder"; type: "QUrl"; isReadonly: true } + Property { name: "nameFilters"; type: "QStringList" } + Property { name: "sortField"; type: "SortField" } + Property { name: "sortReversed"; type: "bool" } + Property { name: "showFiles"; revision: 1; type: "bool" } + Property { name: "showDirs"; type: "bool" } + Property { name: "showDirsFirst"; type: "bool" } + Property { name: "showDotAndDotDot"; type: "bool" } + Property { name: "showHidden"; revision: 1; type: "bool" } + Property { name: "showOnlyReadable"; type: "bool" } + Property { name: "count"; type: "int"; isReadonly: true } + Signal { name: "rowCountChanged" } + Signal { name: "countChanged"; revision: 1 } + Method { + name: "isFolder" + type: "bool" + Parameter { name: "index"; type: "int" } + } + Method { + name: "get" + type: "QVariant" + Parameter { name: "idx"; type: "int" } + Parameter { name: "property"; type: "string" } + } + Method { + name: "indexOf" + type: "int" + Parameter { name: "file"; type: "QUrl" } + } + } +} diff --git a/bin/win64/Qt/labs/folderlistmodel/qmldir b/bin/win64/Qt/labs/folderlistmodel/qmldir new file mode 100644 index 0000000..1865845 --- /dev/null +++ b/bin/win64/Qt/labs/folderlistmodel/qmldir @@ -0,0 +1,4 @@ +module Qt.labs.folderlistmodel +plugin qmlfolderlistmodelplugin +classname QmlFolderListModelPlugin +typeinfo plugins.qmltypes diff --git a/bin/win64/Qt/labs/folderlistmodel/qmlfolderlistmodelplugin.dll b/bin/win64/Qt/labs/folderlistmodel/qmlfolderlistmodelplugin.dll new file mode 100644 index 0000000..c33180f Binary files /dev/null and b/bin/win64/Qt/labs/folderlistmodel/qmlfolderlistmodelplugin.dll differ diff --git a/bin/win64/Qt/labs/settings/plugins.qmltypes b/bin/win64/Qt/labs/settings/plugins.qmltypes new file mode 100644 index 0000000..eaa310e --- /dev/null +++ b/bin/win64/Qt/labs/settings/plugins.qmltypes @@ -0,0 +1,18 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by: +// 'qmlplugindump -nonrelocatable Qt.labs.settings 1.0' + +Module { + dependencies: [] + Component { + name: "QQmlSettings" + prototype: "QObject" + exports: ["Qt.labs.settings/Settings 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "category"; type: "string" } + } +} diff --git a/bin/win64/Qt/labs/settings/qmldir b/bin/win64/Qt/labs/settings/qmldir new file mode 100644 index 0000000..93d8e67 --- /dev/null +++ b/bin/win64/Qt/labs/settings/qmldir @@ -0,0 +1,4 @@ +module Qt.labs.settings +plugin qmlsettingsplugin +classname QmlSettingsPlugin +typeinfo plugins.qmltypes diff --git a/bin/win64/Qt/labs/settings/qmlsettingsplugin.dll b/bin/win64/Qt/labs/settings/qmlsettingsplugin.dll new file mode 100644 index 0000000..b59bcee Binary files /dev/null and b/bin/win64/Qt/labs/settings/qmlsettingsplugin.dll differ diff --git a/bin/win64/Qt5Core.dll b/bin/win64/Qt5Core.dll index 8ac035a..fbc040e 100644 Binary files a/bin/win64/Qt5Core.dll and b/bin/win64/Qt5Core.dll differ diff --git a/bin/win64/Qt5Multimedia.dll b/bin/win64/Qt5Multimedia.dll new file mode 100644 index 0000000..e8854eb Binary files /dev/null and b/bin/win64/Qt5Multimedia.dll differ diff --git a/bin/win64/Qt5MultimediaQuick_p.dll b/bin/win64/Qt5MultimediaQuick_p.dll new file mode 100644 index 0000000..4c92b26 Binary files /dev/null and b/bin/win64/Qt5MultimediaQuick_p.dll differ diff --git a/bin/win64/Qt5Network.dll b/bin/win64/Qt5Network.dll new file mode 100644 index 0000000..77bfcfb Binary files /dev/null and b/bin/win64/Qt5Network.dll differ diff --git a/bin/win64/Qt5Qml.dll b/bin/win64/Qt5Qml.dll new file mode 100644 index 0000000..494304d Binary files /dev/null and b/bin/win64/Qt5Qml.dll differ diff --git a/bin/win64/Qt5Quick.dll b/bin/win64/Qt5Quick.dll new file mode 100644 index 0000000..bcf8850 Binary files /dev/null and b/bin/win64/Qt5Quick.dll differ diff --git a/bin/win64/Qt5QuickControls2.dll b/bin/win64/Qt5QuickControls2.dll new file mode 100644 index 0000000..9d57d39 Binary files /dev/null and b/bin/win64/Qt5QuickControls2.dll differ diff --git a/bin/win64/Qt5QuickTemplates2.dll b/bin/win64/Qt5QuickTemplates2.dll new file mode 100644 index 0000000..b87dd1f Binary files /dev/null and b/bin/win64/Qt5QuickTemplates2.dll differ diff --git a/bin/win64/Qt5Svg.dll b/bin/win64/Qt5Svg.dll new file mode 100644 index 0000000..1966374 Binary files /dev/null and b/bin/win64/Qt5Svg.dll differ diff --git a/bin/win64/QtGraphicalEffects/Blend.qml b/bin/win64/QtGraphicalEffects/Blend.qml new file mode 100644 index 0000000..34ed86e --- /dev/null +++ b/bin/win64/QtGraphicalEffects/Blend.qml @@ -0,0 +1,478 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +/*! + \qmltype Blend + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-blend + \brief Merges two source items by using a blend mode. + + Blend mode can be selected with the \l{Blend::mode}{mode} property. + + \table + \header + \li source + \li foregroundSource + \li Effect applied + \row + \li \image Original_bug.png + \li \image Original_butterfly.png + \li \image Blend_bug_and_butterfly.png + \endtable + + \section1 Example + + The following example shows how to apply the effect. + \snippet Blend-example.qml example + +*/ + +Item { + id: rootItem + + /*! + This property defines the source item that is going to be the base when + \l{Blend::foregroundSource}{foregroundSource} is blended over it. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + This property defines the item that is going to be blended over the + \l{Blend::source}{source}. + + \note It is not supported to let the effect include itself, for + instance by setting foregroundSource to the effect's parent. + */ + property variant foregroundSource + + /*! + This property defines the mode which is used when foregroundSource is + blended over source. Values are case insensitive. + + \table + \header + \li mode + \li description + \row + \li normal + \li The pixel component values from foregroundSource are written + over source by using alpha blending. + \row + \li addition + \li The pixel component values from source and foregroundSource are + added together and written. + \row + \li average + \li The pixel component values from source and foregroundSource are + averaged and written. + \row + \li color + \li The lightness value from source is combined with hue and + saturation from foregroundSource and written. + \row + \li colorBurn + \li The darker pixels from source are darkened more, if both source + and foregroundSource pixels are light the result is light. + \row + \li colorDodge + \li The lighter pixels from source are lightened more, if both + source and foregroundSource pixels are dark the result is dark. + \row + \li darken + \li The darker pixel component value from source and + foregroundSource is written. + \row + \li darkerColor + \li The lower luminance pixel rgb-value from source and + foregroundSource is written. + \row + \li difference + \li The absolute pixel component value difference between source and + foregroundSource is written. + \row + \li divide + \li The pixel component values from source is divided by the value + from foregroundSource and written. + \row + \li exclusion + \li The pixel component value difference with reduced contrast + between source and foregroundSource is written. + \row + \li hardLight + \li The pixel component values from source are lightened or darkened + according to foregroundSource values and written. + \row + \li hue + \li The hue value from foregroundSource is combined with saturation + and lightness from source and written. + \row + \li lighten + \li The lightest pixel component value from source and + foregroundSource is written. + \row + \li lighterColor + \li The higher luminance pixel rgb-value from source and + foregroundSource is written. + \row + \li lightness + \li The lightness value from foregroundSource is combined with hue + and saturation from source and written. + \row + \li multiply + \li The pixel component values from source and foregroundSource are + multiplied together and written. + \row + \li negation + \li The inverted absolute pixel component value difference between + source and foregroundSource is written. + \row + \li saturation + \li The saturation value from foregroundSource is combined with hue + and lightness from source and written. + \row + \li screen + \li The pixel values from source and foregroundSource are negated, + then multiplied, negated again, and written. + \row + \li subtract + \li Pixel value from foregroundSource is subracted from source and + written. + \row + \li softLight + \li The pixel component values from source are lightened or darkened + slightly according to foregroundSource values and written. + + \endtable + + \table + \header + \li Example source + \li Example foregroundSource + \row + \li \image Original_bug.png + \li \image Original_butterfly.png + \endtable + + \table + \header + \li Output examples with different mode values + \li + \li + \row + \li \image Blend_mode1.png + \li \image Blend_mode2.png + \li \image Blend_mode3.png + \row + \li \b { mode: normal } + \li \b { mode: addition } + \li \b { mode: average } + \row + \li \image Blend_mode4.png + \li \image Blend_mode5.png + \li \image Blend_mode6.png + \row + \li \b { mode: color } + \li \b { mode: colorBurn } + \li \b { mode: colorDodge } + \row + \li \image Blend_mode7.png + \li \image Blend_mode8.png + \li \image Blend_mode9.png + \row + \li \b { mode: darken } + \li \b { mode: darkerColor } + \li \b { mode: difference } + \row + \li \image Blend_mode10.png + \li \image Blend_mode11.png + \li \image Blend_mode12.png + \row + \li \b { mode: divide } + \li \b { mode: exclusion } + \li \b { mode: hardlight } + \row + \li \image Blend_mode13.png + \li \image Blend_mode14.png + \li \image Blend_mode15.png + \row + \li \b { mode: hue } + \li \b { mode: lighten } + \li \b { mode: lighterColor } + \row + \li \image Blend_mode16.png + \li \image Blend_mode17.png + \li \image Blend_mode18.png + \row + \li \b { mode: lightness } + \li \b { mode: negation } + \li \b { mode: multiply } + \row + \li \image Blend_mode19.png + \li \image Blend_mode20.png + \li \image Blend_mode21.png + \row + \li \b { mode: saturation } + \li \b { mode: screen } + \li \b { mode: subtract } + \row + \li \image Blend_mode22.png + \row + \li \b { mode: softLight } + \endtable + */ + property string mode: "normal" + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in the + cache must be updated. Memory consumption is increased, because an extra + buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to false. + + */ + property bool cached: false + + SourceProxy { + id: backgroundSourceProxy + input: rootItem.source + } + + SourceProxy { + id: foregroundSourceProxy + input: rootItem.foregroundSource + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: parent + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + property variant backgroundSource: backgroundSourceProxy.output + property variant foregroundSource: foregroundSourceProxy.output + property string mode: rootItem.mode + anchors.fill: parent + + fragmentShader: fragmentShaderBegin + blendModeNormal + fragmentShaderEnd + + function buildFragmentShader() { + var shader = fragmentShaderBegin + + switch (mode.toLowerCase()) { + case "addition" : shader += blendModeAddition; break; + case "average" : shader += blendModeAverage; break; + case "color" : shader += blendModeColor; break; + case "colorburn" : shader += blendModeColorBurn; break; + case "colordodge" : shader += blendModeColorDodge; break; + case "darken" : shader += blendModeDarken; break; + case "darkercolor" : shader += blendModeDarkerColor; break; + case "difference" : shader += blendModeDifference; break; + case "divide" : shader += blendModeDivide; break; + case "exclusion" : shader += blendModeExclusion; break; + case "hardlight" : shader += blendModeHardLight; break; + case "hue" : shader += blendModeHue; break; + case "lighten" : shader += blendModeLighten; break; + case "lightercolor" : shader += blendModeLighterColor; break; + case "lightness" : shader += blendModeLightness; break; + case "negation" : shader += blendModeNegation; break; + case "normal" : shader += blendModeNormal; break; + case "multiply" : shader += blendModeMultiply; break; + case "saturation" : shader += blendModeSaturation; break; + case "screen" : shader += blendModeScreen; break; + case "subtract" : shader += blendModeSubtract; break; + case "softlight" : shader += blendModeSoftLight; break; + default: shader += "gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);"; break; + } + + shader += fragmentShaderEnd + fragmentShader = shader + + // Workaraound for a bug just to make sure display gets updated when the mode changes. + backgroundSourceChanged() + } + + Component.onCompleted: { + buildFragmentShader() + } + + onModeChanged: { + buildFragmentShader() + } + + property string blendModeAddition: "result.rgb = min(rgb1 + rgb2, 1.0);" + property string blendModeAverage: "result.rgb = 0.5 * (rgb1 + rgb2);" + property string blendModeColor: "result.rgb = HSLtoRGB(vec3(RGBtoHSL(rgb2).xy, RGBtoL(rgb1)));" + property string blendModeColorBurn: "result.rgb = clamp(1.0 - ((1.0 - rgb1) / max(vec3(1.0 / 256.0), rgb2)), vec3(0.0), vec3(1.0));" + property string blendModeColorDodge: "result.rgb = clamp(rgb1 / max(vec3(1.0 / 256.0), (1.0 - rgb2)), vec3(0.0), vec3(1.0));" + property string blendModeDarken: "result.rgb = min(rgb1, rgb2);" + property string blendModeDarkerColor: "result.rgb = 0.3 * rgb1.r + 0.59 * rgb1.g + 0.11 * rgb1.b > 0.3 * rgb2.r + 0.59 * rgb2.g + 0.11 * rgb2.b ? rgb2 : rgb1;" + property string blendModeDifference: "result.rgb = abs(rgb1 - rgb2);" + property string blendModeDivide: "result.rgb = clamp(rgb1 / rgb2, 0.0, 1.0);" + property string blendModeExclusion: "result.rgb = rgb1 + rgb2 - 2.0 * rgb1 * rgb2;" + property string blendModeHardLight: "result.rgb = vec3(channelBlendHardLight(rgb1.r, rgb2.r), channelBlendHardLight(rgb1.g, rgb2.g), channelBlendHardLight(rgb1.b, rgb2.b));" + property string blendModeHue: "result.rgb = HSLtoRGB(vec3(RGBtoHSL(rgb2).x, RGBtoHSL(rgb1).yz));" + property string blendModeLighten: "result.rgb = max(rgb1, rgb2);" + property string blendModeLighterColor: "result.rgb = 0.3 * rgb1.r + 0.59 * rgb1.g + 0.11 * rgb1.b > 0.3 * rgb2.r + 0.59 * rgb2.g + 0.11 * rgb2.b ? rgb1 : rgb2;" + property string blendModeLightness: "result.rgb = HSLtoRGB(vec3(RGBtoHSL(rgb1).xy, RGBtoL(rgb2)));" + property string blendModeMultiply: "result.rgb = rgb1 * rgb2;" + property string blendModeNegation: "result.rgb = 1.0 - abs(1.0 - rgb1 - rgb2);" + property string blendModeNormal: "result.rgb = rgb2; a = max(color1.a, color2.a);" + property string blendModeSaturation: "lowp vec3 hsl1 = RGBtoHSL(rgb1); result.rgb = HSLtoRGB(vec3(hsl1.x, RGBtoHSL(rgb2).y, hsl1.z));" + property string blendModeScreen: "result.rgb = 1.0 - (vec3(1.0) - rgb1) * (vec3(1.0) - rgb2);" + property string blendModeSubtract: "result.rgb = max(rgb1 - rgb2, vec3(0.0));" + property string blendModeSoftLight: "result.rgb = rgb1 * ((1.0 - rgb1) * rgb2 + (1.0 - (1.0 - rgb1) * (1.0 - rgb2)));" + + property string fragmentShaderBegin: " + varying mediump vec2 qt_TexCoord0; + uniform highp float qt_Opacity; + uniform lowp sampler2D backgroundSource; + uniform lowp sampler2D foregroundSource; + + highp float RGBtoL(highp vec3 color) { + highp float cmin = min(color.r, min(color.g, color.b)); + highp float cmax = max(color.r, max(color.g, color.b)); + highp float l = (cmin + cmax) / 2.0; + return l; + } + + highp vec3 RGBtoHSL(highp vec3 color) { + highp float cmin = min(color.r, min(color.g, color.b)); + highp float cmax = max(color.r, max(color.g, color.b)); + highp float h = 0.0; + highp float s = 0.0; + highp float l = (cmin + cmax) / 2.0; + highp float diff = cmax - cmin; + + if (diff > 1.0 / 256.0) { + if (l < 0.5) + s = diff / (cmin + cmax); + else + s = diff / (2.0 - (cmin + cmax)); + + if (color.r == cmax) + h = (color.g - color.b) / diff; + else if (color.g == cmax) + h = 2.0 + (color.b - color.r) / diff; + else + h = 4.0 + (color.r - color.g) / diff; + + h /= 6.0; + } + return vec3(h, s, l); + } + + highp float hueToIntensity(highp float v1, highp float v2, highp float h) { + h = fract(h); + if (h < 1.0 / 6.0) + return v1 + (v2 - v1) * 6.0 * h; + else if (h < 1.0 / 2.0) + return v2; + else if (h < 2.0 / 3.0) + return v1 + (v2 - v1) * 6.0 * (2.0 / 3.0 - h); + + return v1; + } + + highp vec3 HSLtoRGB(highp vec3 color) { + highp float h = color.x; + highp float l = color.z; + highp float s = color.y; + + if (s < 1.0 / 256.0) + return vec3(l, l, l); + + highp float v1; + highp float v2; + if (l < 0.5) + v2 = l * (1.0 + s); + else + v2 = (l + s) - (s * l); + + v1 = 2.0 * l - v2; + + highp float d = 1.0 / 3.0; + highp float r = hueToIntensity(v1, v2, h + d); + highp float g = hueToIntensity(v1, v2, h); + highp float b = hueToIntensity(v1, v2, h - d); + return vec3(r, g, b); + } + + lowp float channelBlendHardLight(lowp float c1, lowp float c2) { + return c2 > 0.5 ? (1.0 - (1.0 - 2.0 * (c2 - 0.5)) * (1.0 - c1)) : (2.0 * c1 * c2); + } + + void main() { + lowp vec4 result = vec4(0.0); + lowp vec4 color1 = texture2D(backgroundSource, qt_TexCoord0); + lowp vec4 color2 = texture2D(foregroundSource, qt_TexCoord0); + lowp vec3 rgb1 = color1.rgb / max(1.0/256.0, color1.a); + lowp vec3 rgb2 = color2.rgb / max(1.0/256.0, color2.a); + highp float a = max(color1.a, color1.a * color2.a); + " + + property string fragmentShaderEnd: " + gl_FragColor.rgb = mix(rgb1, result.rgb, color2.a); + gl_FragColor.rbg *= a; + gl_FragColor.a = a; + gl_FragColor *= qt_Opacity; + } + " + } +} diff --git a/bin/win64/QtGraphicalEffects/BrightnessContrast.qml b/bin/win64/QtGraphicalEffects/BrightnessContrast.qml new file mode 100644 index 0000000..f948235 --- /dev/null +++ b/bin/win64/QtGraphicalEffects/BrightnessContrast.qml @@ -0,0 +1,207 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +/*! + \qmltype BrightnessContrast + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-color + \brief Adjusts brightness and contrast. + + This effect adjusts the source item colors. + Brightness adjustment changes the perceived luminance of the source item. + Contrast adjustment increases or decreases the color + and brightness variations. + + \table + \header + \li Source + \li Effect applied + \row + \li \image Original_bug.png + \li \image BrightnessContrast_bug.png + \endtable + + \section1 Example + + The following example shows how to apply the effect. + \snippet BrightnessContrast-example.qml example + +*/ +Item { + id: rootItem + + /*! + This property defines the source item that provides the source pixels + for the effect. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + This property defines how much the source brightness is increased or + decreased. + + The value ranges from -1.0 to 1.0. By default, the property is set to \c + 0.0 (no change). + + \table + \header + \li Output examples with different brightness values + \li + \li + \row + \li \image BrightnessContrast_brightness1.png + \li \image BrightnessContrast_brightness2.png + \li \image BrightnessContrast_brightness3.png + \row + \li \b { brightness: -0.25 } + \li \b { brightness: 0 } + \li \b { brightness: 0.5 } + \row + \li \l contrast: 0 + \li \l contrast: 0 + \li \l contrast: 0 + \endtable + + */ + property real brightness: 0.0 + + /*! + This property defines how much the source contrast is increased or + decreased. The decrease of the contrast is linear, but the increase is + applied with a non-linear curve to allow very high contrast adjustment at + the high end of the value range. + + \table + \header + \li Contrast adjustment curve + \row + \li \image BrightnessContrast_contrast_graph.png + \endtable + + The value ranges from -1.0 to 1.0. By default, the property is set to \c 0.0 (no change). + + \table + \header + \li Output examples with different contrast values + \li + \li + \row + \li \image BrightnessContrast_contrast1.png + \li \image BrightnessContrast_contrast2.png + \li \image BrightnessContrast_contrast3.png + \row + \li \b { contrast: -0.5 } + \li \b { contrast: 0 } + \li \b { contrast: 0.5 } + \row + \li \l brightness: 0 + \li \l brightness: 0 + \li \l brightness: 0 + \endtable + + */ + property real contrast: 0.0 + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + + */ + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: parent + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + property variant source: sourceProxy.output + property real brightness: rootItem.brightness + property real contrast: rootItem.contrast + + anchors.fill: parent + blending: !rootItem.cached + + fragmentShader: " + varying mediump vec2 qt_TexCoord0; + uniform highp float qt_Opacity; + uniform lowp sampler2D source; + uniform highp float brightness; + uniform highp float contrast; + void main() { + highp vec4 pixelColor = texture2D(source, qt_TexCoord0); + pixelColor.rgb /= max(1.0/256.0, pixelColor.a); + highp float c = 1.0 + contrast; + highp float contrastGainFactor = 1.0 + c * c * c * c * step(0.0, contrast); + pixelColor.rgb = ((pixelColor.rgb - 0.5) * (contrastGainFactor * contrast + 1.0)) + 0.5; + pixelColor.rgb = mix(pixelColor.rgb, vec3(step(0.0, brightness)), abs(brightness)); + gl_FragColor = vec4(pixelColor.rgb * pixelColor.a, pixelColor.a) * qt_Opacity; + } + " + } +} diff --git a/bin/win64/QtGraphicalEffects/ColorOverlay.qml b/bin/win64/QtGraphicalEffects/ColorOverlay.qml new file mode 100644 index 0000000..550ecc9 --- /dev/null +++ b/bin/win64/QtGraphicalEffects/ColorOverlay.qml @@ -0,0 +1,155 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +/*! + \qmltype ColorOverlay + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-color + \brief Alters the colors of the source item by applying an overlay color. + + The effect is similar to what happens when a colorized glass is put on top + of a grayscale image. The color for the overlay is given in the RGBA format. + + \table + \header + \li Source + \li Effect applied + \row + \li \image Original_butterfly.png + \li \image ColorOverlay_butterfly.png + \endtable + + \section1 Example + + The following example shows how to apply the effect. + \snippet ColorOverlay-example.qml example + +*/ +Item { + id: rootItem + + /*! + This property defines the source item that provides the source pixels + for the effect. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + This property defines the RGBA color value which is used to colorize the + source. + + By default, the property is set to \c "transparent". + + \table + \header + \li Output examples with different color values + \li + \li + \row + \li \image ColorOverlay_color1.png + \li \image ColorOverlay_color2.png + \li \image ColorOverlay_color3.png + \row + \li \b { color: #80ff0000 } + \li \b { color: #8000ff00 } + \li \b { color: #800000ff } + \endtable + + */ + property color color: "transparent" + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + + */ + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: parent + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + property variant source: sourceProxy.output + property color color: rootItem.color + + anchors.fill: parent + + fragmentShader: " + varying mediump vec2 qt_TexCoord0; + uniform highp float qt_Opacity; + uniform lowp sampler2D source; + uniform highp vec4 color; + void main() { + highp vec4 pixelColor = texture2D(source, qt_TexCoord0); + gl_FragColor = vec4(mix(pixelColor.rgb/max(pixelColor.a, 0.00390625), color.rgb/max(color.a, 0.00390625), color.a) * pixelColor.a, pixelColor.a) * qt_Opacity; + } + " + } +} diff --git a/bin/win64/QtGraphicalEffects/Colorize.qml b/bin/win64/QtGraphicalEffects/Colorize.qml new file mode 100644 index 0000000..ae018f7 --- /dev/null +++ b/bin/win64/QtGraphicalEffects/Colorize.qml @@ -0,0 +1,294 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +/*! + \qmltype Colorize + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-color + \brief Sets the color in the HSL color space. + + The effect is similar to what happens when a colorized glass is put on top + of a grayscale image. Colorize uses the hue, saturation, and lightness (HSL) + color space. You can specify a desired value for each property. You can + shift all HSL values with the + \l{QtGraphicalEffects::HueSaturation}{HueSaturation} effect. + + Alternatively, you can use the + \l{QtGraphicalEffects::ColorOverlay}{ColorOverlay} effect to colorize the + source item in the RGBA color space. + + \table + \header + \li Source + \li Effect applied + \row + \li \image Original_bug.png + \li \image Colorize_bug.png + \endtable + + \section1 Example + + The following example shows how to apply the effect. + \snippet Colorize-example.qml example +*/ +Item { + id: rootItem + + /*! + This property defines the source item that provides the source pixels + for the effect. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + This property defines the hue value which is used to colorize the + source. + + The value ranges from 0.0 to 1.0. By default, the property is set to \c + 0.0, which produces a slightly red color. + + \table + \header + \li Allowed hue values + \row + \li \image Colorize_hue_scale.png + \endtable + + \table + \header + \li Output examples with different hue values + \li + \li + \row + \li \image Colorize_hue1.png + \li \image Colorize_hue2.png + \li \image Colorize_hue3.png + \row + \li \b { hue: 0.2 } + \li \b { hue: 0.5 } + \li \b { hue: 0.8 } + \row + \li \l saturation: 1 + \li \l saturation: 1 + \li \l saturation: 1 + \row + \li \l lightness: 0 + \li \l lightness: 0 + \li \l lightness: 0 + \endtable + */ + property real hue: 0.0 + + /*! + This property defines the saturation value which is used to colorize the + source. + + The value ranges from 0.0 (desaturated) to 1.0 (saturated). By default, + the property is set to \c 1.0 (saturated). + + \table + \header + \li Output examples with different saturation values + \li + \li + \row + \li \image Colorize_saturation1.png + \li \image Colorize_saturation2.png + \li \image Colorize_saturation3.png + \row + \li \b { saturation: 0 } + \li \b { saturation: 0.5 } + \li \b { saturation: 1 } + \row + \li \l hue: 0 + \li \l hue: 0 + \li \l hue: 0 + \row + \li \l lightness: 0 + \li \l lightness: 0 + \li \l lightness: 0 + \endtable + */ + property real saturation: 1.0 + + /*! + This property defines how much the source lightness value is increased + or decreased. + + Unlike hue and saturation properties, lightness does not set the used + value, but it shifts the existing source pixel lightness value. + + The value ranges from -1.0 (decreased) to 1.0 (increased). By default, + the property is set to \c 0.0 (no change). + + \table + \header + \li Output examples with different lightness values + \li + \li + \row + \li \image Colorize_lightness1.png + \li \image Colorize_lightness2.png + \li \image Colorize_lightness3.png + \row + \li \b { lightness: -0.75 } + \li \b { lightness: 0 } + \li \b { lightness: 0.75 } + \row + \li \l hue: 0 + \li \l hue: 0 + \li \l hue: 0 + \row + \li \l saturation: 1 + \li \l saturation: 1 + \li \l saturation: 1 + \endtable + */ + property real lightness: 0.0 + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + */ + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: parent + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + property variant source: sourceProxy.output + property real hue: rootItem.hue + property real saturation: rootItem.saturation + property real lightness: rootItem.lightness + + anchors.fill: parent + + fragmentShader: " + varying mediump vec2 qt_TexCoord0; + uniform highp float qt_Opacity; + uniform lowp sampler2D source; + uniform highp float hue; + uniform highp float saturation; + uniform highp float lightness; + + highp float RGBtoL(highp vec3 color) { + highp float cmin = min(color.r, min(color.g, color.b)); + highp float cmax = max(color.r, max(color.g, color.b)); + highp float l = (cmin + cmax) / 2.0; + return l; + } + + highp float hueToIntensity(highp float v1, highp float v2, highp float h) { + h = fract(h); + if (h < 1.0 / 6.0) + return v1 + (v2 - v1) * 6.0 * h; + else if (h < 1.0 / 2.0) + return v2; + else if (h < 2.0 / 3.0) + return v1 + (v2 - v1) * 6.0 * (2.0 / 3.0 - h); + + return v1; + } + + highp vec3 HSLtoRGB(highp vec3 color) { + highp float h = color.x; + highp float l = color.z; + highp float s = color.y; + + if (s < 1.0 / 256.0) + return vec3(l, l, l); + + highp float v1; + highp float v2; + if (l < 0.5) + v2 = l * (1.0 + s); + else + v2 = (l + s) - (s * l); + + v1 = 2.0 * l - v2; + + highp float d = 1.0 / 3.0; + highp float r = hueToIntensity(v1, v2, h + d); + highp float g = hueToIntensity(v1, v2, h); + highp float b = hueToIntensity(v1, v2, h - d); + return vec3(r, g, b); + } + + void main() { + lowp vec4 sample = texture2D(source, qt_TexCoord0); + sample = vec4(sample.rgb / max(1.0/256.0, sample.a), sample.a); + highp float light = RGBtoL(sample.rgb); + highp float c = step(0.0, lightness); + sample.rgb = HSLtoRGB(vec3(hue, saturation, mix(light, c, abs(lightness)))); + gl_FragColor = vec4(sample.rgb * sample.a, sample.a) * qt_Opacity; + } + " + } +} diff --git a/bin/win64/QtGraphicalEffects/ConicalGradient.qml b/bin/win64/QtGraphicalEffects/ConicalGradient.qml new file mode 100644 index 0000000..d64ecf6 --- /dev/null +++ b/bin/win64/QtGraphicalEffects/ConicalGradient.qml @@ -0,0 +1,361 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +/*! + \qmltype ConicalGradient + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-gradient + \brief Draws a conical gradient. + + A gradient is defined by two or more colors, which are blended seamlessly. + The colors start from the specified angle and end at 360 degrees larger + angle value. + + \table + \header + \li Effect applied + \row + \li \image ConicalGradient.png + \endtable + + \section1 Example + + The following example shows how to apply the effect. + \snippet ConicalGradient-example.qml example + +*/ +Item { + id: rootItem + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + + */ + property bool cached: false + + /*! + This property defines the starting angle where the color at the gradient + position of 0.0 is rendered. Colors at larger position values are + rendered into larger angle values and blended seamlessly. Angle values + increase clockwise. + + \table + \header + \li Output examples with different angle values + \li + \li + \row + \li \image ConicalGradient_angle1.png + \li \image ConicalGradient_angle2.png + \li \image ConicalGradient_angle3.png + \row + \li \b { angle: 0 } + \li \b { angle: 45 } + \li \b { angle: 185 } + \row + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \endtable + + */ + property real angle: 0.0 + + /*! + \qmlproperty real QtGraphicalEffects::ConicalGradient::horizontalOffset + \qmlproperty real QtGraphicalEffects::ConicalGradient::verticalOffset + + The horizontalOffset and verticalOffset properties define the offset in + pixels for the center point of the gradient compared to the item center. + + The value ranges from -inf to inf. By default, the properties are set to \c + 0. + + \table + \header + \li Output examples with different horizontalOffset values + \li + \li + \row + \li \image ConicalGradient_horizontalOffset1.png + \li \image ConicalGradient_horizontalOffset2.png + \li \image ConicalGradient_horizontalOffset3.png + \row + \li \b { horizontalOffset: -50 } + \li \b { horizontalOffset: 0 } + \li \b { horizontalOffset: 50 } + \row + \li \l angle: 0 + \li \l angle: 0 + \li \l angle: 0 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \endtable + */ + property real horizontalOffset: 0.0 + property real verticalOffset: 0.0 + + /*! + This property defines the item that is going to be filled with gradient. + Source item gets rendered into an intermediate pixel buffer and the + alpha values from the result are used to determine the gradient's pixels + visibility in the display. The default value for source is undefined and + in that case whole effect area is filled with gradient. + + \table + \header + \li Output examples with different source values + \li + \row + \li \image ConicalGradient_maskSource1.png + \li \image ConicalGradient_maskSource2.png + \row + \li \b { source: undefined } + \li \b { source: } + \row + \li \l angle: 0 + \li \l angle: 0 + \row + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \endtable + + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + +/*! + A gradient is defined by two or more colors, which are blended seamlessly. + The colors are specified as a set of GradientStop child items, each of which + defines a position on the gradient (from 0.0 to 1.0), and a color. + The position of each GradientStop is defined by the position property. + The color is defined by the color property. + + \table + \header + \li Output examples with different gradient values + \li + \li + \row + \li \image ConicalGradient_gradient1.png + \li \image ConicalGradient_gradient2.png + \li \image ConicalGradient_gradient3.png + \row + \li \b {gradient:} \code +Gradient { + 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) + } +} + \endcode + \li \b {gradient:} \code +Gradient { + GradientStop { + position: 0.0 + color: "#F0F0F0" + } + GradientStop { + position: 0.5 + color: "#000000" + } + GradientStop { + position: 1.0 + color: "#F0F0F0" + } +} + \endcode + \li \b {gradient:} \code +Gradient { + GradientStop { + position: 0.0 + color: "#00000000" + } + GradientStop { + position: 1.0 + color: "#FF000000" + } +} + \endcode + \row + \li \l angle: 0 + \li \l angle: 0 + \li \l angle: 0 + \row + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \endtable + +*/ + property Gradient gradient: Gradient { + GradientStop { position: 0.0; color: "white" } + GradientStop { position: 1.0; color: "black" } + } + + SourceProxy { + id: maskSourceProxy + input: rootItem.source + } + + Rectangle { + id: gradientRect + width: 16 + height: 256 + gradient: rootItem.gradient + smooth: true + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: parent + visible: rootItem.cached + smooth: true + rotation: shaderItem.rotation + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + property variant gradientSource: ShaderEffectSource { + sourceItem: gradientRect + smooth: true + hideSource: true + visible: false + } + property variant maskSource: maskSourceProxy.output + property real startAngle: (rootItem.angle - 90) * Math.PI/180 + property variant center: Qt.point(0.5 + horizontalOffset / width, 0.5 + verticalOffset / height) + + anchors.fill: parent + + fragmentShader: maskSource == undefined ? noMaskShader : maskShader + + onFragmentShaderChanged: startAngleChanged() + + property string noMaskShader: " + varying mediump vec2 qt_TexCoord0; + uniform lowp sampler2D gradientSource; + uniform highp float qt_Opacity; + uniform highp float startAngle; + uniform highp vec2 center; + + void main() { + const highp float PI = 3.14159265; + const highp float PIx2inv = 0.1591549; + highp float a = (atan((center.y - qt_TexCoord0.t), (center.x - qt_TexCoord0.s)) + PI - startAngle) * PIx2inv; + gl_FragColor = texture2D(gradientSource, vec2(0.0, fract(a))) * qt_Opacity; + } + " + + property string maskShader: " + varying mediump vec2 qt_TexCoord0; + uniform lowp sampler2D gradientSource; + uniform lowp sampler2D maskSource; + uniform highp float qt_Opacity; + uniform highp float startAngle; + uniform highp vec2 center; + + void main() { + lowp float maskAlpha = texture2D(maskSource, qt_TexCoord0).a; + const highp float PI = 3.14159265; + const highp float PIx2inv = 0.1591549; + highp float a = (atan((center.y - qt_TexCoord0.t), (center.x - qt_TexCoord0.s)) + PI - startAngle) * PIx2inv; + gl_FragColor = texture2D(gradientSource, vec2(0.0, fract(a))) * maskAlpha * qt_Opacity; + } + " + } +} diff --git a/bin/win64/QtGraphicalEffects/Desaturate.qml b/bin/win64/QtGraphicalEffects/Desaturate.qml new file mode 100644 index 0000000..0f9163c --- /dev/null +++ b/bin/win64/QtGraphicalEffects/Desaturate.qml @@ -0,0 +1,155 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +/*! + \qmltype Desaturate + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-color + \brief Reduces the saturation of the colors. + + Desaturated pixel values are calculated as averages of the original RGB + component values of the source item. + + \table + \header + \li Source + \li Effect applied + \row + \li \image Original_bug.png + \li \image Desaturate_bug.png + \endtable + + \section1 Example + + The following example shows how to apply the effect. + \snippet Desaturate-example.qml example + +*/ +Item { + id: rootItem + + /*! + This property defines the source item that provides the source pixels to + the effect. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + This property defines how much the source colors are desaturated. + + The value ranges from 0.0 (no change) to 1.0 (desaturated). By default, + the property is set to \c 0.0 (no change). + + \table + \header + \li Output examples with different desaturation values + \li + \li + \row + \li \image Desaturate_desaturation1.png + \li \image Desaturate_desaturation2.png + \li \image Desaturate_desaturation3.png + \row + \li \b { desaturation: 0.0 } + \li \b { desaturation: 0.5 } + \li \b { desaturation: 1.0 } + \endtable + */ + property real desaturation: 0.0 + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + + */ + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: parent + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + property variant source: sourceProxy.output + property real desaturation: rootItem.desaturation + + anchors.fill: parent + + fragmentShader: " + varying highp vec2 qt_TexCoord0; + uniform highp float qt_Opacity; + uniform lowp sampler2D source; + uniform highp float desaturation; + void main(void) { + lowp vec4 textureColor = texture2D(source, qt_TexCoord0.st); + lowp float grayColor = (textureColor.r + textureColor.g + textureColor.b) / 3.0; + gl_FragColor = mix(textureColor, vec4(vec3(grayColor), textureColor.a), desaturation) * qt_Opacity; + } + " + } +} diff --git a/bin/win64/QtGraphicalEffects/DirectionalBlur.qml b/bin/win64/QtGraphicalEffects/DirectionalBlur.qml new file mode 100644 index 0000000..9da6ae7 --- /dev/null +++ b/bin/win64/QtGraphicalEffects/DirectionalBlur.qml @@ -0,0 +1,289 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +/*! + \qmltype DirectionalBlur + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-motion-blur + \brief Applies blur effect to the specified direction. + + Effect creates perceived impression that the source item appears to be + moving in the direction of the blur. Blur is applied to both sides of + each pixel, therefore setting the direction to 0 and 180 provides the + same result. + + Other available motionblur effects are \l{QtGraphicalEffects::ZoomBlur}{ZoomBlur} and + \l{QtGraphicalEffects::RadialBlur}{RadialBlur}. + + \table + \header + \li Source + \li Effect applied + \row + \li \image Original_bug.png + \li \image DirectionalBlur_bug.png + \endtable + + \section1 Example + + The following example shows how to apply the effect. + \snippet DirectionalBlur-example.qml example + +*/ +Item { + id: rootItem + + /*! + This property defines the source item that is going to be blurred. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + This property defines the percieved amount of movement for each pixel. + The movement is divided evenly to both sides of each pixel. + + The quality of the blur depends on \l{DirectionalBlur::samples}{samples} + property. If length value is large, more samples are needed to keep the + visual quality at high level. + + The value ranges from 0.0 to inf. + By default the property is set to \c 0.0 (no blur). + + \table + \header + \li Output examples with different length values + \li + \li + \row + \li \image DirectionalBlur_length1.png + \li \image DirectionalBlur_length2.png + \li \image DirectionalBlur_length3.png + \row + \li \b { length: 0.0 } + \li \b { length: 32.0 } + \li \b { length: 48.0 } + \row + \li \l samples: 24 + \li \l samples: 24 + \li \l samples: 24 + \row + \li \l angle: 0 + \li \l angle: 0 + \li \l angle: 0 + \endtable + + */ + property real length: 0.0 + + /*! + This property defines how many samples are taken per pixel when blur + calculation is done. Larger value produces better quality, but is slower + to render. + + This property is not intended to be animated. Changing this property may + cause the underlying OpenGL shaders to be recompiled. + + Allowed values are between 0 and inf (practical maximum depends on GPU). + By default the property is set to \c 0 (no samples). + + */ + property int samples: 0 + + /*! + This property defines the direction for the blur. Blur is applied to + both sides of each pixel, therefore setting the direction to 0 and 180 + produces the same result. + + The value ranges from -180.0 to 180.0. + By default the property is set to \c 0.0. + + \table + \header + \li Output examples with different angle values + \li + \li + \row + \li \image DirectionalBlur_angle1.png + \li \image DirectionalBlur_angle2.png + \li \image DirectionalBlur_angle3.png + \row + \li \b { angle: 0.0 } + \li \b { angle: 45.0 } + \li \b { angle: 90.0 } + \row + \li \l samples: 24 + \li \l samples: 24 + \li \l samples: 24 + \row + \li \l length: 32 + \li \l length: 32 + \li \l length: 32 + \endtable + + */ + property real angle: 0.0 + + /*! + This property defines the blur behavior near the edges of the item, + where the pixel blurring is affected by the pixels outside the source + edges. + + If the property is set to \c true, the pixels outside the source are + interpreted to be transparent, which is similar to OpenGL + clamp-to-border extension. The blur is expanded slightly outside the + effect item area. + + If the property is set to \c false, the pixels outside the source are + interpreted to contain the same color as the pixels at the edge of the + item, which is similar to OpenGL clamp-to-edge behavior. The blur does + not expand outside the effect item area. + + By default, the property is set to \c false. + + */ + property bool transparentBorder: false + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + + */ + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + sourceRect: rootItem.transparentBorder ? Qt.rect(-1, -1, parent.width + 2.0, parent.height + 2.0) : Qt.rect(0, 0, 0, 0) + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: shaderItem + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + property variant source: sourceProxy.output + property real len: rootItem.length + property bool transparentBorder: rootItem.transparentBorder + property real samples: rootItem.samples + property real weight: 1.0 / Math.max(1.0, rootItem.samples) + property variant expandPixels: transparentBorder ? Qt.size(rootItem.samples, rootItem.samples) : Qt.size(0,0) + property variant expand: transparentBorder ? Qt.size(expandPixels.width / width, expandPixels.height / height) : Qt.size(0,0) + property variant delta: Qt.size(1.0 / rootItem.width * Math.cos((rootItem.angle + 90) * Math.PI/180), 1.0 / rootItem.height * Math.sin((rootItem.angle + 90) * Math.PI/180)) + + x: transparentBorder ? -expandPixels.width - 1: 0 + y: transparentBorder ? -expandPixels.height - 1 : 0 + width: transparentBorder ? parent.width + 2.0 * expandPixels.width + 2 : parent.width + height: transparentBorder ? parent.height + 2.0 * expandPixels.height + 2 : parent.height + + property string fragmentShaderSkeleton: " + varying highp vec2 qt_TexCoord0; + uniform highp float qt_Opacity; + uniform lowp sampler2D source; + uniform highp float len; + uniform highp float samples; + uniform highp float weight; + uniform highp vec2 expand; + uniform highp vec2 delta; + + void main(void) { + highp vec2 shift = delta * len / max(1.0, samples - 1.0); + mediump vec2 texCoord = qt_TexCoord0; + gl_FragColor = vec4(0.0); + + PLACEHOLDER_EXPAND_STEPS + + texCoord -= shift * max(0.0, samples - 1.0) * 0.5; + + PLACEHOLDER_UNROLLED_LOOP + + gl_FragColor *= weight * qt_Opacity; + } + " + + function buildFragmentShader() { + var shader = fragmentShaderSkeleton + var expandSteps = "" + + if (transparentBorder) { + expandSteps += "texCoord = (texCoord - expand) / (1.0 - 2.0 * expand);" + } + + var unrolledLoop = "gl_FragColor += texture2D(source, texCoord);\n" + + if (rootItem.samples > 1) { + unrolledLoop = "" + for (var i = 0; i < rootItem.samples; i++) + unrolledLoop += "gl_FragColor += texture2D(source, texCoord); texCoord += shift;\n" + } + + shader = shader.replace("PLACEHOLDER_EXPAND_STEPS", expandSteps) + fragmentShader = shader.replace("PLACEHOLDER_UNROLLED_LOOP", unrolledLoop) + } + + onFragmentShaderChanged: sourceChanged() + onSamplesChanged: buildFragmentShader() + onTransparentBorderChanged: buildFragmentShader() + Component.onCompleted: buildFragmentShader() + } +} diff --git a/bin/win64/QtGraphicalEffects/Displace.qml b/bin/win64/QtGraphicalEffects/Displace.qml new file mode 100644 index 0000000..a3b57c5 --- /dev/null +++ b/bin/win64/QtGraphicalEffects/Displace.qml @@ -0,0 +1,217 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +/*! + \qmltype Displace + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-distortion + \brief Moves the pixels of the source item according to the given + displacement map. + + \table + \header + \li Source + \li DisplacementSource + \li Effect applied + \row + \li \image Original_bug.png + \li \image Displace_map.png + \li \image Displace_bug.png + \endtable + + \section1 Example + + The following example shows how to apply the effect. + \snippet Displace-example.qml example + +*/ +Item { + id: rootItem + + /*! + This property defines the source item for the pixels that are going to + be displaced according to the data from + \l{Displace::displacementSource}{displacementSource}. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + This property defines the item that is going to be used as the + displacement map. The displacementSource item gets rendered into the + intermediate pixel buffer. The red and green component values from the + result determine the displacement of the pixels from the source item. + + The format for the displacement map is similar to the tangent space + normal maps, which can be created with most 3D-modeling tools. Many + image processing tools include the support for generating normal maps. + Alternatively, the displacement map for this effect can also be a QML + element which is colored appropriately. Like any QML element, it can be + animated. It is recommended that the size of the diplacement map matches + the size of the \l{Displace::source}{source}. + + The displace data is interpreted in the RGBA format. For every pixel: + the red channel stores the x-axis displacement, and the green channel + stores the y-axis displacement. Blue and alpha channels are ignored for + this effect. + + Assuming that red channel value 1.0 is fully red (0.0 having no red at + all), this effect considers pixel component value 0.5 to cause no + displacement at all. Values above 0.5 shift pixels to the left, values + below 0.5 do the shift to the right. In a similar way, green channel + values above 0.5 displace the pixels upwards, and values below 0.5 shift + the pixels downwards. The actual amount of displacement in pixels + depends on the \l displacement property. + + */ + property variant displacementSource + + /*! + This property defines the scale for the displacement. The bigger scale, + the bigger the displacement of the pixels. The value set to 0.0 causes + no displacement. + + The value ranges from -1.0 (inverted maximum shift, according to + displacementSource) to 1.0 (maximum shift, according to + displacementSource). By default, the property is set to \c 0.0 (no + displacement). + + \table + \header + \li Output examples with different displacement values + \li + \li + \row + \li \image Displace_displacement1.png + \li \image Displace_displacement2.png + \li \image Displace_displacement3.png + \row + \li \b { displacement: -0.2 } + \li \b { displacement: 0.0 } + \li \b { displacement: 0.2 } + \endtable + + */ + property real displacement: 0.0 + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + + */ + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + } + + SourceProxy { + id: displacementSourceProxy + input: rootItem.displacementSource + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: parent + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + property variant source: sourceProxy.output + property variant displacementSource: displacementSourceProxy.output + property real displacement: rootItem.displacement + property real xPixel: 1.0/width + property real yPixel: 1.0/height + + anchors.fill: parent + + fragmentShader: " + varying highp vec2 qt_TexCoord0; + uniform highp float qt_Opacity; + uniform lowp sampler2D source; + uniform lowp sampler2D displacementSource; + uniform highp float displacement; + uniform highp float xPixel; + uniform highp float yPixel; + + highp float linearstep(highp float e0, highp float e1, highp float x) { + return clamp((x - e0) / (e1 - e0), 0.0, 1.0); + } + + void main() { + lowp vec4 offset = texture2D(displacementSource, qt_TexCoord0); + offset.xy -= vec2(0.5, 0.5); + offset.xy = offset.xy * step(vec2(1.0/256.0), abs(offset.xy)); + highp vec2 tx = qt_TexCoord0 + (vec2(-offset.x, offset.y) * displacement); + + lowp float e1 = linearstep(0.0, xPixel, tx.x); + lowp float e2 = linearstep(0.0, yPixel, tx.y); + lowp float e3 = 1.0 - linearstep(1.0, 1.0 + xPixel, tx.x); + lowp float e4 = 1.0 - linearstep(1.0, 1.0 + yPixel, tx.y); + + lowp vec4 sample = texture2D(source, tx); + sample.rgb *= e1 * e2 * e3 * e4; + gl_FragColor = sample * qt_Opacity * offset.a; + } + " + } +} diff --git a/bin/win64/QtGraphicalEffects/DropShadow.qml b/bin/win64/QtGraphicalEffects/DropShadow.qml new file mode 100644 index 0000000..e66be6c --- /dev/null +++ b/bin/win64/QtGraphicalEffects/DropShadow.qml @@ -0,0 +1,361 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Copyright (C) 2015 Jolla Ltd, author: +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +/*! + \qmltype DropShadow + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-drop-shadow + + \brief Generates a soft shadow behind the source item. + + The DropShadow effect blurs the alpha channel of the input, colorizes the + result and places it behind the source object to create a soft shadow. The + shadow's color can be changed using the \l {DropShadow::color}{color} + property. The location of the shadow can be changed with the \l + horizontalOffset and \l verticalOffset properties. + + \table + \header + \li Source + \li Effect applied + \row + \li \image Original_butterfly.png + \li \image DropShadow_butterfly.png + \endtable + + The soft shadow is created by blurring the image live using a gaussian + blur. Performing blur live is a costly operation. Fullscreen gaussian blur + with even a moderate number of samples will only run at 60 fps on highend + graphics hardware. + + When the source is static, the \l cached property can be set to allocate + another buffer to avoid performing the blur every time it is drawn. + + \section1 Example + + The following example shows how to apply the effect. + \snippet DropShadow-example.qml example + +*/ +Item { + id: root + + DropShadowBase { + id: dbs + anchors.fill: parent + } + + /*! + This property defines the source item that is going to be used as the + source for the generated shadow. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property alias source: dbs.source + + /*! + \qmlproperty int DropShadow::radius + + Radius defines the softness of the shadow. A larger radius causes the + edges of the shadow to appear more blurry. + + The ideal blur is acheived by selecting \c samples and \c radius such + that \c {samples = 1 + radius * 2}, such as: + + \table + \header \li Radius \li Samples + \row \li 0 \e{(no blur)} \li 1 + \row \li 1 \li 3 + \row \li 2 \li 5 + \row \li 3 \li 7 + \endtable + + By default, the property is set to \c {floor(samples/2)}. + + \table + \header + \li Output examples with different radius values + \li + \li + \row + \li \image DropShadow_radius1.png + \li \image DropShadow_radius2.png + \li \image DropShadow_radius3.png + \row + \li \b { radius: 0 } + \li \b { radius: 6 } + \li \b { radius: 12 } + \row + \li \l samples: 25 + \li \l samples: 25 + \li \l samples: 25 + \row + \li \l color: #000000 + \li \l color: #000000 + \li \l color: #000000 + \row + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \row + \li \l verticalOffset: 20 + \li \l verticalOffset: 20 + \li \l verticalOffset: 20 + \row + \li \l spread: 0 + \li \l spread: 0 + \li \l spread: 0 + \endtable + */ + property alias radius: dbs.radius; + + /*! + This property defines how many samples are taken per pixel when edge + softening blur calculation is done. Larger value produces better + quality, but is slower to render. + + Ideally, this value should be twice as large as the highest required + radius value plus one, such as: + + \table + \header \li Radius \li Samples + \row \li 0 \e{(no blur)} \li 1 + \row \li 1 \li 3 + \row \li 2 \li 5 + \row \li 3 \li 7 + \endtable + + By default, the property is set to \c 9. + + This property is not intended to be animated. Changing this property will + cause the underlying OpenGL shaders to be recompiled. + */ + property alias samples: dbs.samples + + /*! + This property defines the RGBA color value which is used for the shadow. + + By default, the property is set to \c "black". + + \table + \header + \li Output examples with different color values + \li + \li + \row + \li \image DropShadow_color1.png + \li \image DropShadow_color2.png + \li \image DropShadow_color3.png + \row + \li \b { color: #000000 } + \li \b { color: #0000ff } + \li \b { color: #aa000000 } + \row + \li \l radius: 8 + \li \l radius: 8 + \li \l radius: 8 + \row + \li \l samples: 17 + \li \l samples: 17 + \li \l samples: 17 + \row + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \row + \li \l verticalOffset: 20 + \li \l verticalOffset: 20 + \li \l verticalOffset: 20 + \row + \li \l spread: 0 + \li \l spread: 0 + \li \l spread: 0 + \endtable + */ + property alias color: dbs.color + + /*! + \qmlproperty real QtGraphicalEffects::DropShadow::horizontalOffset + \qmlproperty real QtGraphicalEffects::DropShadow::verticalOffset + + HorizontalOffset and verticalOffset properties define the offset for the + rendered shadow compared to the DropShadow item position. Often, the + DropShadow item is anchored so that it fills the source element. In this + case, if the HorizontalOffset and verticalOffset properties are set to + 0, the shadow is rendered exactly under the source item. By changing the + offset properties, the shadow can be positioned relatively to the source + item. + + The values range from -inf to inf. By default, the properties are set to + \c 0. + + \table + \header + \li Output examples with different horizontalOffset values + \li + \li + \row + \li \image DropShadow_horizontalOffset1.png + \li \image DropShadow_horizontalOffset2.png + \li \image DropShadow_horizontalOffset3.png + \row + \li \b { horizontalOffset: -20 } + \li \b { horizontalOffset: 0 } + \li \b { horizontalOffset: 20 } + \row + \li \l radius: 4 + \li \l radius: 4 + \li \l radius: 4 + \row + \li \l samples: 9 + \li \l samples: 9 + \li \l samples: 9 + \row + \li \l color: #000000 + \li \l color: #000000 + \li \l color: #000000 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \row + \li \l spread: 0 + \li \l spread: 0 + \li \l spread: 0 + \endtable + */ + property alias horizontalOffset: dbs.horizontalOffset + property alias verticalOffset: dbs.verticalOffset + + /*! + This property defines how large part of the shadow color is strenghtened + near the source edges. + + The value ranges from 0.0 to 1.0. By default, the property is set to \c + 0.0. + + \table + \header + \li Output examples with different spread values + \li + \li + \row + \li \image DropShadow_spread1.png + \li \image DropShadow_spread2.png + \li \image DropShadow_spread3.png + \row + \li \b { spread: 0.0 } + \li \b { spread: 0.5 } + \li \b { spread: 1.0 } + \row + \li \l radius: 8 + \li \l radius: 8 + \li \l radius: 8 + \row + \li \l samples: 17 + \li \l samples: 17 + \li \l samples: 17 + \row + \li \l color: #000000 + \li \l color: #000000 + \li \l color: #000000 + \row + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \row + \li \l verticalOffset: 20 + \li \l verticalOffset: 20 + \li \l verticalOffset: 20 + \endtable + */ + property alias spread: dbs.spread + + /*! + \internal + + Starting Qt 5.6, this property has no effect. It is left here + for source compatibility only. + + ### Qt 6: remove + */ + property bool fast: false + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. Every time the source or effect + properties are changed, the pixels in the cache must be updated. Memory + consumption is increased, because an extra buffer of memory is required + for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + */ + property alias cached: dbs.cached + + /*! + This property determines whether or not the effect has a transparent + border. + + When set to \c true, the exterior of the item is padded with a 1 pixel + wide transparent edge, making sampling outside the source texture use + transparency instead of the edge pixels. Without this property, an + image which has opaque edges will not get a blurred shadow. + + In the image below, the Rectangle on the left has transparent borders + and has blurred edges, whereas the Rectangle on the right does not: + + By default, this property is set to \c true. + + \snippet DropShadow-transparentBorder-example.qml example + + \image DropShadow-transparentBorder.png + */ + property alias transparentBorder: dbs.transparentBorder +} diff --git a/bin/win64/QtGraphicalEffects/FastBlur.qml b/bin/win64/QtGraphicalEffects/FastBlur.qml new file mode 100644 index 0000000..a1eaec0 --- /dev/null +++ b/bin/win64/QtGraphicalEffects/FastBlur.qml @@ -0,0 +1,496 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +/*! + \qmltype FastBlur + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-blur + \brief Applies a fast blur effect to one or more source items. + + FastBlur offers lower blur quality than + \l{QtGraphicalEffects::GaussianBlur}{GaussianBlur}, but it is faster to + render. The FastBlur effect softens the source content by blurring it with + algorithm which uses the source content downscaling and bilinear filtering. + Use this effect in situations where the source content is rapidly changing + and the highest possible blur quality is not + needed. + + \table + \header + \li Source + \li Effect applied + \row + \li \image Original_bug.png + \li \image FastBlur_bug.png + \endtable + + \section1 Example + + The following example shows how to apply the effect. + \snippet FastBlur-example.qml example + +*/ +Item { + id: rootItem + + /*! + This property defines the source item that is going to be blurred. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + This property defines the distance of the neighboring pixels which affect + the blurring of an individual pixel. A larger radius increases the blur + effect. FastBlur algorithm may internally reduce the accuracy of the radius in order to + provide good rendering performance. + + The value ranges from 0.0 (no blur) to inf. Visual quality of the blur is reduced when + radius exceeds value 64. By default, the property is set to \c 0.0 (no blur). + + \table + \header + \li Output examples with different blur values + \li + \li + \row + \li \image FastBlur_radius1.png + \li \image FastBlur_radius2.png + \li \image FastBlur_radius3.png + \row + \li \b { radius: 0 } + \li \b { radius: 32 } + \li \b { radius: 64 } + \endtable + */ + property real radius: 0.0 + + /*! + This property defines the blur behavior near the edges of the item, + where the pixel blurring is affected by the pixels outside the source + edges. + + If the property is set to \c true, the pixels outside the source are + interpreted to be transparent, which is similar to OpenGL + clamp-to-border extension. The blur is expanded slightly outside the + effect item area. + + If the property is set to \c false, the pixels outside the source are + interpreted to contain the same color as the pixels at the edge of the + item, which is similar to OpenGL clamp-to-edge behavior. The blur does + not expand outside the effect item area. + + By default, the property is set to \c false. + + \table + \header + \li Output examples with different transparentBorder values + \li + \li + \row + \li \image FastBlur_transparentBorder1.png + \li \image FastBlur_transparentBorder2.png + \row + \li \b { transparentBorder: false } + \li \b { transparentBorder: true } + \row + \li \l radius: 64 + \li \l radius: 64 + \endtable + */ + property bool transparentBorder: false + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + + */ + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: shaderItem + visible: rootItem.cached + sourceItem: shaderItem + live: true + hideSource: visible + smooth: rootItem.radius > 0 + } + + /*! \internal */ + property string __internalBlurVertexShader: " + attribute highp vec4 qt_Vertex; + attribute highp vec2 qt_MultiTexCoord0; + uniform highp mat4 qt_Matrix; + uniform highp float yStep; + uniform highp float xStep; + varying highp vec2 qt_TexCoord0; + varying highp vec2 qt_TexCoord1; + varying highp vec2 qt_TexCoord2; + varying highp vec2 qt_TexCoord3; + + void main() { + qt_TexCoord0 = vec2(qt_MultiTexCoord0.x + xStep, qt_MultiTexCoord0.y + yStep * 0.36); + qt_TexCoord1 = vec2(qt_MultiTexCoord0.x + xStep * 0.36, qt_MultiTexCoord0.y - yStep); + qt_TexCoord2 = vec2(qt_MultiTexCoord0.x - xStep * 0.36, qt_MultiTexCoord0.y + yStep); + qt_TexCoord3 = vec2(qt_MultiTexCoord0.x - xStep, qt_MultiTexCoord0.y - yStep * 0.36); + gl_Position = qt_Matrix * qt_Vertex; + } + " + + /*! \internal */ + property string __internalBlurFragmentShader: " + uniform lowp sampler2D source; + uniform lowp float qt_Opacity; + varying highp vec2 qt_TexCoord0; + varying highp vec2 qt_TexCoord1; + varying highp vec2 qt_TexCoord2; + varying highp vec2 qt_TexCoord3; + + void main() { + highp vec4 sourceColor = (texture2D(source, qt_TexCoord0) + + texture2D(source, qt_TexCoord1) + + texture2D(source, qt_TexCoord2) + + texture2D(source, qt_TexCoord3)) * 0.25; + gl_FragColor = sourceColor * qt_Opacity; + } + " + + ShaderEffect { + id: level0 + property variant source: sourceProxy.output + anchors.fill: parent + visible: false + smooth: true + } + + ShaderEffectSource { + id: level1 + width: Math.ceil(shaderItem.width / 32) * 32 + height: Math.ceil(shaderItem.height / 32) * 32 + sourceItem: level0 + hideSource: rootItem.visible + sourceRect: transparentBorder ? Qt.rect(-64, -64, shaderItem.width, shaderItem.height) : Qt.rect(0, 0, 0, 0) + visible: false + smooth: rootItem.radius > 0 + } + + ShaderEffect { + id: effect1 + property variant source: level1 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level2 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level2 + width: level1.width / 2 + height: level1.height / 2 + sourceItem: effect1 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect2 + property variant source: level2 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level3 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level3 + width: level2.width / 2 + height: level2.height / 2 + sourceItem: effect2 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect3 + property variant source: level3 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level4 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level4 + width: level3.width / 2 + height: level3.height / 2 + sourceItem: effect3 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect4 + property variant source: level4 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level5 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level5 + width: level4.width / 2 + height: level4.height / 2 + sourceItem: effect4 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect5 + property variant source: level5 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level6 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level6 + width: level5.width / 2 + height: level5.height / 2 + sourceItem: effect5 + hideSource: rootItem.visible + visible: false + smooth: true + } + + Item { + id: dummysource + width: 1 + height: 1 + visible: false + } + + ShaderEffectSource { + id: dummy + width: 1 + height: 1 + sourceItem: dummysource + visible: false + smooth: false + live: false + } + + ShaderEffect { + id: shaderItem + + property variant source1: level1 + property variant source2: level2 + property variant source3: level3 + property variant source4: level4 + property variant source5: level5 + property variant source6: level6 + property real lod: Math.sqrt(rootItem.radius / 64.0) * 1.2 - 0.2 + property real weight1 + property real weight2 + property real weight3 + property real weight4 + property real weight5 + property real weight6 + + x: transparentBorder ? -64 : 0 + y: transparentBorder ? -64 : 0 + width: transparentBorder ? parent.width + 128 : parent.width + height: transparentBorder ? parent.height + 128 : parent.height + + function weight(v) { + if (v <= 0.0) + return 1.0 + if (v >= 0.5) + return 0.0 + + return 1.0 - v * 2.0 + } + + function calculateWeights() { + + var w1 = weight(Math.abs(lod - 0.100)) + var w2 = weight(Math.abs(lod - 0.300)) + var w3 = weight(Math.abs(lod - 0.500)) + var w4 = weight(Math.abs(lod - 0.700)) + var w5 = weight(Math.abs(lod - 0.900)) + var w6 = weight(Math.abs(lod - 1.100)) + + var sum = w1 + w2 + w3 + w4 + w5 + w6; + weight1 = w1 / sum; + weight2 = w2 / sum; + weight3 = w3 / sum; + weight4 = w4 / sum; + weight5 = w5 / sum; + weight6 = w6 / sum; + + upateSources() + } + + function upateSources() { + var sources = new Array(); + var weights = new Array(); + + if (weight1 > 0) { + sources.push(level1) + weights.push(weight1) + } + + if (weight2 > 0) { + sources.push(level2) + weights.push(weight2) + } + + if (weight3 > 0) { + sources.push(level3) + weights.push(weight3) + } + + if (weight4 > 0) { + sources.push(level4) + weights.push(weight4) + } + + if (weight5 > 0) { + sources.push(level5) + weights.push(weight5) + } + + if (weight6 > 0) { + sources.push(level6) + weights.push(weight6) + } + + for (var j = sources.length; j < 6; j++) { + sources.push(dummy) + weights.push(0.0) + } + + source1 = sources[0] + source2 = sources[1] + source3 = sources[2] + source4 = sources[3] + source5 = sources[4] + source6 = sources[5] + + weight1 = weights[0] + weight2 = weights[1] + weight3 = weights[2] + weight4 = weights[3] + weight5 = weights[4] + weight6 = weights[5] + } + + Component.onCompleted: calculateWeights() + + onLodChanged: calculateWeights() + + fragmentShader: " + uniform lowp sampler2D source1; + uniform lowp sampler2D source2; + uniform lowp sampler2D source3; + uniform lowp sampler2D source4; + uniform lowp sampler2D source5; + uniform mediump float weight1; + uniform mediump float weight2; + uniform mediump float weight3; + uniform mediump float weight4; + uniform mediump float weight5; + uniform lowp float qt_Opacity; + varying mediump vec2 qt_TexCoord0; + + void main() { + lowp vec4 sourceColor = texture2D(source1, qt_TexCoord0) * weight1; + sourceColor += texture2D(source2, qt_TexCoord0) * weight2; + sourceColor += texture2D(source3, qt_TexCoord0) * weight3; + sourceColor += texture2D(source4, qt_TexCoord0) * weight4; + sourceColor += texture2D(source5, qt_TexCoord0) * weight5; + gl_FragColor = sourceColor * qt_Opacity; + } + " + } +} diff --git a/bin/win64/QtGraphicalEffects/GammaAdjust.qml b/bin/win64/QtGraphicalEffects/GammaAdjust.qml new file mode 100644 index 0000000..59f1dd8 --- /dev/null +++ b/bin/win64/QtGraphicalEffects/GammaAdjust.qml @@ -0,0 +1,193 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +/*! + \qmltype GammaAdjust + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-color + \brief Alters the luminance of the source item. + + GammaAdjust is applied to each pixel according to the curve which is + pre-defined as a power-law expression, where the property gamma is used as the + reciprocal scaling exponent. Refer to the property documentation of \l{GammaAdjust::gamma}{gamma} + for more details. + + \table + \header + \li Source + \li Effect applied + \row + \li \image Original_bug.png + \li \image GammaAdjust_bug.png + \endtable + + \section1 Example + + The following example shows how to apply the effect. + \snippet GammaAdjust-example.qml example + +*/ +Item { + id: rootItem + + /*! + This property defines the source item for which the luminance is going to be + adjusted. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + This property defines the change factor for how the luminance of each pixel + is altered according to the equation: + + \code +luminance = pow(original_luminance, 1.0 / gamma); // The luminance is assumed to be between 0.0 and 1.0 + \endcode + + Setting the gamma values under 1.0 makes the image darker, the values + above 1.0 lighten it. + + The value ranges from 0.0 (darkest) to inf (lightest). By default, the + property is set to \c 1.0 (no change). + + \table + \header + \li Output examples with different gamma values + \li + \li + \row + \li \image GammaAdjust_gamma1.png + \li \image GammaAdjust_gamma2.png + \li \image GammaAdjust_gamma3.png + \row + \li \b { gamma: 0.5 } + \li \b { gamma: 1.0 } + \li \b { gamma: 2.0 } + \endtable + + \table + \header + \li Pixel luminance curves of the above images. + \li + \li + \row + \li \image GammaAdjust_gamma1_graph.png + \li \image GammaAdjust_gamma2_graph.png + \li \image GammaAdjust_gamma3_graph.png + \row + \li Red curve: default gamma (1.0) + \li + \li + \row + \li Yellow curve: effect applied + \li + \li + \row + \li X-axis: pixel original luminance + \li + \li + \row + \li Y-axis: pixel luminance with effect applied + \li + \li + \endtable + + */ + property real gamma: 1.0 + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + */ + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: parent + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + property variant source: sourceProxy.output + property real gamma: 1.0 / Math.max(rootItem.gamma, 0.0001) + + anchors.fill: parent + + fragmentShader: " + varying highp vec2 qt_TexCoord0; + uniform highp float qt_Opacity; + uniform lowp sampler2D source; + uniform highp float gamma; + void main(void) { + highp vec4 originalColor = texture2D(source, qt_TexCoord0.st); + originalColor.rgb = originalColor.rgb / max(1.0/256.0, originalColor.a); + highp vec3 adjustedColor = pow(originalColor.rgb, vec3(gamma)); + gl_FragColor = vec4(adjustedColor * originalColor.a, originalColor.a) * qt_Opacity; + } + " + } +} diff --git a/bin/win64/QtGraphicalEffects/GaussianBlur.qml b/bin/win64/QtGraphicalEffects/GaussianBlur.qml new file mode 100644 index 0000000..70943a0 --- /dev/null +++ b/bin/win64/QtGraphicalEffects/GaussianBlur.qml @@ -0,0 +1,371 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Copyright (C) 2015 Jolla Ltd, author: +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtQuick.Window 2.1 +import QtGraphicalEffects.private 1.0 + +/*! + \qmltype GaussianBlur + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-blur + \brief Applies a higher quality blur effect. + + GaussianBlur effect softens the image by blurring it with an algorithm that + uses the Gaussian function to calculate the effect. The effect produces + higher quality than \l{QtGraphicalEffects::FastBlur}{FastBlur}, but is + slower to render. + + \table + \header + \li Source + \li Effect applied + \row + \li \image Original_bug.png + \li \image GaussianBlur_bug.png + \endtable + + \section1 Example + + The following example shows how to apply the effect. + \snippet GaussianBlur-example.qml example + + Performing blur live is a costly operation. Fullscreen gaussian blur + with even a moderate number of samples will only run at 60 fps on highend + graphics hardware. + +*/ +Item { + id: root + + /*! + This property defines the source item that is going to be blurred. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + This property defines the distance of the neighboring pixels which + affect the blurring of an individual pixel. A larger radius increases + the blur effect. + + The ideal blur is acheived by selecting \c samples and \c radius such + that \c {samples = 1 + radius * 2}, such as: + + \table + \header \li Radius \li Samples + \row \li 0 \e{(no blur)} \li 1 + \row \li 1 \li 3 + \row \li 2 \li 5 + \row \li 3 \li 7 + \endtable + + The value ranges from 0.0 (no blur) to inf. By default, the property is + set to \c floor(samples / 2.0). + + \table + \header + \li Output examples with different radius values + \li + \li + \row + \li \image GaussianBlur_radius1.png + \li \image GaussianBlur_radius2.png + \li \image GaussianBlur_radius3.png + \row + \li \b { radius: 0 } + \li \b { radius: 4 } + \li \b { radius: 8 } + \row + \li \l samples: 16 + \li \l samples: 16 + \li \l samples: 16 + \row + \li \l deviation: 3 + \li \l deviation: 3 + \li \l deviation: 3 + \endtable + + */ + property real radius: Math.floor(samples / 2); + + /*! + This property defines how many samples are taken per pixel when blur + calculation is done. Larger value produces better quality, but is slower + to render. + + Ideally, this value should be twice as large as the highest required + radius value plus 1, for example, if the radius is animated between 0.0 + and 4.0, samples should be set to 9. + + By default, the property is set to \c 9. + + \note This property is not intended to be animated. Changing this property may + cause the underlying OpenGL shaders to be recompiled. + + */ + property int samples: 9 + + /*! + This property is a parameter to the gaussian function that is used when + calculating neighboring pixel weights for the blurring. A larger + deviation causes image to appear more blurry, but it also reduces the + quality of the blur. A very large deviation value causes the effect to + look a bit similar to what, for exmple, a box blur algorithm produces. A + too small deviation values makes the effect insignificant for the pixels + near the radius. + + \inlineimage GaussianBlur_deviation_graph.png + \caption The image above shows the Gaussian function with two different + deviation values, yellow (1) and cyan (2.7). The y-axis shows the + weights, the x-axis shows the pixel distance. + + The value ranges from 0.0 (no deviation) to inf (maximum deviation). By + default, devaition is binded to radius. When radius increases, deviation + is automatically increased linearly. With the radius value of 8, the + deviation default value becomes approximately 2.7034. This value + produces a compromise between the blur quality and overall blurriness. + + \table + \header + \li Output examples with different deviation values + \li + \li + \row + \li \image GaussianBlur_deviation1.png + \li \image GaussianBlur_deviation2.png + \li \image GaussianBlur_deviation3.png + \row + \li \b { deviation: 1 } + \li \b { deviation: 2 } + \li \b { deviation: 4 } + \row + \li \l radius: 8 + \li \l radius: 8 + \li \l radius: 8 + \row + \li \l samples: 16 + \li \l samples: 16 + \li \l samples: 16 + \endtable + + */ + property real deviation: (radius + 1) / 3.3333 + + /*! + This property defines the blur behavior near the edges of the item, + where the pixel blurring is affected by the pixels outside the source + edges. + + If the property is set to \c true, the pixels outside the source are + interpreted to be transparent, which is similar to OpenGL + clamp-to-border extension. The blur is expanded slightly outside the + effect item area. + + If the property is set to \c false, the pixels outside the source are + interpreted to contain the same color as the pixels at the edge of the + item, which is similar to OpenGL clamp-to-edge behavior. The blur does + not expand outside the effect item area. + + By default, the property is set to \c false. + + \table + \header + \li Output examples with different transparentBorder values + \li + \li + \row + \li \image GaussianBlur_transparentBorder1.png + \li \image GaussianBlur_transparentBorder2.png + \row + \li \b { transparentBorder: false } + \li \b { transparentBorder: true } + \row + \li \l radius: 8 + \li \l radius: 8 + \row + \li \l samples: 16 + \li \l samples: 16 + \row + \li \l deviation: 2.7 + \li \l deviation: 2.7 + \endtable + */ + property bool transparentBorder: false + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + + */ + property bool cached: false + + + // private members... + /*! \internal */ + property int _paddedTexWidth: transparentBorder ? width + 2 * radius: width; + /*! \internal */ + property int _paddedTexHeight: transparentBorder ? height + 2 * radius: height; + /*! \internal */ + property int _kernelRadius: Math.max(0, samples / 2); + /*! \internal */ + property int _kernelSize: _kernelRadius * 2 + 1; + /*! \internal */ + property int _dpr: Screen.devicePixelRatio; + /*! \internal */ + property bool _alphaOnly: false; + /*! \internal */ + property var _maskSource: undefined + + /*! \internal */ + property alias _output: sourceProxy.output; + /*! \internal */ + property alias _outputRect: sourceProxy.sourceRect; + /*! \internal */ + property alias _color: verticalBlur.color; + /*! \internal */ + property real _thickness: 0; + + onSamplesChanged: _rebuildShaders(); + on_KernelSizeChanged: _rebuildShaders(); + onDeviationChanged: _rebuildShaders(); + on_DprChanged: _rebuildShaders(); + on_MaskSourceChanged: _rebuildShaders(); + Component.onCompleted: _rebuildShaders(); + + /*! \internal */ + function _rebuildShaders() { + var params = { + radius: _kernelRadius, + // Limit deviation to something very small avoid getting NaN in the shader. + deviation: Math.max(0.00001, deviation), + alphaOnly: root._alphaOnly, + masked: _maskSource != undefined, + fallback: root.radius != _kernelRadius + } + var shaders = ShaderBuilder.gaussianBlur(params); + horizontalBlur.fragmentShader = shaders.fragmentShader; + horizontalBlur.vertexShader = shaders.vertexShader; + } + + SourceProxy { + id: sourceProxy + interpolation: SourceProxy.LinearInterpolation + input: root.source + sourceRect: root.transparentBorder + ? Qt.rect(-root.radius, 0, root._paddedTexWidth, parent.height) + : Qt.rect(0, 0, 0, 0) + } + + ShaderEffect { + id: horizontalBlur + width: root.transparentBorder ? root._paddedTexWidth : root.width + height: root.height; + + // Used by all shaders + property Item source: sourceProxy.output; + property real spread: root.radius / root._kernelRadius; + property var dirstep: Qt.vector2d(1 / (root._paddedTexWidth * root._dpr), 0); + + // Used by fallback shader (sampleCount exceeds number of varyings) + property real deviation: root.deviation + + // Only in use for DropShadow and Glow + property color color: "white" + property real thickness: Math.max(0, Math.min(0.98, 1 - root._thickness * 0.98)); + + // Only in use for MaskedBlur + property var mask: root._maskSource; + + layer.enabled: true + layer.smooth: true + layer.sourceRect: root.transparentBorder + ? Qt.rect(0, -root.radius, width, root._paddedTexHeight) + : Qt.rect(0, 0, 0, 0) + visible: false + blending: false + } + + ShaderEffect { + id: verticalBlur + x: transparentBorder ? -root.radius : 0 + y: x; + width: root.transparentBorder ? root._paddedTexWidth: root.width + height: root.transparentBorder ? root._paddedTexHeight : root.height; + fragmentShader: horizontalBlur.fragmentShader + vertexShader: horizontalBlur.vertexShader + + property Item source: horizontalBlur + property real spread: horizontalBlur.spread + property var dirstep: Qt.vector2d(0, 1 / (root._paddedTexHeight * root._dpr)); + + property real deviation: horizontalBlur.deviation + + property color color: "black" + property real thickness: horizontalBlur.thickness; + + property var mask: horizontalBlur.mask; + + visible: true + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: verticalBlur + visible: root.cached + smooth: true + sourceItem: verticalBlur + hideSource: visible + } + +} diff --git a/bin/win64/QtGraphicalEffects/Glow.qml b/bin/win64/QtGraphicalEffects/Glow.qml new file mode 100644 index 0000000..0400921 --- /dev/null +++ b/bin/win64/QtGraphicalEffects/Glow.qml @@ -0,0 +1,289 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Copyright (C) 2015 Jolla Ltd, author: +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +/*! + \qmltype Glow + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-glow + \brief Generates a halo like glow around the source item. + + The Glow effect blurs the alpha channel of the source and colorizes it + with \l {Glow::color}{color} and places it behind the source, resulting in a halo or glow + around the object. The quality of the blurred edge can be controlled using + \l samples and \l radius and the strenght of the glow can be changed using + \l spread. + + \table + \header + \li Source + \li Effect applied + \row + \li \image Original_butterfly_black.png + \li \image Glow_butterfly.png + \endtable + + The glow is created by blurring the image live using a gaussian blur. + Performing blur live is a costly operation. Fullscreen gaussian blur with + even a moderate number of samples will only run at 60 fps on highend + graphics hardware. + + \section1 Example + + The following example shows how to apply the effect. + \snippet Glow-example.qml example + +*/ +Item { + id: root + + DropShadowBase { + id: dps + anchors.fill: parent + color: "white" + spread: 0.5 + horizontalOffset: 0 + verticalOffset: 0 + } + + /*! + This property defines the source item that is going to be used as source + for the generated glow. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property alias source: dps.source + + /*! + Radius defines the softness of the glow. A larger radius causes the + edges of the glow to appear more blurry. + + Depending on the radius value, value of the \l{Glow::samples}{samples} + should be set to sufficiently large to ensure the visual quality. + + The ideal blur is acheived by selecting \c samples and \c radius such + that \c {samples = 1 + radius * 2}, such as: + + \table + \header \li Radius \li Samples + \row \li 0 \e{(no blur)} \li 1 + \row \li 1 \li 3 + \row \li 2 \li 5 + \row \li 3 \li 7 + \endtable + + By default, the property is set to \c {floor(samples/2)}. + + \table + \header + \li Output examples with different radius values + \li + \li + \row + \li \image Glow_radius1.png + \li \image Glow_radius2.png + \li \image Glow_radius3.png + \row + \li \b { radius: 0 } + \li \b { radius: 6 } + \li \b { radius: 12 } + \row + \li \l samples: 25 + \li \l samples: 25 + \li \l samples: 25 + \row + \li \l color: #ffffff + \li \l color: #ffffff + \li \l color: #ffffff + \row + \li \l spread: 0 + \li \l spread: 0 + \li \l spread: 0 + \endtable + */ + property alias radius: dps.radius + + /*! + This property defines how many samples are taken per pixel when edge + softening blur calculation is done. Larger value produces better + quality, but is slower to render. + + Ideally, this value should be twice as large as the highest required + radius value plus one, such as: + + \table + \header \li Radius \li Samples + \row \li 0 \e{(no blur)} \li 1 + \row \li 1 \li 3 + \row \li 2 \li 5 + \row \li 3 \li 7 + \endtable + + By default, the property is set to \c 9. + + This property is not intended to be animated. Changing this property will + cause the underlying OpenGL shaders to be recompiled. + */ + property alias samples: dps.samples + + /*! + This property defines how large part of the glow color is strenghtened + near the source edges. + + The values range from 0.0 to 1.0. By default, the property is set to \c + 0.5. + + \table + \header + \li Output examples with different spread values + \li + \li + \row + \li \image Glow_spread1.png + \li \image Glow_spread2.png + \li \image Glow_spread3.png + \row + \li \b { spread: 0.0 } + \li \b { spread: 0.5 } + \li \b { spread: 1.0 } + \row + \li \l radius: 8 + \li \l radius: 8 + \li \l radius: 8 + \row + \li \l samples: 17 + \li \l samples: 17 + \li \l samples: 17 + \row + \li \l color: #ffffff + \li \l color: #ffffff + \li \l color: #ffffff + \endtable + */ + property alias spread: dps.spread + + /*! + This property defines the RGBA color value which is used for the glow. + + By default, the property is set to \c "white". + + \table + \header + \li Output examples with different color values + \li + \li + \row + \li \image Glow_color1.png + \li \image Glow_color2.png + \li \image Glow_color3.png + \row + \li \b { color: #ffffff } + \li \b { color: #00ff00 } + \li \b { color: #aa00ff00 } + \row + \li \l radius: 8 + \li \l radius: 8 + \li \l radius: 8 + \row + \li \l samples: 17 + \li \l samples: 17 + \li \l samples: 17 + \row + \li \l spread: 0.5 + \li \l spread: 0.5 + \li \l spread: 0.5 + \endtable + + */ + property alias color: dps.color + + /*! + \internal + + Starting Qt 5.6, this property has no effect. It is left here + for source compatibility only. + + ### Qt 6: remove + */ + property bool fast: false + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + + */ + property alias cached: dps.cached + + /*! + This property determines whether or not the effect has a transparent + border. + + When set to \c true, the exterior of the item is padded with a + transparent edge, making sampling outside the source texture use + transparency instead of the edge pixels. Without this property, an + image which has opaque edges will not get a blurred edge. + + By default, the property is set to \c true. Set it to false if the source + already has a transparent edge to make the blurring a tiny bit faster. + + In the snippet below, the Rectangle on the left has transparent borders + and has blurred edges, whereas the Rectangle on the right does not. + + \snippet Glow-transparentBorder-example.qml example + + \image Glow-transparentBorder.png + */ + property alias transparentBorder: dps.transparentBorder +} diff --git a/bin/win64/QtGraphicalEffects/HueSaturation.qml b/bin/win64/QtGraphicalEffects/HueSaturation.qml new file mode 100644 index 0000000..6b5cd5b --- /dev/null +++ b/bin/win64/QtGraphicalEffects/HueSaturation.qml @@ -0,0 +1,300 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +/*! + \qmltype HueSaturation + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-color + \brief Alters the source item colors in the HSL color space. + + HueSaturation is similar to the \l{QtGraphicalEffects::Colorize}{Colorize} + effect, but the hue and saturation property values are handled differently. + The HueSaturation effect always shifts the hue, saturation, and lightness + from the original, instead of setting them. + + \table + \header + \li Source + \li Effect applied + \row + \li \image Original_bug.png + \li \image HueSaturation_bug.png + \endtable + + \section1 Example + + The following example shows how to apply the effect. + \snippet HueSaturation-example.qml example + +*/ +Item { + id: rootItem + + /*! + This property defines the source item that provides the source pixels + for the effect. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source: 0 + + /*! + This property defines the hue value which is added to the source hue + value. + + The value ranges from -1.0 (decrease) to 1.0 (increase). By default, the + property is set to \c 0.0 (no change). + + \table + \header + \li Output examples with different hue values + \li + \li + \row + \li \image HueSaturation_hue1.png + \li \image HueSaturation_hue2.png + \li \image HueSaturation_hue3.png + \row + \li \b { hue: -0.3 } + \li \b { hue: 0.0 } + \li \b { hue: 0.3 } + \row + \li \l saturation: 0 + \li \l saturation: 0 + \li \l saturation: 0 + \row + \li \l lightness: 0 + \li \l lightness: 0 + \li \l lightness: 0 + \endtable + + */ + property real hue: 0.0 + + /*! + This property defines the saturation value value which is added to the + source saturation value. + + The value ranges from -1.0 (decrease) to 1.0 (increase). By default, the + property is set to \c 0.0 (no change). + + \table + \header + \li Output examples with different saturation values + \li + \li + \row + \li \image HueSaturation_saturation1.png + \li \image HueSaturation_saturation2.png + \li \image HueSaturation_saturation3.png + \row + \li \b { saturation: -0.8 } + \li \b { saturation: 0.0 } + \li \b { saturation: 1.0 } + \row + \li \l hue: 0 + \li \l hue: 0 + \li \l hue: 0 + \row + \li \l lightness: 0 + \li \l lightness: 0 + \li \l lightness: 0 + \endtable + + */ + property real saturation: 0.0 + + /*! + This property defines the lightness value which is added to the source + saturation value. + + The value ranges from -1.0 (decrease) to 1.0 (increase). By default, the + property is set to \c 0.0 (no change). + + \table + \header + \li Output examples with different lightness values + \li + \li + \row + \li \image HueSaturation_lightness1.png + \li \image HueSaturation_lightness2.png + \li \image HueSaturation_lightness3.png + \row + \li \b { lightness: -0.5 } + \li \b { lightness: 0.0 } + \li \b { lightness: 0.5 } + \row + \li \l hue: 0 + \li \l hue: 0 + \li \l hue: 0 + \row + \li \l saturation: 0 + \li \l saturation: 0 + \li \l saturation: 0 + \endtable + + */ + property real lightness: 0.0 + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + */ + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: parent + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + property variant source: sourceProxy.output + property variant hsl: Qt.vector3d(rootItem.hue, rootItem.saturation, rootItem.lightness) + + anchors.fill: parent + + fragmentShader: " + varying highp vec2 qt_TexCoord0; + uniform highp float qt_Opacity; + uniform highp sampler2D source; + uniform highp vec3 hsl; + + highp vec3 RGBtoHSL(highp vec3 color) { + highp float cmin = min(color.r, min(color.g, color.b)); + highp float cmax = max(color.r, max(color.g, color.b)); + highp float h = 0.0; + highp float s = 0.0; + highp float l = (cmin + cmax) / 2.0; + highp float diff = cmax - cmin; + + if (diff > 1.0 / 256.0) { + if (l < 0.5) + s = diff / (cmin + cmax); + else + s = diff / (2.0 - (cmin + cmax)); + + if (color.r == cmax) + h = (color.g - color.b) / diff; + else if (color.g == cmax) + h = 2.0 + (color.b - color.r) / diff; + else + h = 4.0 + (color.r - color.g) / diff; + + h /= 6.0; + } + return vec3(h, s, l); + } + + highp float hueToIntensity(highp float v1, highp float v2, highp float h) { + h = fract(h); + if (h < 1.0 / 6.0) + return v1 + (v2 - v1) * 6.0 * h; + else if (h < 1.0 / 2.0) + return v2; + else if (h < 2.0 / 3.0) + return v1 + (v2 - v1) * 6.0 * (2.0 / 3.0 - h); + + return v1; + } + + highp vec3 HSLtoRGB(highp vec3 color) { + highp float h = color.x; + highp float l = color.z; + highp float s = color.y; + + if (s < 1.0 / 256.0) + return vec3(l); + + highp float v1; + highp float v2; + if (l < 0.5) + v2 = l * (1.0 + s); + else + v2 = (l + s) - (s * l); + + v1 = 2.0 * l - v2; + + highp float d = 1.0 / 3.0; + highp float r = hueToIntensity(v1, v2, h + d); + highp float g = hueToIntensity(v1, v2, h); + highp float b = hueToIntensity(v1, v2, h - d); + return vec3(r, g, b); + } + + void main() { + lowp vec4 sample = texture2D(source, qt_TexCoord0); + sample = vec4(sample.rgb / max(1.0/256.0, sample.a), sample.a); + sample.rgb = mix(vec3(dot(sample.rgb, vec3(0.2125, 0.7154, 0.0721))), sample.rgb, 1.0 + hsl.y); + sample.xyz = RGBtoHSL(sample.rgb); + sample.rgb = HSLtoRGB(vec3(sample.x + hsl.x, sample.y, sample.z)); + highp float c = step(0.0, hsl.z); + sample.rgb = mix(sample.rgb, vec3(c), abs(hsl.z)); + gl_FragColor = vec4(sample.rgb * sample.a, sample.a) * qt_Opacity; + } + " + } +} diff --git a/bin/win64/QtGraphicalEffects/InnerShadow.qml b/bin/win64/QtGraphicalEffects/InnerShadow.qml new file mode 100644 index 0000000..e5f6294 --- /dev/null +++ b/bin/win64/QtGraphicalEffects/InnerShadow.qml @@ -0,0 +1,385 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +/*! + \qmltype InnerShadow + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-drop-shadow + \brief Generates a colorized and blurred shadow inside the + source. + + By default the effect produces a high quality shadow image, thus the + rendering speed of the shadow might not be the highest possible. The + rendering speed is reduced especially if the shadow edges are heavily + softened. For use cases that require faster rendering speed and for which + the highest possible visual quality is not necessary, property + \l{InnerShadow::fast}{fast} can be set to true. + + \table + \header + \li Source + \li Effect applied + \row + \li \image Original_butterfly.png + \li \image InnerShadow_butterfly.png + \endtable + + \section1 Example + + The following example shows how to apply the effect. + \snippet InnerShadow-example.qml example + +*/ +Item { + id: rootItem + + /*! + This property defines the source item that is going to be used as the + source for the generated shadow. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + Radius defines the softness of the shadow. A larger radius causes the + edges of the shadow to appear more blurry. + + Depending on the radius value, value of the + \l{InnerShadow::samples}{samples} should be set to sufficiently large to + ensure the visual quality. + + The value ranges from 0.0 (no blur) to inf. By default, the property is + set to \c 0.0 (no blur). + + \table + \header + \li Output examples with different radius values + \li + \li + \row + \li \image InnerShadow_radius1.png + \li \image InnerShadow_radius2.png + \li \image InnerShadow_radius3.png + \row + \li \b { radius: 0 } + \li \b { radius: 6 } + \li \b { radius: 12 } + \row + \li \l samples: 24 + \li \l samples: 24 + \li \l samples: 24 + \row + \li \l color: #000000 + \li \l color: #000000 + \li \l color: #000000 + \row + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \row + \li \l spread: 0 + \li \l spread: 0 + \li \l spread: 0 + \endtable + + */ + property real radius: 0.0 + + /*! + This property defines how many samples are taken per pixel when edge + softening blur calculation is done. Larger value produces better + quality, but is slower to render. + + Ideally, this value should be twice as large as the highest required + radius value, for example, if the radius is animated between 0.0 and + 4.0, samples should be set to 8. + + The value ranges from 0 to 32. By default, the property is set to \c 0. + + This property is not intended to be animated. Changing this property may + cause the underlying OpenGL shaders to be recompiled. + + When \l{InnerShadow::fast}{fast} property is set to true, this property + has no effect. + + */ + property int samples: 0 + + /*! + This property defines how large part of the shadow color is strenghtened + near the source edges. + + The value ranges from 0.0 to 1.0. By default, the property is set to \c + 0.5. + + \table + \header + \li Output examples with different spread values + \li + \li + \row + \li \image InnerShadow_spread1.png + \li \image InnerShadow_spread2.png + \li \image InnerShadow_spread3.png + \row + \li \b { spread: 0.0 } + \li \b { spread: 0.3 } + \li \b { spread: 0.5 } + \row + \li \l radius: 16 + \li \l radius: 16 + \li \l radius: 16 + \row + \li \l samples: 24 + \li \l samples: 24 + \li \l samples: 24 + \row + \li \l color: #000000 + \li \l color: #000000 + \li \l color: #000000 + \row + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \endtable + + */ + property real spread: 0.0 + + /*! + This property defines the RGBA color value which is used for the shadow. + + By default, the property is set to \c "black". + + \table + \header + \li Output examples with different color values + \li + \li + \row + \li \image InnerShadow_color1.png + \li \image InnerShadow_color2.png + \li \image InnerShadow_color3.png + \row + \li \b { color: #000000 } + \li \b { color: #ffffff } + \li \b { color: #ff0000 } + \row + \li \l radius: 16 + \li \l radius: 16 + \li \l radius: 16 + \row + \li \l samples: 24 + \li \l samples: 24 + \li \l samples: 24 + \row + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \row + \li \l spread: 0.2 + \li \l spread: 0.2 + \li \l spread: 0.2 + \endtable + */ + property color color: "black" + + /*! + \qmlproperty real QtGraphicalEffects::InnerShadow::horizontalOffset + \qmlproperty real QtGraphicalEffects::InnerShadow::verticalOffset + + HorizontalOffset and verticalOffset properties define the offset for the + rendered shadow compared to the InnerShadow item position. Often, the + InnerShadow item is anchored so that it fills the source element. In + this case, if the HorizontalOffset and verticalOffset properties are set + to 0, the shadow is rendered fully inside the source item. By changing + the offset properties, the shadow can be positioned relatively to the + source item. + + The values range from -inf to inf. By default, the properties are set to + \c 0. + + \table + \header + \li Output examples with different horizontalOffset values + \li + \li + \row + \li \image InnerShadow_horizontalOffset1.png + \li \image InnerShadow_horizontalOffset2.png + \li \image InnerShadow_horizontalOffset3.png + \row + \li \b { horizontalOffset: -20 } + \li \b { horizontalOffset: 0 } + \li \b { horizontalOffset: 20 } + \row + \li \l radius: 16 + \li \l radius: 16 + \li \l radius: 16 + \row + \li \l samples: 24 + \li \l samples: 24 + \li \l samples: 24 + \row + \li \l color: #000000 + \li \l color: #000000 + \li \l color: #000000 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \row + \li \l spread: 0 + \li \l spread: 0 + \li \l spread: 0 + \endtable + + */ + property real horizontalOffset: 0 + property real verticalOffset: 0 + + /*! + This property selects the blurring algorithm that is used to produce the + softness for the effect. Setting this to true enables fast algorithm, + setting value to false produces higher quality result. + + By default, the property is set to \c false. + + \table + \header + \li Output examples with different fast values + \li + \li + \row + \li \image InnerShadow_fast1.png + \li \image InnerShadow_fast2.png + \row + \li \b { fast: false } + \li \b { fast: true } + \row + \li \l radius: 16 + \li \l radius: 16 + \row + \li \l samples: 24 + \li \l samples: 24 + \row + \li \l color: #000000 + \li \l color: #000000 + \row + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \row + \li \l spread: 0.2 + \li \l spread: 0.2 + \endtable + */ + property bool fast: false + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. Every time the source or effect + properties are changed, the pixels in the cache must be updated. Memory + consumption is increased, because an extra buffer of memory is required + for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + + */ + property bool cached: false + + Loader { + anchors.fill: parent + sourceComponent: rootItem.fast ? innerShadow : gaussianInnerShadow + } + + Component { + id: gaussianInnerShadow + GaussianInnerShadow { + anchors.fill: parent + source: rootItem.source + radius: rootItem.radius + maximumRadius: rootItem.samples * 0.5 + color: rootItem.color + cached: rootItem.cached + spread: rootItem.spread + horizontalOffset: rootItem.horizontalOffset + verticalOffset: rootItem.verticalOffset + } + } + + Component { + id: innerShadow + FastInnerShadow { + anchors.fill: parent + source: rootItem.source + blur: Math.pow(rootItem.radius / 64.0, 0.4) + color: rootItem.color + cached: rootItem.cached + spread: rootItem.spread + horizontalOffset: rootItem.horizontalOffset + verticalOffset: rootItem.verticalOffset + } + } +} diff --git a/bin/win64/QtGraphicalEffects/LevelAdjust.qml b/bin/win64/QtGraphicalEffects/LevelAdjust.qml new file mode 100644 index 0000000..a209cab --- /dev/null +++ b/bin/win64/QtGraphicalEffects/LevelAdjust.qml @@ -0,0 +1,472 @@ +/***************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Add-On Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +/*! + \qmltype LevelAdjust + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-color + \brief Adjusts color levels in the RGBA color space. + + This effect adjusts the source item colors separately for each color + channel. Source item contrast can be adjusted and color balance altered. + + \table + \header + \li Source + \li Effect applied + \row + \li \image Original_butterfly.png + \li \image LevelAdjust_butterfly.png + \endtable + + \section1 Example + + The following example shows how to apply the effect. + \snippet LevelAdjust-example.qml example + +*/ +Item { + id: rootItem + + /*! + This property defines the source item that provides the source pixels + for the effect. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + This property defines the change factor for how the value of each pixel + color channel is altered according to the equation: + + \code result.rgb = pow(original.rgb, 1.0 / gamma.rgb); \endcode + + Setting the gamma values under QtVector3d(1.0, 1.0, 1.0) makes the image + darker, the values above QtVector3d(1.0, 1.0, 1.0) lighten it. + + The value ranges from QtVector3d(0.0, 0.0, 0.0) (darkest) to inf + (lightest). By default, the property is set to \c QtVector3d(1.0, 1.0, + 1.0) (no change). + + \table + \header + \li Output examples with different gamma values + \li + \li + \row + \li \image LevelAdjust_gamma1.png + \li \image LevelAdjust_gamma2.png + \li \image LevelAdjust_gamma3.png + \row + \li \b { gamma: Qt.vector3d(1.0, 1.0, 1.0) } + \li \b { gamma: Qt.vector3d(1.0, 0.4, 2.0) } + \li \b { gamma: Qt.vector3d(1.0, 0.1, 4.0) } + \row + \li \l minimumInput: #000000 + \li \l minimumInput: #000000 + \li \l minimumInput: #000000 + \row + \li \l maximumInput: #ffffff + \li \l maximumInput: #ffffff + \li \l maximumInput: #ffffff + \row + \li \l minimumOutput: #000000 + \li \l minimumOutput: #000000 + \li \l minimumOutput: #000000 + \row + \li \l maximumOutput: #ffffff + \li \l maximumOutput: #ffffff + \li \l maximumOutput: #ffffff + \endtable + + \table + \header + \li Pixel color channel luminance curves of the above images. + \li + \li + \row + \li \image LevelAdjust_default_curve.png + \li \image LevelAdjust_gamma2_curve.png + \li \image LevelAdjust_gamma3_curve.png + \row + \li X-axis: pixel original luminance + \li + \li + \row + \li Y-axis: color channel luminance with effect applied + \li + \li + \endtable + */ + property variant gamma: Qt.vector3d(1.0, 1.0, 1.0) + + /*! + This property defines the minimum input level for each color channel. It + sets the black-point, all pixels having lower value than this property + are rendered as black (per color channel). Increasing the value darkens + the dark areas. + + The value ranges from "#00000000" to "#ffffffff". By default, the + property is set to \c "#00000000" (no change). + + \table + \header + \li Output examples with different minimumInput values + \li + \li + \row + \li \image LevelAdjust_minimumInput1.png + \li \image LevelAdjust_minimumInput2.png + \li \image LevelAdjust_minimumInput3.png + \row + \li \b { minimumInput: #00000000 } + \li \b { minimumInput: #00000040 } + \li \b { minimumInput: #00000070 } + \row + \li \l maximumInput: #ffffff + \li \l maximumInput: #ffffff + \li \l maximumInput: #ffffff + \row + \li \l minimumOutput: #000000 + \li \l minimumOutput: #000000 + \li \l minimumOutput: #000000 + \row + \li \l maximumOutput: #ffffff + \li \l maximumOutput: #ffffff + \li \l maximumOutput: #ffffff + \row + \li \l gamma: Qt.vector3d(1.0, 1.0, 1.0) + \li \l gamma: Qt.vector3d(1.0, 1.0, 1.0) + \li \l gamma: Qt.vector3d(1.0, 1.0, 1.0) + \endtable + + \table + \header + \li Pixel color channel luminance curves of the above images. + \li + \li + \row + \li \image LevelAdjust_default_curve.png + \li \image LevelAdjust_minimumInput2_curve.png + \li \image LevelAdjust_minimumInput3_curve.png + \row + \li X-axis: pixel original luminance + \li + \li + \row + \li Y-axis: color channel luminance with effect applied + \li + \li + \endtable + + */ + property color minimumInput: Qt.rgba(0.0, 0.0, 0.0, 0.0) + + /*! + This property defines the maximum input level for each color channel. + It sets the white-point, all pixels having higher value than this + property are rendered as white (per color channel). + Decreasing the value lightens the light areas. + + The value ranges from "#ffffffff" to "#00000000". By default, the + property is set to \c "#ffffffff" (no change). + + \table + \header + \li Output examples with different maximumInput values + \li + \li + \row + \li \image LevelAdjust_maximumInput1.png + \li \image LevelAdjust_maximumInput2.png + \li \image LevelAdjust_maximumInput3.png + \row + \li \b { maximumInput: #FFFFFFFF } + \li \b { maximumInput: #FFFFFF80 } + \li \b { maximumInput: #FFFFFF30 } + \row + \li \l minimumInput: #000000 + \li \l minimumInput: #000000 + \li \l minimumInput: #000000 + \row + \li \l minimumOutput: #000000 + \li \l minimumOutput: #000000 + \li \l minimumOutput: #000000 + \row + \li \l maximumOutput: #ffffff + \li \l maximumOutput: #ffffff + \li \l maximumOutput: #ffffff + \row + \li \l gamma: Qt.vector3d(1.0, 1.0, 1.0) + \li \l gamma: Qt.vector3d(1.0, 1.0, 1.0) + \li \l gamma: Qt.vector3d(1.0, 1.0, 1.0) + \endtable + + \table + \header + \li Pixel color channel luminance curves of the above images. + \li + \li + \row + \li \image LevelAdjust_default_curve.png + \li \image LevelAdjust_maximumInput2_curve.png + \li \image LevelAdjust_maximumInput3_curve.png + \row + \li X-axis: pixel original luminance + \li + \li + \row + \li Y-axis: color channel luminance with effect applied + \li + \li + \endtable + + */ + property color maximumInput: Qt.rgba(1.0, 1.0, 1.0, 1.0) + + /*! + This property defines the minimum output level for each color channel. + Increasing the value lightens the dark areas, reducing the contrast. + + The value ranges from "#00000000" to "#ffffffff". By default, the + property is set to \c "#00000000" (no change). + + \table + \header + \li Output examples with different minimumOutput values + \li + \li + \row + \li \image LevelAdjust_minimumOutput1.png + \li \image LevelAdjust_minimumOutput2.png + \li \image LevelAdjust_minimumOutput3.png + \row + \li \b { minimumOutput: #00000000 } + \li \b { minimumOutput: #00000070 } + \li \b { minimumOutput: #000000A0 } + \row + \li \l minimumInput: #000000 + \li \l minimumInput: #000000 + \li \l minimumInput: #000000 + \row + \li \l maximumInput: #ffffff + \li \l maximumInput: #ffffff + \li \l maximumInput: #ffffff + \row + \li \l maximumOutput: #ffffff + \li \l maximumOutput: #ffffff + \li \l maximumOutput: #ffffff + \row + \li \l gamma: Qt.vector3d(1.0, 1.0, 1.0) + \li \l gamma: Qt.vector3d(1.0, 1.0, 1.0) + \li \l gamma: Qt.vector3d(1.0, 1.0, 1.0) + \endtable + + \table + \header + \li Pixel color channel luminance curves of the above images. + \li + \li + \row + \li \image LevelAdjust_default_curve.png + \li \image LevelAdjust_minimumOutput2_curve.png + \li \image LevelAdjust_minimumOutput3_curve.png + \row + \li X-axis: pixel original luminance + \li + \li + \row + \li Y-axis: color channel luminance with effect applied + \li + \li + \endtable + + */ + property color minimumOutput: Qt.rgba(0.0, 0.0, 0.0, 0.0) + + /*! + This property defines the maximum output level for each color channel. + Decreasing the value darkens the light areas, reducing the contrast. + + The value ranges from "#ffffffff" to "#00000000". By default, the + property is set to \c "#ffffffff" (no change). + + \table + \header + \li Output examples with different maximumOutput values + \li + \li + \row + \li \image LevelAdjust_maximumOutput1.png + \li \image LevelAdjust_maximumOutput2.png + \li \image LevelAdjust_maximumOutput3.png + \row + \li \b { maximumOutput: #FFFFFFFF } + \li \b { maximumOutput: #FFFFFF80 } + \li \b { maximumOutput: #FFFFFF30 } + \row + \li \l minimumInput: #000000 + \li \l minimumInput: #000000 + \li \l minimumInput: #000000 + \row + \li \l maximumInput: #ffffff + \li \l maximumInput: #ffffff + \li \l maximumInput: #ffffff + \row + \li \l minimumOutput: #000000 + \li \l minimumOutput: #000000 + \li \l minimumOutput: #000000 + \row + \li \l gamma: Qt.vector3d(1.0, 1.0, 1.0) + \li \l gamma: Qt.vector3d(1.0, 1.0, 1.0) + \li \l gamma: Qt.vector3d(1.0, 1.0, 1.0) + \endtable + + \table + \header + \li Pixel color channel luminance curves of the above images. + \li + \li + \row + \li \image LevelAdjust_default_curve.png + \li \image LevelAdjust_maximumOutput2_curve.png + \li \image LevelAdjust_maximumOutput3_curve.png + \row + \li X-axis: pixel original luminance + \li + \li + \row + \li Y-axis: color channel luminance with effect applied + \li + \li + \endtable + */ + property color maximumOutput: Qt.rgba(1.0, 1.0, 1.0, 1.0) + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + */ + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: parent + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + property variant source: sourceProxy.output + property variant minimumInputRGB: Qt.vector3d(rootItem.minimumInput.r, rootItem.minimumInput.g, rootItem.minimumInput.b) + property variant maximumInputRGB: Qt.vector3d(rootItem.maximumInput.r, rootItem.maximumInput.g, rootItem.maximumInput.b) + property real minimumInputAlpha: rootItem.minimumInput.a + property real maximumInputAlpha: rootItem.maximumInput.a + property variant minimumOutputRGB: Qt.vector3d(rootItem.minimumOutput.r, rootItem.minimumOutput.g, rootItem.minimumOutput.b) + property variant maximumOutputRGB: Qt.vector3d(rootItem.maximumOutput.r, rootItem.maximumOutput.g, rootItem.maximumOutput.b) + property real minimumOutputAlpha: rootItem.minimumOutput.a + property real maximumOutputAlpha: rootItem.maximumOutput.a + property variant gamma: Qt.vector3d(1.0 / Math.max(rootItem.gamma.x, 0.0001), 1.0 / Math.max(rootItem.gamma.y, 0.0001), 1.0 / Math.max(rootItem.gamma.z, 0.0001)) + anchors.fill: parent + + fragmentShader: " + varying highp vec2 qt_TexCoord0; + uniform highp float qt_Opacity; + uniform lowp sampler2D source; + uniform highp vec3 minimumInputRGB; + uniform highp vec3 maximumInputRGB; + uniform highp float minimumInputAlpha; + uniform highp float maximumInputAlpha; + uniform highp vec3 minimumOutputRGB; + uniform highp vec3 maximumOutputRGB; + uniform highp float minimumOutputAlpha; + uniform highp float maximumOutputAlpha; + uniform highp vec3 gamma; + + highp float linearstep(highp float e0, highp float e1, highp float x) { + return clamp((x - e0) / (e1 - e0), 0.0, 1.0); + } + + void main(void) { + highp vec4 textureColor = texture2D(source, qt_TexCoord0.st); + highp vec4 color = vec4(textureColor.rgb / max(1.0/256.0, textureColor.a), textureColor.a); + + color.r = linearstep(minimumInputRGB.r, maximumInputRGB.r, color.r); + color.g = linearstep(minimumInputRGB.g, maximumInputRGB.g, color.g); + color.b = linearstep(minimumInputRGB.b, maximumInputRGB.b, color.b); + color.a = linearstep(minimumInputAlpha, maximumInputAlpha, color.a); + + color.rgb = pow(color.rgb, gamma); + + color.r = minimumOutputRGB.r + color.r * (maximumOutputRGB.r - minimumOutputRGB.r); + color.g = minimumOutputRGB.g + color.g * (maximumOutputRGB.g - minimumOutputRGB.g); + color.b = minimumOutputRGB.b + color.b * (maximumOutputRGB.b - minimumOutputRGB.b); + color.a = minimumOutputAlpha + color.a * (maximumOutputAlpha - minimumOutputAlpha); + + gl_FragColor = vec4(color.rgb * color.a, color.a) * qt_Opacity; + } + " + } +} diff --git a/bin/win64/QtGraphicalEffects/LinearGradient.qml b/bin/win64/QtGraphicalEffects/LinearGradient.qml new file mode 100644 index 0000000..49adab8 --- /dev/null +++ b/bin/win64/QtGraphicalEffects/LinearGradient.qml @@ -0,0 +1,365 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +/*! + \qmltype LinearGradient + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-gradient + \brief Draws a linear gradient. + + A gradient is defined by two or more colors, which are blended seamlessly. + The colors start from the given start point and end to the given end point. + + \table + \header + \li Effect applied + \row + \li \image LinearGradient.png + \endtable + + \section1 Example + + The following example shows how to apply the effect. + \snippet LinearGradient-example.qml example + +*/ +Item { + id: rootItem + + /*! + This property defines the starting point where the color at gradient + position of 0.0 is rendered. Colors at larger position values are + rendered linearly towards the end point. The point is given in pixels + and the default value is Qt.point(0, 0). Setting the default values for + the start and \l{LinearGradient::end}{end} results in a full height + linear gradient on the y-axis. + + \table + \header + \li Output examples with different start values + \li + \li + \row + \li \image LinearGradient_start1.png + \li \image LinearGradient_start2.png + \li \image LinearGradient_start3.png + \row + \li \b { start: QPoint(0, 0) } + \li \b { start: QPoint(150, 150) } + \li \b { start: QPoint(300, 0) } + \row + \li \l end: QPoint(300, 300) + \li \l end: QPoint(300, 300) + \li \l end: QPoint(300, 300) + \endtable + + */ + property variant start: Qt.point(0, 0) + + /*! + This property defines the ending point where the color at gradient + position of 1.0 is rendered. Colors at smaller position values are + rendered linearly towards the start point. The point is given in pixels + and the default value is Qt.point(0, height). Setting the default values + for the \l{LinearGradient::start}{start} and end results in a full + height linear gradient on the y-axis. + + \table + \header + \li Output examples with different end values + \li + \li + \row + \li \image LinearGradient_end1.png + \li \image LinearGradient_end2.png + \li \image LinearGradient_end3.png + \row + \li \b { end: Qt.point(300, 300) } + \li \b { end: Qt.point(150, 150) } + \li \b { end: Qt.point(300, 0) } + \row + \li \l start: Qt.point(0, 0) + \li \l start: Qt.point(0, 0) + \li \l start: Qt.point(0, 0) + \endtable + + */ + property variant end: Qt.point(0, height) + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + */ + property bool cached: false + + /*! + This property defines the item that is going to be filled with gradient. + Source item gets rendered into an intermediate pixel buffer and the + alpha values from the result are used to determine the gradient's pixels + visibility in the display. The default value for source is undefined and + in that case whole effect area is filled with gradient. + + \table + \header + \li Output examples with different source values + \li + \li + \row + \li \image LinearGradient_maskSource1.png + \li \image LinearGradient_maskSource2.png + \row + \li \b { source: undefined } + \li \b { source: Image { source: images/butterfly.png } } + \row + \li \l start: Qt.point(0, 0) + \li \l start: Qt.point(0, 0) + \row + \li \l end: Qt.point(300, 300) + \li \l end: Qt.point(300, 300) + \endtable + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + + /*! + A gradient is defined by two or more colors, which are blended + seamlessly. The colors are specified as a set of GradientStop child + items, each of which defines a position on the gradient from 0.0 to 1.0 + and a color. The position of each GradientStop is defined by the + position property, and the color is definded by the color property. + + \table + \header + \li Output examples with different gradient values + \li + \li + \row + \li \image LinearGradient_gradient1.png + \li \image LinearGradient_gradient2.png + \li \image LinearGradient_gradient3.png + \row + \li \b {gradient:} \code + Gradient { + 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) + } + } + \endcode + \li \b {gradient:} \code + Gradient { + GradientStop { + position: 0.0 + color: "#F0F0F0" + } + GradientStop { + position: 0.5 + color: "#000000" + } + GradientStop { + position: 1.0 + color: "#F0F0F0" + } + } + \endcode + \li \b {gradient:} \code + Gradient { + GradientStop { + position: 0.0 + color: "#00000000" + } + GradientStop { + position: 1.0 + color: "#FF000000" + } + } + \endcode + \row + \li \l start: Qt.point(0, 0) + \li \l start: Qt.point(0, 0) + \li \l start: Qt.point(0, 0) + \row + \li \l end: Qt.point(300, 300) + \li \l end: Qt.point(300, 300) + \li \l end: Qt.point(300, 300) + \endtable + + */ + property Gradient gradient: Gradient { + GradientStop { position: 0.0; color: "white" } + GradientStop { position: 1.0; color: "black" } + } + + SourceProxy { + id: maskSourceProxy + input: rootItem.source + } + + ShaderEffectSource { + id: gradientSource + sourceItem: Rectangle { + width: 16 + height: 256 + gradient: rootItem.gradient + smooth: true + } + smooth: true + hideSource: true + visible: false + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: parent + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + + anchors.fill: parent + + property variant source: gradientSource + property variant maskSource: maskSourceProxy.output + property variant startPoint: Qt.point(start.x / width, start.y / height) + property real dx: end.x - start.x + property real dy: end.y - start.y + property real l: 1.0 / Math.sqrt(Math.pow(dx / width, 2.0) + Math.pow(dy / height, 2.0)) + property real angle: Math.atan2(dx, dy) + property variant matrixData: Qt.point(Math.sin(angle), Math.cos(angle)) + + vertexShader: " + attribute highp vec4 qt_Vertex; + attribute highp vec2 qt_MultiTexCoord0; + uniform highp mat4 qt_Matrix; + varying highp vec2 qt_TexCoord0; + varying highp vec2 qt_TexCoord1; + uniform highp vec2 startPoint; + uniform highp float l; + uniform highp vec2 matrixData; + + void main() { + highp mat2 rot = mat2(matrixData.y, -matrixData.x, + matrixData.x, matrixData.y); + + qt_TexCoord0 = qt_MultiTexCoord0; + + qt_TexCoord1 = qt_MultiTexCoord0 * l; + qt_TexCoord1 -= startPoint * l; + qt_TexCoord1 *= rot; + + gl_Position = qt_Matrix * qt_Vertex; + } + " + + fragmentShader: maskSource == undefined ? noMaskShader : maskShader + + onFragmentShaderChanged: lChanged() + + property string maskShader: " + uniform lowp sampler2D source; + uniform lowp sampler2D maskSource; + uniform lowp float qt_Opacity; + varying highp vec2 qt_TexCoord0; + varying highp vec2 qt_TexCoord1; + + void main() { + lowp vec4 gradientColor = texture2D(source, qt_TexCoord1); + lowp float maskAlpha = texture2D(maskSource, qt_TexCoord0).a; + gl_FragColor = gradientColor * maskAlpha * qt_Opacity; + } + " + + property string noMaskShader: " + uniform lowp sampler2D source; + uniform lowp float qt_Opacity; + varying highp vec2 qt_TexCoord1; + + void main() { + gl_FragColor = texture2D(source, qt_TexCoord1) * qt_Opacity; + } + " + } +} diff --git a/bin/win64/QtGraphicalEffects/MaskedBlur.qml b/bin/win64/QtGraphicalEffects/MaskedBlur.qml new file mode 100644 index 0000000..49d1bbf --- /dev/null +++ b/bin/win64/QtGraphicalEffects/MaskedBlur.qml @@ -0,0 +1,217 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Copyright (C) 2015 Jolla Ltd, author: +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +/*! + \qmltype MaskedBlur + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-blur + \brief Applies a blur effect with a varying intesity. + + MaskedBlur effect softens the image by blurring it. The intensity of the + blur can be controlled for each pixel using maskSource so that some parts of + the source are blurred more than others. + + Performing blur live is a costly operation. Fullscreen gaussian blur + with even a moderate number of samples will only run at 60 fps on highend + graphics hardware. + + \table + \header + \li Source + \li MaskSource + \li Effect applied + \row + \li \image Original_bug.png + \li \image MaskedBlur_mask.png + \li \image MaskedBlur_bug.png + \endtable + + \section1 Example + + The following example shows how to apply the effect. + \snippet MaskedBlur-example.qml example + +*/ +Item { + id: root + + /*! + This property defines the source item that is going to be blurred. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property alias source: blur.source + + /*! + This property defines the item that is controlling the final intensity + of the blur. The pixel alpha channel value from maskSource defines the + actual blur radius that is going to be used for blurring the + corresponding source pixel. + + Opaque maskSource pixels produce blur with specified + \l{MaskedBlur::radius}{radius}, while transparent pixels suppress the + blur completely. Semitransparent maskSource pixels produce blur with a + radius that is interpolated according to the pixel transparency level. + */ + property alias maskSource: maskProxy.input + + /*! + This property defines the distance of the neighboring pixels which + affect the blurring of an individual pixel. A larger radius increases + the blur effect. + + Depending on the radius value, value of the + \l{MaskedBlur::samples}{samples} should be set to sufficiently large to + ensure the visual quality. + + The value ranges from 0.0 (no blur) to inf. By default, the property is + set to \c 0.0 (no blur). + + \table + \header + \li Output examples with different radius values + \li + \li + \row + \li \image MaskedBlur_radius1.png + \li \image MaskedBlur_radius2.png + \li \image MaskedBlur_radius3.png + \row + \li \b { radius: 0 } + \li \b { radius: 8 } + \li \b { radius: 16 } + \row + \li \l samples: 25 + \li \l samples: 25 + \li \l samples: 25 + \endtable + + */ + property alias radius: blur.radius + + /*! + This property defines how many samples are taken per pixel when blur + calculation is done. Larger value produces better quality, but is slower + to render. + + Ideally, this value should be twice as large as the highest required + radius value plus 1, for example, if the radius is animated between 0.0 + and 4.0, samples should be set to 9. + + By default, the property is set to \c 9. + + This property is not intended to be animated. Changing this property may + cause the underlying OpenGL shaders to be recompiled. + */ + property alias samples: blur.samples + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. Every time the source or effect + properties are changed, the pixels in the cache must be updated. Memory + consumption is increased, because an extra buffer of memory is required + for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + + */ + property alias cached: cacheItem.visible + + /*! + \internal + + Kept for source compatibility only. Removed in Qt 5.6 + ### Qt6: remove + */ + property bool fast: false + + /*! + \internal + + Kept for source compatibility only. Removed in Qt 5.6 + + Doing transparent border on a masked source doesn't make any sense + as the padded exterior will have a mask alpha value of 0 which means + no blurring and as the padded exterior of the source is a transparent + pixel, the result is no pixels at all. + + In Qt 5.6 and before, this worked based on that the mask source + was scaled up to fit the padded blur target rect, which would lead + to inconsistent and buggy results. + + ### Qt6: remove + */ + property bool transparentBorder; + + GaussianBlur { + id: blur + + source: root.source; + anchors.fill: parent + _maskSource: maskProxy.output; + + SourceProxy { + id: maskProxy + } + } + + ShaderEffectSource { + id: cacheItem + x: -blur._kernelRadius + y: -blur._kernelRadius + width: blur.width + 2 * blur._kernelRadius + height: blur.height + 2 * blur._kernelRadius + visible: false + smooth: true + sourceRect: Qt.rect(-blur._kernelRadius, -blur._kernelRadius, width, height); + sourceItem: blur + hideSource: visible + } +} diff --git a/bin/win64/QtGraphicalEffects/OpacityMask.qml b/bin/win64/QtGraphicalEffects/OpacityMask.qml new file mode 100644 index 0000000..6653ddf --- /dev/null +++ b/bin/win64/QtGraphicalEffects/OpacityMask.qml @@ -0,0 +1,154 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +/*! + \qmltype OpacityMask + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-mask + \brief Masks the source item with another item. + + \table + \header + \li Source + \li MaskSource + \li Effect applied + \row + \li \image Original_bug.png + \li \image OpacityMask_mask.png + \li \image OpacityMask_bug.png + \endtable + + \section1 Example + + The following example shows how to apply the effect. + \snippet OpacityMask-example.qml example + +*/ +Item { + id: rootItem + + /*! + This property defines the source item that is going to be masked. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + This property defines the item that is going to be used as the mask. The + mask item gets rendered into an intermediate pixel buffer and the alpha + values from the result are used to determine the source item's pixels + visibility in the display. + + \table + \header + \li Original + \li Mask + \li Effect applied + \row + \li \image Original_bug.png + \li \image OpacityMask_mask.png + \li \image OpacityMask_bug.png + \endtable + */ + property variant maskSource + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + + \note It is not supported to let the effect include itself, for + instance by setting maskSource to the effect's parent. + */ + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + } + + SourceProxy { + id: maskSourceProxy + input: rootItem.maskSource + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: parent + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + property variant source: sourceProxy.output + property variant maskSource: maskSourceProxy.output + + anchors.fill: parent + + fragmentShader: " + varying highp vec2 qt_TexCoord0; + uniform highp float qt_Opacity; + uniform lowp sampler2D source; + uniform lowp sampler2D maskSource; + void main(void) { + gl_FragColor = texture2D(source, qt_TexCoord0.st) * (texture2D(maskSource, qt_TexCoord0.st).a) * qt_Opacity; + } + " + } +} diff --git a/bin/win64/QtGraphicalEffects/RadialBlur.qml b/bin/win64/QtGraphicalEffects/RadialBlur.qml new file mode 100644 index 0000000..a2ffd27 --- /dev/null +++ b/bin/win64/QtGraphicalEffects/RadialBlur.qml @@ -0,0 +1,312 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +/*! + \qmltype RadialBlur + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-motion-blur + \brief Applies directional blur in a circular direction around the items + center point. + + Effect creates perceived impression that the source item appears to be + rotating to the direction of the blur. + + Other available motionblur effects are + \l{QtGraphicalEffects::ZoomBlur}{ZoomBlur} and + \l{QtGraphicalEffects::DirectionalBlur}{DirectionalBlur}. + + \table + \header + \li Source + \li Effect applied + \row + \li \image Original_bug.png + \li \image RadialBlur_bug.png + \endtable + + \section1 Example Usage + + The following example shows how to apply the effect. + \snippet RadialBlur-example.qml example +*/ +Item { + id: rootItem + + /*! + This property defines the source item that is going to be blurred. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + This property defines the direction for the blur and at the same time + the level of blurring. The larger the angle, the more the result becomes + blurred. The quality of the blur depends on + \l{RadialBlur::samples}{samples} property. If angle value is large, more + samples are needed to keep the visual quality at high level. + + Allowed values are between 0.0 and 360.0. By default the property is set + to \c 0.0. + + \table + \header + \li Output examples with different angle values + \li + \li + \row + \li \image RadialBlur_angle1.png + \li \image RadialBlur_angle2.png + \li \image RadialBlur_angle3.png + \row + \li \b { angle: 0.0 } + \li \b { angle: 15.0 } + \li \b { angle: 30.0 } + \row + \li \l samples: 24 + \li \l samples: 24 + \li \l samples: 24 + \row + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \endtable + */ + property real angle: 0.0 + + /*! + This property defines how many samples are taken per pixel when blur + calculation is done. Larger value produces better quality, but is slower + to render. + + This property is not intended to be animated. Changing this property may + cause the underlying OpenGL shaders to be recompiled. + + Allowed values are between 0 and inf (practical maximum depends on GPU). + By default the property is set to \c 0 (no samples). + + */ + property int samples: 0 + + /*! + \qmlproperty real QtGraphicalEffects::RadialBlur::horizontalOffset + \qmlproperty real QtGraphicalEffects::RadialBlur::verticalOffset + + These properties define the offset in pixels for the perceived center + point of the rotation. + + Allowed values are between -inf and inf. + By default these properties are set to \c 0. + + \table + \header + \li Output examples with different horizontalOffset values + \li + \li + \row + \li \image RadialBlur_horizontalOffset1.png + \li \image RadialBlur_horizontalOffset2.png + \li \image RadialBlur_horizontalOffset3.png + \row + \li \b { horizontalOffset: 75.0 } + \li \b { horizontalOffset: 0.0 } + \li \b { horizontalOffset: -75.0 } + \row + \li \l samples: 24 + \li \l samples: 24 + \li \l samples: 24 + \row + \li \l angle: 20 + \li \l angle: 20 + \li \l angle: 20 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \endtable + */ + property real horizontalOffset: 0.0 + property real verticalOffset: 0.0 + + /*! + This property defines the blur behavior near the edges of the item, + where the pixel blurring is affected by the pixels outside the source + edges. + + If the property is set to \c true, the pixels outside the source are + interpreted to be transparent, which is similar to OpenGL + clamp-to-border extension. The blur is expanded slightly outside the + effect item area. + + If the property is set to \c false, the pixels outside the source are + interpreted to contain the same color as the pixels at the edge of the + item, which is similar to OpenGL clamp-to-edge behavior. The blur does + not expand outside the effect item area. + + By default, the property is set to \c false. + */ + property bool transparentBorder: false + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + + */ + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + sourceRect: shaderItem.transparentBorder ? Qt.rect(-1, -1, parent.width + 2.0, parent.height + 2.0) : Qt.rect(0, 0, 0, 0) + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: shaderItem + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + property variant source: sourceProxy.output + property variant center: Qt.point(0.5 + rootItem.horizontalOffset / parent.width, 0.5 + rootItem.verticalOffset / parent.height) + property bool transparentBorder: rootItem.transparentBorder && rootItem.samples > 1 + property int samples: rootItem.samples + property real weight: 1.0 / Math.max(1.0, rootItem.samples) + property real angleSin: Math.sin(rootItem.angle/2 * Math.PI/180) + property real angleCos: Math.cos(rootItem.angle/2 * Math.PI/180) + property real angleSinStep: Math.sin(-rootItem.angle * Math.PI/180 / Math.max(1.0, rootItem.samples - 1)) + property real angleCosStep: Math.cos(-rootItem.angle * Math.PI/180 / Math.max(1.0, rootItem.samples - 1)) + property variant expandPixels: transparentBorder ? Qt.size(0.5 * parent.height, 0.5 * parent.width) : Qt.size(0,0) + property variant expand: transparentBorder ? Qt.size(expandPixels.width / width, expandPixels.height / height) : Qt.size(0,0) + property variant delta: Qt.size(1.0 / rootItem.width, 1.0 / rootItem.height) + property real w: parent.width + property real h: parent.height + + x: transparentBorder ? -expandPixels.width - 1 : 0 + y: transparentBorder ? -expandPixels.height - 1 : 0 + width: transparentBorder ? parent.width + expandPixels.width * 2.0 + 2 : parent.width + height: transparentBorder ? parent.height + expandPixels.height * 2.0 + 2 : parent.height + + property string fragmentShaderSkeleton: " + varying highp vec2 qt_TexCoord0; + uniform highp float qt_Opacity; + uniform lowp sampler2D source; + uniform highp float angleSin; + uniform highp float angleCos; + uniform highp float angleSinStep; + uniform highp float angleCosStep; + uniform highp float weight; + uniform highp vec2 expand; + uniform highp vec2 center; + uniform highp vec2 delta; + uniform highp float w; + uniform highp float h; + + void main(void) { + highp mat2 m; + gl_FragColor = vec4(0.0); + mediump vec2 texCoord = qt_TexCoord0; + + PLACEHOLDER_EXPAND_STEPS + + highp vec2 dir = vec2(texCoord.s * w - w * center.x, texCoord.t * h - h * center.y); + m[0] = vec2(angleCos, -angleSin); + m[1] = vec2(angleSin, angleCos); + dir *= m; + + m[0] = vec2(angleCosStep, -angleSinStep); + m[1] = vec2(angleSinStep, angleCosStep); + + PLACEHOLDER_UNROLLED_LOOP + + gl_FragColor *= weight * qt_Opacity; + } + " + + function buildFragmentShader() { + var shader = fragmentShaderSkeleton + var expandSteps = "" + + if (transparentBorder) { + expandSteps += "texCoord = (texCoord - expand) / (1.0 - 2.0 * expand);" + } + + var unrolledLoop = "gl_FragColor += texture2D(source, texCoord);\n" + + if (rootItem.samples > 1) { + unrolledLoop = "" + for (var i = 0; i < rootItem.samples; i++) + unrolledLoop += "gl_FragColor += texture2D(source, center + dir * delta); dir *= m;\n" + } + + shader = shader.replace("PLACEHOLDER_EXPAND_STEPS", expandSteps) + fragmentShader = shader.replace("PLACEHOLDER_UNROLLED_LOOP", unrolledLoop) + } + + onFragmentShaderChanged: sourceChanged() + onSamplesChanged: buildFragmentShader() + onTransparentBorderChanged: buildFragmentShader() + Component.onCompleted: buildFragmentShader() + } +} diff --git a/bin/win64/QtGraphicalEffects/RadialGradient.qml b/bin/win64/QtGraphicalEffects/RadialGradient.qml new file mode 100644 index 0000000..06318ab --- /dev/null +++ b/bin/win64/QtGraphicalEffects/RadialGradient.qml @@ -0,0 +1,458 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +/*! + \qmltype RadialGradient + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-gradient + \brief Draws a radial gradient. + + A gradient is defined by two or more colors, which are blended seamlessly. + The colors start from the middle of the item and end at the borders. + + \table + \header + \li Effect applied + \row + \li \image RadialGradient.png + \endtable + + \section1 Example + + The following example shows how to apply the effect. + \snippet RadialGradient-example.qml example + +*/ +Item { + id: rootItem + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + */ + property bool cached: false + + /*! + The HorizontalOffset and verticalOffset properties define the offset in + pixels for the center point of the gradient compared to the item center. + + The values range from -inf to inf. By default, these properties are set + to \c 0. + + \table + \header + \li Output examples with different horizontalOffset values + \li + \li + \row + \li \image RadialGradient_horizontalOffset1.png + \li \image RadialGradient_horizontalOffset2.png + \li \image RadialGradient_horizontalOffset3.png + \row + \li \b { horizontalOffset: -150 } + \li \b { horizontalOffset: 0 } + \li \b { horizontalOffset: 150 } + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \row + \li \l horizontalRadius: 300 + \li \l horizontalRadius: 300 + \li \l horizontalRadius: 300 + \row + \li \l verticalRadius: 300 + \li \l verticalRadius: 300 + \li \l verticalRadius: 300 + \row + \li \l angle: 0 + \li \l angle: 0 + \li \l angle: 0 + \endtable + + */ + property real horizontalOffset: 0.0 + property real verticalOffset: 0.0 + + /*! + The HorizontalRadius and verticalRadius properties define the shape and + size of the radial gradient. If the radiuses are equal, the shape of the + gradient is a circle. If the horizontal and vertical radiuses differ, + the shape is elliptical. The radiuses are given in pixels. + + The value ranges from -inf to inf. By default, horizontalRadius is bound + to width and verticalRadius is bound to height. + + \table + \header + \li Output examples with different horizontalRadius values + \li + \li + \row + \li \image RadialGradient_horizontalRadius1.png + \li \image RadialGradient_horizontalRadius2.png + \row + \li \b { horizontalRadius: 300 } + \li \b { horizontalRadius: 100 } + \row + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \row + \li \l verticalRadius: 300 + \li \l verticalRadius: 300 + \row + \li \l angle: 0 + \li \l angle: 0 + \row + \li \l gradient: QQuickGradient(0xa05fb10) + \li \l gradient: QQuickGradient(0xa05fb10) + \endtable + + */ + property real horizontalRadius: width + property real verticalRadius: height + + /*! + This property defines the rotation of the gradient around its center + point. The rotation is only visible when the + \l{RadialGradient::horizontalRadius}{horizontalRadius} and + \l{RadialGradient::verticalRadius}{verticalRadius} properties are not + equal. The angle is given in degrees and the default value is \c 0. + + \table + \header + \li Output examples with different angle values + \li + \li + \row + \li \image RadialGradient_angle1.png + \li \image RadialGradient_angle2.png + \li \image RadialGradient_angle3.png + \row + \li \b { angle: 0 } + \li \b { angle: 45 } + \li \b { angle: 90 } + \row + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \row + \li \l horizontalRadius: 100 + \li \l horizontalRadius: 100 + \li \l horizontalRadius: 100 + \row + \li \l verticalRadius: 300 + \li \l verticalRadius: 300 + \li \l verticalRadius: 300 + \endtable + */ + property real angle: 0.0 + + /*! + This property defines the item that is going to be filled with gradient. + Source item gets rendered into an intermediate pixel buffer and the + alpha values from the result are used to determine the gradient's pixels + visibility in the display. The default value for source is undefined and + in that case whole effect area is filled with gradient. + + \table + \header + \li Output examples with different source values + \li + \li + \row + \li \image RadialGradient_maskSource1.png + \li \image RadialGradient_maskSource2.png + \row + \li \b { source: undefined } + \li \b { source: Image { source: images/butterfly.png } } + \row + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \row + \li \l horizontalRadius: 300 + \li \l horizontalRadius: 300 + \row + \li \l verticalRadius: 300 + \li \l verticalRadius: 300 + \row + \li \l angle: 0 + \li \l angle: 0 + \endtable + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + A gradient is defined by two or more colors, which are blended + seamlessly. The colors are specified as a set of GradientStop child + items, each of which defines a position on the gradient from 0.0 to 1.0 + and a color. The position of each GradientStop is defined by setting the + position property. The color is defined by setting the color property. + + \table + \header + \li Output examples with different gradient values + \li + \li + \row + \li \image RadialGradient_gradient1.png + \li \image RadialGradient_gradient2.png + \li \image RadialGradient_gradient3.png + \row + \li \b {gradient:} \code + Gradient { + 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) + } + } + \endcode + \li \b {gradient:} \code + Gradient { + GradientStop { + position: 0.0 + color: "#F0F0F0" + } + GradientStop { + position: 0.5 + color: "#000000" + } + GradientStop { + position: 1.0 + color: "#F0F0F0" + } + } + \endcode + \li \b {gradient:} + \code + Gradient { + GradientStop { + position: 0.0 + color: "#00000000" + } + GradientStop { + position: 1.0 + color: "#FF000000" + } + } + \endcode + \row + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \row + \li \l horizontalRadius: 300 + \li \l horizontalRadius: 300 + \li \l horizontalRadius: 300 + \row + \li \l verticalRadius: 300 + \li \l verticalRadius: 300 + \li \l verticalRadius: 300 + \row + \li \l angle: 0 + \li \l angle: 0 + \li \l angle: 0 + \endtable + */ + property Gradient gradient: Gradient { + GradientStop { position: 0.0; color: "white" } + GradientStop { position: 1.0; color: "black" } + } + + SourceProxy { + id: maskSourceProxy + input: rootItem.source + } + + ShaderEffectSource { + id: gradientSource + sourceItem: Rectangle { + width: 16 + height: 256 + gradient: rootItem.gradient + smooth: true + } + smooth: true + hideSource: true + visible: false + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: parent + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + property variant gradientImage: gradientSource + property variant maskSource: maskSourceProxy.output + property variant center: Qt.point(0.5 + rootItem.horizontalOffset / width, 0.5 + rootItem.verticalOffset / height) + property real horizontalRatio: rootItem.horizontalRadius > 0 ? width / (2 * rootItem.horizontalRadius) : width * 16384 + property real verticalRatio: rootItem.verticalRadius > 0 ? height / (2 * rootItem.verticalRadius) : height * 16384 + property real angle: -rootItem.angle / 360 * 2 * Math.PI + property variant matrixData: Qt.point(Math.sin(angle), Math.cos(angle)) + + anchors.fill: parent + + vertexShader: " + attribute highp vec4 qt_Vertex; + attribute highp vec2 qt_MultiTexCoord0; + uniform highp mat4 qt_Matrix; + uniform highp vec2 matrixData; + uniform highp float horizontalRatio; + uniform highp float verticalRatio; + uniform highp vec2 center; + varying highp vec2 qt_TexCoord0; + varying highp vec2 qt_TexCoord1; + varying highp vec2 centerPoint; + + void main() { + highp vec2 ratio = vec2(horizontalRatio, verticalRatio); + + // Rotation matrix + highp mat2 rot = mat2(matrixData.y, -matrixData.x, + matrixData.x, matrixData.y); + + qt_TexCoord0 = qt_MultiTexCoord0; + + qt_TexCoord1 = qt_MultiTexCoord0; + qt_TexCoord1 -= center; + qt_TexCoord1 *= rot; + qt_TexCoord1 += center; + qt_TexCoord1 *= ratio; + + centerPoint = center * ratio; + + gl_Position = qt_Matrix * qt_Vertex; + } + " + + fragmentShader: maskSource == undefined ? noMaskShader : maskShader + + onFragmentShaderChanged: horizontalRatioChanged() + + property string maskShader: " + uniform lowp sampler2D gradientImage; + uniform lowp sampler2D maskSource; + uniform lowp float qt_Opacity; + varying highp vec2 qt_TexCoord0; + varying highp vec2 qt_TexCoord1; + varying highp vec2 centerPoint; + + void main() { + lowp vec4 gradientColor = texture2D(gradientImage, vec2(0.0, 2.0 * distance(qt_TexCoord1, centerPoint))); + lowp float maskAlpha = texture2D(maskSource, qt_TexCoord0).a; + gl_FragColor = gradientColor * maskAlpha * qt_Opacity; + } + " + + property string noMaskShader: " + uniform lowp sampler2D gradientImage; + uniform lowp float qt_Opacity; + varying highp vec2 qt_TexCoord1; + varying highp vec2 centerPoint; + + void main() { + lowp vec4 gradientColor = texture2D(gradientImage, vec2(0.0, 2.0 * distance(qt_TexCoord1, centerPoint))); + gl_FragColor = gradientColor * qt_Opacity; + } + " + } +} diff --git a/bin/win64/QtGraphicalEffects/RectangularGlow.qml b/bin/win64/QtGraphicalEffects/RectangularGlow.qml new file mode 100644 index 0000000..740aff4 --- /dev/null +++ b/bin/win64/QtGraphicalEffects/RectangularGlow.qml @@ -0,0 +1,288 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +/*! + \qmltype RectangularGlow + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-glow + \brief Generates a blurred and colorized rectangle, which gives + the impression that the source is glowing. + + This effect is intended to have good performance. The shape of the glow is + limited to a rectangle with a custom corner radius. For situations where + custom shapes are required, consider \l {QtGraphicalEffects::Glow} {Glow} + effect. + + \table + \header + \li Effect applied + \row + \li \image RectangularGlow_applied.png + \endtable + + \section1 Example + + The following example shows how to apply the effect. + \snippet RectangularGlow-example.qml example +*/ +Item { + id: rootItem + + /*! + This property defines how many pixels outside the item area are reached + by the glow. + + The value ranges from 0.0 (no glow) to inf (infinite glow). By default, + the property is set to \c 0.0. + + \table + \header + \li Output examples with different glowRadius values + \li + \li + \row + \li \image RectangularGlow_glowRadius1.png + \li \image RectangularGlow_glowRadius2.png + \li \image RectangularGlow_glowRadius3.png + \row + \li \b { glowRadius: 10 } + \li \b { glowRadius: 20 } + \li \b { glowRadius: 40 } + \row + \li \l spread: 0 + \li \l spread: 0 + \li \l spread: 0 + \row + \li \l color: #ffffff + \li \l color: #ffffff + \li \l color: #ffffff + \row + \li \l cornerRadius: 25 + \li \l cornerRadius: 25 + \li \l cornerRadius: 25 + \endtable + + */ + property real glowRadius: 0.0 + + /*! + This property defines how large part of the glow color is strenghtened + near the source edges. + + The value ranges from 0.0 (no strenght increase) to 1.0 (maximum + strenght increase). By default, the property is set to \c 0.0. + + \table + \header + \li Output examples with different spread values + \li + \li + \row + \li \image RectangularGlow_spread1.png + \li \image RectangularGlow_spread2.png + \li \image RectangularGlow_spread3.png + \row + \li \b { spread: 0.0 } + \li \b { spread: 0.5 } + \li \b { spread: 1.0 } + \row + \li \l glowRadius: 20 + \li \l glowRadius: 20 + \li \l glowRadius: 20 + \row + \li \l color: #ffffff + \li \l color: #ffffff + \li \l color: #ffffff + \row + \li \l cornerRadius: 25 + \li \l cornerRadius: 25 + \li \l cornerRadius: 25 + \endtable + */ + property real spread: 0.0 + + /*! + This property defines the RGBA color value which is used for the glow. + + By default, the property is set to \c "white". + + \table + \header + \li Output examples with different color values + \li + \li + \row + \li \image RectangularGlow_color1.png + \li \image RectangularGlow_color2.png + \li \image RectangularGlow_color3.png + \row + \li \b { color: #ffffff } + \li \b { color: #55ff55 } + \li \b { color: #5555ff } + \row + \li \l glowRadius: 20 + \li \l glowRadius: 20 + \li \l glowRadius: 20 + \row + \li \l spread: 0 + \li \l spread: 0 + \li \l spread: 0 + \row + \li \l cornerRadius: 25 + \li \l cornerRadius: 25 + \li \l cornerRadius: 25 + \endtable + */ + property color color: "white" + + /*! + This property defines the corner radius that is used to draw a glow with + rounded corners. + + The value ranges from 0.0 to half of the effective width or height of + the glow, whichever is smaller. This can be calculated with: \c{ + min(width, height) / 2.0 + glowRadius} + + By default, the property is bound to glowRadius property. The glow + behaves as if the rectangle was blurred when adjusting the glowRadius + property. + + \table + \header + \li Output examples with different cornerRadius values + \li + \li + \row + \li \image RectangularGlow_cornerRadius1.png + \li \image RectangularGlow_cornerRadius2.png + \li \image RectangularGlow_cornerRadius3.png + \row + \li \b { cornerRadius: 0 } + \li \b { cornerRadius: 25 } + \li \b { cornerRadius: 50 } + \row + \li \l glowRadius: 20 + \li \l glowRadius: 20 + \li \l glowRadius: 20 + \row + \li \l spread: 0 + \li \l spread: 0 + \li \l spread: 0 + \row + \li \l color: #ffffff + \li \l color: #ffffff + \li \l color: #ffffff + \endtable + */ + property real cornerRadius: glowRadius + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + */ + property bool cached: false + + ShaderEffectSource { + id: cacheItem + anchors.fill: shaderItem + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + + x: (parent.width - width) / 2.0 + y: (parent.height - height) / 2.0 + width: parent.width + rootItem.glowRadius * 2 + cornerRadius * 2 + height: parent.height + rootItem.glowRadius * 2 + cornerRadius * 2 + + function clampedCornerRadius() { + var maxCornerRadius = Math.min(rootItem.width, rootItem.height) / 2 + glowRadius; + return Math.max(0, Math.min(rootItem.cornerRadius, maxCornerRadius)) + } + + property color color: rootItem.color + property real inverseSpread: 1.0 - rootItem.spread + property real relativeSizeX: ((inverseSpread * inverseSpread) * rootItem.glowRadius + cornerRadius * 2.0) / width + property real relativeSizeY: relativeSizeX * (width / height) + property real spread: rootItem.spread / 2.0 + property real cornerRadius: clampedCornerRadius() + + fragmentShader: " + uniform highp float qt_Opacity; + uniform mediump float relativeSizeX; + uniform mediump float relativeSizeY; + uniform mediump float spread; + uniform lowp vec4 color; + varying highp vec2 qt_TexCoord0; + + highp float linearstep(highp float e0, highp float e1, highp float x) { + return clamp((x - e0) / (e1 - e0), 0.0, 1.0); + } + + void main() { + lowp float alpha = + smoothstep(0.0, relativeSizeX, 0.5 - abs(0.5 - qt_TexCoord0.x)) * + smoothstep(0.0, relativeSizeY, 0.5 - abs(0.5 - qt_TexCoord0.y)); + + highp float spreadMultiplier = linearstep(spread, 1.0 - spread, alpha); + gl_FragColor = color * qt_Opacity * spreadMultiplier * spreadMultiplier; + } + " + } +} diff --git a/bin/win64/QtGraphicalEffects/RecursiveBlur.qml b/bin/win64/QtGraphicalEffects/RecursiveBlur.qml new file mode 100644 index 0000000..5e537b5 --- /dev/null +++ b/bin/win64/QtGraphicalEffects/RecursiveBlur.qml @@ -0,0 +1,350 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +/*! + \qmltype RecursiveBlur + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-blur + \brief Blurs repeatedly, providing a strong blur effect. + + The RecursiveBlur effect softens the image by blurring it with an algorithm + that uses a recursive feedback loop to blur the source multiple times. The + effect may give more blurry results than + \l{QtGraphicalEffects::GaussianBlur}{GaussianBlur} or + \l{QtGraphicalEffects::FastBlur}{FastBlur}, but the result is produced + asynchronously and takes more time. + + \table + \header + \li Source + \li Effect applied + \row + \li \image Original_bug.png + \li \image RecursiveBlur_bug.png + \endtable + + \section1 Example + + The following example shows how to apply the effect. + \snippet RecursiveBlur-example.qml example + +*/ +Item { + id: rootItem + + /*! + This property defines the source item that is going to be blurred. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + This property defines the distance of neighboring pixels which influence + the blurring of individual pixels. A larger radius provides better + quality, but is slower to render. + + \b Note: The radius value in this effect is not intended to be changed + or animated frequently. The correct way to use it is to set the correct + value and keep it unchanged for the whole duration of the iterative blur + sequence. + + The value ranges from (no blur) to 16.0 (maximum blur step). By default, + the property is set to \c 0.0 (no blur). + + \table + \header + \li Output examples with different radius values + \li + \li + \row + \li \image RecursiveBlur_radius1.png + \li \image RecursiveBlur_radius2.png + \li \image RecursiveBlur_radius3.png + \row + \li \b { radius: 2.5 } + \li \b { radius: 4.5 } + \li \b { radius: 7.5 } + \row + \li \l loops: 20 + \li \l loops: 20 + \li \l loops: 20 + \endtable + + */ + property real radius: 0.0 + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + + */ + property bool cached: false + + /*! + This property defines the blur behavior near the edges of the item, + where the pixel blurring is affected by the pixels outside the source + edges. + + If the property is set to \c true, the pixels outside the source are + interpreted to be transparent, which is similar to OpenGL + clamp-to-border extension. The blur is expanded slightly outside the + effect item area. + + If the property is set to \c false, the pixels outside the source are + interpreted to contain the same color as the pixels at the edge of the + item, which is similar to OpenGL clamp-to-edge behavior. The blur does + not expand outside the effect item area. + + By default, the property is set to \c false. + + \table + \header + \li Output examples with different transparentBorder values + \li + \li + \row + \li \image RecursiveBlur_transparentBorder1.png + \li \image RecursiveBlur_transparentBorder2.png + \row + \li \b { transparentBorder: false } + \li \b { transparentBorder: true } + \row + \li \l loops: 20 + \li \l loops: 20 + \row + \li \l radius: 7.5 + \li \l radius: 7.5 + \endtable + */ + property bool transparentBorder: false + + /*! + This property defines the amount of blur iterations that are going to be + performed for the source. When the property changes, the iterative + blurring process starts. If the value is decreased or if the value + changes from zero to non-zero, a snapshot is taken from the source. The + snapshot is used as a starting point for the process. + + The iteration loop tries to run as fast as possible. The speed might be + limited by the VSYNC or the time needed for one blur step, or both. + Sometimes it may be desirable to perform the blurring with a slower + pace. In that case, it may be convenient to control the property with + Animation which increases the value. + + The value ranges from 0 to inf. By default, the property is set to \c 0. + + \table + \header + \li Output examples with different loops values + \li + \li + \row + \li \image RecursiveBlur_loops1.png + \li \image RecursiveBlur_loops2.png + \li \image RecursiveBlur_loops3.png + \row + \li \b { loops: 4 } + \li \b { loops: 20 } + \li \b { loops: 70 } + \row + \li \l radius: 7.5 + \li \l radius: 7.5 + \li \l radius: 7.5 + \endtable + + */ + property int loops: 0 + + /*! + This property holds the progress of asynchronous source blurring + process, from 0.0 (nothing blurred) to 1.0 (finished). + */ + property real progress: loops > 0.0 ? Math.min(1.0, recursionTimer.counter / loops) : 0.0 + + onLoopsChanged: recursiveSource.scheduleUpdate() + onSourceChanged: recursionTimer.reset() + onRadiusChanged: recursionTimer.reset() + onTransparentBorderChanged: recursionTimer.reset() + + SourceProxy { + id: sourceProxy + input: rootItem.source + sourceRect: rootItem.transparentBorder ? Qt.rect(-1, -1, parent.width + 2, parent.height + 2) : Qt.rect(0, 0, 0, 0) + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: verticalBlur + smooth: true + visible: rootItem.cached + hideSource: visible + live: true + sourceItem: inputItem.visible ? inputItem : verticalBlur + } + + Item { + id: recursionTimer + property int counter: 0 + + function reset() { + counter = 0 + recursiveSource.scheduleUpdate() + } + + function nextFrame() { + if (loops < counter) + recursionTimer.counter = 0 + + if (counter > 0) + recursiveSource.sourceItem = verticalBlur + else + recursiveSource.sourceItem = inputItem + + if (counter < loops) { + recursiveSource.scheduleUpdate() + counter++ + } + } + } + + ShaderEffect { + id: inputItem + property variant source: sourceProxy.output + property real expandX: rootItem.transparentBorder ? (horizontalBlur.maximumRadius) / horizontalBlur.width : 0.0 + property real expandY: rootItem.transparentBorder ? (horizontalBlur.maximumRadius) / horizontalBlur.height : 0.0 + + anchors.fill: verticalBlur + visible: !verticalBlur.visible + + vertexShader: " + attribute highp vec4 qt_Vertex; + attribute highp vec2 qt_MultiTexCoord0; + uniform highp mat4 qt_Matrix; + uniform highp float expandX; + uniform highp float expandY; + varying highp vec2 qt_TexCoord0; + + void main() { + mediump vec2 texCoord = qt_MultiTexCoord0; + texCoord.s = (texCoord.s - expandX) / (1.0 - 2.0 * expandX); + texCoord.t = (texCoord.t - expandY) / (1.0 - 2.0 * expandY); + qt_TexCoord0 = texCoord; + gl_Position = qt_Matrix * qt_Vertex; + } + " + + fragmentShader: " + varying mediump vec2 qt_TexCoord0; + uniform highp float qt_Opacity; + uniform lowp sampler2D source; + void main() { + gl_FragColor = texture2D(source, qt_TexCoord0) * qt_Opacity; + } + " + } + + ShaderEffectSource { + id: recursiveSource + visible: false + smooth: true + hideSource: false + live: false + sourceItem: inputItem + recursive: true + onSourceItemChanged: scheduleUpdate() + onScheduledUpdateCompleted: recursionTimer.nextFrame() + } + + GaussianDirectionalBlur { + id: verticalBlur + x: rootItem.transparentBorder ? -horizontalBlur.maximumRadius - 1 : 0 + y: rootItem.transparentBorder ? -horizontalBlur.maximumRadius - 1 : 0 + width: horizontalBlur.width + 2 + height: horizontalBlur.height + 2 + + horizontalStep: 0.0 + verticalStep: 1.0 / parent.height + + source: ShaderEffectSource { + sourceItem: horizontalBlur + hideSource: true + visible: false + smooth: true + } + + deviation: (radius + 1) / 2.3333 + radius: rootItem.radius + maximumRadius: Math.ceil(rootItem.radius) + transparentBorder: false + visible: loops > 0 + } + + GaussianDirectionalBlur { + id: horizontalBlur + width: rootItem.transparentBorder ? parent.width + 2 * maximumRadius + 2 : parent.width + height: rootItem.transparentBorder ? parent.height + 2 * maximumRadius + 2 : parent.height + + horizontalStep: 1.0 / parent.width + verticalStep: 0.0 + + source: recursiveSource + deviation: (radius + 1) / 2.3333 + radius: rootItem.radius + maximumRadius: Math.ceil(rootItem.radius) + transparentBorder: false + visible: false + } +} diff --git a/bin/win64/QtGraphicalEffects/ThresholdMask.qml b/bin/win64/QtGraphicalEffects/ThresholdMask.qml new file mode 100644 index 0000000..399e47c --- /dev/null +++ b/bin/win64/QtGraphicalEffects/ThresholdMask.qml @@ -0,0 +1,226 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +/*! + \qmltype ThresholdMask + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-mask + \brief Masks the source item with another item and applies a threshold + value. + + The masking behavior can be controlled with the \l threshold value for the + mask pixels. + + \table + \header + \li Source + \li MaskSource + \li Effect applied + \row + \li \image Original_bug.png + \li \image ThresholdMask_mask.png + \li \image ThresholdMask_bug.png + \endtable + + \section1 Example + + The following example shows how to apply the effect. + \snippet ThresholdMask-example.qml example +*/ +Item { + id: rootItem + + /*! + This property defines the source item that is going to be masked. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + This property defines the item that is going to be used as the mask. + Mask item gets rendered into an intermediate pixel buffer and the alpha + values from the result are used to determine the source item's pixels + visibility in the display. + + \table + \header + \li Original + \li Mask + \li Effect applied + \row + \li \image Original_bug.png + \li \image ThresholdMask_mask.png + \li \image ThresholdMask_bug.png + \endtable + + \note It is not supported to let the effect include itself, for + instance by setting maskSource to the effect's parent. + */ + property variant maskSource + + /*! + This property defines a threshold value for the mask pixels. The mask + pixels that have an alpha value below this property are used to + completely mask away the corresponding pixels from the source item. The + mask pixels that have a higher alpha value are used to alphablend the + source item to the display. + + The value ranges from 0.0 (alpha value 0) to 1.0 (alpha value 255). By + default, the property is set to \c 0.0. + + \table + \header + \li Output examples with different threshold values + \li + \li + \row + \li \image ThresholdMask_threshold1.png + \li \image ThresholdMask_threshold2.png + \li \image ThresholdMask_threshold3.png + \row + \li \b { threshold: 0.0 } + \li \b { threshold: 0.5 } + \li \b { threshold: 0.7 } + \row + \li \l spread: 0.2 + \li \l spread: 0.2 + \li \l spread: 0.2 + \endtable + */ + property real threshold: 0.0 + + /*! + This property defines the smoothness of the mask edges near the + \l{ThresholdMask::threshold}{threshold} alpha value. Setting spread to + 0.0 uses mask normally with the specified threshold. Setting higher + spread values softens the transition from the transparent mask pixels + towards opaque mask pixels by adding interpolated values between them. + + The value ranges from 0.0 (sharp mask edge) to 1.0 (smooth mask edge). + By default, the property is set to \c 0.0. + + \table + \header + \li Output examples with different spread values + \li + \li + \row + \li \image ThresholdMask_spread1.png + \li \image ThresholdMask_spread2.png + \li \image ThresholdMask_spread3.png + \row + \li \b { spread: 0.0 } + \li \b { spread: 0.2 } + \li \b { spread: 0.8 } + \row + \li \l threshold: 0.4 + \li \l threshold: 0.4 + \li \l threshold: 0.4 + \endtable + + */ + property real spread: 0.0 + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + */ + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + } + + SourceProxy { + id: maskSourceProxy + input: rootItem.maskSource + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: parent + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + property variant source: sourceProxy.output + property variant maskSource: maskSourceProxy.output + property real threshold: rootItem.threshold + property real spread: rootItem.spread + + anchors.fill: parent + + fragmentShader: " + varying highp vec2 qt_TexCoord0; + uniform highp float qt_Opacity; + uniform lowp sampler2D source; + uniform lowp sampler2D maskSource; + uniform highp float threshold; + uniform highp float spread; + void main(void) { + lowp vec4 colorFragment = texture2D(source, qt_TexCoord0.st); + lowp vec4 maskFragment = texture2D(maskSource, qt_TexCoord0.st); + gl_FragColor = colorFragment * smoothstep(threshold * (1.0 + spread) - spread, threshold * (1.0 + spread), maskFragment.a) * qt_Opacity; + } + " + } +} diff --git a/bin/win64/QtGraphicalEffects/ZoomBlur.qml b/bin/win64/QtGraphicalEffects/ZoomBlur.qml new file mode 100644 index 0000000..2d08208 --- /dev/null +++ b/bin/win64/QtGraphicalEffects/ZoomBlur.qml @@ -0,0 +1,302 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +/*! + \qmltype ZoomBlur + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-motion-blur + \brief Applies directional blur effect towards source items center point. + + Effect creates perceived impression that the source item appears to be + moving towards the center point in Z-direction or that the camera appears + to be zooming rapidly. Other available motion blur effects are + \l{QtGraphicalEffects::DirectionalBlur}{DirectionalBlur} + and \l{QtGraphicalEffects::RadialBlur}{RadialBlur}. + + \table + \header + \li Source + \li Effect applied + \row + \li \image Original_bug.png + \li \image ZoomBlur_bug.png + \endtable + + \section1 Example + + The following example shows how to apply the effect. + \snippet ZoomBlur-example.qml example + +*/ +Item { + id: rootItem + + /*! + This property defines the source item that is going to be blurred. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + This property defines the maximum perceived amount of movement for each + pixel. The amount is smaller near the center and reaches the specified + value at the edges. + + The quality of the blur depends on \l{ZoomBlur::samples}{samples} + property. If length value is large, more samples are needed to keep the + visual quality at high level. + + The value ranges from 0.0 to inf. By default the property is set to \c + 0.0 (no blur). + + \table + \header + \li Output examples with different length values + \li + \li + \row + \li \image ZoomBlur_length1.png + \li \image ZoomBlur_length2.png + \li \image ZoomBlur_length3.png + \row + \li \b { length: 0.0 } + \li \b { length: 32.0 } + \li \b { length: 48.0 } + \row + \li \l samples: 24 + \li \l samples: 24 + \li \l samples: 24 + \row + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \endtable + + */ + property real length: 0.0 + + /*! + This property defines how many samples are taken per pixel when blur + calculation is done. Larger value produces better quality, but is slower + to render. + + This property is not intended to be animated. Changing this property may + cause the underlying OpenGL shaders to be recompiled. + + Allowed values are between 0 and inf (practical maximum depends on GPU). + By default the property is set to \c 0 (no samples). + + */ + property int samples: 0 + + /*! + \qmlproperty real QtGraphicalEffects::ZoomBlur::horizontalOffset + \qmlproperty real QtGraphicalEffects::ZoomBlur::verticalOffset + + These properties define an offset in pixels for the blur direction + center point. + + The values range from -inf to inf. By default these properties are set + to \c 0. + + \table + \header + \li Output examples with different horizontalOffset values + \li + \li + \row + \li \image ZoomBlur_horizontalOffset1.png + \li \image ZoomBlur_horizontalOffset2.png + \li \image ZoomBlur_horizontalOffset3.png + \row + \li \b { horizontalOffset: 100.0 } + \li \b { horizontalOffset: 0.0 } + \li \b { horizontalOffset: -100.0 } + \row + \li \l samples: 24 + \li \l samples: 24 + \li \l samples: 24 + \row + \li \l length: 32 + \li \l length: 32 + \li \l length: 32 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \endtable + */ + property real horizontalOffset: 0.0 + property real verticalOffset: 0.0 + + /*! + This property defines the blur behavior near the edges of the item, + where the pixel blurring is affected by the pixels outside the source + edges. + + If the property is set to \c true, the pixels outside the source are + interpreted to be transparent, which is similar to OpenGL + clamp-to-border extension. The blur is expanded slightly outside the + effect item area. + + If the property is set to \c false, the pixels outside the source are + interpreted to contain the same color as the pixels at the edge of the + item, which is similar to OpenGL clamp-to-edge behavior. The blur does + not expand outside the effect item area. + + By default, the property is set to \c false. + + */ + property bool transparentBorder: false + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + */ + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + sourceRect: rootItem.transparentBorder ? Qt.rect(-1, -1, parent.width + 2.0, parent.height + 2.0) : Qt.rect(0, 0, 0, 0) + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: shaderItem + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + property variant source: sourceProxy.output + property variant center: Qt.point(0.5 + rootItem.horizontalOffset / width, 0.5 + rootItem.verticalOffset / height) + property real len: rootItem.length + property bool transparentBorder: rootItem.transparentBorder + property real samples: rootItem.samples + property real weight: 1.0 / Math.max(1.0, rootItem.samples) + property variant expandPixels: transparentBorder ? Qt.size(rootItem.samples, rootItem.samples) : Qt.size(0,0) + property variant expand: transparentBorder ? Qt.size(expandPixels.width / width, expandPixels.height / height) : Qt.size(0,0) + property variant delta: Qt.size(1.0 / rootItem.width, 1.0 / rootItem.height) + + x: transparentBorder ? -expandPixels.width - 1 : 0 + y: transparentBorder ? -expandPixels.height - 1 : 0 + width: transparentBorder ? parent.width + 2.0 * expandPixels.width + 2 : parent.width + height: transparentBorder ? parent.height + 2.0 * expandPixels.height + 2 : parent.height + + property string fragmentShaderSkeleton: " + varying highp vec2 qt_TexCoord0; + uniform highp float qt_Opacity; + uniform lowp sampler2D source; + uniform highp float len; + uniform highp float weight; + uniform highp float samples; + uniform highp vec2 center; + uniform highp vec2 expand; + uniform highp vec2 delta; + + void main(void) { + mediump vec2 texCoord = qt_TexCoord0; + mediump vec2 centerCoord = center; + + PLACEHOLDER_EXPAND_STEPS + + highp vec2 dir = vec2(centerCoord.x - texCoord.s, centerCoord.y - texCoord.t); + dir /= max(1.0, length(dir) * 2.0); + highp vec2 shift = delta * len * dir * 2.0 / max(1.0, samples - 1.0); + gl_FragColor = vec4(0.0); + + PLACEHOLDER_UNROLLED_LOOP + + gl_FragColor *= weight * qt_Opacity; + } + " + + function buildFragmentShader() { + var shader = fragmentShaderSkeleton + var expandSteps = "" + + if (transparentBorder) { + expandSteps += "centerCoord = (centerCoord - expand) / (1.0 - 2.0 * expand);" + expandSteps += "texCoord = (texCoord - expand) / (1.0 - 2.0 * expand);" + } + + var unrolledLoop = "gl_FragColor += texture2D(source, texCoord);\n" + + if (rootItem.samples > 1) { + unrolledLoop = "" + for (var i = 0; i < rootItem.samples; i++) + unrolledLoop += "gl_FragColor += texture2D(source, texCoord); texCoord += shift;\n" + } + + shader = shader.replace("PLACEHOLDER_EXPAND_STEPS", expandSteps) + fragmentShader = shader.replace("PLACEHOLDER_UNROLLED_LOOP", unrolledLoop) + } + + onFragmentShaderChanged: sourceChanged() + onSamplesChanged: buildFragmentShader() + onTransparentBorderChanged: buildFragmentShader() + Component.onCompleted: buildFragmentShader() + } +} diff --git a/bin/win64/QtGraphicalEffects/private/DropShadowBase.qml b/bin/win64/QtGraphicalEffects/private/DropShadowBase.qml new file mode 100644 index 0000000..3660619 --- /dev/null +++ b/bin/win64/QtGraphicalEffects/private/DropShadowBase.qml @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Copyright (C) 2015 Jolla Ltd, author: +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 +import QtGraphicalEffects 1.0 + +Item { + id: root + + property variant source + property real radius: Math.floor(samples / 2) + property int samples: 9 + property color color: "black" + property real horizontalOffset: 0 + property real verticalOffset: 0 + property real spread: 0.0 + property bool cached: false + property bool transparentBorder: true + + GaussianBlur { + id: blur + width: parent.width + height: parent.height + x: Math.round(horizontalOffset) + y: Math.round(verticalOffset) + source: root.source + radius: root.radius + samples: root.samples + _thickness: root.spread + transparentBorder: root.transparentBorder + + + _color: root.color; + _alphaOnly: true + // ignoreDevicePixelRatio: root.ignoreDevicePixelRatio + + ShaderEffect { + x: blur._outputRect.x - parent.x + y: blur._outputRect.y - parent.y + width: transparentBorder ? blur._outputRect.width : blur.width + height: transparentBorder ? blur._outputRect.height : blur.height + property variant source: blur._output; + } + + } + + ShaderEffectSource { + id: cacheItem + x: -blur._kernelRadius + horizontalOffset + y: -blur._kernelRadius + verticalOffset + width: blur.width + 2 * blur._kernelRadius + height: blur.height + 2 * blur._kernelRadius + visible: root.cached + smooth: true + sourceRect: Qt.rect(-blur._kernelRadius, -blur._kernelRadius, width, height); + sourceItem: blur + hideSource: visible + } + + +} diff --git a/bin/win64/QtGraphicalEffects/private/FastGlow.qml b/bin/win64/QtGraphicalEffects/private/FastGlow.qml new file mode 100644 index 0000000..c723619 --- /dev/null +++ b/bin/win64/QtGraphicalEffects/private/FastGlow.qml @@ -0,0 +1,394 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +Item { + id: rootItem + property variant source + property real spread: 0.0 + property real blur: 0.0 + property color color: "white" + property bool transparentBorder: false + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: shaderItem + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + property string __internalBlurVertexShader: " + attribute highp vec4 qt_Vertex; + attribute highp vec2 qt_MultiTexCoord0; + uniform highp mat4 qt_Matrix; + uniform highp float yStep; + uniform highp float xStep; + varying highp vec2 qt_TexCoord0; + varying highp vec2 qt_TexCoord1; + varying highp vec2 qt_TexCoord2; + varying highp vec2 qt_TexCoord3; + + void main() { + qt_TexCoord0 = vec2(qt_MultiTexCoord0.x + xStep, qt_MultiTexCoord0.y + yStep * 0.36); + qt_TexCoord1 = vec2(qt_MultiTexCoord0.x + xStep * 0.36, qt_MultiTexCoord0.y - yStep); + qt_TexCoord2 = vec2(qt_MultiTexCoord0.x - xStep * 0.36, qt_MultiTexCoord0.y + yStep); + qt_TexCoord3 = vec2(qt_MultiTexCoord0.x - xStep, qt_MultiTexCoord0.y - yStep * 0.36); + gl_Position = qt_Matrix * qt_Vertex; + } + " + + property string __internalBlurFragmentShader: " + uniform lowp sampler2D source; + uniform lowp float qt_Opacity; + varying highp vec2 qt_TexCoord0; + varying highp vec2 qt_TexCoord1; + varying highp vec2 qt_TexCoord2; + varying highp vec2 qt_TexCoord3; + + void main() { + highp vec4 sourceColor = (texture2D(source, qt_TexCoord0) + + texture2D(source, qt_TexCoord1) + + texture2D(source, qt_TexCoord2) + + texture2D(source, qt_TexCoord3)) * 0.25; + gl_FragColor = sourceColor * qt_Opacity; + } + " + + ShaderEffect { + id: level0 + property variant source: sourceProxy.output + anchors.fill: parent + visible: false + smooth: true + } + + ShaderEffectSource { + id: level1 + width: Math.ceil(shaderItem.width / 32) * 32 + height: Math.ceil(shaderItem.height / 32) * 32 + sourceItem: level0 + hideSource: rootItem.visible + sourceRect: transparentBorder ? Qt.rect(-64, -64, shaderItem.width, shaderItem.height) : Qt.rect(0,0,0,0) + smooth: true + visible: false + } + + ShaderEffect { + id: effect1 + property variant source: level1 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level2 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level2 + width: level1.width / 2 + height: level1.height / 2 + sourceItem: effect1 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect2 + property variant source: level2 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level3 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level3 + width: level2.width / 2 + height: level2.height / 2 + sourceItem: effect2 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect3 + property variant source: level3 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level4 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level4 + width: level3.width / 2 + height: level3.height / 2 + sourceItem: effect3 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect4 + property variant source: level4 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level5 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level5 + width: level4.width / 2 + height: level4.height / 2 + sourceItem: effect4 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect5 + property variant source: level5 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level6 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level6 + width: level5.width / 2 + height: level5.height / 2 + sourceItem: effect5 + hideSource: rootItem.visible + visible: false + smooth: true + } + + Item { + id: dummysource + width: 1 + height: 1 + visible: false + } + + ShaderEffectSource { + id: dummy + width: 1 + height: 1 + sourceItem: dummysource + visible: false + smooth: false + live: false + } + + ShaderEffect { + id: shaderItem + x: transparentBorder ? -64 : 0 + y: transparentBorder ? -64 : 0 + width: transparentBorder ? parent.width + 128 : parent.width + height: transparentBorder ? parent.height + 128 : parent.height + + property variant source1: level1 + property variant source2: level2 + property variant source3: level3 + property variant source4: level4 + property variant source5: level5 + property variant source6: level6 + property real lod: rootItem.blur + + property real weight1; + property real weight2; + property real weight3; + property real weight4; + property real weight5; + property real weight6; + + property real spread: 1.0 - (rootItem.spread * 0.98) + property alias color: rootItem.color + + function weight(v) { + if (v <= 0.0) + return 1 + if (v >= 0.5) + return 0 + + return 1.0 - v / 0.5 + } + + function calculateWeights() { + + var w1 = weight(Math.abs(lod - 0.100)) + var w2 = weight(Math.abs(lod - 0.300)) + var w3 = weight(Math.abs(lod - 0.500)) + var w4 = weight(Math.abs(lod - 0.700)) + var w5 = weight(Math.abs(lod - 0.900)) + var w6 = weight(Math.abs(lod - 1.100)) + + var sum = w1 + w2 + w3 + w4 + w5 + w6; + weight1 = w1 / sum; + weight2 = w2 / sum; + weight3 = w3 / sum; + weight4 = w4 / sum; + weight5 = w5 / sum; + weight6 = w6 / sum; + + upateSources() + } + + function upateSources() { + var sources = new Array(); + var weights = new Array(); + + if (weight1 > 0) { + sources.push(level1) + weights.push(weight1) + } + + if (weight2 > 0) { + sources.push(level2) + weights.push(weight2) + } + + if (weight3 > 0) { + sources.push(level3) + weights.push(weight3) + } + + if (weight4 > 0) { + sources.push(level4) + weights.push(weight4) + } + + if (weight5 > 0) { + sources.push(level5) + weights.push(weight5) + } + + if (weight6 > 0) { + sources.push(level6) + weights.push(weight6) + } + + for (var j = sources.length; j < 6; j++) { + sources.push(dummy) + weights.push(0.0) + } + + source1 = sources[0] + source2 = sources[1] + source3 = sources[2] + source4 = sources[3] + source5 = sources[4] + source6 = sources[5] + + weight1 = weights[0] + weight2 = weights[1] + weight3 = weights[2] + weight4 = weights[3] + weight5 = weights[4] + weight6 = weights[5] + } + + Component.onCompleted: calculateWeights() + + onLodChanged: calculateWeights() + + fragmentShader: " + uniform lowp sampler2D source1; + uniform lowp sampler2D source2; + uniform lowp sampler2D source3; + uniform lowp sampler2D source4; + uniform lowp sampler2D source5; + uniform mediump float weight1; + uniform mediump float weight2; + uniform mediump float weight3; + uniform mediump float weight4; + uniform mediump float weight5; + uniform highp vec4 color; + uniform highp float spread; + uniform lowp float qt_Opacity; + varying mediump vec2 qt_TexCoord0; + + highp float linearstep(highp float e0, highp float e1, highp float x) { + return clamp((x - e0) / (e1 - e0), 0.0, 1.0); + } + + void main() { + lowp vec4 sourceColor = texture2D(source1, qt_TexCoord0) * weight1; + sourceColor += texture2D(source2, qt_TexCoord0) * weight2; + sourceColor += texture2D(source3, qt_TexCoord0) * weight3; + sourceColor += texture2D(source4, qt_TexCoord0) * weight4; + sourceColor += texture2D(source5, qt_TexCoord0) * weight5; + sourceColor = mix(vec4(0), color, linearstep(0.0, spread, sourceColor.a)); + gl_FragColor = sourceColor * qt_Opacity; + } + " + } +} diff --git a/bin/win64/QtGraphicalEffects/private/FastInnerShadow.qml b/bin/win64/QtGraphicalEffects/private/FastInnerShadow.qml new file mode 100644 index 0000000..ca25053 --- /dev/null +++ b/bin/win64/QtGraphicalEffects/private/FastInnerShadow.qml @@ -0,0 +1,414 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +Item { + id: rootItem + property variant source + property real blur: 0.0 + property real horizontalOffset: 0 + property real verticalOffset: 0 + property real spread: 0.0 + property color color: "black" + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: shaderItem + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + property string __internalBlurVertexShader: " + attribute highp vec4 qt_Vertex; + attribute highp vec2 qt_MultiTexCoord0; + uniform highp mat4 qt_Matrix; + uniform highp float yStep; + uniform highp float xStep; + varying highp vec2 qt_TexCoord0; + varying highp vec2 qt_TexCoord1; + varying highp vec2 qt_TexCoord2; + varying highp vec2 qt_TexCoord3; + + void main() { + qt_TexCoord0 = vec2(qt_MultiTexCoord0.x + xStep, qt_MultiTexCoord0.y + yStep * 0.36); + qt_TexCoord1 = vec2(qt_MultiTexCoord0.x + xStep * 0.36, qt_MultiTexCoord0.y - yStep); + qt_TexCoord2 = vec2(qt_MultiTexCoord0.x - xStep * 0.36, qt_MultiTexCoord0.y + yStep); + qt_TexCoord3 = vec2(qt_MultiTexCoord0.x - xStep, qt_MultiTexCoord0.y - yStep * 0.36); + gl_Position = qt_Matrix * qt_Vertex; + } + " + + property string __internalBlurFragmentShader: " + uniform lowp sampler2D source; + uniform lowp float qt_Opacity; + varying highp vec2 qt_TexCoord0; + varying highp vec2 qt_TexCoord1; + varying highp vec2 qt_TexCoord2; + varying highp vec2 qt_TexCoord3; + + void main() { + highp vec4 sourceColor = (texture2D(source, qt_TexCoord0) + + texture2D(source, qt_TexCoord1) + + texture2D(source, qt_TexCoord2) + + texture2D(source, qt_TexCoord3)) * 0.25; + gl_FragColor = sourceColor * qt_Opacity; + } + " + + ShaderEffect { + id: level0 + property variant source: sourceProxy.output + property real horizontalOffset: rootItem.horizontalOffset / rootItem.width + property real verticalOffset: rootItem.verticalOffset / rootItem.width + property color color: rootItem.color + + anchors.fill: parent + visible: false + smooth: true + fragmentShader: " + varying highp vec2 qt_TexCoord0; + uniform lowp float qt_Opacity; + uniform highp sampler2D source; + uniform lowp vec4 color; + uniform highp float horizontalOffset; + uniform highp float verticalOffset; + + void main(void) { + highp vec2 pos = qt_TexCoord0 - vec2(horizontalOffset, verticalOffset); + lowp float ea = step(0.0, pos.x) * step(0.0, pos.y) * step(pos.x, 1.0) * step(pos.y, 1.0); + lowp float eb = 1.0 - ea; + gl_FragColor = (eb * color + ea * color * (1.0 - texture2D(source, pos).a)) * qt_Opacity; + } + " + } + + ShaderEffectSource { + id: level1 + width: Math.ceil(shaderItem.width / 32) * 32 + height: Math.ceil(shaderItem.height / 32) * 32 + sourceItem: level0 + hideSource: rootItem.visible + smooth: true + visible: false + } + + ShaderEffect { + id: effect1 + property variant source: level1 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level2 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level2 + width: level1.width / 2 + height: level1.height / 2 + sourceItem: effect1 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect2 + property variant source: level2 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level3 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level3 + width: level2.width / 2 + height: level2.height / 2 + sourceItem: effect2 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect3 + property variant source: level3 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level4 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level4 + width: level3.width / 2 + height: level3.height / 2 + sourceItem: effect3 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect4 + property variant source: level4 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level5 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level5 + width: level4.width / 2 + height: level4.height / 2 + sourceItem: effect4 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect5 + property variant source: level5 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level6 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level6 + width: level5.width / 2 + height: level5.height / 2 + sourceItem: effect5 + hideSource: rootItem.visible + visible: false + smooth: true + } + + Item { + id: dummysource + width: 1 + height: 1 + visible: false + } + + ShaderEffectSource { + id: dummy + width: 1 + height: 1 + sourceItem: dummysource + visible: false + smooth: false + live: false + } + + ShaderEffect { + id: shaderItem + width: parent.width + height: parent.height + + property variant original: sourceProxy.output + property variant source1: level1 + property variant source2: level2 + property variant source3: level3 + property variant source4: level4 + property variant source5: level5 + property variant source6: level6 + property real lod: rootItem.blur + + property real weight1; + property real weight2; + property real weight3; + property real weight4; + property real weight5; + property real weight6; + + property real spread: 1.0 - (rootItem.spread * 0.98) + property color color: rootItem.color + + function weight(v) { + if (v <= 0.0) + return 1 + if (v >= 0.5) + return 0 + + return 1.0 - v / 0.5 + } + + function calculateWeights() { + + var w1 = weight(Math.abs(lod - 0.100)) + var w2 = weight(Math.abs(lod - 0.300)) + var w3 = weight(Math.abs(lod - 0.500)) + var w4 = weight(Math.abs(lod - 0.700)) + var w5 = weight(Math.abs(lod - 0.900)) + var w6 = weight(Math.abs(lod - 1.100)) + + var sum = w1 + w2 + w3 + w4 + w5 + w6; + weight1 = w1 / sum; + weight2 = w2 / sum; + weight3 = w3 / sum; + weight4 = w4 / sum; + weight5 = w5 / sum; + weight6 = w6 / sum; + + upateSources() + } + + function upateSources() { + var sources = new Array(); + var weights = new Array(); + + if (weight1 > 0) { + sources.push(level1) + weights.push(weight1) + } + + if (weight2 > 0) { + sources.push(level2) + weights.push(weight2) + } + + if (weight3 > 0) { + sources.push(level3) + weights.push(weight3) + } + + if (weight4 > 0) { + sources.push(level4) + weights.push(weight4) + } + + if (weight5 > 0) { + sources.push(level5) + weights.push(weight5) + } + + if (weight6 > 0) { + sources.push(level6) + weights.push(weight6) + } + + for (var j = sources.length; j < 6; j++) { + sources.push(dummy) + weights.push(0.0) + } + + source1 = sources[0] + source2 = sources[1] + source3 = sources[2] + source4 = sources[3] + source5 = sources[4] + source6 = sources[5] + + weight1 = weights[0] + weight2 = weights[1] + weight3 = weights[2] + weight4 = weights[3] + weight5 = weights[4] + weight6 = weights[5] + } + + Component.onCompleted: calculateWeights() + + onLodChanged: calculateWeights() + + fragmentShader: " + uniform lowp sampler2D original; + uniform lowp sampler2D source1; + uniform lowp sampler2D source2; + uniform lowp sampler2D source3; + uniform lowp sampler2D source4; + uniform lowp sampler2D source5; + uniform mediump float weight1; + uniform mediump float weight2; + uniform mediump float weight3; + uniform mediump float weight4; + uniform mediump float weight5; + uniform highp vec4 color; + uniform highp float spread; + uniform lowp float qt_Opacity; + varying mediump vec2 qt_TexCoord0; + + highp float linearstep(highp float e0, highp float e1, highp float x) { + return clamp((x - e0) / (e1 - e0), 0.0, 1.0); + } + + void main() { + lowp vec4 shadowColor = texture2D(source1, qt_TexCoord0) * weight1; + shadowColor += texture2D(source2, qt_TexCoord0) * weight2; + shadowColor += texture2D(source3, qt_TexCoord0) * weight3; + shadowColor += texture2D(source4, qt_TexCoord0) * weight4; + shadowColor += texture2D(source5, qt_TexCoord0) * weight5; + lowp vec4 originalColor = texture2D(original, qt_TexCoord0); + shadowColor.rgb = mix(originalColor.rgb, color.rgb * originalColor.a, linearstep(0.0, spread, shadowColor.a)); + gl_FragColor = vec4(shadowColor.rgb, originalColor.a) * originalColor.a * qt_Opacity; + } + " + } +} diff --git a/bin/win64/QtGraphicalEffects/private/FastMaskedBlur.qml b/bin/win64/QtGraphicalEffects/private/FastMaskedBlur.qml new file mode 100644 index 0000000..e44ee4b --- /dev/null +++ b/bin/win64/QtGraphicalEffects/private/FastMaskedBlur.qml @@ -0,0 +1,333 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +Item { + id: rootItem + property variant source + property variant maskSource + property real blur: 0.0 + property bool transparentBorder: false + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + } + + SourceProxy { + id: maskSourceProxy + input: rootItem.maskSource + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: shaderItem + visible: rootItem.cached + sourceItem: shaderItem + live: true + hideSource: visible + smooth: rootItem.blur > 0 + } + + property string __internalBlurVertexShader: " + attribute highp vec4 qt_Vertex; + attribute highp vec2 qt_MultiTexCoord0; + uniform highp mat4 qt_Matrix; + uniform highp float yStep; + uniform highp float xStep; + varying highp vec2 qt_TexCoord0; + varying highp vec2 qt_TexCoord1; + varying highp vec2 qt_TexCoord2; + varying highp vec2 qt_TexCoord3; + + void main() { + qt_TexCoord0 = vec2(qt_MultiTexCoord0.x + xStep, qt_MultiTexCoord0.y + yStep * 0.36); + qt_TexCoord1 = vec2(qt_MultiTexCoord0.x + xStep * 0.36, qt_MultiTexCoord0.y - yStep); + qt_TexCoord2 = vec2(qt_MultiTexCoord0.x - xStep * 0.36, qt_MultiTexCoord0.y + yStep); + qt_TexCoord3 = vec2(qt_MultiTexCoord0.x - xStep, qt_MultiTexCoord0.y - yStep * 0.36); + gl_Position = qt_Matrix * qt_Vertex; + } + " + + property string __internalBlurFragmentShader: " + uniform lowp sampler2D source; + uniform lowp float qt_Opacity; + varying highp vec2 qt_TexCoord0; + varying highp vec2 qt_TexCoord1; + varying highp vec2 qt_TexCoord2; + varying highp vec2 qt_TexCoord3; + + void main() { + highp vec4 sourceColor = (texture2D(source, qt_TexCoord0) + + texture2D(source, qt_TexCoord1) + + texture2D(source, qt_TexCoord2) + + texture2D(source, qt_TexCoord3)) * 0.25; + gl_FragColor = sourceColor * qt_Opacity; + } + " + + ShaderEffect { + id: mask0 + property variant source: maskSourceProxy.output + anchors.fill: parent + visible: false + smooth: true + } + + ShaderEffectSource { + id: masklevel1 + width: Math.ceil(shaderItem.width / 32) * 32 + height: Math.ceil(shaderItem.height / 32) * 32 + sourceItem: mask0 + hideSource: rootItem.visible + sourceRect: transparentBorder ? Qt.rect(-64, -64, shaderItem.width, shaderItem.height) : Qt.rect(0, 0, 0, 0) + visible: false + smooth: rootItem.blur > 0 + } + + ShaderEffect { + id: level0 + property variant source: sourceProxy.output + anchors.fill: parent + visible: false + smooth: true + } + + ShaderEffectSource { + id: level1 + width: Math.ceil(shaderItem.width / 32) * 32 + height: Math.ceil(shaderItem.height / 32) * 32 + sourceItem: level0 + hideSource: rootItem.visible + sourceRect: transparentBorder ? Qt.rect(-64, -64, shaderItem.width, shaderItem.height) : Qt.rect(0, 0, 0, 0) + visible: false + smooth: rootItem.blur > 0 + } + + ShaderEffect { + id: effect1 + property variant source: level1 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level2 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level2 + width: level1.width / 2 + height: level1.height / 2 + sourceItem: effect1 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect2 + property variant source: level2 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level3 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level3 + width: level2.width / 2 + height: level2.height / 2 + sourceItem: effect2 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect3 + property variant source: level3 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level4 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level4 + width: level3.width / 2 + height: level3.height / 2 + sourceItem: effect3 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect4 + property variant source: level4 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level5 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level5 + width: level4.width / 2 + height: level4.height / 2 + sourceItem: effect4 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect5 + property variant source: level5 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level6 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level6 + width: level5.width / 2 + height: level5.height / 2 + sourceItem: effect5 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: shaderItem + property variant mask: masklevel1 + property variant source1: level1 + property variant source2: level2 + property variant source3: level3 + property variant source4: level4 + property variant source5: level5 + property variant source6: level6 + property real lod: Math.sqrt(rootItem.blur) * 1.2 - 0.2 + property real weight1 + property real weight2 + property real weight3 + property real weight4 + property real weight5 + property real weight6 + + x: transparentBorder ? -64 : 0 + y: transparentBorder ? -64 : 0 + width: transparentBorder ? parent.width + 128 : parent.width + height: transparentBorder ? parent.height + 128 : parent.height + + fragmentShader: " + uniform lowp sampler2D mask; + uniform lowp sampler2D source1; + uniform lowp sampler2D source2; + uniform lowp sampler2D source3; + uniform lowp sampler2D source4; + uniform lowp sampler2D source5; + uniform lowp sampler2D source6; + uniform lowp float lod; + uniform lowp float qt_Opacity; + varying mediump vec2 qt_TexCoord0; + + mediump float weight(mediump float v) { + if (v <= 0.0) + return 1.0; + + if (v >= 0.5) + return 0.0; + + return 1.0 - v * 2.0; + } + + void main() { + + lowp vec4 maskColor = texture2D(mask, qt_TexCoord0); + mediump float l = lod * maskColor.a; + + mediump float w1 = weight(abs(l - 0.100)); + mediump float w2 = weight(abs(l - 0.300)); + mediump float w3 = weight(abs(l - 0.500)); + mediump float w4 = weight(abs(l - 0.700)); + mediump float w5 = weight(abs(l - 0.900)); + mediump float w6 = weight(abs(l - 1.100)); + + mediump float sum = w1 + w2 + w3 + w4 + w5 + w6; + mediump float weight1 = w1 / sum; + mediump float weight2 = w2 / sum; + mediump float weight3 = w3 / sum; + mediump float weight4 = w4 / sum; + mediump float weight5 = w5 / sum; + mediump float weight6 = w6 / sum; + + lowp vec4 sourceColor = texture2D(source1, qt_TexCoord0) * weight1; + sourceColor += texture2D(source2, qt_TexCoord0) * weight2; + sourceColor += texture2D(source3, qt_TexCoord0) * weight3; + sourceColor += texture2D(source4, qt_TexCoord0) * weight4; + sourceColor += texture2D(source5, qt_TexCoord0) * weight5; + sourceColor += texture2D(source6, qt_TexCoord0) * weight6; + + gl_FragColor = sourceColor * qt_Opacity; + + } + " + } +} diff --git a/bin/win64/QtGraphicalEffects/private/GaussianDirectionalBlur.qml b/bin/win64/QtGraphicalEffects/private/GaussianDirectionalBlur.qml new file mode 100644 index 0000000..28dc52c --- /dev/null +++ b/bin/win64/QtGraphicalEffects/private/GaussianDirectionalBlur.qml @@ -0,0 +1,287 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +Item { + id: rootItem + property variant source + property real deviation: (radius + 1) / 3.3333 + property real radius: 0.0 + property int maximumRadius: 0 + property real horizontalStep: 0.0 + property real verticalStep: 0.0 + property bool transparentBorder: false + property bool cached: false + + property bool enableColor: false + property color color: "white" + property real spread: 0.0 + + property bool enableMask: false + property variant maskSource + + SourceProxy { + id: sourceProxy + input: rootItem.source + } + + SourceProxy { + id: maskSourceProxy + input: rootItem.maskSource + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: rootItem + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + property variant source: sourceProxy.output + property real deviation: Math.max(0.1, rootItem.deviation) + property real radius: rootItem.radius + property int maxRadius: rootItem.maximumRadius + property bool transparentBorder: rootItem.transparentBorder + property real gaussianSum: 0.0 + property real startIndex: 0.0 + property real deltaFactor: (2 * radius - 1) / (maxRadius * 2 - 1) + property real expandX: transparentBorder && rootItem.horizontalStep > 0 ? maxRadius / width : 0.0 + property real expandY: transparentBorder && rootItem.verticalStep > 0 ? maxRadius / height : 0.0 + property variant gwts: [] + property variant delta: Qt.vector3d(rootItem.horizontalStep * deltaFactor, rootItem.verticalStep * deltaFactor, startIndex); + property variant factor_0_2: Qt.vector3d(gwts[0], gwts[1], gwts[2]); + property variant factor_3_5: Qt.vector3d(gwts[3], gwts[4], gwts[5]); + property variant factor_6_8: Qt.vector3d(gwts[6], gwts[7], gwts[8]); + property variant factor_9_11: Qt.vector3d(gwts[9], gwts[10], gwts[11]); + property variant factor_12_14: Qt.vector3d(gwts[12], gwts[13], gwts[14]); + property variant factor_15_17: Qt.vector3d(gwts[15], gwts[16], gwts[17]); + property variant factor_18_20: Qt.vector3d(gwts[18], gwts[19], gwts[20]); + property variant factor_21_23: Qt.vector3d(gwts[21], gwts[22], gwts[23]); + property variant factor_24_26: Qt.vector3d(gwts[24], gwts[25], gwts[26]); + property variant factor_27_29: Qt.vector3d(gwts[27], gwts[28], gwts[29]); + property variant factor_30_31: Qt.point(gwts[30], gwts[31]); + + property color color: rootItem.color + property real spread: 1.0 - (rootItem.spread * 0.98) + property variant maskSource: maskSourceProxy.output + + anchors.fill: rootItem + + function gausFunc(x){ + //Gaussian function = h(x):=(1/sqrt(2*3.14159*(D^2))) * %e^(-(x^2)/(2*(D^2))); + return (1.0 / Math.sqrt(2 * Math.PI * (Math.pow(shaderItem.deviation, 2)))) * Math.pow(Math.E, -((Math.pow(x, 2)) / (2 * (Math.pow(shaderItem.deviation, 2))))); + } + + function updateGaussianWeights() { + gaussianSum = 0.0; + startIndex = -maxRadius + 0.5 + + var n = new Array(32); + for (var j = 0; j < 32; j++) + n[j] = 0; + + var max = maxRadius * 2 + var delta = (2 * radius - 1) / (max - 1); + for (var i = 0; i < max; i++) { + n[i] = gausFunc(-radius + 0.5 + i * delta); + gaussianSum += n[i]; + } + + gwts = n; + } + + function buildFragmentShader() { + + var shaderSteps = [ + "gl_FragColor += texture2D(source, texCoord) * factor_0_2.x; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_0_2.y; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_0_2.z; texCoord += shift;", + + "gl_FragColor += texture2D(source, texCoord) * factor_3_5.x; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_3_5.y; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_3_5.z; texCoord += shift;", + + "gl_FragColor += texture2D(source, texCoord) * factor_6_8.x; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_6_8.y; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_6_8.z; texCoord += shift;", + + "gl_FragColor += texture2D(source, texCoord) * factor_9_11.x; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_9_11.y; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_9_11.z; texCoord += shift;", + + "gl_FragColor += texture2D(source, texCoord) * factor_12_14.x; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_12_14.y; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_12_14.z; texCoord += shift;", + + "gl_FragColor += texture2D(source, texCoord) * factor_15_17.x; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_15_17.y; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_15_17.z; texCoord += shift;", + + "gl_FragColor += texture2D(source, texCoord) * factor_18_20.x; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_18_20.y; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_18_20.z; texCoord += shift;", + + "gl_FragColor += texture2D(source, texCoord) * factor_21_23.x; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_21_23.y; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_21_23.z; texCoord += shift;", + + "gl_FragColor += texture2D(source, texCoord) * factor_24_26.x; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_24_26.y; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_24_26.z; texCoord += shift;", + + "gl_FragColor += texture2D(source, texCoord) * factor_27_29.x; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_27_29.y; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_27_29.z; texCoord += shift;", + + "gl_FragColor += texture2D(source, texCoord) * factor_30_31.x; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_30_31.y; texCoord += shift;" + ] + + var shader = fragmentShaderBegin + var samples = maxRadius * 2 + if (samples > 32) { + console.log("DirectionalGaussianBlur.qml WARNING: Maximum of blur radius (16) exceeded!") + samples = 32 + } + + for (var i = 0; i < samples; i++) { + shader += shaderSteps[i] + } + + shader += fragmentShaderEnd + + var colorizeSteps = "" + var colorizeUniforms = "" + + var maskSteps = "" + var maskUniforms = "" + + if (enableColor) { + colorizeSteps += "gl_FragColor = mix(vec4(0), color, clamp((gl_FragColor.a - 0.0) / (spread - 0.0), 0.0, 1.0));\n" + colorizeUniforms += "uniform highp vec4 color;\n" + colorizeUniforms += "uniform highp float spread;\n" + } + + if (enableMask) { + maskSteps += "shift *= texture2D(maskSource, qt_TexCoord0).a;\n" + maskUniforms += "uniform sampler2D maskSource;\n" + } + + shader = shader.replace("PLACEHOLDER_COLORIZE_STEPS", colorizeSteps) + shader = shader.replace("PLACEHOLDER_COLORIZE_UNIFORMS", colorizeUniforms) + shader = shader.replace("PLACEHOLDER_MASK_STEPS", maskSteps) + shader = shader.replace("PLACEHOLDER_MASK_UNIFORMS", maskUniforms) + + fragmentShader = shader + } + + onDeviationChanged: updateGaussianWeights() + + onRadiusChanged: updateGaussianWeights() + + onTransparentBorderChanged: { + buildFragmentShader() + updateGaussianWeights() + } + + onMaxRadiusChanged: { + buildFragmentShader() + updateGaussianWeights() + } + + Component.onCompleted: { + buildFragmentShader() + updateGaussianWeights() + } + + property string fragmentShaderBegin: " + varying mediump vec2 qt_TexCoord0; + uniform highp float qt_Opacity; + uniform lowp sampler2D source; + uniform highp vec3 delta; + uniform highp vec3 factor_0_2; + uniform highp vec3 factor_3_5; + uniform highp vec3 factor_6_8; + uniform highp vec3 factor_9_11; + uniform highp vec3 factor_12_14; + uniform highp vec3 factor_15_17; + uniform highp vec3 factor_18_20; + uniform highp vec3 factor_21_23; + uniform highp vec3 factor_24_26; + uniform highp vec3 factor_27_29; + uniform highp vec3 factor_30_31; + uniform highp float gaussianSum; + uniform highp float expandX; + uniform highp float expandY; + PLACEHOLDER_MASK_UNIFORMS + PLACEHOLDER_COLORIZE_UNIFORMS + + void main() { + highp vec2 shift = vec2(delta.x, delta.y); + + PLACEHOLDER_MASK_STEPS + + highp float index = delta.z; + mediump vec2 texCoord = qt_TexCoord0; + texCoord.s = (texCoord.s - expandX) / (1.0 - 2.0 * expandX); + texCoord.t = (texCoord.t - expandY) / (1.0 - 2.0 * expandY); + texCoord += (shift * index); + + gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); + " + + property string fragmentShaderEnd: " + + gl_FragColor /= gaussianSum; + + PLACEHOLDER_COLORIZE_STEPS + + gl_FragColor *= qt_Opacity; + } + " + } +} diff --git a/bin/win64/QtGraphicalEffects/private/GaussianGlow.qml b/bin/win64/QtGraphicalEffects/private/GaussianGlow.qml new file mode 100644 index 0000000..7de29a1 --- /dev/null +++ b/bin/win64/QtGraphicalEffects/private/GaussianGlow.qml @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +Item { + id: rootItem + property variant source + property real radius: 0.0 + property int maximumRadius: 0 + property real spread: 0.0 + property color color: "white" + property bool cached: false + property bool transparentBorder: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + sourceRect: rootItem.transparentBorder ? Qt.rect(-1, -1, parent.width + 2.0, parent.height + 2.0) : Qt.rect(0, 0, 0, 0) + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: shaderItem + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + GaussianDirectionalBlur { + id: shaderItem + x: transparentBorder ? -maximumRadius - 1 : 0 + y: transparentBorder ? -maximumRadius - 1 : 0 + width: horizontalBlur.width + height: horizontalBlur.height + horizontalStep: 0.0 + verticalStep: 1.0 / parent.height + source: horizontalBlur + radius: rootItem.radius + maximumRadius: rootItem.maximumRadius + transparentBorder: rootItem.transparentBorder + enableColor: true + color: rootItem.color + spread: rootItem.spread + } + + GaussianDirectionalBlur { + id: horizontalBlur + width: transparentBorder ? parent.width + 2 * maximumRadius + 2 : parent.width + height: transparentBorder ? parent.height + 2 * maximumRadius + 2 : parent.height + horizontalStep: 1.0 / parent.width + verticalStep: 0.0 + source: sourceProxy.output + radius: rootItem.radius + maximumRadius: rootItem.maximumRadius + transparentBorder: rootItem.transparentBorder + visible: false + } +} diff --git a/bin/win64/QtGraphicalEffects/private/GaussianInnerShadow.qml b/bin/win64/QtGraphicalEffects/private/GaussianInnerShadow.qml new file mode 100644 index 0000000..74c98de --- /dev/null +++ b/bin/win64/QtGraphicalEffects/private/GaussianInnerShadow.qml @@ -0,0 +1,156 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +Item { + id: rootItem + property variant source + property real radius: 0.0 + property int maximumRadius: 0 + property real horizontalOffset: 0 + property real verticalOffset: 0 + property real spread: 0 + property color color: "black" + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: shaderItem + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect{ + id: shadowItem + anchors.fill: parent + + property variant original: sourceProxy.output + property color color: rootItem.color + property real horizontalOffset: rootItem.horizontalOffset / rootItem.width + property real verticalOffset: rootItem.verticalOffset / rootItem.height + + visible: false + fragmentShader: " + uniform highp sampler2D original; + uniform lowp float qt_Opacity; + uniform lowp vec4 color; + uniform highp float horizontalOffset; + uniform highp float verticalOffset; + varying highp vec2 qt_TexCoord0; + + void main(void) { + highp vec2 pos = qt_TexCoord0 - vec2(horizontalOffset, verticalOffset); + lowp float ea = step(0.0, pos.x) * step(0.0, pos.y) * step(pos.x, 1.0) * step(pos.y, 1.0); + lowp float eb = 1.0 - ea; + gl_FragColor = eb * color + ea * color * (1.0 - texture2D(original, pos).a) * qt_Opacity; + } + " + } + + GaussianDirectionalBlur { + id: blurItem + anchors.fill: parent + horizontalStep: 0.0 + verticalStep: 1.0 / parent.height + source: horizontalBlur + radius: rootItem.radius + maximumRadius: rootItem.maximumRadius + visible: false + } + + GaussianDirectionalBlur { + id: horizontalBlur + width: transparentBorder ? parent.width + 2 * maximumRadius : parent.width + height: parent.height + horizontalStep: 1.0 / parent.width + verticalStep: 0.0 + source: shadowItem + radius: rootItem.radius + maximumRadius: rootItem.maximumRadius + visible: false + } + + ShaderEffectSource { + id: blurredSource + sourceItem: blurItem + live: true + smooth: true + } + + ShaderEffect { + id: shaderItem + anchors.fill: parent + + property variant original: sourceProxy.output + property variant shadow: blurredSource + property real spread: 1.0 - (rootItem.spread * 0.98) + property color color: rootItem.color + + fragmentShader: " + uniform highp sampler2D original; + uniform highp sampler2D shadow; + uniform lowp float qt_Opacity; + uniform highp float spread; + uniform lowp vec4 color; + varying highp vec2 qt_TexCoord0; + + highp float linearstep(highp float e0, highp float e1, highp float x) { + return clamp((x - e0) / (e1 - e0), 0.0, 1.0); + } + + void main(void) { + lowp vec4 originalColor = texture2D(original, qt_TexCoord0); + lowp vec4 shadowColor = texture2D(shadow, qt_TexCoord0); + shadowColor.rgb = mix(originalColor.rgb, color.rgb * originalColor.a, linearstep(0.0, spread, shadowColor.a)); + gl_FragColor = vec4(shadowColor.rgb, originalColor.a) * originalColor.a * qt_Opacity; + } + " + } +} diff --git a/bin/win64/QtGraphicalEffects/private/GaussianMaskedBlur.qml b/bin/win64/QtGraphicalEffects/private/GaussianMaskedBlur.qml new file mode 100644 index 0000000..0ca2c5e --- /dev/null +++ b/bin/win64/QtGraphicalEffects/private/GaussianMaskedBlur.qml @@ -0,0 +1,105 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +Item { + id: rootItem + property variant source + property variant maskSource + property real radius: 0.0 + property int maximumRadius: 0 + property bool cached: false + property bool transparentBorder: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + sourceRect: rootItem.transparentBorder ? Qt.rect(-1, -1, parent.width + 2.0, parent.height + 2.0) : Qt.rect(0, 0, 0, 0) + } + + SourceProxy { + id: maskSourceProxy + input: rootItem.maskSource + sourceRect: rootItem.transparentBorder ? Qt.rect(-1, -1, parent.width + 2.0, parent.height + 2.0) : Qt.rect(0, 0, 0, 0) + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: blur + visible: rootItem.cached + smooth: true + sourceItem: blur + live: true + hideSource: visible + } + + GaussianDirectionalBlur { + id: blur + x: transparentBorder ? -maximumRadius - 1: 0 + y: transparentBorder ? -maximumRadius - 1: 0 + width: horizontalBlur.width + height: horizontalBlur.height + horizontalStep: 0.0 + verticalStep: 1.0 / parent.height + source: horizontalBlur + enableMask: true + maskSource: maskSourceProxy.output + radius: rootItem.radius + maximumRadius: rootItem.maximumRadius + transparentBorder: rootItem.transparentBorder + } + + GaussianDirectionalBlur { + id: horizontalBlur + width: transparentBorder ? parent.width + 2 * maximumRadius + 2 : parent.width + height: transparentBorder ? parent.height + 2 * maximumRadius + 2 : parent.height + horizontalStep: 1.0 / parent.width + verticalStep: 0.0 + source: sourceProxy.output + enableMask: true + maskSource: maskSourceProxy.output + radius: rootItem.radius + maximumRadius: rootItem.maximumRadius + transparentBorder: rootItem.transparentBorder + visible: false + } +} diff --git a/bin/win64/QtGraphicalEffects/private/qmldir b/bin/win64/QtGraphicalEffects/private/qmldir new file mode 100644 index 0000000..2d4bdac --- /dev/null +++ b/bin/win64/QtGraphicalEffects/private/qmldir @@ -0,0 +1,11 @@ +module QtGraphicalEffects.private +plugin qtgraphicaleffectsprivate +classname QtGraphicalEffectsPrivatePlugin +FastGlow 1.0 FastGlow.qml +FastInnerShadow 1.0 FastInnerShadow.qml +FastMaskedBlur 1.0 FastMaskedBlur.qml +GaussianDirectionalBlur 1.0 GaussianDirectionalBlur.qml +GaussianGlow 1.0 GaussianGlow.qml +GaussianInnerShadow 1.0 GaussianInnerShadow.qml +GaussianMaskedBlur 1.0 GaussianMaskedBlur.qml +DropShadowBase 1.0 DropShadowBase.qml diff --git a/bin/win64/QtGraphicalEffects/private/qtgraphicaleffectsprivate.dll b/bin/win64/QtGraphicalEffects/private/qtgraphicaleffectsprivate.dll new file mode 100644 index 0000000..df364bd Binary files /dev/null and b/bin/win64/QtGraphicalEffects/private/qtgraphicaleffectsprivate.dll differ diff --git a/bin/win64/QtGraphicalEffects/qmldir b/bin/win64/QtGraphicalEffects/qmldir new file mode 100644 index 0000000..f5012e4 --- /dev/null +++ b/bin/win64/QtGraphicalEffects/qmldir @@ -0,0 +1,31 @@ +module QtGraphicalEffects +plugin qtgraphicaleffectsplugin +classname QtGraphicalEffectsPlugin +Blend 1.0 Blend.qml +BrightnessContrast 1.0 BrightnessContrast.qml +Colorize 1.0 Colorize.qml +ColorOverlay 1.0 ColorOverlay.qml +ConicalGradient 1.0 ConicalGradient.qml +Desaturate 1.0 Desaturate.qml +DirectionalBlur 1.0 DirectionalBlur.qml +Displace 1.0 Displace.qml +DropShadow 1.0 DropShadow.qml +FastBlur 1.0 FastBlur.qml +GammaAdjust 1.0 GammaAdjust.qml +GaussianBlur 1.0 GaussianBlur.qml +Glow 1.0 Glow.qml +HueSaturation 1.0 HueSaturation.qml +InnerShadow 1.0 InnerShadow.qml +LevelAdjust 1.0 LevelAdjust.qml +LinearGradient 1.0 LinearGradient.qml +MaskedBlur 1.0 MaskedBlur.qml +OpacityMask 1.0 OpacityMask.qml +RadialBlur 1.0 RadialBlur.qml +RadialGradient 1.0 RadialGradient.qml +RecursiveBlur 1.0 RecursiveBlur.qml +RectangularGlow 1.0 RectangularGlow.qml +ThresholdMask 1.0 ThresholdMask.qml +ZoomBlur 1.0 ZoomBlur.qml +designersupported +depends QtGraphicalEffects/private 1.0 + diff --git a/bin/win64/QtGraphicalEffects/qtgraphicaleffectsplugin.dll b/bin/win64/QtGraphicalEffects/qtgraphicaleffectsplugin.dll new file mode 100644 index 0000000..710b25b Binary files /dev/null and b/bin/win64/QtGraphicalEffects/qtgraphicaleffectsplugin.dll differ diff --git a/bin/win64/QtMultimedia/Video.qml b/bin/win64/QtMultimedia/Video.qml new file mode 100644 index 0000000..2188d17 --- /dev/null +++ b/bin/win64/QtMultimedia/Video.qml @@ -0,0 +1,472 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 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.LGPL3 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-3.0.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 (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtMultimedia 5.6 + +/*! + \qmltype Video + \inherits Item + \ingroup multimedia_qml + \ingroup multimedia_video_qml + \inqmlmodule QtMultimedia + \brief A convenience type for showing a specified video. + + \c Video is a convenience type combining the functionality + of a \l MediaPlayer and a \l VideoOutput into one. It provides + simple video playback functionality without having to declare multiple + types. + + \qml + Video { + id: video + width : 800 + height : 600 + source: "video.avi" + + MouseArea { + anchors.fill: parent + onClicked: { + video.play() + } + } + + focus: true + Keys.onSpacePressed: video.playbackState == MediaPlayer.PlayingState ? video.pause() : video.play() + Keys.onLeftPressed: video.seek(video.position - 5000) + Keys.onRightPressed: video.seek(video.position + 5000) + } + \endqml + + \c Video supports untransformed, stretched, and uniformly scaled + video presentation. For a description of stretched uniformly scaled + presentation, see the \l fillMode property description. + + \sa MediaPlayer, VideoOutput + +\omit + \section1 Screen Saver + + If it is likely that an application will be playing video for an extended + period of time without user interaction, it may be necessary to disable + the platform's screen saver. The \l ScreenSaver (from \l QtSystemInfo) + may be used to disable the screensaver in this fashion: + + \qml + import QtSystemInfo 5.0 + + ScreenSaver { screenSaverEnabled: false } + \endqml +\endomit +*/ + +// TODO: Restore Qt System Info docs when the module is released + +Item { + id: video + + /*** Properties of VideoOutput ***/ + /*! + \qmlproperty enumeration Video::fillMode + + Set this property to define how the video is scaled to fit the target + area. + + \list + \li VideoOutput.Stretch - the video is scaled to fit + \li VideoOutput.PreserveAspectFit - the video is scaled uniformly to fit without + cropping + \li VideoOutput.PreserveAspectCrop - the video is scaled uniformly to fill, cropping + if necessary + \endlist + + Because this type is for convenience in QML, it does not + support enumerations directly, so enumerations from \c VideoOutput are + used to access the available fill modes. + + The default fill mode is preserveAspectFit. + */ + property alias fillMode: videoOut.fillMode + + /*! + \qmlproperty int Video::orientation + + The orientation of the \c Video in degrees. Only multiples of 90 + degrees is supported, that is 0, 90, 180, 270, 360, etc. + */ + property alias orientation: videoOut.orientation + + + /*** Properties of MediaPlayer ***/ + + /*! + \qmlproperty enumeration Video::playbackState + + This read only property indicates the playback state of the media. + + \list + \li MediaPlayer.PlayingState - the media is playing + \li MediaPlayer.PausedState - the media is paused + \li MediaPlayer.StoppedState - the media is stopped + \endlist + + The default state is MediaPlayer.StoppedState. + */ + property alias playbackState: player.playbackState + + /*! + \qmlproperty bool Video::autoLoad + + This property indicates if loading of media should begin immediately. + + Defaults to true, if false media will not be loaded until playback is + started. + */ + property alias autoLoad: player.autoLoad + + /*! + \qmlproperty real Video::bufferProgress + + This property holds how much of the data buffer is currently filled, + from 0.0 (empty) to 1.0 + (full). + */ + property alias bufferProgress: player.bufferProgress + + /*! + \qmlproperty int Video::duration + + This property holds the duration of the media in milliseconds. + + If the media doesn't have a fixed duration (a live stream for example) + this will be 0. + */ + property alias duration: player.duration + + /*! + \qmlproperty enumeration Video::error + + This property holds the error state of the video. It can be one of: + + \list + \li MediaPlayer.NoError - there is no current error. + \li MediaPlayer.ResourceError - the video cannot be played due to a problem + allocating resources. + \li MediaPlayer.FormatError - the video format is not supported. + \li MediaPlayer.NetworkError - the video cannot be played due to network issues. + \li MediaPlayer.AccessDenied - the video cannot be played due to insufficient + permissions. + \li MediaPlayer.ServiceMissing - the video cannot be played because the media + service could not be + instantiated. + \endlist + */ + property alias error: player.error + + /*! + \qmlproperty string Video::errorString + + This property holds a string describing the current error condition in more detail. + */ + property alias errorString: player.errorString + + /*! + \qmlproperty enumeration Video::availability + + Returns the availability state of the video instance. + + This is one of: + \table + \header \li Value \li Description + \row \li MediaPlayer.Available + \li The video player is available to use. + \row \li MediaPlayer.Busy + \li The video player is usually available, but some other + process is utilizing the hardware necessary to play media. + \row \li MediaPlayer.Unavailable + \li There are no supported video playback facilities. + \row \li MediaPlayer.ResourceMissing + \li There is one or more resources missing, so the video player cannot + be used. It may be possible to try again at a later time. + \endtable + */ + property alias availability: player.availability + + /*! + \qmlproperty bool Video::hasAudio + + This property holds whether the current media has audio content. + */ + property alias hasAudio: player.hasAudio + + /*! + \qmlproperty bool Video::hasVideo + + This property holds whether the current media has video content. + */ + property alias hasVideo: player.hasVideo + + /*! + \qmlproperty object Video::metaData + + This property holds the meta data for the current media. + + See \l{MediaPlayer::metaData}{MediaPlayer.metaData} for details about each meta data key. + + \sa {QMediaMetaData} + */ + property alias metaData: player.metaData + + /*! + \qmlproperty bool Video::muted + + This property holds whether the audio output is muted. + */ + property alias muted: player.muted + + /*! + \qmlproperty real Video::playbackRate + + This property holds the rate at which video is played at as a multiple + of the normal rate. + */ + property alias playbackRate: player.playbackRate + + /*! + \qmlproperty int Video::position + + This property holds the current playback position in milliseconds. + + To change this position, use the \l seek() method. + + \sa seek() + */ + property alias position: player.position + + /*! + \qmlproperty enumeration Video::audioRole + + This property holds the role of the audio stream. It can be set to specify the type of audio + being played, allowing the system to make appropriate decisions when it comes to volume, + routing or post-processing. + + The audio role must be set before setting the source property. + + Supported values can be retrieved with supportedAudioRoles(). + + The value can be one of: + \list + \li MediaPlayer.UnknownRole - the role is unknown or undefined. + \li MediaPlayer.MusicRole - music. + \li MediaPlayer.VideoRole - soundtrack from a movie or a video. + \li MediaPlayer.VoiceCommunicationRole - voice communications, such as telephony. + \li MediaPlayer.AlarmRole - alarm. + \li MediaPlayer.NotificationRole - notification, such as an incoming e-mail or a chat request. + \li MediaPlayer.RingtoneRole - ringtone. + \li MediaPlayer.AccessibilityRole - for accessibility, such as with a screen reader. + \li MediaPlayer.SonificationRole - sonification, such as with user interface sounds. + \li MediaPlayer.GameRole - game audio. + \endlist + + \since 5.6 + */ + property alias audioRole: player.audioRole + + /*! + \qmlproperty bool Video::seekable + + This property holds whether the playback position of the video can be + changed. + + If true, calling the \l seek() method will cause playback to seek to the new position. + */ + property alias seekable: player.seekable + + /*! + \qmlproperty url Video::source + + This property holds the source URL of the media. + + Setting the \l source property clears the current \l playlist, if any. + */ + property alias source: player.source + + /*! + \qmlproperty Playlist Video::playlist + + This property holds the playlist used by the media player. + + Setting the \l playlist property resets the \l source to an empty string. + + \since 5.6 + */ + property alias playlist: player.playlist + + /*! + \qmlproperty enumeration Video::status + + This property holds the status of media loading. It can be one of: + + \list + \li MediaPlayer.NoMedia - no media has been set. + \li MediaPlayer.Loading - the media is currently being loaded. + \li MediaPlayer.Loaded - the media has been loaded. + \li MediaPlayer.Buffering - the media is buffering data. + \li MediaPlayer.Stalled - playback has been interrupted while the media is buffering data. + \li MediaPlayer.Buffered - the media has buffered data. + \li MediaPlayer.EndOfMedia - the media has played to the end. + \li MediaPlayer.InvalidMedia - the media cannot be played. + \li MediaPlayer.UnknownStatus - the status of the media cannot be determined. + \endlist + */ + property alias status: player.status + + /*! + \qmlproperty real Video::volume + + This property holds the volume of the audio output, from 0.0 (silent) to 1.0 (maximum volume). + */ + property alias volume: player.volume + + /*! + \qmlproperty bool Video::autoPlay + + This property determines whether the media should begin playback automatically. + + Setting to \c true also sets \l autoLoad to \c true. The default is \c false. + */ + property alias autoPlay: player.autoPlay + + /*! + \qmlsignal Video::paused() + + This signal is emitted when playback is paused. + + The corresponding handler is \c onPaused. + */ + signal paused + + /*! + \qmlsignal Video::stopped() + + This signal is emitted when playback is stopped. + + The corresponding handler is \c onStopped. + */ + signal stopped + + /*! + \qmlsignal Video::playing() + + This signal is emitted when playback is started or continued. + + The corresponding handler is \c onPlaying. + */ + signal playing + + VideoOutput { + id: videoOut + anchors.fill: video + source: player + } + + MediaPlayer { + id: player + onPaused: video.paused() + onStopped: video.stopped() + onPlaying: video.playing() + } + + /*! + \qmlmethod Video::play() + + Starts playback of the media. + */ + function play() { + player.play(); + } + + /*! + \qmlmethod Video::pause() + + Pauses playback of the media. + */ + function pause() { + player.pause(); + } + + /*! + \qmlmethod Video::stop() + + Stops playback of the media. + */ + function stop() { + player.stop(); + } + + /*! + \qmlmethod Video::seek(offset) + + If the \l seekable property is true, seeks the current + playback position to \a offset. + + Seeking may be asynchronous, so the \l position property + may not be updated immediately. + + \sa seekable, position + */ + function seek(offset) { + player.seek(offset); + } + + /*! + \qmlmethod list Video::supportedAudioRoles() + + Returns a list of supported audio roles. + + If setting the audio role is not supported, an empty list is returned. + + \since 5.6 + \sa audioRole + */ + function supportedAudioRoles() { + return player.supportedAudioRoles(); + } + +} diff --git a/bin/win64/QtMultimedia/declarative_multimedia.dll b/bin/win64/QtMultimedia/declarative_multimedia.dll new file mode 100644 index 0000000..5aae00a Binary files /dev/null and b/bin/win64/QtMultimedia/declarative_multimedia.dll differ diff --git a/bin/win64/QtMultimedia/plugins.qmltypes b/bin/win64/QtMultimedia/plugins.qmltypes new file mode 100644 index 0000000..91fff02 --- /dev/null +++ b/bin/win64/QtMultimedia/plugins.qmltypes @@ -0,0 +1,1828 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by: +// 'qmlplugindump -nonrelocatable QtMultimedia 5.7' + +Module { + dependencies: ["QtQuick 2.0"] + Component { + name: "QAbstractVideoFilter" + prototype: "QObject" + Property { name: "active"; type: "bool" } + } + Component { + name: "QCamera" + prototype: "QMediaObject" + Enum { + name: "Status" + values: { + "UnavailableStatus": 0, + "UnloadedStatus": 1, + "LoadingStatus": 2, + "UnloadingStatus": 3, + "LoadedStatus": 4, + "StandbyStatus": 5, + "StartingStatus": 6, + "StoppingStatus": 7, + "ActiveStatus": 8 + } + } + Enum { + name: "State" + values: { + "UnloadedState": 0, + "LoadedState": 1, + "ActiveState": 2 + } + } + Enum { + name: "CaptureMode" + values: { + "CaptureViewfinder": 0, + "CaptureStillImage": 1, + "CaptureVideo": 2 + } + } + Enum { + name: "Error" + values: { + "NoError": 0, + "CameraError": 1, + "InvalidRequestError": 2, + "ServiceMissingError": 3, + "NotSupportedFeatureError": 4 + } + } + Enum { + name: "LockStatus" + values: { + "Unlocked": 0, + "Searching": 1, + "Locked": 2 + } + } + Enum { + name: "LockChangeReason" + values: { + "UserRequest": 0, + "LockAcquired": 1, + "LockFailed": 2, + "LockLost": 3, + "LockTemporaryLost": 4 + } + } + Enum { + name: "LockType" + values: { + "NoLock": 0, + "LockExposure": 1, + "LockWhiteBalance": 2, + "LockFocus": 4 + } + } + Enum { + name: "Position" + values: { + "UnspecifiedPosition": 0, + "BackFace": 1, + "FrontFace": 2 + } + } + Property { name: "state"; type: "QCamera::State"; isReadonly: true } + Property { name: "status"; type: "QCamera::Status"; isReadonly: true } + Property { name: "captureMode"; type: "QCamera::CaptureModes" } + Property { name: "lockStatus"; type: "QCamera::LockStatus"; isReadonly: true } + Signal { + name: "stateChanged" + Parameter { type: "QCamera::State" } + } + Signal { + name: "captureModeChanged" + Parameter { type: "QCamera::CaptureModes" } + } + Signal { + name: "statusChanged" + Parameter { type: "QCamera::Status" } + } + Signal { name: "locked" } + Signal { name: "lockFailed" } + Signal { + name: "lockStatusChanged" + Parameter { type: "QCamera::LockStatus" } + Parameter { type: "QCamera::LockChangeReason" } + } + Signal { + name: "lockStatusChanged" + Parameter { type: "QCamera::LockType" } + Parameter { type: "QCamera::LockStatus" } + Parameter { type: "QCamera::LockChangeReason" } + } + Signal { + name: "error" + Parameter { type: "QCamera::Error" } + } + Method { + name: "setCaptureMode" + Parameter { name: "mode"; type: "QCamera::CaptureModes" } + } + Method { name: "load" } + Method { name: "unload" } + Method { name: "start" } + Method { name: "stop" } + Method { name: "searchAndLock" } + Method { name: "unlock" } + Method { + name: "searchAndLock" + Parameter { name: "locks"; type: "QCamera::LockTypes" } + } + Method { + name: "unlock" + Parameter { name: "locks"; type: "QCamera::LockTypes" } + } + } + Component { + name: "QDeclarativeAudio" + prototype: "QObject" + exports: [ + "QtMultimedia/Audio 5.0", + "QtMultimedia/Audio 5.6", + "QtMultimedia/MediaPlayer 5.0", + "QtMultimedia/MediaPlayer 5.6" + ] + exportMetaObjectRevisions: [0, 1, 0, 1] + Enum { + name: "Status" + values: { + "UnknownStatus": 0, + "NoMedia": 1, + "Loading": 2, + "Loaded": 3, + "Stalled": 4, + "Buffering": 5, + "Buffered": 6, + "EndOfMedia": 7, + "InvalidMedia": 8 + } + } + Enum { + name: "Error" + values: { + "NoError": 0, + "ResourceError": 1, + "FormatError": 2, + "NetworkError": 3, + "AccessDenied": 4, + "ServiceMissing": 5 + } + } + Enum { + name: "Loop" + values: { + "Infinite": -1 + } + } + Enum { + name: "PlaybackState" + values: { + "PlayingState": 1, + "PausedState": 2, + "StoppedState": 0 + } + } + Enum { + name: "Availability" + values: { + "Available": 0, + "Busy": 2, + "Unavailable": 1, + "ResourceMissing": 3 + } + } + Enum { + name: "AudioRole" + values: { + "UnknownRole": 0, + "AccessibilityRole": 7, + "AlarmRole": 4, + "GameRole": 9, + "MusicRole": 1, + "NotificationRole": 5, + "RingtoneRole": 6, + "SonificationRole": 8, + "VideoRole": 2, + "VoiceCommunicationRole": 3 + } + } + Property { name: "source"; type: "QUrl" } + Property { name: "playlist"; revision: 1; type: "QDeclarativePlaylist"; isPointer: true } + Property { name: "loops"; type: "int" } + Property { name: "playbackState"; type: "PlaybackState"; isReadonly: true } + Property { name: "autoPlay"; type: "bool" } + Property { name: "autoLoad"; type: "bool" } + Property { name: "status"; type: "Status"; isReadonly: true } + Property { name: "duration"; type: "int"; isReadonly: true } + Property { name: "position"; type: "int"; isReadonly: true } + Property { name: "volume"; type: "double" } + Property { name: "muted"; type: "bool" } + Property { name: "hasAudio"; type: "bool"; isReadonly: true } + Property { name: "hasVideo"; type: "bool"; isReadonly: true } + Property { name: "bufferProgress"; type: "double"; isReadonly: true } + Property { name: "seekable"; type: "bool"; isReadonly: true } + Property { name: "playbackRate"; type: "double" } + Property { name: "error"; type: "Error"; isReadonly: true } + Property { name: "errorString"; type: "string"; isReadonly: true } + Property { + name: "metaData" + type: "QDeclarativeMediaMetaData" + isReadonly: true + isPointer: true + } + Property { name: "mediaObject"; type: "QObject"; isReadonly: true; isPointer: true } + Property { name: "availability"; type: "Availability"; isReadonly: true } + Property { name: "audioRole"; revision: 1; type: "AudioRole" } + Signal { name: "playlistChanged"; revision: 1 } + Signal { name: "loopCountChanged" } + Signal { name: "paused" } + Signal { name: "stopped" } + Signal { name: "playing" } + Signal { name: "audioRoleChanged"; revision: 1 } + Signal { + name: "availabilityChanged" + Parameter { name: "availability"; type: "Availability" } + } + Signal { + name: "error" + Parameter { name: "error"; type: "QDeclarativeAudio::Error" } + Parameter { name: "errorString"; type: "string" } + } + Method { name: "play" } + Method { name: "pause" } + Method { name: "stop" } + Method { + name: "seek" + Parameter { name: "position"; type: "int" } + } + Method { name: "supportedAudioRoles"; revision: 1; type: "QJSValue" } + } + Component { + name: "QDeclarativeCamera" + prototype: "QObject" + exports: [ + "QtMultimedia/Camera 5.0", + "QtMultimedia/Camera 5.4", + "QtMultimedia/Camera 5.5" + ] + exportMetaObjectRevisions: [0, 1, 2] + Enum { + name: "Position" + values: { + "UnspecifiedPosition": 0, + "BackFace": 1, + "FrontFace": 2 + } + } + Enum { + name: "CaptureMode" + values: { + "CaptureViewfinder": 0, + "CaptureStillImage": 1, + "CaptureVideo": 2 + } + } + Enum { + name: "State" + values: { + "ActiveState": 2, + "LoadedState": 1, + "UnloadedState": 0 + } + } + Enum { + name: "Status" + values: { + "UnavailableStatus": 0, + "UnloadedStatus": 1, + "LoadingStatus": 2, + "UnloadingStatus": 3, + "LoadedStatus": 4, + "StandbyStatus": 5, + "StartingStatus": 6, + "StoppingStatus": 7, + "ActiveStatus": 8 + } + } + Enum { + name: "LockStatus" + values: { + "Unlocked": 0, + "Searching": 1, + "Locked": 2 + } + } + Enum { + name: "Error" + values: { + "NoError": 0, + "CameraError": 1, + "InvalidRequestError": 2, + "ServiceMissingError": 3, + "NotSupportedFeatureError": 4 + } + } + Enum { + name: "FlashMode" + values: { + "FlashAuto": 1, + "FlashOff": 2, + "FlashOn": 4, + "FlashRedEyeReduction": 8, + "FlashFill": 16, + "FlashTorch": 32, + "FlashVideoLight": 64, + "FlashSlowSyncFrontCurtain": 128, + "FlashSlowSyncRearCurtain": 256, + "FlashManual": 512 + } + } + Enum { + name: "ExposureMode" + values: { + "ExposureAuto": 0, + "ExposureManual": 1, + "ExposurePortrait": 2, + "ExposureNight": 3, + "ExposureBacklight": 4, + "ExposureSpotlight": 5, + "ExposureSports": 6, + "ExposureSnow": 7, + "ExposureBeach": 8, + "ExposureLargeAperture": 9, + "ExposureSmallAperture": 10, + "ExposureAction": 11, + "ExposureLandscape": 12, + "ExposureNightPortrait": 13, + "ExposureTheatre": 14, + "ExposureSunset": 15, + "ExposureSteadyPhoto": 16, + "ExposureFireworks": 17, + "ExposureParty": 18, + "ExposureCandlelight": 19, + "ExposureBarcode": 20, + "ExposureModeVendor": 1000 + } + } + Enum { + name: "MeteringMode" + values: { + "MeteringMatrix": 1, + "MeteringAverage": 2, + "MeteringSpot": 3 + } + } + Enum { + name: "FocusMode" + values: { + "FocusManual": 1, + "FocusHyperfocal": 2, + "FocusInfinity": 4, + "FocusAuto": 8, + "FocusContinuous": 16, + "FocusMacro": 32 + } + } + Enum { + name: "FocusPointMode" + values: { + "FocusPointAuto": 0, + "FocusPointCenter": 1, + "FocusPointFaceDetection": 2, + "FocusPointCustom": 3 + } + } + Enum { + name: "FocusAreaStatus" + values: { + "FocusAreaUnused": 1, + "FocusAreaSelected": 2, + "FocusAreaFocused": 3 + } + } + Enum { + name: "Availability" + values: { + "Available": 0, + "Busy": 2, + "Unavailable": 1, + "ResourceMissing": 3 + } + } + Property { name: "deviceId"; revision: 1; type: "string" } + Property { name: "position"; revision: 1; type: "Position" } + Property { name: "displayName"; revision: 1; type: "string"; isReadonly: true } + Property { name: "orientation"; revision: 1; type: "int"; isReadonly: true } + Property { name: "captureMode"; type: "CaptureMode" } + Property { name: "cameraState"; type: "State" } + Property { name: "cameraStatus"; type: "Status"; isReadonly: true } + Property { name: "lockStatus"; type: "LockStatus"; isReadonly: true } + Property { name: "errorCode"; type: "Error"; isReadonly: true } + Property { name: "errorString"; type: "string"; isReadonly: true } + Property { name: "availability"; type: "Availability"; isReadonly: true } + Property { name: "opticalZoom"; type: "double" } + Property { name: "maximumOpticalZoom"; type: "double"; isReadonly: true } + Property { name: "digitalZoom"; type: "double" } + Property { name: "maximumDigitalZoom"; type: "double"; isReadonly: true } + Property { name: "mediaObject"; type: "QObject"; isReadonly: true; isPointer: true } + Property { + name: "imageCapture" + type: "QDeclarativeCameraCapture" + isReadonly: true + isPointer: true + } + Property { + name: "videoRecorder" + type: "QDeclarativeCameraRecorder" + isReadonly: true + isPointer: true + } + Property { + name: "exposure" + type: "QDeclarativeCameraExposure" + isReadonly: true + isPointer: true + } + Property { name: "flash"; type: "QDeclarativeCameraFlash"; isReadonly: true; isPointer: true } + Property { name: "focus"; type: "QDeclarativeCameraFocus"; isReadonly: true; isPointer: true } + Property { + name: "imageProcessing" + type: "QDeclarativeCameraImageProcessing" + isReadonly: true + isPointer: true + } + Property { + name: "metaData" + revision: 1 + type: "QDeclarativeMediaMetaData" + isReadonly: true + isPointer: true + } + Property { + name: "viewfinder" + revision: 1 + type: "QDeclarativeCameraViewfinder" + isReadonly: true + isPointer: true + } + Signal { name: "errorChanged" } + Signal { + name: "error" + Parameter { name: "errorCode"; type: "QDeclarativeCamera::Error" } + Parameter { name: "errorString"; type: "string" } + } + Signal { name: "deviceIdChanged"; revision: 1 } + Signal { name: "positionChanged"; revision: 1 } + Signal { name: "displayNameChanged"; revision: 1 } + Signal { name: "orientationChanged"; revision: 1 } + Signal { + name: "cameraStateChanged" + Parameter { type: "QDeclarativeCamera::State" } + } + Signal { + name: "opticalZoomChanged" + Parameter { type: "double" } + } + Signal { + name: "digitalZoomChanged" + Parameter { type: "double" } + } + Signal { + name: "maximumOpticalZoomChanged" + Parameter { type: "double" } + } + Signal { + name: "maximumDigitalZoomChanged" + Parameter { type: "double" } + } + Signal { + name: "availabilityChanged" + Parameter { name: "availability"; type: "Availability" } + } + Method { + name: "setCaptureMode" + Parameter { name: "mode"; type: "CaptureMode" } + } + Method { name: "start" } + Method { name: "stop" } + Method { + name: "setCameraState" + Parameter { name: "state"; type: "State" } + } + Method { name: "searchAndLock" } + Method { name: "unlock" } + Method { + name: "setOpticalZoom" + Parameter { type: "double" } + } + Method { + name: "setDigitalZoom" + Parameter { type: "double" } + } + Method { + name: "supportedViewfinderResolutions" + revision: 2 + type: "QJSValue" + Parameter { name: "minimumFrameRate"; type: "double" } + Parameter { name: "maximumFrameRate"; type: "double" } + } + Method { + name: "supportedViewfinderResolutions" + revision: 2 + type: "QJSValue" + Parameter { name: "minimumFrameRate"; type: "double" } + } + Method { name: "supportedViewfinderResolutions"; revision: 2; type: "QJSValue" } + Method { + name: "supportedViewfinderFrameRateRanges" + revision: 2 + type: "QJSValue" + Parameter { name: "resolution"; type: "QJSValue" } + } + Method { name: "supportedViewfinderFrameRateRanges"; revision: 2; type: "QJSValue" } + } + Component { + name: "QDeclarativeCameraCapture" + prototype: "QObject" + exports: ["QtMultimedia/CameraCapture 5.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Property { name: "ready"; type: "bool"; isReadonly: true } + Property { name: "capturedImagePath"; type: "string"; isReadonly: true } + Property { name: "resolution"; type: "QSize" } + Property { name: "errorString"; type: "string"; isReadonly: true } + Signal { + name: "readyForCaptureChanged" + Parameter { type: "bool" } + } + Signal { + name: "imageExposed" + Parameter { name: "requestId"; type: "int" } + } + Signal { + name: "imageCaptured" + Parameter { name: "requestId"; type: "int" } + Parameter { name: "preview"; type: "string" } + } + Signal { + name: "imageMetadataAvailable" + Parameter { name: "requestId"; type: "int" } + Parameter { name: "key"; type: "string" } + Parameter { name: "value"; type: "QVariant" } + } + Signal { + name: "imageSaved" + Parameter { name: "requestId"; type: "int" } + Parameter { name: "path"; type: "string" } + } + Signal { + name: "captureFailed" + Parameter { name: "requestId"; type: "int" } + Parameter { name: "message"; type: "string" } + } + Signal { + name: "resolutionChanged" + Parameter { type: "QSize" } + } + Method { name: "capture"; type: "int" } + Method { + name: "captureToLocation" + type: "int" + Parameter { name: "location"; type: "string" } + } + Method { name: "cancelCapture" } + Method { + name: "setResolution" + Parameter { name: "resolution"; type: "QSize" } + } + Method { + name: "setMetadata" + Parameter { name: "key"; type: "string" } + Parameter { name: "value"; type: "QVariant" } + } + } + Component { + name: "QDeclarativeCameraExposure" + prototype: "QObject" + exports: ["QtMultimedia/CameraExposure 5.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "ExposureMode" + values: { + "ExposureAuto": 0, + "ExposureManual": 1, + "ExposurePortrait": 2, + "ExposureNight": 3, + "ExposureBacklight": 4, + "ExposureSpotlight": 5, + "ExposureSports": 6, + "ExposureSnow": 7, + "ExposureBeach": 8, + "ExposureLargeAperture": 9, + "ExposureSmallAperture": 10, + "ExposureAction": 11, + "ExposureLandscape": 12, + "ExposureNightPortrait": 13, + "ExposureTheatre": 14, + "ExposureSunset": 15, + "ExposureSteadyPhoto": 16, + "ExposureFireworks": 17, + "ExposureParty": 18, + "ExposureCandlelight": 19, + "ExposureBarcode": 20, + "ExposureModeVendor": 1000 + } + } + Enum { + name: "MeteringMode" + values: { + "MeteringMatrix": 1, + "MeteringAverage": 2, + "MeteringSpot": 3 + } + } + Property { name: "exposureCompensation"; type: "double" } + Property { name: "iso"; type: "int"; isReadonly: true } + Property { name: "shutterSpeed"; type: "double"; isReadonly: true } + Property { name: "aperture"; type: "double"; isReadonly: true } + Property { name: "manualShutterSpeed"; type: "double" } + Property { name: "manualAperture"; type: "double" } + Property { name: "manualIso"; type: "double" } + Property { name: "exposureMode"; type: "ExposureMode" } + Property { name: "spotMeteringPoint"; type: "QPointF" } + Property { name: "meteringMode"; type: "MeteringMode" } + Signal { + name: "isoSensitivityChanged" + Parameter { type: "int" } + } + Signal { + name: "apertureChanged" + Parameter { type: "double" } + } + Signal { + name: "shutterSpeedChanged" + Parameter { type: "double" } + } + Signal { + name: "manualIsoSensitivityChanged" + Parameter { type: "int" } + } + Signal { + name: "manualApertureChanged" + Parameter { type: "double" } + } + Signal { + name: "manualShutterSpeedChanged" + Parameter { type: "double" } + } + Signal { + name: "exposureCompensationChanged" + Parameter { type: "double" } + } + Signal { + name: "exposureModeChanged" + Parameter { type: "ExposureMode" } + } + Signal { + name: "meteringModeChanged" + Parameter { type: "MeteringMode" } + } + Signal { + name: "spotMeteringPointChanged" + Parameter { type: "QPointF" } + } + Method { + name: "setExposureMode" + Parameter { type: "ExposureMode" } + } + Method { + name: "setExposureCompensation" + Parameter { name: "ev"; type: "double" } + } + Method { + name: "setManualAperture" + Parameter { type: "double" } + } + Method { + name: "setManualShutterSpeed" + Parameter { type: "double" } + } + Method { + name: "setManualIsoSensitivity" + Parameter { name: "iso"; type: "int" } + } + Method { name: "setAutoAperture" } + Method { name: "setAutoShutterSpeed" } + Method { name: "setAutoIsoSensitivity" } + } + Component { + name: "QDeclarativeCameraFlash" + prototype: "QObject" + exports: ["QtMultimedia/CameraFlash 5.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "FlashMode" + values: { + "FlashAuto": 1, + "FlashOff": 2, + "FlashOn": 4, + "FlashRedEyeReduction": 8, + "FlashFill": 16, + "FlashTorch": 32, + "FlashVideoLight": 64, + "FlashSlowSyncFrontCurtain": 128, + "FlashSlowSyncRearCurtain": 256, + "FlashManual": 512 + } + } + Property { name: "ready"; type: "bool"; isReadonly: true } + Property { name: "mode"; type: "FlashMode" } + Signal { + name: "flashReady" + Parameter { name: "status"; type: "bool" } + } + Signal { + name: "flashModeChanged" + Parameter { type: "FlashMode" } + } + Method { + name: "setFlashMode" + Parameter { type: "FlashMode" } + } + } + Component { + name: "QDeclarativeCameraFocus" + prototype: "QObject" + exports: ["QtMultimedia/CameraFocus 5.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "FocusMode" + values: { + "FocusManual": 1, + "FocusHyperfocal": 2, + "FocusInfinity": 4, + "FocusAuto": 8, + "FocusContinuous": 16, + "FocusMacro": 32 + } + } + Enum { + name: "FocusPointMode" + values: { + "FocusPointAuto": 0, + "FocusPointCenter": 1, + "FocusPointFaceDetection": 2, + "FocusPointCustom": 3 + } + } + Property { name: "focusMode"; type: "FocusMode" } + Property { name: "focusPointMode"; type: "FocusPointMode" } + Property { name: "customFocusPoint"; type: "QPointF" } + Property { name: "focusZones"; type: "QObject"; isReadonly: true; isPointer: true } + Signal { + name: "focusModeChanged" + Parameter { type: "FocusMode" } + } + Signal { + name: "focusPointModeChanged" + Parameter { type: "FocusPointMode" } + } + Signal { + name: "customFocusPointChanged" + Parameter { type: "QPointF" } + } + Method { + name: "setFocusMode" + Parameter { type: "FocusMode" } + } + Method { + name: "setFocusPointMode" + Parameter { name: "mode"; type: "FocusPointMode" } + } + Method { + name: "setCustomFocusPoint" + Parameter { name: "point"; type: "QPointF" } + } + Method { + name: "isFocusModeSupported" + type: "bool" + Parameter { name: "mode"; type: "FocusMode" } + } + Method { + name: "isFocusPointModeSupported" + type: "bool" + Parameter { name: "mode"; type: "FocusPointMode" } + } + } + Component { + name: "QDeclarativeCameraImageProcessing" + prototype: "QObject" + exports: [ + "QtMultimedia/CameraImageProcessing 5.0", + "QtMultimedia/CameraImageProcessing 5.5", + "QtMultimedia/CameraImageProcessing 5.7" + ] + isCreatable: false + exportMetaObjectRevisions: [0, 1, 2] + Enum { + name: "WhiteBalanceMode" + values: { + "WhiteBalanceAuto": 0, + "WhiteBalanceManual": 1, + "WhiteBalanceSunlight": 2, + "WhiteBalanceCloudy": 3, + "WhiteBalanceShade": 4, + "WhiteBalanceTungsten": 5, + "WhiteBalanceFluorescent": 6, + "WhiteBalanceFlash": 7, + "WhiteBalanceSunset": 8, + "WhiteBalanceVendor": 1000 + } + } + Enum { + name: "ColorFilter" + values: { + "ColorFilterNone": 0, + "ColorFilterGrayscale": 1, + "ColorFilterNegative": 2, + "ColorFilterSolarize": 3, + "ColorFilterSepia": 4, + "ColorFilterPosterize": 5, + "ColorFilterWhiteboard": 6, + "ColorFilterBlackboard": 7, + "ColorFilterAqua": 8, + "ColorFilterVendor": 1000 + } + } + Property { name: "whiteBalanceMode"; type: "WhiteBalanceMode" } + Property { name: "manualWhiteBalance"; type: "double" } + Property { name: "brightness"; revision: 2; type: "double" } + Property { name: "contrast"; type: "double" } + Property { name: "saturation"; type: "double" } + Property { name: "sharpeningLevel"; type: "double" } + Property { name: "denoisingLevel"; type: "double" } + Property { name: "colorFilter"; revision: 1; type: "ColorFilter" } + Signal { + name: "whiteBalanceModeChanged" + Parameter { type: "QDeclarativeCameraImageProcessing::WhiteBalanceMode" } + } + Signal { + name: "manualWhiteBalanceChanged" + Parameter { type: "double" } + } + Signal { + name: "brightnessChanged" + revision: 2 + Parameter { type: "double" } + } + Signal { + name: "contrastChanged" + Parameter { type: "double" } + } + Signal { + name: "saturationChanged" + Parameter { type: "double" } + } + Signal { + name: "sharpeningLevelChanged" + Parameter { type: "double" } + } + Signal { + name: "denoisingLevelChanged" + Parameter { type: "double" } + } + Method { + name: "setWhiteBalanceMode" + Parameter { name: "mode"; type: "QDeclarativeCameraImageProcessing::WhiteBalanceMode" } + } + Method { + name: "setManualWhiteBalance" + Parameter { name: "colorTemp"; type: "double" } + } + Method { + name: "setBrightness" + revision: 2 + Parameter { name: "value"; type: "double" } + } + Method { + name: "setContrast" + Parameter { name: "value"; type: "double" } + } + Method { + name: "setSaturation" + Parameter { name: "value"; type: "double" } + } + Method { + name: "setSharpeningLevel" + Parameter { name: "value"; type: "double" } + } + Method { + name: "setDenoisingLevel" + Parameter { name: "value"; type: "double" } + } + Method { + name: "setColorFilter" + Parameter { name: "colorFilter"; type: "ColorFilter" } + } + } + Component { + name: "QDeclarativeCameraRecorder" + prototype: "QObject" + exports: ["QtMultimedia/CameraRecorder 5.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "RecorderState" + values: { + "StoppedState": 0, + "RecordingState": 1 + } + } + Enum { + name: "RecorderStatus" + values: { + "UnavailableStatus": 0, + "UnloadedStatus": 1, + "LoadingStatus": 2, + "LoadedStatus": 3, + "StartingStatus": 4, + "RecordingStatus": 5, + "PausedStatus": 6, + "FinalizingStatus": 7 + } + } + Enum { + name: "EncodingMode" + values: { + "ConstantQualityEncoding": 0, + "ConstantBitRateEncoding": 1, + "AverageBitRateEncoding": 2 + } + } + Enum { + name: "Error" + values: { + "NoError": 0, + "ResourceError": 1, + "FormatError": 2, + "OutOfSpaceError": 3 + } + } + Property { name: "recorderState"; type: "RecorderState" } + Property { name: "recorderStatus"; type: "RecorderStatus"; isReadonly: true } + Property { name: "videoCodec"; type: "string" } + Property { name: "resolution"; type: "QSize" } + Property { name: "frameRate"; type: "double" } + Property { name: "videoBitRate"; type: "int" } + Property { name: "videoEncodingMode"; type: "EncodingMode" } + Property { name: "audioCodec"; type: "string" } + Property { name: "audioBitRate"; type: "int" } + Property { name: "audioChannels"; type: "int" } + Property { name: "audioSampleRate"; type: "int" } + Property { name: "audioEncodingMode"; type: "EncodingMode" } + Property { name: "mediaContainer"; type: "string" } + Property { name: "duration"; type: "qlonglong"; isReadonly: true } + Property { name: "outputLocation"; type: "string" } + Property { name: "actualLocation"; type: "string"; isReadonly: true } + Property { name: "muted"; type: "bool" } + Property { name: "errorString"; type: "string"; isReadonly: true } + Property { name: "errorCode"; type: "Error"; isReadonly: true } + Signal { + name: "recorderStateChanged" + Parameter { name: "state"; type: "QDeclarativeCameraRecorder::RecorderState" } + } + Signal { + name: "durationChanged" + Parameter { name: "duration"; type: "qlonglong" } + } + Signal { + name: "mutedChanged" + Parameter { name: "muted"; type: "bool" } + } + Signal { + name: "outputLocationChanged" + Parameter { name: "location"; type: "string" } + } + Signal { + name: "actualLocationChanged" + Parameter { name: "location"; type: "string" } + } + Signal { + name: "error" + Parameter { name: "errorCode"; type: "QDeclarativeCameraRecorder::Error" } + Parameter { name: "errorString"; type: "string" } + } + Signal { + name: "metaDataChanged" + Parameter { name: "key"; type: "string" } + Parameter { name: "value"; type: "QVariant" } + } + Signal { + name: "captureResolutionChanged" + Parameter { type: "QSize" } + } + Signal { + name: "audioCodecChanged" + Parameter { name: "codec"; type: "string" } + } + Signal { + name: "videoCodecChanged" + Parameter { name: "codec"; type: "string" } + } + Signal { + name: "mediaContainerChanged" + Parameter { name: "container"; type: "string" } + } + Signal { + name: "frameRateChanged" + Parameter { name: "arg"; type: "double" } + } + Signal { + name: "videoBitRateChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "audioBitRateChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "audioChannelsChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "audioSampleRateChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "audioEncodingModeChanged" + Parameter { name: "encodingMode"; type: "EncodingMode" } + } + Signal { + name: "videoEncodingModeChanged" + Parameter { name: "encodingMode"; type: "EncodingMode" } + } + Method { + name: "setOutputLocation" + Parameter { name: "location"; type: "string" } + } + Method { name: "record" } + Method { name: "stop" } + Method { + name: "setRecorderState" + Parameter { name: "state"; type: "QDeclarativeCameraRecorder::RecorderState" } + } + Method { + name: "setMuted" + Parameter { name: "muted"; type: "bool" } + } + Method { + name: "setMetadata" + Parameter { name: "key"; type: "string" } + Parameter { name: "value"; type: "QVariant" } + } + Method { + name: "setCaptureResolution" + Parameter { name: "resolution"; type: "QSize" } + } + Method { + name: "setAudioCodec" + Parameter { name: "codec"; type: "string" } + } + Method { + name: "setVideoCodec" + Parameter { name: "codec"; type: "string" } + } + Method { + name: "setMediaContainer" + Parameter { name: "container"; type: "string" } + } + Method { + name: "setFrameRate" + Parameter { name: "frameRate"; type: "double" } + } + Method { + name: "setVideoBitRate" + Parameter { name: "rate"; type: "int" } + } + Method { + name: "setAudioBitRate" + Parameter { name: "rate"; type: "int" } + } + Method { + name: "setAudioChannels" + Parameter { name: "channels"; type: "int" } + } + Method { + name: "setAudioSampleRate" + Parameter { name: "rate"; type: "int" } + } + Method { + name: "setVideoEncodingMode" + Parameter { name: "encodingMode"; type: "EncodingMode" } + } + Method { + name: "setAudioEncodingMode" + Parameter { name: "encodingMode"; type: "EncodingMode" } + } + } + Component { + name: "QDeclarativeCameraViewfinder" + prototype: "QObject" + exports: ["QtMultimedia/CameraViewfinder 5.4"] + isCreatable: false + exportMetaObjectRevisions: [0] + Property { name: "resolution"; type: "QSize" } + Property { name: "minimumFrameRate"; type: "double" } + Property { name: "maximumFrameRate"; type: "double" } + } + Component { + name: "QDeclarativeMediaMetaData" + prototype: "QObject" + Property { name: "title"; type: "QVariant" } + Property { name: "subTitle"; type: "QVariant" } + Property { name: "author"; type: "QVariant" } + Property { name: "comment"; type: "QVariant" } + Property { name: "description"; type: "QVariant" } + Property { name: "category"; type: "QVariant" } + Property { name: "genre"; type: "QVariant" } + Property { name: "year"; type: "QVariant" } + Property { name: "date"; type: "QVariant" } + Property { name: "userRating"; type: "QVariant" } + Property { name: "keywords"; type: "QVariant" } + Property { name: "language"; type: "QVariant" } + Property { name: "publisher"; type: "QVariant" } + Property { name: "copyright"; type: "QVariant" } + Property { name: "parentalRating"; type: "QVariant" } + Property { name: "ratingOrganization"; type: "QVariant" } + Property { name: "size"; type: "QVariant" } + Property { name: "mediaType"; type: "QVariant" } + Property { name: "duration"; type: "QVariant" } + Property { name: "audioBitRate"; type: "QVariant" } + Property { name: "audioCodec"; type: "QVariant" } + Property { name: "averageLevel"; type: "QVariant" } + Property { name: "channelCount"; type: "QVariant" } + Property { name: "peakValue"; type: "QVariant" } + Property { name: "sampleRate"; type: "QVariant" } + Property { name: "albumTitle"; type: "QVariant" } + Property { name: "albumArtist"; type: "QVariant" } + Property { name: "contributingArtist"; type: "QVariant" } + Property { name: "composer"; type: "QVariant" } + Property { name: "conductor"; type: "QVariant" } + Property { name: "lyrics"; type: "QVariant" } + Property { name: "mood"; type: "QVariant" } + Property { name: "trackNumber"; type: "QVariant" } + Property { name: "trackCount"; type: "QVariant" } + Property { name: "coverArtUrlSmall"; type: "QVariant" } + Property { name: "coverArtUrlLarge"; type: "QVariant" } + Property { name: "resolution"; type: "QVariant" } + Property { name: "pixelAspectRatio"; type: "QVariant" } + Property { name: "videoFrameRate"; type: "QVariant" } + Property { name: "videoBitRate"; type: "QVariant" } + Property { name: "videoCodec"; type: "QVariant" } + Property { name: "posterUrl"; type: "QVariant" } + Property { name: "chapterNumber"; type: "QVariant" } + Property { name: "director"; type: "QVariant" } + Property { name: "leadPerformer"; type: "QVariant" } + Property { name: "writer"; type: "QVariant" } + Property { name: "cameraManufacturer"; type: "QVariant" } + Property { name: "cameraModel"; type: "QVariant" } + Property { name: "event"; type: "QVariant" } + Property { name: "subject"; type: "QVariant" } + Property { name: "orientation"; type: "QVariant" } + Property { name: "exposureTime"; type: "QVariant" } + Property { name: "fNumber"; type: "QVariant" } + Property { name: "exposureProgram"; type: "QVariant" } + Property { name: "isoSpeedRatings"; type: "QVariant" } + Property { name: "exposureBiasValue"; type: "QVariant" } + Property { name: "dateTimeOriginal"; type: "QVariant" } + Property { name: "dateTimeDigitized"; type: "QVariant" } + Property { name: "subjectDistance"; type: "QVariant" } + Property { name: "meteringMode"; type: "QVariant" } + Property { name: "lightSource"; type: "QVariant" } + Property { name: "flash"; type: "QVariant" } + Property { name: "focalLength"; type: "QVariant" } + Property { name: "exposureMode"; type: "QVariant" } + Property { name: "whiteBalance"; type: "QVariant" } + Property { name: "digitalZoomRatio"; type: "QVariant" } + Property { name: "focalLengthIn35mmFilm"; type: "QVariant" } + Property { name: "sceneCaptureType"; type: "QVariant" } + Property { name: "gainControl"; type: "QVariant" } + Property { name: "contrast"; type: "QVariant" } + Property { name: "saturation"; type: "QVariant" } + Property { name: "sharpness"; type: "QVariant" } + Property { name: "deviceSettingDescription"; type: "QVariant" } + Property { name: "gpsLatitude"; type: "QVariant" } + Property { name: "gpsLongitude"; type: "QVariant" } + Property { name: "gpsAltitude"; type: "QVariant" } + Property { name: "gpsTimeStamp"; type: "QVariant" } + Property { name: "gpsSatellites"; type: "QVariant" } + Property { name: "gpsStatus"; type: "QVariant" } + Property { name: "gpsDOP"; type: "QVariant" } + Property { name: "gpsSpeed"; type: "QVariant" } + Property { name: "gpsTrack"; type: "QVariant" } + Property { name: "gpsTrackRef"; type: "QVariant" } + Property { name: "gpsImgDirection"; type: "QVariant" } + Property { name: "gpsImgDirectionRef"; type: "QVariant" } + Property { name: "gpsMapDatum"; type: "QVariant" } + Property { name: "gpsProcessingMethod"; type: "QVariant" } + Property { name: "gpsAreaInformation"; type: "QVariant" } + Signal { name: "metaDataChanged" } + } + Component { + name: "QDeclarativeMultimediaGlobal" + prototype: "QObject" + exports: ["QtMultimedia/QtMultimedia 5.4"] + isCreatable: false + isSingleton: true + exportMetaObjectRevisions: [0] + Property { name: "defaultCamera"; type: "QJSValue"; isReadonly: true } + Property { name: "availableCameras"; type: "QJSValue"; isReadonly: true } + } + Component { + name: "QDeclarativePlaylist" + defaultProperty: "items" + prototype: "QAbstractListModel" + exports: ["QtMultimedia/Playlist 5.6", "QtMultimedia/Playlist 5.7"] + exportMetaObjectRevisions: [0, 1] + Enum { + name: "PlaybackMode" + values: { + "CurrentItemOnce": 0, + "CurrentItemInLoop": 1, + "Sequential": 2, + "Loop": 3, + "Random": 4 + } + } + Enum { + name: "Error" + values: { + "NoError": 0, + "FormatError": 1, + "FormatNotSupportedError": 2, + "NetworkError": 3, + "AccessDeniedError": 4 + } + } + Property { name: "playbackMode"; type: "PlaybackMode" } + Property { name: "currentItemSource"; type: "QUrl"; isReadonly: true } + Property { name: "currentIndex"; type: "int" } + Property { name: "itemCount"; type: "int"; isReadonly: true } + Property { name: "readOnly"; type: "bool"; isReadonly: true } + Property { name: "error"; type: "Error"; isReadonly: true } + Property { name: "errorString"; type: "string"; isReadonly: true } + Property { name: "items"; type: "QDeclarativePlaylistItem"; isList: true; isReadonly: true } + Signal { + name: "itemAboutToBeInserted" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Signal { + name: "itemInserted" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Signal { + name: "itemAboutToBeRemoved" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Signal { + name: "itemRemoved" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Signal { + name: "itemChanged" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Signal { name: "loaded" } + Signal { name: "loadFailed" } + Signal { + name: "error" + Parameter { name: "error"; type: "QDeclarativePlaylist::Error" } + Parameter { name: "errorString"; type: "string" } + } + Method { + name: "itemSource" + type: "QUrl" + Parameter { name: "index"; type: "int" } + } + Method { + name: "nextIndex" + type: "int" + Parameter { name: "steps"; type: "int" } + } + Method { name: "nextIndex"; type: "int" } + Method { + name: "previousIndex" + type: "int" + Parameter { name: "steps"; type: "int" } + } + Method { name: "previousIndex"; type: "int" } + Method { name: "next" } + Method { name: "previous" } + Method { name: "shuffle" } + Method { + name: "load" + Parameter { name: "location"; type: "QUrl" } + Parameter { name: "format"; type: "string" } + } + Method { + name: "load" + Parameter { name: "location"; type: "QUrl" } + } + Method { + name: "save" + type: "bool" + Parameter { name: "location"; type: "QUrl" } + Parameter { name: "format"; type: "string" } + } + Method { + name: "save" + type: "bool" + Parameter { name: "location"; type: "QUrl" } + } + Method { + name: "addItem" + type: "bool" + Parameter { name: "source"; type: "QUrl" } + } + Method { + name: "addItems" + revision: 1 + type: "bool" + Parameter { name: "sources"; type: "QList" } + } + Method { + name: "insertItem" + type: "bool" + Parameter { name: "index"; type: "int" } + Parameter { name: "source"; type: "QUrl" } + } + Method { + name: "insertItems" + revision: 1 + type: "bool" + Parameter { name: "index"; type: "int" } + Parameter { name: "sources"; type: "QList" } + } + Method { + name: "moveItem" + revision: 1 + type: "bool" + Parameter { name: "from"; type: "int" } + Parameter { name: "to"; type: "int" } + } + Method { + name: "removeItem" + type: "bool" + Parameter { name: "index"; type: "int" } + } + Method { + name: "removeItems" + revision: 1 + type: "bool" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { name: "clear"; type: "bool" } + } + Component { + name: "QDeclarativePlaylistItem" + prototype: "QObject" + exports: ["QtMultimedia/PlaylistItem 5.6"] + exportMetaObjectRevisions: [0] + Property { name: "source"; type: "QUrl" } + } + Component { + name: "QDeclarativeRadio" + prototype: "QObject" + exports: ["QtMultimedia/Radio 5.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "State" + values: { + "ActiveState": 0, + "StoppedState": 1 + } + } + Enum { + name: "Band" + values: { + "AM": 0, + "FM": 1, + "SW": 2, + "LW": 3, + "FM2": 4 + } + } + Enum { + name: "Error" + values: { + "NoError": 0, + "ResourceError": 1, + "OpenError": 2, + "OutOfRangeError": 3 + } + } + Enum { + name: "StereoMode" + values: { + "ForceStereo": 0, + "ForceMono": 1, + "Auto": 2 + } + } + Enum { + name: "SearchMode" + values: { + "SearchFast": 0, + "SearchGetStationId": 1 + } + } + Enum { + name: "Availability" + values: { + "Available": 0, + "Busy": 2, + "Unavailable": 1, + "ResourceMissing": 3 + } + } + Property { name: "state"; type: "State"; isReadonly: true } + Property { name: "band"; type: "Band" } + Property { name: "frequency"; type: "int" } + Property { name: "stereo"; type: "bool"; isReadonly: true } + Property { name: "stereoMode"; type: "StereoMode" } + Property { name: "signalStrength"; type: "int"; isReadonly: true } + Property { name: "volume"; type: "int" } + Property { name: "muted"; type: "bool" } + Property { name: "searching"; type: "bool"; isReadonly: true } + Property { name: "frequencyStep"; type: "int"; isReadonly: true } + Property { name: "minimumFrequency"; type: "int"; isReadonly: true } + Property { name: "maximumFrequency"; type: "int"; isReadonly: true } + Property { name: "antennaConnected"; type: "bool"; isReadonly: true } + Property { name: "availability"; type: "Availability"; isReadonly: true } + Property { name: "radioData"; type: "QDeclarativeRadioData"; isReadonly: true; isPointer: true } + Signal { + name: "stateChanged" + Parameter { name: "state"; type: "QDeclarativeRadio::State" } + } + Signal { + name: "bandChanged" + Parameter { name: "band"; type: "QDeclarativeRadio::Band" } + } + Signal { + name: "frequencyChanged" + Parameter { name: "frequency"; type: "int" } + } + Signal { + name: "stereoStatusChanged" + Parameter { name: "stereo"; type: "bool" } + } + Signal { + name: "searchingChanged" + Parameter { name: "searching"; type: "bool" } + } + Signal { + name: "signalStrengthChanged" + Parameter { name: "signalStrength"; type: "int" } + } + Signal { + name: "volumeChanged" + Parameter { name: "volume"; type: "int" } + } + Signal { + name: "mutedChanged" + Parameter { name: "muted"; type: "bool" } + } + Signal { + name: "stationFound" + Parameter { name: "frequency"; type: "int" } + Parameter { name: "stationId"; type: "string" } + } + Signal { + name: "antennaConnectedChanged" + Parameter { name: "connectionStatus"; type: "bool" } + } + Signal { + name: "availabilityChanged" + Parameter { name: "availability"; type: "Availability" } + } + Signal { name: "errorChanged" } + Signal { + name: "error" + Parameter { name: "errorCode"; type: "QDeclarativeRadio::Error" } + } + Method { + name: "setBand" + Parameter { name: "band"; type: "QDeclarativeRadio::Band" } + } + Method { + name: "setFrequency" + Parameter { name: "frequency"; type: "int" } + } + Method { + name: "setStereoMode" + Parameter { name: "stereoMode"; type: "QDeclarativeRadio::StereoMode" } + } + Method { + name: "setVolume" + Parameter { name: "volume"; type: "int" } + } + Method { + name: "setMuted" + Parameter { name: "muted"; type: "bool" } + } + Method { name: "cancelScan" } + Method { name: "scanDown" } + Method { name: "scanUp" } + Method { name: "tuneUp" } + Method { name: "tuneDown" } + Method { + name: "searchAllStations" + Parameter { name: "searchMode"; type: "QDeclarativeRadio::SearchMode" } + } + Method { name: "searchAllStations" } + Method { name: "start" } + Method { name: "stop" } + Method { name: "isAvailable"; type: "bool" } + } + Component { + name: "QDeclarativeRadioData" + prototype: "QObject" + exports: ["QtMultimedia/RadioData 5.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "Error" + values: { + "NoError": 0, + "ResourceError": 1, + "OpenError": 2, + "OutOfRangeError": 3 + } + } + Enum { + name: "ProgramType" + values: { + "Undefined": 0, + "News": 1, + "CurrentAffairs": 2, + "Information": 3, + "Sport": 4, + "Education": 5, + "Drama": 6, + "Culture": 7, + "Science": 8, + "Varied": 9, + "PopMusic": 10, + "RockMusic": 11, + "EasyListening": 12, + "LightClassical": 13, + "SeriousClassical": 14, + "OtherMusic": 15, + "Weather": 16, + "Finance": 17, + "ChildrensProgrammes": 18, + "SocialAffairs": 19, + "Religion": 20, + "PhoneIn": 21, + "Travel": 22, + "Leisure": 23, + "JazzMusic": 24, + "CountryMusic": 25, + "NationalMusic": 26, + "OldiesMusic": 27, + "FolkMusic": 28, + "Documentary": 29, + "AlarmTest": 30, + "Alarm": 31, + "Talk": 32, + "ClassicRock": 33, + "AdultHits": 34, + "SoftRock": 35, + "Top40": 36, + "Soft": 37, + "Nostalgia": 38, + "Classical": 39, + "RhythmAndBlues": 40, + "SoftRhythmAndBlues": 41, + "Language": 42, + "ReligiousMusic": 43, + "ReligiousTalk": 44, + "Personality": 45, + "Public": 46, + "College": 47 + } + } + Enum { + name: "Availability" + values: { + "Available": 0, + "Busy": 2, + "Unavailable": 1, + "ResourceMissing": 3 + } + } + Property { name: "stationId"; type: "string"; isReadonly: true } + Property { name: "programType"; type: "QDeclarativeRadioData::ProgramType"; isReadonly: true } + Property { name: "programTypeName"; type: "string"; isReadonly: true } + Property { name: "stationName"; type: "string"; isReadonly: true } + Property { name: "radioText"; type: "string"; isReadonly: true } + Property { name: "alternativeFrequenciesEnabled"; type: "bool" } + Property { name: "availability"; type: "Availability"; isReadonly: true } + Signal { + name: "stationIdChanged" + Parameter { name: "stationId"; type: "string" } + } + Signal { + name: "programTypeChanged" + Parameter { name: "programType"; type: "QDeclarativeRadioData::ProgramType" } + } + Signal { + name: "programTypeNameChanged" + Parameter { name: "programTypeName"; type: "string" } + } + Signal { + name: "stationNameChanged" + Parameter { name: "stationName"; type: "string" } + } + Signal { + name: "radioTextChanged" + Parameter { name: "radioText"; type: "string" } + } + Signal { + name: "alternativeFrequenciesEnabledChanged" + Parameter { name: "enabled"; type: "bool" } + } + Signal { + name: "availabilityChanged" + Parameter { name: "availability"; type: "Availability" } + } + Signal { name: "errorChanged" } + Signal { + name: "error" + Parameter { name: "errorCode"; type: "QDeclarativeRadioData::Error" } + } + Method { + name: "setAlternativeFrequenciesEnabled" + Parameter { name: "enabled"; type: "bool" } + } + Method { name: "isAvailable"; type: "bool" } + } + Component { + name: "QDeclarativeTorch" + prototype: "QObject" + exports: ["QtMultimedia/Torch 5.0"] + exportMetaObjectRevisions: [0] + Property { name: "enabled"; type: "bool" } + Property { name: "power"; type: "int" } + } + Component { + name: "QDeclarativeVideoOutput" + defaultProperty: "data" + prototype: "QQuickItem" + exports: [ + "QtMultimedia/VideoOutput 5.0", + "QtMultimedia/VideoOutput 5.2" + ] + exportMetaObjectRevisions: [0, 2] + Enum { + name: "FillMode" + values: { + "Stretch": 0, + "PreserveAspectFit": 1, + "PreserveAspectCrop": 2 + } + } + Property { name: "source"; type: "QObject"; isPointer: true } + Property { name: "fillMode"; type: "FillMode" } + Property { name: "orientation"; type: "int" } + Property { name: "autoOrientation"; revision: 2; type: "bool" } + Property { name: "sourceRect"; type: "QRectF"; isReadonly: true } + Property { name: "contentRect"; type: "QRectF"; isReadonly: true } + Property { name: "filters"; type: "QAbstractVideoFilter"; isList: true; isReadonly: true } + Signal { + name: "fillModeChanged" + Parameter { type: "QDeclarativeVideoOutput::FillMode" } + } + Method { + name: "mapPointToItem" + type: "QPointF" + Parameter { name: "point"; type: "QPointF" } + } + Method { + name: "mapRectToItem" + type: "QRectF" + Parameter { name: "rectangle"; type: "QRectF" } + } + Method { + name: "mapNormalizedPointToItem" + type: "QPointF" + Parameter { name: "point"; type: "QPointF" } + } + Method { + name: "mapNormalizedRectToItem" + type: "QRectF" + Parameter { name: "rectangle"; type: "QRectF" } + } + Method { + name: "mapPointToSource" + type: "QPointF" + Parameter { name: "point"; type: "QPointF" } + } + Method { + name: "mapRectToSource" + type: "QRectF" + Parameter { name: "rectangle"; type: "QRectF" } + } + Method { + name: "mapPointToSourceNormalized" + type: "QPointF" + Parameter { name: "point"; type: "QPointF" } + } + Method { + name: "mapRectToSourceNormalized" + type: "QRectF" + Parameter { name: "rectangle"; type: "QRectF" } + } + } + Component { + name: "QMediaObject" + prototype: "QObject" + Property { name: "notifyInterval"; type: "int" } + Signal { + name: "notifyIntervalChanged" + Parameter { name: "milliSeconds"; type: "int" } + } + Signal { + name: "metaDataAvailableChanged" + Parameter { name: "available"; type: "bool" } + } + Signal { name: "metaDataChanged" } + Signal { + name: "metaDataChanged" + Parameter { name: "key"; type: "string" } + Parameter { name: "value"; type: "QVariant" } + } + Signal { + name: "availabilityChanged" + Parameter { name: "available"; type: "bool" } + } + Signal { + name: "availabilityChanged" + Parameter { name: "availability"; type: "QMultimedia::AvailabilityStatus" } + } + } + Component { + name: "QSoundEffect" + prototype: "QObject" + exports: [ + "QtMultimedia/SoundEffect 5.0", + "QtMultimedia/SoundEffect 5.3" + ] + exportMetaObjectRevisions: [0, 0] + Enum { + name: "Loop" + values: { + "Infinite": -2 + } + } + Enum { + name: "Status" + values: { + "Null": 0, + "Loading": 1, + "Ready": 2, + "Error": 3 + } + } + Property { name: "source"; type: "QUrl" } + Property { name: "loops"; type: "int" } + Property { name: "loopsRemaining"; type: "int"; isReadonly: true } + Property { name: "volume"; type: "double" } + Property { name: "muted"; type: "bool" } + Property { name: "playing"; type: "bool"; isReadonly: true } + Property { name: "status"; type: "Status"; isReadonly: true } + Property { name: "category"; type: "string" } + Signal { name: "loopCountChanged" } + Signal { name: "loadedChanged" } + Method { name: "play" } + Method { name: "stop" } + } +} diff --git a/bin/win64/QtMultimedia/qmldir b/bin/win64/QtMultimedia/qmldir new file mode 100644 index 0000000..3d2d7c4 --- /dev/null +++ b/bin/win64/QtMultimedia/qmldir @@ -0,0 +1,5 @@ +module QtMultimedia +plugin declarative_multimedia +classname QMultimediaDeclarativeModule +typeinfo plugins.qmltypes +Video 5.0 Video.qml diff --git a/bin/win64/QtQml/Models.2/modelsplugin.dll b/bin/win64/QtQml/Models.2/modelsplugin.dll new file mode 100644 index 0000000..b180b21 Binary files /dev/null and b/bin/win64/QtQml/Models.2/modelsplugin.dll differ diff --git a/bin/win64/QtQml/Models.2/plugins.qmltypes b/bin/win64/QtQml/Models.2/plugins.qmltypes new file mode 100644 index 0000000..0bd52a1 --- /dev/null +++ b/bin/win64/QtQml/Models.2/plugins.qmltypes @@ -0,0 +1,586 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by: +// 'qmlplugindump -nonrelocatable QtQml.Models 2.3' + +Module { + dependencies: [] + Component { + name: "QAbstractItemModel" + prototype: "QObject" + Enum { + name: "LayoutChangeHint" + values: { + "NoLayoutChangeHint": 0, + "VerticalSortHint": 1, + "HorizontalSortHint": 2 + } + } + Signal { + name: "dataChanged" + Parameter { name: "topLeft"; type: "QModelIndex" } + Parameter { name: "bottomRight"; type: "QModelIndex" } + Parameter { name: "roles"; type: "QVector" } + } + Signal { + name: "dataChanged" + Parameter { name: "topLeft"; type: "QModelIndex" } + Parameter { name: "bottomRight"; type: "QModelIndex" } + } + Signal { + name: "headerDataChanged" + Parameter { name: "orientation"; type: "Qt::Orientation" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "layoutChanged" + Parameter { name: "parents"; type: "QList" } + Parameter { name: "hint"; type: "QAbstractItemModel::LayoutChangeHint" } + } + Signal { + name: "layoutChanged" + Parameter { name: "parents"; type: "QList" } + } + Signal { name: "layoutChanged" } + Signal { + name: "layoutAboutToBeChanged" + Parameter { name: "parents"; type: "QList" } + Parameter { name: "hint"; type: "QAbstractItemModel::LayoutChangeHint" } + } + Signal { + name: "layoutAboutToBeChanged" + Parameter { name: "parents"; type: "QList" } + } + Signal { name: "layoutAboutToBeChanged" } + Signal { + name: "rowsAboutToBeInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "rowsInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "rowsAboutToBeRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "rowsRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsAboutToBeInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsAboutToBeRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { name: "modelAboutToBeReset" } + Signal { name: "modelReset" } + Signal { + name: "rowsAboutToBeMoved" + Parameter { name: "sourceParent"; type: "QModelIndex" } + Parameter { name: "sourceStart"; type: "int" } + Parameter { name: "sourceEnd"; type: "int" } + Parameter { name: "destinationParent"; type: "QModelIndex" } + Parameter { name: "destinationRow"; type: "int" } + } + Signal { + name: "rowsMoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + Parameter { name: "destination"; type: "QModelIndex" } + Parameter { name: "row"; type: "int" } + } + Signal { + name: "columnsAboutToBeMoved" + Parameter { name: "sourceParent"; type: "QModelIndex" } + Parameter { name: "sourceStart"; type: "int" } + Parameter { name: "sourceEnd"; type: "int" } + Parameter { name: "destinationParent"; type: "QModelIndex" } + Parameter { name: "destinationColumn"; type: "int" } + } + Signal { + name: "columnsMoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + Parameter { name: "destination"; type: "QModelIndex" } + Parameter { name: "column"; type: "int" } + } + Method { name: "submit"; type: "bool" } + Method { name: "revert" } + Method { + name: "hasIndex" + type: "bool" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "hasIndex" + type: "bool" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + } + Method { + name: "index" + type: "QModelIndex" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "index" + type: "QModelIndex" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + } + Method { + name: "parent" + type: "QModelIndex" + Parameter { name: "child"; type: "QModelIndex" } + } + Method { + name: "sibling" + type: "QModelIndex" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + Parameter { name: "idx"; type: "QModelIndex" } + } + Method { + name: "rowCount" + type: "int" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { name: "rowCount"; type: "int" } + Method { + name: "columnCount" + type: "int" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { name: "columnCount"; type: "int" } + Method { + name: "hasChildren" + type: "bool" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { name: "hasChildren"; type: "bool" } + Method { + name: "data" + type: "QVariant" + Parameter { name: "index"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + } + Method { + name: "data" + type: "QVariant" + Parameter { name: "index"; type: "QModelIndex" } + } + Method { + name: "setData" + type: "bool" + Parameter { name: "index"; type: "QModelIndex" } + Parameter { name: "value"; type: "QVariant" } + Parameter { name: "role"; type: "int" } + } + Method { + name: "setData" + type: "bool" + Parameter { name: "index"; type: "QModelIndex" } + Parameter { name: "value"; type: "QVariant" } + } + Method { + name: "headerData" + type: "QVariant" + Parameter { name: "section"; type: "int" } + Parameter { name: "orientation"; type: "Qt::Orientation" } + Parameter { name: "role"; type: "int" } + } + Method { + name: "headerData" + type: "QVariant" + Parameter { name: "section"; type: "int" } + Parameter { name: "orientation"; type: "Qt::Orientation" } + } + Method { + name: "fetchMore" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "canFetchMore" + type: "bool" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "flags" + type: "Qt::ItemFlags" + Parameter { name: "index"; type: "QModelIndex" } + } + Method { + name: "match" + type: "QModelIndexList" + Parameter { name: "start"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + Parameter { name: "value"; type: "QVariant" } + Parameter { name: "hits"; type: "int" } + Parameter { name: "flags"; type: "Qt::MatchFlags" } + } + Method { + name: "match" + type: "QModelIndexList" + Parameter { name: "start"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + Parameter { name: "value"; type: "QVariant" } + Parameter { name: "hits"; type: "int" } + } + Method { + name: "match" + type: "QModelIndexList" + Parameter { name: "start"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + Parameter { name: "value"; type: "QVariant" } + } + } + Component { name: "QAbstractListModel"; prototype: "QAbstractItemModel" } + Component { + name: "QItemSelectionModel" + prototype: "QObject" + exports: ["QtQml.Models/ItemSelectionModel 2.2"] + exportMetaObjectRevisions: [0] + Enum { + name: "SelectionFlags" + values: { + "NoUpdate": 0, + "Clear": 1, + "Select": 2, + "Deselect": 4, + "Toggle": 8, + "Current": 16, + "Rows": 32, + "Columns": 64, + "SelectCurrent": 18, + "ToggleCurrent": 24, + "ClearAndSelect": 3 + } + } + Property { name: "model"; type: "QAbstractItemModel"; isPointer: true } + Property { name: "hasSelection"; type: "bool"; isReadonly: true } + Property { name: "currentIndex"; type: "QModelIndex"; isReadonly: true } + Property { name: "selection"; type: "QItemSelection"; isReadonly: true } + Property { name: "selectedIndexes"; type: "QModelIndexList"; isReadonly: true } + Signal { + name: "selectionChanged" + Parameter { name: "selected"; type: "QItemSelection" } + Parameter { name: "deselected"; type: "QItemSelection" } + } + Signal { + name: "currentChanged" + Parameter { name: "current"; type: "QModelIndex" } + Parameter { name: "previous"; type: "QModelIndex" } + } + Signal { + name: "currentRowChanged" + Parameter { name: "current"; type: "QModelIndex" } + Parameter { name: "previous"; type: "QModelIndex" } + } + Signal { + name: "currentColumnChanged" + Parameter { name: "current"; type: "QModelIndex" } + Parameter { name: "previous"; type: "QModelIndex" } + } + Signal { + name: "modelChanged" + Parameter { name: "model"; type: "QAbstractItemModel"; isPointer: true } + } + Method { + name: "setCurrentIndex" + Parameter { name: "index"; type: "QModelIndex" } + Parameter { name: "command"; type: "QItemSelectionModel::SelectionFlags" } + } + Method { + name: "select" + Parameter { name: "index"; type: "QModelIndex" } + Parameter { name: "command"; type: "QItemSelectionModel::SelectionFlags" } + } + Method { + name: "select" + Parameter { name: "selection"; type: "QItemSelection" } + Parameter { name: "command"; type: "QItemSelectionModel::SelectionFlags" } + } + Method { name: "clear" } + Method { name: "reset" } + Method { name: "clearSelection" } + Method { name: "clearCurrentIndex" } + Method { + name: "isSelected" + type: "bool" + Parameter { name: "index"; type: "QModelIndex" } + } + Method { + name: "isRowSelected" + type: "bool" + Parameter { name: "row"; type: "int" } + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "isColumnSelected" + type: "bool" + Parameter { name: "column"; type: "int" } + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "rowIntersectsSelection" + type: "bool" + Parameter { name: "row"; type: "int" } + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "columnIntersectsSelection" + type: "bool" + Parameter { name: "column"; type: "int" } + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "selectedRows" + type: "QModelIndexList" + Parameter { name: "column"; type: "int" } + } + Method { name: "selectedRows"; type: "QModelIndexList" } + Method { + name: "selectedColumns" + type: "QModelIndexList" + Parameter { name: "row"; type: "int" } + } + Method { name: "selectedColumns"; type: "QModelIndexList" } + } + Component { + name: "QQmlDelegateModel" + defaultProperty: "delegate" + prototype: "QQmlInstanceModel" + exports: ["QtQml.Models/DelegateModel 2.1"] + exportMetaObjectRevisions: [0] + attachedType: "QQmlDelegateModelAttached" + Property { name: "model"; type: "QVariant" } + Property { name: "delegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "filterOnGroup"; type: "string" } + Property { name: "items"; type: "QQmlDelegateModelGroup"; isReadonly: true; isPointer: true } + Property { + name: "persistedItems" + type: "QQmlDelegateModelGroup" + isReadonly: true + isPointer: true + } + Property { name: "groups"; type: "QQmlDelegateModelGroup"; isList: true; isReadonly: true } + Property { name: "parts"; type: "QObject"; isReadonly: true; isPointer: true } + Property { name: "rootIndex"; type: "QVariant" } + Signal { name: "filterGroupChanged" } + Signal { name: "defaultGroupsChanged" } + Method { + name: "modelIndex" + type: "QVariant" + Parameter { name: "idx"; type: "int" } + } + Method { name: "parentModelIndex"; type: "QVariant" } + } + Component { + name: "QQmlDelegateModelAttached" + prototype: "QObject" + Property { name: "model"; type: "QQmlDelegateModel"; isReadonly: true; isPointer: true } + Property { name: "groups"; type: "QStringList" } + Property { name: "isUnresolved"; type: "bool"; isReadonly: true } + Signal { name: "unresolvedChanged" } + } + Component { + name: "QQmlDelegateModelGroup" + prototype: "QObject" + exports: ["QtQml.Models/DelegateModelGroup 2.1"] + exportMetaObjectRevisions: [0] + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "name"; type: "string" } + Property { name: "includeByDefault"; type: "bool" } + Signal { name: "defaultIncludeChanged" } + Signal { + name: "changed" + Parameter { name: "removed"; type: "QQmlV4Handle" } + Parameter { name: "inserted"; type: "QQmlV4Handle" } + } + Method { + name: "insert" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "create" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "resolve" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "remove" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "addGroups" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "removeGroups" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "setGroups" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "move" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "get" + type: "QQmlV4Handle" + Parameter { name: "index"; type: "int" } + } + } + Component { name: "QQmlDelegateModelParts"; prototype: "QObject" } + Component { + name: "QQmlListElement" + prototype: "QObject" + exports: ["QtQml.Models/ListElement 2.1"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQmlListModel" + prototype: "QAbstractListModel" + exports: ["QtQml.Models/ListModel 2.1"] + exportMetaObjectRevisions: [0] + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "dynamicRoles"; type: "bool" } + Method { name: "clear" } + Method { + name: "remove" + Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "append" + Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "insert" + Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "get" + type: "QQmlV4Handle" + Parameter { name: "index"; type: "int" } + } + Method { + name: "set" + Parameter { name: "index"; type: "int" } + Parameter { type: "QQmlV4Handle" } + } + Method { + name: "setProperty" + Parameter { name: "index"; type: "int" } + Parameter { name: "property"; type: "string" } + Parameter { name: "value"; type: "QVariant" } + } + Method { + name: "move" + Parameter { name: "from"; type: "int" } + Parameter { name: "to"; type: "int" } + Parameter { name: "count"; type: "int" } + } + Method { name: "sync" } + } + Component { + name: "QQmlObjectModel" + defaultProperty: "children" + prototype: "QQmlInstanceModel" + exports: [ + "QtQml.Models/ObjectModel 2.1", + "QtQml.Models/ObjectModel 2.3" + ] + exportMetaObjectRevisions: [0, 3] + attachedType: "QQmlObjectModelAttached" + Property { name: "children"; type: "QObject"; isList: true; isReadonly: true } + Method { name: "clear"; revision: 3 } + Method { + name: "get" + revision: 3 + type: "QObject*" + Parameter { name: "index"; type: "int" } + } + Method { + name: "append" + revision: 3 + Parameter { name: "object"; type: "QObject"; isPointer: true } + } + Method { + name: "insert" + revision: 3 + Parameter { name: "index"; type: "int" } + Parameter { name: "object"; type: "QObject"; isPointer: true } + } + Method { + name: "move" + revision: 3 + Parameter { name: "from"; type: "int" } + Parameter { name: "to"; type: "int" } + Parameter { name: "n"; type: "int" } + } + Method { + name: "move" + revision: 3 + Parameter { name: "from"; type: "int" } + Parameter { name: "to"; type: "int" } + } + Method { + name: "remove" + revision: 3 + Parameter { name: "index"; type: "int" } + Parameter { name: "n"; type: "int" } + } + Method { + name: "remove" + revision: 3 + Parameter { name: "index"; type: "int" } + } + } + Component { + name: "QQmlObjectModelAttached" + prototype: "QObject" + Property { name: "index"; type: "int"; isReadonly: true } + } +} diff --git a/bin/win64/QtQml/Models.2/qmldir b/bin/win64/QtQml/Models.2/qmldir new file mode 100644 index 0000000..2dd20b9 --- /dev/null +++ b/bin/win64/QtQml/Models.2/qmldir @@ -0,0 +1,4 @@ +module QtQml.Models +plugin modelsplugin +classname QtQmlModelsPlugin +designersupported diff --git a/bin/win64/QtQuick.2/plugins.qmltypes b/bin/win64/QtQuick.2/plugins.qmltypes new file mode 100644 index 0000000..b11906e --- /dev/null +++ b/bin/win64/QtQuick.2/plugins.qmltypes @@ -0,0 +1,4666 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by: +// 'qmlplugindump -nonrelocatable QtQuick 2.6' + +Module { + dependencies: [] + Component { + name: "QAbstractItemModel" + prototype: "QObject" + Enum { + name: "LayoutChangeHint" + values: { + "NoLayoutChangeHint": 0, + "VerticalSortHint": 1, + "HorizontalSortHint": 2 + } + } + Signal { + name: "dataChanged" + Parameter { name: "topLeft"; type: "QModelIndex" } + Parameter { name: "bottomRight"; type: "QModelIndex" } + Parameter { name: "roles"; type: "QVector" } + } + Signal { + name: "dataChanged" + Parameter { name: "topLeft"; type: "QModelIndex" } + Parameter { name: "bottomRight"; type: "QModelIndex" } + } + Signal { + name: "headerDataChanged" + Parameter { name: "orientation"; type: "Qt::Orientation" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "layoutChanged" + Parameter { name: "parents"; type: "QList" } + Parameter { name: "hint"; type: "QAbstractItemModel::LayoutChangeHint" } + } + Signal { + name: "layoutChanged" + Parameter { name: "parents"; type: "QList" } + } + Signal { name: "layoutChanged" } + Signal { + name: "layoutAboutToBeChanged" + Parameter { name: "parents"; type: "QList" } + Parameter { name: "hint"; type: "QAbstractItemModel::LayoutChangeHint" } + } + Signal { + name: "layoutAboutToBeChanged" + Parameter { name: "parents"; type: "QList" } + } + Signal { name: "layoutAboutToBeChanged" } + Signal { + name: "rowsAboutToBeInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "rowsInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "rowsAboutToBeRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "rowsRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsAboutToBeInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsAboutToBeRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { name: "modelAboutToBeReset" } + Signal { name: "modelReset" } + Signal { + name: "rowsAboutToBeMoved" + Parameter { name: "sourceParent"; type: "QModelIndex" } + Parameter { name: "sourceStart"; type: "int" } + Parameter { name: "sourceEnd"; type: "int" } + Parameter { name: "destinationParent"; type: "QModelIndex" } + Parameter { name: "destinationRow"; type: "int" } + } + Signal { + name: "rowsMoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + Parameter { name: "destination"; type: "QModelIndex" } + Parameter { name: "row"; type: "int" } + } + Signal { + name: "columnsAboutToBeMoved" + Parameter { name: "sourceParent"; type: "QModelIndex" } + Parameter { name: "sourceStart"; type: "int" } + Parameter { name: "sourceEnd"; type: "int" } + Parameter { name: "destinationParent"; type: "QModelIndex" } + Parameter { name: "destinationColumn"; type: "int" } + } + Signal { + name: "columnsMoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + Parameter { name: "destination"; type: "QModelIndex" } + Parameter { name: "column"; type: "int" } + } + Method { name: "submit"; type: "bool" } + Method { name: "revert" } + Method { + name: "hasIndex" + type: "bool" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "hasIndex" + type: "bool" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + } + Method { + name: "index" + type: "QModelIndex" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "index" + type: "QModelIndex" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + } + Method { + name: "parent" + type: "QModelIndex" + Parameter { name: "child"; type: "QModelIndex" } + } + Method { + name: "sibling" + type: "QModelIndex" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + Parameter { name: "idx"; type: "QModelIndex" } + } + Method { + name: "rowCount" + type: "int" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { name: "rowCount"; type: "int" } + Method { + name: "columnCount" + type: "int" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { name: "columnCount"; type: "int" } + Method { + name: "hasChildren" + type: "bool" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { name: "hasChildren"; type: "bool" } + Method { + name: "data" + type: "QVariant" + Parameter { name: "index"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + } + Method { + name: "data" + type: "QVariant" + Parameter { name: "index"; type: "QModelIndex" } + } + Method { + name: "setData" + type: "bool" + Parameter { name: "index"; type: "QModelIndex" } + Parameter { name: "value"; type: "QVariant" } + Parameter { name: "role"; type: "int" } + } + Method { + name: "setData" + type: "bool" + Parameter { name: "index"; type: "QModelIndex" } + Parameter { name: "value"; type: "QVariant" } + } + Method { + name: "headerData" + type: "QVariant" + Parameter { name: "section"; type: "int" } + Parameter { name: "orientation"; type: "Qt::Orientation" } + Parameter { name: "role"; type: "int" } + } + Method { + name: "headerData" + type: "QVariant" + Parameter { name: "section"; type: "int" } + Parameter { name: "orientation"; type: "Qt::Orientation" } + } + Method { + name: "fetchMore" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "canFetchMore" + type: "bool" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "flags" + type: "Qt::ItemFlags" + Parameter { name: "index"; type: "QModelIndex" } + } + Method { + name: "match" + type: "QModelIndexList" + Parameter { name: "start"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + Parameter { name: "value"; type: "QVariant" } + Parameter { name: "hits"; type: "int" } + Parameter { name: "flags"; type: "Qt::MatchFlags" } + } + Method { + name: "match" + type: "QModelIndexList" + Parameter { name: "start"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + Parameter { name: "value"; type: "QVariant" } + Parameter { name: "hits"; type: "int" } + } + Method { + name: "match" + type: "QModelIndexList" + Parameter { name: "start"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + Parameter { name: "value"; type: "QVariant" } + } + } + Component { name: "QAbstractListModel"; prototype: "QAbstractItemModel" } + Component { + name: "QDoubleValidator" + prototype: "QValidator" + Enum { + name: "Notation" + values: { + "StandardNotation": 0, + "ScientificNotation": 1 + } + } + Property { name: "bottom"; type: "double" } + Property { name: "top"; type: "double" } + Property { name: "decimals"; type: "int" } + Property { name: "notation"; type: "Notation" } + Signal { + name: "bottomChanged" + Parameter { name: "bottom"; type: "double" } + } + Signal { + name: "topChanged" + Parameter { name: "top"; type: "double" } + } + Signal { + name: "decimalsChanged" + Parameter { name: "decimals"; type: "int" } + } + Signal { + name: "notationChanged" + Parameter { name: "notation"; type: "QDoubleValidator::Notation" } + } + } + Component { + name: "QInputMethod" + prototype: "QObject" + exports: ["QtQuick/InputMethod 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "Action" + values: { + "Click": 0, + "ContextMenu": 1 + } + } + Property { name: "cursorRectangle"; type: "QRectF"; isReadonly: true } + Property { name: "keyboardRectangle"; type: "QRectF"; isReadonly: true } + Property { name: "visible"; type: "bool"; isReadonly: true } + Property { name: "animating"; type: "bool"; isReadonly: true } + Property { name: "locale"; type: "QLocale"; isReadonly: true } + Property { name: "inputDirection"; type: "Qt::LayoutDirection"; isReadonly: true } + Signal { + name: "inputDirectionChanged" + Parameter { name: "newDirection"; type: "Qt::LayoutDirection" } + } + Method { name: "show" } + Method { name: "hide" } + Method { + name: "update" + Parameter { name: "queries"; type: "Qt::InputMethodQueries" } + } + Method { name: "reset" } + Method { name: "commit" } + Method { + name: "invokeAction" + Parameter { name: "a"; type: "Action" } + Parameter { name: "cursorPosition"; type: "int" } + } + } + Component { + name: "QIntValidator" + prototype: "QValidator" + Property { name: "bottom"; type: "int" } + Property { name: "top"; type: "int" } + Signal { + name: "bottomChanged" + Parameter { name: "bottom"; type: "int" } + } + Signal { + name: "topChanged" + Parameter { name: "top"; type: "int" } + } + } + Component { + name: "QKeySequence" + exports: ["QtQuick/StandardKey 2.2"] + isCreatable: false + exportMetaObjectRevisions: [2] + Enum { + name: "StandardKey" + values: { + "UnknownKey": 0, + "HelpContents": 1, + "WhatsThis": 2, + "Open": 3, + "Close": 4, + "Save": 5, + "New": 6, + "Delete": 7, + "Cut": 8, + "Copy": 9, + "Paste": 10, + "Undo": 11, + "Redo": 12, + "Back": 13, + "Forward": 14, + "Refresh": 15, + "ZoomIn": 16, + "ZoomOut": 17, + "Print": 18, + "AddTab": 19, + "NextChild": 20, + "PreviousChild": 21, + "Find": 22, + "FindNext": 23, + "FindPrevious": 24, + "Replace": 25, + "SelectAll": 26, + "Bold": 27, + "Italic": 28, + "Underline": 29, + "MoveToNextChar": 30, + "MoveToPreviousChar": 31, + "MoveToNextWord": 32, + "MoveToPreviousWord": 33, + "MoveToNextLine": 34, + "MoveToPreviousLine": 35, + "MoveToNextPage": 36, + "MoveToPreviousPage": 37, + "MoveToStartOfLine": 38, + "MoveToEndOfLine": 39, + "MoveToStartOfBlock": 40, + "MoveToEndOfBlock": 41, + "MoveToStartOfDocument": 42, + "MoveToEndOfDocument": 43, + "SelectNextChar": 44, + "SelectPreviousChar": 45, + "SelectNextWord": 46, + "SelectPreviousWord": 47, + "SelectNextLine": 48, + "SelectPreviousLine": 49, + "SelectNextPage": 50, + "SelectPreviousPage": 51, + "SelectStartOfLine": 52, + "SelectEndOfLine": 53, + "SelectStartOfBlock": 54, + "SelectEndOfBlock": 55, + "SelectStartOfDocument": 56, + "SelectEndOfDocument": 57, + "DeleteStartOfWord": 58, + "DeleteEndOfWord": 59, + "DeleteEndOfLine": 60, + "InsertParagraphSeparator": 61, + "InsertLineSeparator": 62, + "SaveAs": 63, + "Preferences": 64, + "Quit": 65, + "FullScreen": 66, + "Deselect": 67, + "DeleteCompleteLine": 68, + "Backspace": 69, + "Cancel": 70 + } + } + } + Component { + name: "QQmlApplication" + prototype: "QObject" + Property { name: "arguments"; type: "QStringList"; isReadonly: true } + Property { name: "name"; type: "string" } + Property { name: "version"; type: "string" } + Property { name: "organization"; type: "string" } + Property { name: "domain"; type: "string" } + Signal { name: "aboutToQuit" } + Method { + name: "setName" + Parameter { name: "arg"; type: "string" } + } + Method { + name: "setVersion" + Parameter { name: "arg"; type: "string" } + } + Method { + name: "setOrganization" + Parameter { name: "arg"; type: "string" } + } + Method { + name: "setDomain" + Parameter { name: "arg"; type: "string" } + } + } + Component { + name: "QQmlDelegateModel" + defaultProperty: "delegate" + prototype: "QQmlInstanceModel" + exports: ["QtQuick/VisualDataModel 2.0"] + exportMetaObjectRevisions: [0] + attachedType: "QQmlDelegateModelAttached" + Property { name: "model"; type: "QVariant" } + Property { name: "delegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "filterOnGroup"; type: "string" } + Property { name: "items"; type: "QQmlDelegateModelGroup"; isReadonly: true; isPointer: true } + Property { + name: "persistedItems" + type: "QQmlDelegateModelGroup" + isReadonly: true + isPointer: true + } + Property { name: "groups"; type: "QQmlDelegateModelGroup"; isList: true; isReadonly: true } + Property { name: "parts"; type: "QObject"; isReadonly: true; isPointer: true } + Property { name: "rootIndex"; type: "QVariant" } + Signal { name: "filterGroupChanged" } + Signal { name: "defaultGroupsChanged" } + Method { + name: "modelIndex" + type: "QVariant" + Parameter { name: "idx"; type: "int" } + } + Method { name: "parentModelIndex"; type: "QVariant" } + } + Component { + name: "QQmlDelegateModelAttached" + prototype: "QObject" + Property { name: "model"; type: "QQmlDelegateModel"; isReadonly: true; isPointer: true } + Property { name: "groups"; type: "QStringList" } + Property { name: "isUnresolved"; type: "bool"; isReadonly: true } + Signal { name: "unresolvedChanged" } + } + Component { + name: "QQmlDelegateModelGroup" + prototype: "QObject" + exports: ["QtQuick/VisualDataGroup 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "name"; type: "string" } + Property { name: "includeByDefault"; type: "bool" } + Signal { name: "defaultIncludeChanged" } + Signal { + name: "changed" + Parameter { name: "removed"; type: "QQmlV4Handle" } + Parameter { name: "inserted"; type: "QQmlV4Handle" } + } + Method { + name: "insert" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "create" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "resolve" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "remove" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "addGroups" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "removeGroups" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "setGroups" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "move" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "get" + type: "QQmlV4Handle" + Parameter { name: "index"; type: "int" } + } + } + Component { name: "QQmlDelegateModelParts"; prototype: "QObject" } + Component { + name: "QQmlEasingValueType" + exports: ["QtQuick/Easing 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "Type" + values: { + "Linear": 0, + "InQuad": 1, + "OutQuad": 2, + "InOutQuad": 3, + "OutInQuad": 4, + "InCubic": 5, + "OutCubic": 6, + "InOutCubic": 7, + "OutInCubic": 8, + "InQuart": 9, + "OutQuart": 10, + "InOutQuart": 11, + "OutInQuart": 12, + "InQuint": 13, + "OutQuint": 14, + "InOutQuint": 15, + "OutInQuint": 16, + "InSine": 17, + "OutSine": 18, + "InOutSine": 19, + "OutInSine": 20, + "InExpo": 21, + "OutExpo": 22, + "InOutExpo": 23, + "OutInExpo": 24, + "InCirc": 25, + "OutCirc": 26, + "InOutCirc": 27, + "OutInCirc": 28, + "InElastic": 29, + "OutElastic": 30, + "InOutElastic": 31, + "OutInElastic": 32, + "InBack": 33, + "OutBack": 34, + "InOutBack": 35, + "OutInBack": 36, + "InBounce": 37, + "OutBounce": 38, + "InOutBounce": 39, + "OutInBounce": 40, + "InCurve": 41, + "OutCurve": 42, + "SineCurve": 43, + "CosineCurve": 44, + "Bezier": 45 + } + } + Property { name: "type"; type: "Type" } + Property { name: "amplitude"; type: "double" } + Property { name: "overshoot"; type: "double" } + Property { name: "period"; type: "double" } + Property { name: "bezierCurve"; type: "QVariantList" } + } + Component { + name: "QQmlListElement" + prototype: "QObject" + exports: ["QtQuick/ListElement 2.0"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQmlListModel" + prototype: "QAbstractListModel" + exports: ["QtQuick/ListModel 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "dynamicRoles"; type: "bool" } + Method { name: "clear" } + Method { + name: "remove" + Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "append" + Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "insert" + Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "get" + type: "QQmlV4Handle" + Parameter { name: "index"; type: "int" } + } + Method { + name: "set" + Parameter { name: "index"; type: "int" } + Parameter { type: "QQmlV4Handle" } + } + Method { + name: "setProperty" + Parameter { name: "index"; type: "int" } + Parameter { name: "property"; type: "string" } + Parameter { name: "value"; type: "QVariant" } + } + Method { + name: "move" + Parameter { name: "from"; type: "int" } + Parameter { name: "to"; type: "int" } + Parameter { name: "count"; type: "int" } + } + Method { name: "sync" } + } + Component { + name: "QQmlObjectModel" + defaultProperty: "children" + prototype: "QQmlInstanceModel" + exports: ["QtQuick/VisualItemModel 2.0"] + exportMetaObjectRevisions: [0] + attachedType: "QQmlObjectModelAttached" + Property { name: "children"; type: "QObject"; isList: true; isReadonly: true } + Method { name: "clear"; revision: 3 } + Method { + name: "get" + revision: 3 + type: "QObject*" + Parameter { name: "index"; type: "int" } + } + Method { + name: "append" + revision: 3 + Parameter { name: "object"; type: "QObject"; isPointer: true } + } + Method { + name: "insert" + revision: 3 + Parameter { name: "index"; type: "int" } + Parameter { name: "object"; type: "QObject"; isPointer: true } + } + Method { + name: "move" + revision: 3 + Parameter { name: "from"; type: "int" } + Parameter { name: "to"; type: "int" } + Parameter { name: "n"; type: "int" } + } + Method { + name: "move" + revision: 3 + Parameter { name: "from"; type: "int" } + Parameter { name: "to"; type: "int" } + } + Method { + name: "remove" + revision: 3 + Parameter { name: "index"; type: "int" } + Parameter { name: "n"; type: "int" } + } + Method { + name: "remove" + revision: 3 + Parameter { name: "index"; type: "int" } + } + } + Component { + name: "QQmlObjectModelAttached" + prototype: "QObject" + Property { name: "index"; type: "int"; isReadonly: true } + } + Component { + name: "QQuickAbstractAnimation" + prototype: "QObject" + exports: ["QtQuick/Animation 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "Loops" + values: { + "Infinite": -2 + } + } + Property { name: "running"; type: "bool" } + Property { name: "paused"; type: "bool" } + Property { name: "alwaysRunToEnd"; type: "bool" } + Property { name: "loops"; type: "int" } + Signal { name: "started" } + Signal { name: "stopped" } + Signal { + name: "runningChanged" + Parameter { type: "bool" } + } + Signal { + name: "pausedChanged" + Parameter { type: "bool" } + } + Signal { + name: "alwaysRunToEndChanged" + Parameter { type: "bool" } + } + Signal { + name: "loopCountChanged" + Parameter { type: "int" } + } + Method { name: "restart" } + Method { name: "start" } + Method { name: "pause" } + Method { name: "resume" } + Method { name: "stop" } + Method { name: "complete" } + } + Component { + name: "QQuickAccessibleAttached" + prototype: "QObject" + exports: ["QtQuick/Accessible 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Property { name: "role"; type: "QAccessible::Role" } + Property { name: "name"; type: "string" } + Property { name: "description"; type: "string" } + Property { name: "ignored"; type: "bool" } + Property { name: "checkable"; type: "bool" } + Property { name: "checked"; type: "bool" } + Property { name: "editable"; type: "bool" } + Property { name: "focusable"; type: "bool" } + Property { name: "focused"; type: "bool" } + Property { name: "multiLine"; type: "bool" } + Property { name: "readOnly"; type: "bool" } + Property { name: "selected"; type: "bool" } + Property { name: "selectable"; type: "bool" } + Property { name: "pressed"; type: "bool" } + Property { name: "checkStateMixed"; type: "bool" } + Property { name: "defaultButton"; type: "bool" } + Property { name: "passwordEdit"; type: "bool" } + Property { name: "selectableText"; type: "bool" } + Property { name: "searchEdit"; type: "bool" } + Signal { + name: "checkableChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "checkedChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "editableChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "focusableChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "focusedChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "multiLineChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "readOnlyChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "selectedChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "selectableChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "pressedChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "checkStateMixedChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "defaultButtonChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "passwordEditChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "selectableTextChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "searchEditChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { name: "pressAction" } + Signal { name: "toggleAction" } + Signal { name: "increaseAction" } + Signal { name: "decreaseAction" } + Signal { name: "scrollUpAction" } + Signal { name: "scrollDownAction" } + Signal { name: "scrollLeftAction" } + Signal { name: "scrollRightAction" } + Signal { name: "previousPageAction" } + Signal { name: "nextPageAction" } + Method { name: "valueChanged" } + Method { name: "cursorPositionChanged" } + Method { + name: "setIgnored" + Parameter { name: "ignored"; type: "bool" } + } + } + Component { + name: "QQuickAnchorAnimation" + prototype: "QQuickAbstractAnimation" + exports: ["QtQuick/AnchorAnimation 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "targets"; type: "QQuickItem"; isList: true; isReadonly: true } + Property { name: "duration"; type: "int" } + Property { name: "easing"; type: "QEasingCurve" } + Signal { + name: "durationChanged" + Parameter { type: "int" } + } + Signal { + name: "easingChanged" + Parameter { type: "QEasingCurve" } + } + } + Component { + name: "QQuickAnchorChanges" + prototype: "QQuickStateOperation" + exports: ["QtQuick/AnchorChanges 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "target"; type: "QQuickItem"; isPointer: true } + Property { name: "anchors"; type: "QQuickAnchorSet"; isReadonly: true; isPointer: true } + } + Component { + name: "QQuickAnchorSet" + prototype: "QObject" + Property { name: "left"; type: "QQmlScriptString" } + Property { name: "right"; type: "QQmlScriptString" } + Property { name: "horizontalCenter"; type: "QQmlScriptString" } + Property { name: "top"; type: "QQmlScriptString" } + Property { name: "bottom"; type: "QQmlScriptString" } + Property { name: "verticalCenter"; type: "QQmlScriptString" } + Property { name: "baseline"; type: "QQmlScriptString" } + } + Component { + name: "QQuickAnchors" + prototype: "QObject" + Property { name: "left"; type: "QQuickAnchorLine" } + Property { name: "right"; type: "QQuickAnchorLine" } + Property { name: "horizontalCenter"; type: "QQuickAnchorLine" } + Property { name: "top"; type: "QQuickAnchorLine" } + Property { name: "bottom"; type: "QQuickAnchorLine" } + Property { name: "verticalCenter"; type: "QQuickAnchorLine" } + Property { name: "baseline"; type: "QQuickAnchorLine" } + Property { name: "margins"; type: "double" } + Property { name: "leftMargin"; type: "double" } + Property { name: "rightMargin"; type: "double" } + Property { name: "horizontalCenterOffset"; type: "double" } + Property { name: "topMargin"; type: "double" } + Property { name: "bottomMargin"; type: "double" } + Property { name: "verticalCenterOffset"; type: "double" } + Property { name: "baselineOffset"; type: "double" } + Property { name: "fill"; type: "QQuickItem"; isPointer: true } + Property { name: "centerIn"; type: "QQuickItem"; isPointer: true } + Property { name: "alignWhenCentered"; type: "bool" } + Signal { name: "centerAlignedChanged" } + } + Component { + name: "QQuickAnimatedImage" + defaultProperty: "data" + prototype: "QQuickImage" + exports: ["QtQuick/AnimatedImage 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "playing"; type: "bool" } + Property { name: "paused"; type: "bool" } + Property { name: "currentFrame"; type: "int" } + Property { name: "frameCount"; type: "int"; isReadonly: true } + Property { name: "sourceSize"; type: "QSize"; isReadonly: true } + Signal { name: "frameChanged" } + } + Component { + name: "QQuickAnimatedSprite" + defaultProperty: "data" + prototype: "QQuickItem" + exports: ["QtQuick/AnimatedSprite 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "LoopParameters" + values: { + "Infinite": -1 + } + } + Property { name: "running"; type: "bool" } + Property { name: "interpolate"; type: "bool" } + Property { name: "source"; type: "QUrl" } + Property { name: "reverse"; type: "bool" } + Property { name: "frameSync"; type: "bool" } + Property { name: "frameCount"; type: "int" } + Property { name: "frameHeight"; type: "int" } + Property { name: "frameWidth"; type: "int" } + Property { name: "frameX"; type: "int" } + Property { name: "frameY"; type: "int" } + Property { name: "frameRate"; type: "double" } + Property { name: "frameDuration"; type: "int" } + Property { name: "loops"; type: "int" } + Property { name: "paused"; type: "bool" } + Property { name: "currentFrame"; type: "int" } + Signal { + name: "pausedChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "runningChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "interpolateChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "sourceChanged" + Parameter { name: "arg"; type: "QUrl" } + } + Signal { + name: "reverseChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "frameSyncChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "frameCountChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "frameHeightChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "frameWidthChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "frameXChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "frameYChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "frameRateChanged" + Parameter { name: "arg"; type: "double" } + } + Signal { + name: "frameDurationChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "loopsChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "currentFrameChanged" + Parameter { name: "arg"; type: "int" } + } + Method { name: "start" } + Method { name: "stop" } + Method { name: "restart" } + Method { + name: "advance" + Parameter { name: "frames"; type: "int" } + } + Method { name: "advance" } + Method { name: "pause" } + Method { name: "resume" } + Method { + name: "setRunning" + Parameter { name: "arg"; type: "bool" } + } + Method { + name: "setPaused" + Parameter { name: "arg"; type: "bool" } + } + Method { + name: "setInterpolate" + Parameter { name: "arg"; type: "bool" } + } + Method { + name: "setSource" + Parameter { name: "arg"; type: "QUrl" } + } + Method { + name: "setReverse" + Parameter { name: "arg"; type: "bool" } + } + Method { + name: "setFrameSync" + Parameter { name: "arg"; type: "bool" } + } + Method { + name: "setFrameCount" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setFrameHeight" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setFrameWidth" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setFrameX" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setFrameY" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setFrameRate" + Parameter { name: "arg"; type: "double" } + } + Method { + name: "setFrameDuration" + Parameter { name: "arg"; type: "int" } + } + Method { name: "resetFrameRate" } + Method { name: "resetFrameDuration" } + Method { + name: "setLoops" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setCurrentFrame" + Parameter { name: "arg"; type: "int" } + } + } + Component { + name: "QQuickAnimationController" + defaultProperty: "animation" + prototype: "QObject" + exports: ["QtQuick/AnimationController 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "progress"; type: "double" } + Property { name: "animation"; type: "QQuickAbstractAnimation"; isPointer: true } + Method { name: "reload" } + Method { name: "completeToBeginning" } + Method { name: "completeToEnd" } + } + Component { + name: "QQuickAnimationGroup" + defaultProperty: "animations" + prototype: "QQuickAbstractAnimation" + Property { name: "animations"; type: "QQuickAbstractAnimation"; isList: true; isReadonly: true } + } + Component { + name: "QQuickAnimator" + prototype: "QQuickAbstractAnimation" + exports: ["QtQuick/Animator 2.2"] + isCreatable: false + exportMetaObjectRevisions: [0] + Property { name: "target"; type: "QQuickItem"; isPointer: true } + Property { name: "easing"; type: "QEasingCurve" } + Property { name: "duration"; type: "int" } + Property { name: "to"; type: "double" } + Property { name: "from"; type: "double" } + Signal { + name: "targetItemChanged" + Parameter { type: "QQuickItem"; isPointer: true } + } + Signal { + name: "durationChanged" + Parameter { name: "duration"; type: "int" } + } + Signal { + name: "easingChanged" + Parameter { name: "curve"; type: "QEasingCurve" } + } + Signal { + name: "toChanged" + Parameter { name: "to"; type: "double" } + } + Signal { + name: "fromChanged" + Parameter { name: "from"; type: "double" } + } + } + Component { + name: "QQuickApplication" + prototype: "QQmlApplication" + exports: ["QtQuick/Application 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Property { name: "active"; type: "bool"; isReadonly: true } + Property { name: "layoutDirection"; type: "Qt::LayoutDirection"; isReadonly: true } + Property { name: "supportsMultipleWindows"; type: "bool"; isReadonly: true } + Property { name: "state"; type: "Qt::ApplicationState"; isReadonly: true } + Signal { + name: "stateChanged" + Parameter { name: "state"; type: "Qt::ApplicationState" } + } + } + Component { + name: "QQuickBasePositioner" + defaultProperty: "data" + prototype: "QQuickImplicitSizeItem" + exports: ["QtQuick/Positioner 2.0", "QtQuick/Positioner 2.6"] + isCreatable: false + exportMetaObjectRevisions: [0, 6] + attachedType: "QQuickPositionerAttached" + Property { name: "spacing"; type: "double" } + Property { name: "populate"; type: "QQuickTransition"; isPointer: true } + Property { name: "move"; type: "QQuickTransition"; isPointer: true } + Property { name: "add"; type: "QQuickTransition"; isPointer: true } + Property { name: "padding"; revision: 6; type: "double" } + Property { name: "topPadding"; revision: 6; type: "double" } + Property { name: "leftPadding"; revision: 6; type: "double" } + Property { name: "rightPadding"; revision: 6; type: "double" } + Property { name: "bottomPadding"; revision: 6; type: "double" } + Signal { name: "paddingChanged"; revision: 6 } + Signal { name: "topPaddingChanged"; revision: 6 } + Signal { name: "leftPaddingChanged"; revision: 6 } + Signal { name: "rightPaddingChanged"; revision: 6 } + Signal { name: "bottomPaddingChanged"; revision: 6 } + } + Component { + name: "QQuickBehavior" + defaultProperty: "animation" + prototype: "QObject" + exports: ["QtQuick/Behavior 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "animation"; type: "QQuickAbstractAnimation"; isPointer: true } + Property { name: "enabled"; type: "bool" } + } + Component { + name: "QQuickBorderImage" + defaultProperty: "data" + prototype: "QQuickImageBase" + exports: ["QtQuick/BorderImage 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "TileMode" + values: { + "Stretch": 0, + "Repeat": 1, + "Round": 2 + } + } + Property { name: "border"; type: "QQuickScaleGrid"; isReadonly: true; isPointer: true } + Property { name: "horizontalTileMode"; type: "TileMode" } + Property { name: "verticalTileMode"; type: "TileMode" } + Property { name: "sourceSize"; type: "QSize"; isReadonly: true } + } + Component { + name: "QQuickCanvasItem" + defaultProperty: "data" + prototype: "QQuickItem" + exports: ["QtQuick/Canvas 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "RenderTarget" + values: { + "Image": 0, + "FramebufferObject": 1 + } + } + Enum { + name: "RenderStrategy" + values: { + "Immediate": 0, + "Threaded": 1, + "Cooperative": 2 + } + } + Property { name: "available"; type: "bool"; isReadonly: true } + Property { name: "contextType"; type: "string" } + Property { name: "context"; type: "QQmlV4Handle"; isReadonly: true } + Property { name: "canvasSize"; type: "QSizeF" } + Property { name: "tileSize"; type: "QSize" } + Property { name: "canvasWindow"; type: "QRectF" } + Property { name: "renderTarget"; type: "RenderTarget" } + Property { name: "renderStrategy"; type: "RenderStrategy" } + Signal { + name: "paint" + Parameter { name: "region"; type: "QRect" } + } + Signal { name: "painted" } + Signal { name: "imageLoaded" } + Method { + name: "loadImage" + Parameter { name: "url"; type: "QUrl" } + } + Method { + name: "unloadImage" + Parameter { name: "url"; type: "QUrl" } + } + Method { + name: "isImageLoaded" + type: "bool" + Parameter { name: "url"; type: "QUrl" } + } + Method { + name: "isImageLoading" + type: "bool" + Parameter { name: "url"; type: "QUrl" } + } + Method { + name: "isImageError" + type: "bool" + Parameter { name: "url"; type: "QUrl" } + } + Method { + name: "getContext" + Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "requestAnimationFrame" + Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "cancelRequestAnimationFrame" + Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true } + } + Method { name: "requestPaint" } + Method { + name: "markDirty" + Parameter { name: "dirtyRect"; type: "QRectF" } + } + Method { name: "markDirty" } + Method { + name: "save" + type: "bool" + Parameter { name: "filename"; type: "string" } + } + Method { + name: "toDataURL" + type: "string" + Parameter { name: "type"; type: "string" } + } + Method { name: "toDataURL"; type: "string" } + } + Component { + name: "QQuickCloseEvent" + prototype: "QObject" + Property { name: "accepted"; type: "bool" } + } + Component { + name: "QQuickColorAnimation" + prototype: "QQuickPropertyAnimation" + exports: ["QtQuick/ColorAnimation 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "from"; type: "QColor" } + Property { name: "to"; type: "QColor" } + } + Component { + name: "QQuickColumn" + defaultProperty: "data" + prototype: "QQuickBasePositioner" + exports: ["QtQuick/Column 2.0", "QtQuick/Column 2.6"] + exportMetaObjectRevisions: [0, 6] + } + Component { + name: "QQuickCurve" + prototype: "QQuickPathElement" + Property { name: "x"; type: "double" } + Property { name: "y"; type: "double" } + Property { name: "relativeX"; type: "double" } + Property { name: "relativeY"; type: "double" } + } + Component { + name: "QQuickDoubleValidator" + prototype: "QDoubleValidator" + exports: ["QtQuick/DoubleValidator 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "locale"; type: "string" } + Signal { name: "localeNameChanged" } + } + Component { + name: "QQuickDrag" + prototype: "QObject" + exports: ["QtQuick/Drag 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + attachedType: "QQuickDragAttached" + Enum { + name: "DragType" + values: { + "None": 0, + "Automatic": 1, + "Internal": 2 + } + } + Enum { + name: "Axis" + values: { + "XAxis": 1, + "YAxis": 2, + "XAndYAxis": 3, + "XandYAxis": 3 + } + } + Property { name: "target"; type: "QQuickItem"; isPointer: true } + Property { name: "axis"; type: "Axis" } + Property { name: "minimumX"; type: "double" } + Property { name: "maximumX"; type: "double" } + Property { name: "minimumY"; type: "double" } + Property { name: "maximumY"; type: "double" } + Property { name: "active"; type: "bool"; isReadonly: true } + Property { name: "filterChildren"; type: "bool" } + Property { name: "smoothed"; type: "bool" } + Property { name: "threshold"; type: "double" } + } + Component { + name: "QQuickDragAttached" + prototype: "QObject" + Property { name: "active"; type: "bool" } + Property { name: "source"; type: "QObject"; isPointer: true } + Property { name: "target"; type: "QObject"; isReadonly: true; isPointer: true } + Property { name: "hotSpot"; type: "QPointF" } + Property { name: "keys"; type: "QStringList" } + Property { name: "mimeData"; type: "QVariantMap" } + Property { name: "supportedActions"; type: "Qt::DropActions" } + Property { name: "proposedAction"; type: "Qt::DropAction" } + Property { name: "dragType"; type: "QQuickDrag::DragType" } + Signal { name: "dragStarted" } + Signal { + name: "dragFinished" + Parameter { name: "dropAction"; type: "Qt::DropAction" } + } + Method { + name: "start" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "startDrag" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { name: "cancel" } + Method { name: "drop"; type: "int" } + } + Component { + name: "QQuickDropArea" + defaultProperty: "data" + prototype: "QQuickItem" + exports: ["QtQuick/DropArea 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "containsDrag"; type: "bool"; isReadonly: true } + Property { name: "keys"; type: "QStringList" } + Property { name: "drag"; type: "QQuickDropAreaDrag"; isReadonly: true; isPointer: true } + Signal { name: "sourceChanged" } + Signal { + name: "entered" + Parameter { name: "drag"; type: "QQuickDropEvent"; isPointer: true } + } + Signal { name: "exited" } + Signal { + name: "positionChanged" + Parameter { name: "drag"; type: "QQuickDropEvent"; isPointer: true } + } + Signal { + name: "dropped" + Parameter { name: "drop"; type: "QQuickDropEvent"; isPointer: true } + } + } + Component { + name: "QQuickDropAreaDrag" + prototype: "QObject" + Property { name: "x"; type: "double"; isReadonly: true } + Property { name: "y"; type: "double"; isReadonly: true } + Property { name: "source"; type: "QObject"; isReadonly: true; isPointer: true } + Signal { name: "positionChanged" } + } + Component { + name: "QQuickDropEvent" + prototype: "QObject" + Property { name: "x"; type: "double"; isReadonly: true } + Property { name: "y"; type: "double"; isReadonly: true } + Property { name: "source"; type: "QObject"; isReadonly: true; isPointer: true } + Property { name: "keys"; type: "QStringList"; isReadonly: true } + Property { name: "supportedActions"; type: "Qt::DropActions"; isReadonly: true } + Property { name: "proposedAction"; type: "Qt::DropActions"; isReadonly: true } + Property { name: "action"; type: "Qt::DropAction" } + Property { name: "accepted"; type: "bool" } + Property { name: "hasColor"; type: "bool"; isReadonly: true } + Property { name: "hasHtml"; type: "bool"; isReadonly: true } + Property { name: "hasText"; type: "bool"; isReadonly: true } + Property { name: "hasUrls"; type: "bool"; isReadonly: true } + Property { name: "colorData"; type: "QVariant"; isReadonly: true } + Property { name: "html"; type: "string"; isReadonly: true } + Property { name: "text"; type: "string"; isReadonly: true } + Property { name: "urls"; type: "QList"; isReadonly: true } + Property { name: "formats"; type: "QStringList"; isReadonly: true } + Method { + name: "getDataAsString" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "getDataAsArrayBuffer" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "acceptProposedAction" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "accept" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + } + Component { + name: "QQuickEnterKeyAttached" + prototype: "QObject" + exports: ["QtQuick/EnterKey 2.6"] + isCreatable: false + exportMetaObjectRevisions: [6] + Property { name: "type"; type: "Qt::EnterKeyType" } + } + Component { + name: "QQuickFlickable" + defaultProperty: "flickableData" + prototype: "QQuickItem" + exports: ["QtQuick/Flickable 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "BoundsBehavior" + values: { + "StopAtBounds": 0, + "DragOverBounds": 1, + "OvershootBounds": 2, + "DragAndOvershootBounds": 3 + } + } + Enum { + name: "FlickableDirection" + values: { + "AutoFlickDirection": 0, + "HorizontalFlick": 1, + "VerticalFlick": 2, + "HorizontalAndVerticalFlick": 3 + } + } + Property { name: "contentWidth"; type: "double" } + Property { name: "contentHeight"; type: "double" } + Property { name: "contentX"; type: "double" } + Property { name: "contentY"; type: "double" } + Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "topMargin"; type: "double" } + Property { name: "bottomMargin"; type: "double" } + Property { name: "originY"; type: "double"; isReadonly: true } + Property { name: "leftMargin"; type: "double" } + Property { name: "rightMargin"; type: "double" } + Property { name: "originX"; type: "double"; isReadonly: true } + Property { name: "horizontalVelocity"; type: "double"; isReadonly: true } + Property { name: "verticalVelocity"; type: "double"; isReadonly: true } + Property { name: "boundsBehavior"; type: "BoundsBehavior" } + Property { name: "rebound"; type: "QQuickTransition"; isPointer: true } + Property { name: "maximumFlickVelocity"; type: "double" } + Property { name: "flickDeceleration"; type: "double" } + Property { name: "moving"; type: "bool"; isReadonly: true } + Property { name: "movingHorizontally"; type: "bool"; isReadonly: true } + Property { name: "movingVertically"; type: "bool"; isReadonly: true } + Property { name: "flicking"; type: "bool"; isReadonly: true } + Property { name: "flickingHorizontally"; type: "bool"; isReadonly: true } + Property { name: "flickingVertically"; type: "bool"; isReadonly: true } + Property { name: "dragging"; type: "bool"; isReadonly: true } + Property { name: "draggingHorizontally"; type: "bool"; isReadonly: true } + Property { name: "draggingVertically"; type: "bool"; isReadonly: true } + Property { name: "flickableDirection"; type: "FlickableDirection" } + Property { name: "interactive"; type: "bool" } + Property { name: "pressDelay"; type: "int" } + Property { name: "atXEnd"; type: "bool"; isReadonly: true } + Property { name: "atYEnd"; type: "bool"; isReadonly: true } + Property { name: "atXBeginning"; type: "bool"; isReadonly: true } + Property { name: "atYBeginning"; type: "bool"; isReadonly: true } + Property { + name: "visibleArea" + type: "QQuickFlickableVisibleArea" + isReadonly: true + isPointer: true + } + Property { name: "pixelAligned"; type: "bool" } + Property { name: "flickableData"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "flickableChildren"; type: "QQuickItem"; isList: true; isReadonly: true } + Signal { name: "isAtBoundaryChanged" } + Signal { name: "movementStarted" } + Signal { name: "movementEnded" } + Signal { name: "flickStarted" } + Signal { name: "flickEnded" } + Signal { name: "dragStarted" } + Signal { name: "dragEnded" } + Method { + name: "resizeContent" + Parameter { name: "w"; type: "double" } + Parameter { name: "h"; type: "double" } + Parameter { name: "center"; type: "QPointF" } + } + Method { name: "returnToBounds" } + Method { + name: "flick" + Parameter { name: "xVelocity"; type: "double" } + Parameter { name: "yVelocity"; type: "double" } + } + Method { name: "cancelFlick" } + } + Component { + name: "QQuickFlickableVisibleArea" + prototype: "QObject" + Property { name: "xPosition"; type: "double"; isReadonly: true } + Property { name: "yPosition"; type: "double"; isReadonly: true } + Property { name: "widthRatio"; type: "double"; isReadonly: true } + Property { name: "heightRatio"; type: "double"; isReadonly: true } + Signal { + name: "xPositionChanged" + Parameter { name: "xPosition"; type: "double" } + } + Signal { + name: "yPositionChanged" + Parameter { name: "yPosition"; type: "double" } + } + Signal { + name: "widthRatioChanged" + Parameter { name: "widthRatio"; type: "double" } + } + Signal { + name: "heightRatioChanged" + Parameter { name: "heightRatio"; type: "double" } + } + } + Component { + name: "QQuickFlipable" + defaultProperty: "data" + prototype: "QQuickItem" + exports: ["QtQuick/Flipable 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "Side" + values: { + "Front": 0, + "Back": 1 + } + } + Property { name: "front"; type: "QQuickItem"; isPointer: true } + Property { name: "back"; type: "QQuickItem"; isPointer: true } + Property { name: "side"; type: "Side"; isReadonly: true } + } + Component { + name: "QQuickFlow" + defaultProperty: "data" + prototype: "QQuickBasePositioner" + exports: ["QtQuick/Flow 2.0", "QtQuick/Flow 2.6"] + exportMetaObjectRevisions: [0, 6] + Enum { + name: "Flow" + values: { + "LeftToRight": 0, + "TopToBottom": 1 + } + } + Property { name: "flow"; type: "Flow" } + Property { name: "layoutDirection"; type: "Qt::LayoutDirection" } + Property { name: "effectiveLayoutDirection"; type: "Qt::LayoutDirection"; isReadonly: true } + } + Component { + name: "QQuickFocusScope" + defaultProperty: "data" + prototype: "QQuickItem" + exports: ["QtQuick/FocusScope 2.0"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickFontLoader" + prototype: "QObject" + exports: ["QtQuick/FontLoader 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "Status" + values: { + "Null": 0, + "Ready": 1, + "Loading": 2, + "Error": 3 + } + } + Property { name: "source"; type: "QUrl" } + Property { name: "name"; type: "string" } + Property { name: "status"; type: "Status"; isReadonly: true } + } + Component { + name: "QQuickFontMetrics" + prototype: "QObject" + exports: ["QtQuick/FontMetrics 2.4"] + exportMetaObjectRevisions: [0] + Property { name: "font"; type: "QFont" } + Property { name: "ascent"; type: "double"; isReadonly: true } + Property { name: "descent"; type: "double"; isReadonly: true } + Property { name: "height"; type: "double"; isReadonly: true } + Property { name: "leading"; type: "double"; isReadonly: true } + Property { name: "lineSpacing"; type: "double"; isReadonly: true } + Property { name: "minimumLeftBearing"; type: "double"; isReadonly: true } + Property { name: "minimumRightBearing"; type: "double"; isReadonly: true } + Property { name: "maximumCharacterWidth"; type: "double"; isReadonly: true } + Property { name: "xHeight"; type: "double"; isReadonly: true } + Property { name: "averageCharacterWidth"; type: "double"; isReadonly: true } + Property { name: "underlinePosition"; type: "double"; isReadonly: true } + Property { name: "overlinePosition"; type: "double"; isReadonly: true } + Property { name: "strikeOutPosition"; type: "double"; isReadonly: true } + Property { name: "lineWidth"; type: "double"; isReadonly: true } + Signal { + name: "fontChanged" + Parameter { name: "font"; type: "QFont" } + } + Method { + name: "advanceWidth" + type: "double" + Parameter { name: "text"; type: "string" } + } + Method { + name: "boundingRect" + type: "QRectF" + Parameter { name: "text"; type: "string" } + } + Method { + name: "tightBoundingRect" + type: "QRectF" + Parameter { name: "text"; type: "string" } + } + Method { + name: "elidedText" + type: "string" + Parameter { name: "text"; type: "string" } + Parameter { name: "mode"; type: "Qt::TextElideMode" } + Parameter { name: "width"; type: "double" } + Parameter { name: "flags"; type: "int" } + } + Method { + name: "elidedText" + type: "string" + Parameter { name: "text"; type: "string" } + Parameter { name: "mode"; type: "Qt::TextElideMode" } + Parameter { name: "width"; type: "double" } + } + } + Component { + name: "QQuickFontValueType" + exports: ["QtQuick/Font 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "FontWeight" + values: { + "Thin": 0, + "ExtraLight": 12, + "Light": 25, + "Normal": 50, + "Medium": 57, + "DemiBold": 63, + "Bold": 75, + "ExtraBold": 81, + "Black": 87 + } + } + Enum { + name: "Capitalization" + values: { + "MixedCase": 0, + "AllUppercase": 1, + "AllLowercase": 2, + "SmallCaps": 3, + "Capitalize": 4 + } + } + Property { name: "family"; type: "string" } + Property { name: "styleName"; type: "string" } + Property { name: "bold"; type: "bool" } + Property { name: "weight"; type: "FontWeight" } + Property { name: "italic"; type: "bool" } + Property { name: "underline"; type: "bool" } + Property { name: "overline"; type: "bool" } + Property { name: "strikeout"; type: "bool" } + Property { name: "pointSize"; type: "double" } + Property { name: "pixelSize"; type: "int" } + Property { name: "capitalization"; type: "Capitalization" } + Property { name: "letterSpacing"; type: "double" } + Property { name: "wordSpacing"; type: "double" } + Method { name: "toString"; type: "string" } + } + Component { + name: "QQuickGrabGestureEvent" + prototype: "QObject" + Property { name: "touchPoints"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "dragThreshold"; type: "double"; isReadonly: true } + Method { name: "grab" } + } + Component { + name: "QQuickGradient" + defaultProperty: "stops" + prototype: "QObject" + exports: ["QtQuick/Gradient 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "stops"; type: "QQuickGradientStop"; isList: true; isReadonly: true } + Signal { name: "updated" } + } + Component { + name: "QQuickGradientStop" + prototype: "QObject" + exports: ["QtQuick/GradientStop 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "position"; type: "double" } + Property { name: "color"; type: "QColor" } + } + Component { + name: "QQuickGrid" + defaultProperty: "data" + prototype: "QQuickBasePositioner" + exports: ["QtQuick/Grid 2.0", "QtQuick/Grid 2.1", "QtQuick/Grid 2.6"] + exportMetaObjectRevisions: [0, 1, 6] + Enum { + name: "Flow" + values: { + "LeftToRight": 0, + "TopToBottom": 1 + } + } + Enum { + name: "HAlignment" + values: { + "AlignLeft": 1, + "AlignRight": 2, + "AlignHCenter": 4 + } + } + Enum { + name: "VAlignment" + values: { + "AlignTop": 32, + "AlignBottom": 64, + "AlignVCenter": 128 + } + } + Property { name: "rows"; type: "int" } + Property { name: "columns"; type: "int" } + Property { name: "rowSpacing"; type: "double" } + Property { name: "columnSpacing"; type: "double" } + Property { name: "flow"; type: "Flow" } + Property { name: "layoutDirection"; type: "Qt::LayoutDirection" } + Property { name: "effectiveLayoutDirection"; type: "Qt::LayoutDirection"; isReadonly: true } + Property { name: "horizontalItemAlignment"; revision: 1; type: "HAlignment" } + Property { + name: "effectiveHorizontalItemAlignment" + revision: 1 + type: "HAlignment" + isReadonly: true + } + Property { name: "verticalItemAlignment"; revision: 1; type: "VAlignment" } + Signal { + name: "horizontalAlignmentChanged" + revision: 1 + Parameter { name: "alignment"; type: "HAlignment" } + } + Signal { + name: "effectiveHorizontalAlignmentChanged" + revision: 1 + Parameter { name: "alignment"; type: "HAlignment" } + } + Signal { + name: "verticalAlignmentChanged" + revision: 1 + Parameter { name: "alignment"; type: "VAlignment" } + } + } + Component { + name: "QQuickGridMesh" + prototype: "QQuickShaderEffectMesh" + exports: ["QtQuick/GridMesh 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "resolution"; type: "QSize" } + } + Component { + name: "QQuickGridView" + defaultProperty: "data" + prototype: "QQuickItemView" + exports: ["QtQuick/GridView 2.0", "QtQuick/GridView 2.1"] + exportMetaObjectRevisions: [0, 1] + attachedType: "QQuickGridViewAttached" + Enum { + name: "Flow" + values: { + "FlowLeftToRight": 0, + "FlowTopToBottom": 2 + } + } + Enum { + name: "SnapMode" + values: { + "NoSnap": 0, + "SnapToRow": 1, + "SnapOneRow": 2 + } + } + Property { name: "flow"; type: "Flow" } + Property { name: "cellWidth"; type: "double" } + Property { name: "cellHeight"; type: "double" } + Property { name: "snapMode"; type: "SnapMode" } + Signal { name: "highlightMoveDurationChanged" } + Method { name: "moveCurrentIndexUp" } + Method { name: "moveCurrentIndexDown" } + Method { name: "moveCurrentIndexLeft" } + Method { name: "moveCurrentIndexRight" } + } + Component { name: "QQuickGridViewAttached"; prototype: "QQuickItemViewAttached" } + Component { + name: "QQuickImage" + defaultProperty: "data" + prototype: "QQuickImageBase" + exports: [ + "QtQuick/Image 2.0", + "QtQuick/Image 2.3", + "QtQuick/Image 2.5" + ] + exportMetaObjectRevisions: [0, 1, 2] + Enum { + name: "HAlignment" + values: { + "AlignLeft": 1, + "AlignRight": 2, + "AlignHCenter": 4 + } + } + Enum { + name: "VAlignment" + values: { + "AlignTop": 32, + "AlignBottom": 64, + "AlignVCenter": 128 + } + } + Enum { + name: "FillMode" + values: { + "Stretch": 0, + "PreserveAspectFit": 1, + "PreserveAspectCrop": 2, + "Tile": 3, + "TileVertically": 4, + "TileHorizontally": 5, + "Pad": 6 + } + } + Property { name: "fillMode"; type: "FillMode" } + Property { name: "paintedWidth"; type: "double"; isReadonly: true } + Property { name: "paintedHeight"; type: "double"; isReadonly: true } + Property { name: "horizontalAlignment"; type: "HAlignment" } + Property { name: "verticalAlignment"; type: "VAlignment" } + Property { name: "mipmap"; revision: 1; type: "bool" } + Property { name: "autoTransform"; revision: 2; type: "bool" } + Signal { name: "paintedGeometryChanged" } + Signal { + name: "horizontalAlignmentChanged" + Parameter { name: "alignment"; type: "HAlignment" } + } + Signal { + name: "verticalAlignmentChanged" + Parameter { name: "alignment"; type: "VAlignment" } + } + Signal { + name: "mipmapChanged" + revision: 1 + Parameter { type: "bool" } + } + Signal { name: "autoTransformChanged"; revision: 2 } + } + Component { + name: "QQuickImageBase" + defaultProperty: "data" + prototype: "QQuickImplicitSizeItem" + Enum { + name: "Status" + values: { + "Null": 0, + "Ready": 1, + "Loading": 2, + "Error": 3 + } + } + Property { name: "status"; type: "Status"; isReadonly: true } + Property { name: "source"; type: "QUrl" } + Property { name: "progress"; type: "double"; isReadonly: true } + Property { name: "asynchronous"; type: "bool" } + Property { name: "cache"; type: "bool" } + Property { name: "sourceSize"; type: "QSize" } + Property { name: "mirror"; type: "bool" } + Signal { + name: "sourceChanged" + Parameter { type: "QUrl" } + } + Signal { + name: "statusChanged" + Parameter { type: "QQuickImageBase::Status" } + } + Signal { + name: "progressChanged" + Parameter { name: "progress"; type: "double" } + } + } + Component { + name: "QQuickImplicitSizeItem" + defaultProperty: "data" + prototype: "QQuickItem" + Property { name: "implicitWidth"; type: "double"; isReadonly: true } + Property { name: "implicitHeight"; type: "double"; isReadonly: true } + Signal { name: "implicitWidthChanged2"; revision: 1 } + Signal { name: "implicitHeightChanged2"; revision: 1 } + } + Component { + name: "QQuickIntValidator" + prototype: "QIntValidator" + exports: ["QtQuick/IntValidator 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "locale"; type: "string" } + Signal { name: "localeNameChanged" } + } + Component { + name: "QQuickItem" + defaultProperty: "data" + prototype: "QObject" + exports: ["QtQuick/Item 2.0", "QtQuick/Item 2.1", "QtQuick/Item 2.4"] + exportMetaObjectRevisions: [0, 1, 2] + Enum { + name: "TransformOrigin" + values: { + "TopLeft": 0, + "Top": 1, + "TopRight": 2, + "Left": 3, + "Center": 4, + "Right": 5, + "BottomLeft": 6, + "Bottom": 7, + "BottomRight": 8 + } + } + Property { name: "parent"; type: "QQuickItem"; isPointer: true } + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "resources"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "children"; type: "QQuickItem"; isList: true; isReadonly: true } + Property { name: "x"; type: "double" } + Property { name: "y"; type: "double" } + Property { name: "z"; type: "double" } + Property { name: "width"; type: "double" } + Property { name: "height"; type: "double" } + Property { name: "opacity"; type: "double" } + Property { name: "enabled"; type: "bool" } + Property { name: "visible"; type: "bool" } + Property { name: "visibleChildren"; type: "QQuickItem"; isList: true; isReadonly: true } + Property { name: "states"; type: "QQuickState"; isList: true; isReadonly: true } + Property { name: "transitions"; type: "QQuickTransition"; isList: true; isReadonly: true } + Property { name: "state"; type: "string" } + Property { name: "childrenRect"; type: "QRectF"; isReadonly: true } + Property { name: "anchors"; type: "QQuickAnchors"; isReadonly: true; isPointer: true } + Property { name: "left"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "right"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "horizontalCenter"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "top"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "bottom"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "verticalCenter"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "baseline"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "baselineOffset"; type: "double" } + Property { name: "clip"; type: "bool" } + Property { name: "focus"; type: "bool" } + Property { name: "activeFocus"; type: "bool"; isReadonly: true } + Property { name: "activeFocusOnTab"; revision: 1; type: "bool" } + Property { name: "rotation"; type: "double" } + Property { name: "scale"; type: "double" } + Property { name: "transformOrigin"; type: "TransformOrigin" } + Property { name: "transformOriginPoint"; type: "QPointF"; isReadonly: true } + Property { name: "transform"; type: "QQuickTransform"; isList: true; isReadonly: true } + Property { name: "smooth"; type: "bool" } + Property { name: "antialiasing"; type: "bool" } + Property { name: "implicitWidth"; type: "double" } + Property { name: "implicitHeight"; type: "double" } + Property { name: "layer"; type: "QQuickItemLayer"; isReadonly: true; isPointer: true } + Signal { + name: "childrenRectChanged" + Parameter { type: "QRectF" } + } + Signal { + name: "baselineOffsetChanged" + Parameter { type: "double" } + } + Signal { + name: "stateChanged" + Parameter { type: "string" } + } + Signal { + name: "focusChanged" + Parameter { type: "bool" } + } + Signal { + name: "activeFocusChanged" + Parameter { type: "bool" } + } + Signal { + name: "activeFocusOnTabChanged" + revision: 1 + Parameter { type: "bool" } + } + Signal { + name: "parentChanged" + Parameter { type: "QQuickItem"; isPointer: true } + } + Signal { + name: "transformOriginChanged" + Parameter { type: "TransformOrigin" } + } + Signal { + name: "smoothChanged" + Parameter { type: "bool" } + } + Signal { + name: "antialiasingChanged" + Parameter { type: "bool" } + } + Signal { + name: "clipChanged" + Parameter { type: "bool" } + } + Signal { + name: "windowChanged" + revision: 1 + Parameter { name: "window"; type: "QQuickWindow"; isPointer: true } + } + Method { name: "update" } + Method { + name: "grabToImage" + revision: 2 + type: "bool" + Parameter { name: "callback"; type: "QJSValue" } + Parameter { name: "targetSize"; type: "QSize" } + } + Method { + name: "grabToImage" + revision: 2 + type: "bool" + Parameter { name: "callback"; type: "QJSValue" } + } + Method { + name: "contains" + type: "bool" + Parameter { name: "point"; type: "QPointF" } + } + Method { + name: "mapFromItem" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "mapToItem" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { name: "forceActiveFocus" } + Method { + name: "forceActiveFocus" + Parameter { name: "reason"; type: "Qt::FocusReason" } + } + Method { + name: "nextItemInFocusChain" + revision: 1 + type: "QQuickItem*" + Parameter { name: "forward"; type: "bool" } + } + Method { name: "nextItemInFocusChain"; revision: 1; type: "QQuickItem*" } + Method { + name: "childAt" + type: "QQuickItem*" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + } + Component { + name: "QQuickItemGrabResult" + prototype: "QObject" + Property { name: "image"; type: "QImage"; isReadonly: true } + Property { name: "url"; type: "QUrl"; isReadonly: true } + Signal { name: "ready" } + Method { + name: "saveToFile" + type: "bool" + Parameter { name: "fileName"; type: "string" } + } + } + Component { + name: "QQuickItemLayer" + prototype: "QObject" + Property { name: "enabled"; type: "bool" } + Property { name: "textureSize"; type: "QSize" } + Property { name: "sourceRect"; type: "QRectF" } + Property { name: "mipmap"; type: "bool" } + Property { name: "smooth"; type: "bool" } + Property { name: "wrapMode"; type: "QQuickShaderEffectSource::WrapMode" } + Property { name: "format"; type: "QQuickShaderEffectSource::Format" } + Property { name: "samplerName"; type: "QByteArray" } + Property { name: "effect"; type: "QQmlComponent"; isPointer: true } + Property { name: "textureMirroring"; type: "QQuickShaderEffectSource::TextureMirroring" } + Signal { + name: "enabledChanged" + Parameter { name: "enabled"; type: "bool" } + } + Signal { + name: "sizeChanged" + Parameter { name: "size"; type: "QSize" } + } + Signal { + name: "mipmapChanged" + Parameter { name: "mipmap"; type: "bool" } + } + Signal { + name: "wrapModeChanged" + Parameter { name: "mode"; type: "QQuickShaderEffectSource::WrapMode" } + } + Signal { + name: "nameChanged" + Parameter { name: "name"; type: "QByteArray" } + } + Signal { + name: "effectChanged" + Parameter { name: "component"; type: "QQmlComponent"; isPointer: true } + } + Signal { + name: "smoothChanged" + Parameter { name: "smooth"; type: "bool" } + } + Signal { + name: "formatChanged" + Parameter { name: "format"; type: "QQuickShaderEffectSource::Format" } + } + Signal { + name: "sourceRectChanged" + Parameter { name: "sourceRect"; type: "QRectF" } + } + Signal { + name: "textureMirroringChanged" + Parameter { name: "mirroring"; type: "QQuickShaderEffectSource::TextureMirroring" } + } + } + Component { + name: "QQuickItemView" + defaultProperty: "flickableData" + prototype: "QQuickFlickable" + exports: ["QtQuick/ItemView 2.1", "QtQuick/ItemView 2.3"] + isCreatable: false + exportMetaObjectRevisions: [1, 2] + Enum { + name: "LayoutDirection" + values: { + "LeftToRight": 0, + "RightToLeft": 1, + "VerticalTopToBottom": 2, + "VerticalBottomToTop": 3 + } + } + Enum { + name: "VerticalLayoutDirection" + values: { + "TopToBottom": 2, + "BottomToTop": 3 + } + } + Enum { + name: "HighlightRangeMode" + values: { + "NoHighlightRange": 0, + "ApplyRange": 1, + "StrictlyEnforceRange": 2 + } + } + Enum { + name: "PositionMode" + values: { + "Beginning": 0, + "Center": 1, + "End": 2, + "Visible": 3, + "Contain": 4, + "SnapPosition": 5 + } + } + Property { name: "model"; type: "QVariant" } + Property { name: "delegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "currentIndex"; type: "int" } + Property { name: "currentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "keyNavigationWraps"; type: "bool" } + Property { name: "cacheBuffer"; type: "int" } + Property { name: "displayMarginBeginning"; revision: 2; type: "int" } + Property { name: "displayMarginEnd"; revision: 2; type: "int" } + Property { name: "layoutDirection"; type: "Qt::LayoutDirection" } + Property { name: "effectiveLayoutDirection"; type: "Qt::LayoutDirection"; isReadonly: true } + Property { name: "verticalLayoutDirection"; type: "VerticalLayoutDirection" } + Property { name: "header"; type: "QQmlComponent"; isPointer: true } + Property { name: "headerItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "footer"; type: "QQmlComponent"; isPointer: true } + Property { name: "footerItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "populate"; type: "QQuickTransition"; isPointer: true } + Property { name: "add"; type: "QQuickTransition"; isPointer: true } + Property { name: "addDisplaced"; type: "QQuickTransition"; isPointer: true } + Property { name: "move"; type: "QQuickTransition"; isPointer: true } + Property { name: "moveDisplaced"; type: "QQuickTransition"; isPointer: true } + Property { name: "remove"; type: "QQuickTransition"; isPointer: true } + Property { name: "removeDisplaced"; type: "QQuickTransition"; isPointer: true } + Property { name: "displaced"; type: "QQuickTransition"; isPointer: true } + Property { name: "highlight"; type: "QQmlComponent"; isPointer: true } + Property { name: "highlightItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "highlightFollowsCurrentItem"; type: "bool" } + Property { name: "highlightRangeMode"; type: "HighlightRangeMode" } + Property { name: "preferredHighlightBegin"; type: "double" } + Property { name: "preferredHighlightEnd"; type: "double" } + Property { name: "highlightMoveDuration"; type: "int" } + Signal { name: "populateTransitionChanged" } + Signal { name: "addTransitionChanged" } + Signal { name: "addDisplacedTransitionChanged" } + Signal { name: "moveTransitionChanged" } + Signal { name: "moveDisplacedTransitionChanged" } + Signal { name: "removeTransitionChanged" } + Signal { name: "removeDisplacedTransitionChanged" } + Signal { name: "displacedTransitionChanged" } + Method { + name: "positionViewAtIndex" + Parameter { name: "index"; type: "int" } + Parameter { name: "mode"; type: "int" } + } + Method { + name: "indexAt" + type: "int" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + Method { + name: "itemAt" + type: "QQuickItem*" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + Method { name: "positionViewAtBeginning" } + Method { name: "positionViewAtEnd" } + Method { name: "forceLayout"; revision: 1 } + } + Component { + name: "QQuickItemViewAttached" + prototype: "QObject" + Property { name: "view"; type: "QQuickItemView"; isReadonly: true; isPointer: true } + Property { name: "isCurrentItem"; type: "bool"; isReadonly: true } + Property { name: "delayRemove"; type: "bool" } + Property { name: "section"; type: "string"; isReadonly: true } + Property { name: "previousSection"; type: "string"; isReadonly: true } + Property { name: "nextSection"; type: "string"; isReadonly: true } + Signal { name: "currentItemChanged" } + Signal { name: "add" } + Signal { name: "remove" } + Signal { name: "prevSectionChanged" } + } + Component { + name: "QQuickKeyEvent" + prototype: "QObject" + Property { name: "key"; type: "int"; isReadonly: true } + Property { name: "text"; type: "string"; isReadonly: true } + Property { name: "modifiers"; type: "int"; isReadonly: true } + Property { name: "isAutoRepeat"; type: "bool"; isReadonly: true } + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "nativeScanCode"; type: "uint"; isReadonly: true } + Property { name: "accepted"; type: "bool" } + Method { + name: "matches" + revision: 2 + type: "bool" + Parameter { name: "key"; type: "QKeySequence::StandardKey" } + } + } + Component { + name: "QQuickKeyNavigationAttached" + prototype: "QObject" + exports: ["QtQuick/KeyNavigation 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "Priority" + values: { + "BeforeItem": 0, + "AfterItem": 1 + } + } + Property { name: "left"; type: "QQuickItem"; isPointer: true } + Property { name: "right"; type: "QQuickItem"; isPointer: true } + Property { name: "up"; type: "QQuickItem"; isPointer: true } + Property { name: "down"; type: "QQuickItem"; isPointer: true } + Property { name: "tab"; type: "QQuickItem"; isPointer: true } + Property { name: "backtab"; type: "QQuickItem"; isPointer: true } + Property { name: "priority"; type: "Priority" } + } + Component { + name: "QQuickKeysAttached" + prototype: "QObject" + exports: ["QtQuick/Keys 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "Priority" + values: { + "BeforeItem": 0, + "AfterItem": 1 + } + } + Property { name: "enabled"; type: "bool" } + Property { name: "forwardTo"; type: "QQuickItem"; isList: true; isReadonly: true } + Property { name: "priority"; type: "Priority" } + Signal { + name: "pressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "released" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "digit0Pressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "digit1Pressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "digit2Pressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "digit3Pressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "digit4Pressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "digit5Pressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "digit6Pressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "digit7Pressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "digit8Pressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "digit9Pressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "leftPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "rightPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "upPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "downPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "tabPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "backtabPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "asteriskPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "numberSignPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "escapePressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "returnPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "enterPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "deletePressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "spacePressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "backPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "cancelPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "selectPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "yesPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "noPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "context1Pressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "context2Pressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "context3Pressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "context4Pressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "callPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "hangupPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "flipPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "menuPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "volumeUpPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "volumeDownPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + } + Component { + name: "QQuickLayoutMirroringAttached" + prototype: "QObject" + exports: ["QtQuick/LayoutMirroring 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Property { name: "enabled"; type: "bool" } + Property { name: "childrenInherit"; type: "bool" } + } + Component { + name: "QQuickListView" + defaultProperty: "data" + prototype: "QQuickItemView" + exports: [ + "QtQuick/ListView 2.0", + "QtQuick/ListView 2.1", + "QtQuick/ListView 2.4" + ] + exportMetaObjectRevisions: [0, 1, 2] + attachedType: "QQuickListViewAttached" + Enum { + name: "Orientation" + values: { + "Horizontal": 1, + "Vertical": 2 + } + } + Enum { + name: "SnapMode" + values: { + "NoSnap": 0, + "SnapToItem": 1, + "SnapOneItem": 2 + } + } + Enum { + name: "HeaderPositioning" + values: { + "InlineHeader": 0, + "OverlayHeader": 1, + "PullBackHeader": 2 + } + } + Enum { + name: "FooterPositioning" + values: { + "InlineFooter": 0, + "OverlayFooter": 1, + "PullBackFooter": 2 + } + } + Property { name: "highlightMoveVelocity"; type: "double" } + Property { name: "highlightResizeVelocity"; type: "double" } + Property { name: "highlightResizeDuration"; type: "int" } + Property { name: "spacing"; type: "double" } + Property { name: "orientation"; type: "Orientation" } + Property { name: "section"; type: "QQuickViewSection"; isReadonly: true; isPointer: true } + Property { name: "currentSection"; type: "string"; isReadonly: true } + Property { name: "snapMode"; type: "SnapMode" } + Property { name: "headerPositioning"; revision: 2; type: "HeaderPositioning" } + Property { name: "footerPositioning"; revision: 2; type: "FooterPositioning" } + Signal { name: "headerPositioningChanged"; revision: 2 } + Signal { name: "footerPositioningChanged"; revision: 2 } + Method { name: "incrementCurrentIndex" } + Method { name: "decrementCurrentIndex" } + } + Component { name: "QQuickListViewAttached"; prototype: "QQuickItemViewAttached" } + Component { + name: "QQuickLoader" + defaultProperty: "data" + prototype: "QQuickImplicitSizeItem" + exports: ["QtQuick/Loader 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "Status" + values: { + "Null": 0, + "Ready": 1, + "Loading": 2, + "Error": 3 + } + } + Property { name: "active"; type: "bool" } + Property { name: "source"; type: "QUrl" } + Property { name: "sourceComponent"; type: "QQmlComponent"; isPointer: true } + Property { name: "item"; type: "QObject"; isReadonly: true; isPointer: true } + Property { name: "status"; type: "Status"; isReadonly: true } + Property { name: "progress"; type: "double"; isReadonly: true } + Property { name: "asynchronous"; type: "bool" } + Signal { name: "loaded" } + Method { + name: "setSource" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + } + Component { + name: "QQuickMatrix4x4" + prototype: "QQuickTransform" + exports: ["QtQuick/Matrix4x4 2.3"] + exportMetaObjectRevisions: [0] + Property { name: "matrix"; type: "QMatrix4x4" } + } + Component { + name: "QQuickMouseArea" + defaultProperty: "data" + prototype: "QQuickItem" + exports: [ + "QtQuick/MouseArea 2.0", + "QtQuick/MouseArea 2.4", + "QtQuick/MouseArea 2.5" + ] + exportMetaObjectRevisions: [0, 1, 2] + Property { name: "mouseX"; type: "double"; isReadonly: true } + Property { name: "mouseY"; type: "double"; isReadonly: true } + Property { name: "containsMouse"; type: "bool"; isReadonly: true } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "enabled"; type: "bool" } + Property { name: "scrollGestureEnabled"; revision: 2; type: "bool" } + Property { name: "pressedButtons"; type: "Qt::MouseButtons"; isReadonly: true } + Property { name: "acceptedButtons"; type: "Qt::MouseButtons" } + Property { name: "hoverEnabled"; type: "bool" } + Property { name: "drag"; type: "QQuickDrag"; isReadonly: true; isPointer: true } + Property { name: "preventStealing"; type: "bool" } + Property { name: "propagateComposedEvents"; type: "bool" } + Property { name: "cursorShape"; type: "Qt::CursorShape" } + Property { name: "containsPress"; revision: 1; type: "bool"; isReadonly: true } + Signal { name: "hoveredChanged" } + Signal { name: "scrollGestureEnabledChanged"; revision: 2 } + Signal { + name: "positionChanged" + Parameter { name: "mouse"; type: "QQuickMouseEvent"; isPointer: true } + } + Signal { + name: "mouseXChanged" + Parameter { name: "mouse"; type: "QQuickMouseEvent"; isPointer: true } + } + Signal { + name: "mouseYChanged" + Parameter { name: "mouse"; type: "QQuickMouseEvent"; isPointer: true } + } + Signal { + name: "pressed" + Parameter { name: "mouse"; type: "QQuickMouseEvent"; isPointer: true } + } + Signal { + name: "pressAndHold" + Parameter { name: "mouse"; type: "QQuickMouseEvent"; isPointer: true } + } + Signal { + name: "released" + Parameter { name: "mouse"; type: "QQuickMouseEvent"; isPointer: true } + } + Signal { + name: "clicked" + Parameter { name: "mouse"; type: "QQuickMouseEvent"; isPointer: true } + } + Signal { + name: "doubleClicked" + Parameter { name: "mouse"; type: "QQuickMouseEvent"; isPointer: true } + } + Signal { + name: "wheel" + Parameter { name: "wheel"; type: "QQuickWheelEvent"; isPointer: true } + } + Signal { name: "entered" } + Signal { name: "exited" } + Signal { name: "canceled" } + Signal { name: "containsPressChanged"; revision: 1 } + } + Component { + name: "QQuickMultiPointTouchArea" + defaultProperty: "data" + prototype: "QQuickItem" + exports: ["QtQuick/MultiPointTouchArea 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "touchPoints"; type: "QQuickTouchPoint"; isList: true; isReadonly: true } + Property { name: "minimumTouchPoints"; type: "int" } + Property { name: "maximumTouchPoints"; type: "int" } + Property { name: "mouseEnabled"; type: "bool" } + Signal { + name: "pressed" + Parameter { name: "touchPoints"; type: "QList" } + } + Signal { + name: "updated" + Parameter { name: "touchPoints"; type: "QList" } + } + Signal { + name: "released" + Parameter { name: "touchPoints"; type: "QList" } + } + Signal { + name: "canceled" + Parameter { name: "touchPoints"; type: "QList" } + } + Signal { + name: "gestureStarted" + Parameter { name: "gesture"; type: "QQuickGrabGestureEvent"; isPointer: true } + } + Signal { + name: "touchUpdated" + Parameter { name: "touchPoints"; type: "QList" } + } + } + Component { + name: "QQuickNumberAnimation" + prototype: "QQuickPropertyAnimation" + exports: ["QtQuick/NumberAnimation 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "from"; type: "double" } + Property { name: "to"; type: "double" } + } + Component { + name: "QQuickOpacityAnimator" + prototype: "QQuickAnimator" + exports: ["QtQuick/OpacityAnimator 2.2"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickOpenGLInfo" + prototype: "QObject" + exports: ["QtQuick/OpenGLInfo 2.4"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "ContextProfile" + values: { + "NoProfile": 0, + "CoreProfile": 1, + "CompatibilityProfile": 2 + } + } + Enum { + name: "RenderableType" + values: { + "Unspecified": 0, + "OpenGL": 1, + "OpenGLES": 2 + } + } + Property { name: "majorVersion"; type: "int"; isReadonly: true } + Property { name: "minorVersion"; type: "int"; isReadonly: true } + Property { name: "profile"; type: "ContextProfile"; isReadonly: true } + Property { name: "renderableType"; type: "RenderableType"; isReadonly: true } + } + Component { + name: "QQuickPackage" + defaultProperty: "data" + prototype: "QObject" + exports: ["QtQuick/Package 2.0"] + exportMetaObjectRevisions: [0] + attachedType: "QQuickPackageAttached" + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + } + Component { + name: "QQuickPackageAttached" + prototype: "QObject" + Property { name: "name"; type: "string" } + } + Component { + name: "QQuickPaintedItem" + defaultProperty: "data" + prototype: "QQuickItem" + exports: ["QtQuick/PaintedItem 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "RenderTarget" + values: { + "Image": 0, + "FramebufferObject": 1, + "InvertedYFramebufferObject": 2 + } + } + Property { name: "contentsSize"; type: "QSize" } + Property { name: "fillColor"; type: "QColor" } + Property { name: "contentsScale"; type: "double" } + Property { name: "renderTarget"; type: "RenderTarget" } + Property { name: "textureSize"; type: "QSize" } + } + Component { + name: "QQuickParallelAnimation" + defaultProperty: "animations" + prototype: "QQuickAnimationGroup" + exports: ["QtQuick/ParallelAnimation 2.0"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickParentAnimation" + defaultProperty: "animations" + prototype: "QQuickAnimationGroup" + exports: ["QtQuick/ParentAnimation 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "target"; type: "QQuickItem"; isPointer: true } + Property { name: "newParent"; type: "QQuickItem"; isPointer: true } + Property { name: "via"; type: "QQuickItem"; isPointer: true } + } + Component { + name: "QQuickParentChange" + prototype: "QQuickStateOperation" + exports: ["QtQuick/ParentChange 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "target"; type: "QQuickItem"; isPointer: true } + Property { name: "parent"; type: "QQuickItem"; isPointer: true } + Property { name: "x"; type: "QQmlScriptString" } + Property { name: "y"; type: "QQmlScriptString" } + Property { name: "width"; type: "QQmlScriptString" } + Property { name: "height"; type: "QQmlScriptString" } + Property { name: "scale"; type: "QQmlScriptString" } + Property { name: "rotation"; type: "QQmlScriptString" } + } + Component { + name: "QQuickPath" + defaultProperty: "pathElements" + prototype: "QObject" + exports: ["QtQuick/Path 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "pathElements"; type: "QQuickPathElement"; isList: true; isReadonly: true } + Property { name: "startX"; type: "double" } + Property { name: "startY"; type: "double" } + Property { name: "closed"; type: "bool"; isReadonly: true } + Signal { name: "changed" } + } + Component { + name: "QQuickPathAnimation" + prototype: "QQuickAbstractAnimation" + exports: ["QtQuick/PathAnimation 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "Orientation" + values: { + "Fixed": 0, + "RightFirst": 1, + "LeftFirst": 2, + "BottomFirst": 3, + "TopFirst": 4 + } + } + Property { name: "duration"; type: "int" } + Property { name: "easing"; type: "QEasingCurve" } + Property { name: "path"; type: "QQuickPath"; isPointer: true } + Property { name: "target"; type: "QQuickItem"; isPointer: true } + Property { name: "orientation"; type: "Orientation" } + Property { name: "anchorPoint"; type: "QPointF" } + Property { name: "orientationEntryDuration"; type: "int" } + Property { name: "orientationExitDuration"; type: "int" } + Property { name: "endRotation"; type: "double" } + Signal { + name: "durationChanged" + Parameter { type: "int" } + } + Signal { + name: "easingChanged" + Parameter { type: "QEasingCurve" } + } + Signal { + name: "orientationChanged" + Parameter { type: "Orientation" } + } + Signal { + name: "anchorPointChanged" + Parameter { type: "QPointF" } + } + Signal { + name: "orientationEntryDurationChanged" + Parameter { type: "double" } + } + Signal { + name: "orientationExitDurationChanged" + Parameter { type: "double" } + } + Signal { + name: "endRotationChanged" + Parameter { type: "double" } + } + } + Component { + name: "QQuickPathArc" + prototype: "QQuickCurve" + exports: ["QtQuick/PathArc 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "ArcDirection" + values: { + "Clockwise": 0, + "Counterclockwise": 1 + } + } + Property { name: "radiusX"; type: "double" } + Property { name: "radiusY"; type: "double" } + Property { name: "useLargeArc"; type: "bool" } + Property { name: "direction"; type: "ArcDirection" } + } + Component { + name: "QQuickPathAttribute" + prototype: "QQuickPathElement" + exports: ["QtQuick/PathAttribute 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "name"; type: "string" } + Property { name: "value"; type: "double" } + } + Component { + name: "QQuickPathCatmullRomCurve" + prototype: "QQuickCurve" + exports: ["QtQuick/PathCurve 2.0"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickPathCubic" + prototype: "QQuickCurve" + exports: ["QtQuick/PathCubic 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "control1X"; type: "double" } + Property { name: "control1Y"; type: "double" } + Property { name: "control2X"; type: "double" } + Property { name: "control2Y"; type: "double" } + Property { name: "relativeControl1X"; type: "double" } + Property { name: "relativeControl1Y"; type: "double" } + Property { name: "relativeControl2X"; type: "double" } + Property { name: "relativeControl2Y"; type: "double" } + } + Component { + name: "QQuickPathElement" + prototype: "QObject" + Signal { name: "changed" } + } + Component { + name: "QQuickPathInterpolator" + prototype: "QObject" + exports: ["QtQuick/PathInterpolator 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "path"; type: "QQuickPath"; isPointer: true } + Property { name: "progress"; type: "double" } + Property { name: "x"; type: "double"; isReadonly: true } + Property { name: "y"; type: "double"; isReadonly: true } + Property { name: "angle"; type: "double"; isReadonly: true } + } + Component { + name: "QQuickPathLine" + prototype: "QQuickCurve" + exports: ["QtQuick/PathLine 2.0"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickPathPercent" + prototype: "QQuickPathElement" + exports: ["QtQuick/PathPercent 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "value"; type: "double" } + } + Component { + name: "QQuickPathQuad" + prototype: "QQuickCurve" + exports: ["QtQuick/PathQuad 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "controlX"; type: "double" } + Property { name: "controlY"; type: "double" } + Property { name: "relativeControlX"; type: "double" } + Property { name: "relativeControlY"; type: "double" } + } + Component { + name: "QQuickPathSvg" + prototype: "QQuickCurve" + exports: ["QtQuick/PathSvg 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "path"; type: "string" } + } + Component { + name: "QQuickPathView" + defaultProperty: "data" + prototype: "QQuickItem" + exports: ["QtQuick/PathView 2.0"] + exportMetaObjectRevisions: [0] + attachedType: "QQuickPathViewAttached" + Enum { + name: "HighlightRangeMode" + values: { + "NoHighlightRange": 0, + "ApplyRange": 1, + "StrictlyEnforceRange": 2 + } + } + Enum { + name: "SnapMode" + values: { + "NoSnap": 0, + "SnapToItem": 1, + "SnapOneItem": 2 + } + } + Enum { + name: "PositionMode" + values: { + "Beginning": 0, + "Center": 1, + "End": 2, + "Contain": 4, + "SnapPosition": 5 + } + } + Property { name: "model"; type: "QVariant" } + Property { name: "path"; type: "QQuickPath"; isPointer: true } + Property { name: "currentIndex"; type: "int" } + Property { name: "currentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "offset"; type: "double" } + Property { name: "highlight"; type: "QQmlComponent"; isPointer: true } + Property { name: "highlightItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "preferredHighlightBegin"; type: "double" } + Property { name: "preferredHighlightEnd"; type: "double" } + Property { name: "highlightRangeMode"; type: "HighlightRangeMode" } + Property { name: "highlightMoveDuration"; type: "int" } + Property { name: "dragMargin"; type: "double" } + Property { name: "maximumFlickVelocity"; type: "double" } + Property { name: "flickDeceleration"; type: "double" } + Property { name: "interactive"; type: "bool" } + Property { name: "moving"; type: "bool"; isReadonly: true } + Property { name: "flicking"; type: "bool"; isReadonly: true } + Property { name: "dragging"; type: "bool"; isReadonly: true } + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "delegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "pathItemCount"; type: "int" } + Property { name: "snapMode"; type: "SnapMode" } + Property { name: "cacheItemCount"; type: "int" } + Signal { name: "snapPositionChanged" } + Signal { name: "movementStarted" } + Signal { name: "movementEnded" } + Signal { name: "flickStarted" } + Signal { name: "flickEnded" } + Signal { name: "dragStarted" } + Signal { name: "dragEnded" } + Method { name: "incrementCurrentIndex" } + Method { name: "decrementCurrentIndex" } + Method { + name: "positionViewAtIndex" + Parameter { name: "index"; type: "int" } + Parameter { name: "mode"; type: "int" } + } + Method { + name: "indexAt" + type: "int" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + Method { + name: "itemAt" + type: "QQuickItem*" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + } + Component { + name: "QQuickPathViewAttached" + prototype: "QObject" + Property { name: "view"; type: "QQuickPathView"; isReadonly: true; isPointer: true } + Property { name: "isCurrentItem"; type: "bool"; isReadonly: true } + Property { name: "onPath"; type: "bool"; isReadonly: true } + Signal { name: "currentItemChanged" } + Signal { name: "pathChanged" } + } + Component { + name: "QQuickPauseAnimation" + prototype: "QQuickAbstractAnimation" + exports: ["QtQuick/PauseAnimation 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "duration"; type: "int" } + Signal { + name: "durationChanged" + Parameter { type: "int" } + } + } + Component { + name: "QQuickPen" + prototype: "QObject" + Property { name: "width"; type: "double" } + Property { name: "color"; type: "QColor" } + Property { name: "pixelAligned"; type: "bool" } + Signal { name: "penChanged" } + } + Component { + name: "QQuickPinch" + prototype: "QObject" + exports: ["QtQuick/Pinch 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "Axis" + values: { + "NoDrag": 0, + "XAxis": 1, + "YAxis": 2, + "XAndYAxis": 3, + "XandYAxis": 3 + } + } + Property { name: "target"; type: "QQuickItem"; isPointer: true } + Property { name: "minimumScale"; type: "double" } + Property { name: "maximumScale"; type: "double" } + Property { name: "minimumRotation"; type: "double" } + Property { name: "maximumRotation"; type: "double" } + Property { name: "dragAxis"; type: "Axis" } + Property { name: "minimumX"; type: "double" } + Property { name: "maximumX"; type: "double" } + Property { name: "minimumY"; type: "double" } + Property { name: "maximumY"; type: "double" } + Property { name: "active"; type: "bool"; isReadonly: true } + } + Component { + name: "QQuickPinchArea" + defaultProperty: "data" + prototype: "QQuickItem" + exports: ["QtQuick/PinchArea 2.0", "QtQuick/PinchArea 2.5"] + exportMetaObjectRevisions: [0, 1] + Property { name: "enabled"; type: "bool" } + Property { name: "pinch"; type: "QQuickPinch"; isReadonly: true; isPointer: true } + Signal { + name: "pinchStarted" + Parameter { name: "pinch"; type: "QQuickPinchEvent"; isPointer: true } + } + Signal { + name: "pinchUpdated" + Parameter { name: "pinch"; type: "QQuickPinchEvent"; isPointer: true } + } + Signal { + name: "pinchFinished" + Parameter { name: "pinch"; type: "QQuickPinchEvent"; isPointer: true } + } + Signal { + name: "smartZoom" + revision: 1 + Parameter { name: "pinch"; type: "QQuickPinchEvent"; isPointer: true } + } + } + Component { + name: "QQuickPinchEvent" + prototype: "QObject" + Property { name: "center"; type: "QPointF"; isReadonly: true } + Property { name: "startCenter"; type: "QPointF"; isReadonly: true } + Property { name: "previousCenter"; type: "QPointF"; isReadonly: true } + Property { name: "scale"; type: "double"; isReadonly: true } + Property { name: "previousScale"; type: "double"; isReadonly: true } + Property { name: "angle"; type: "double"; isReadonly: true } + Property { name: "previousAngle"; type: "double"; isReadonly: true } + Property { name: "rotation"; type: "double"; isReadonly: true } + Property { name: "point1"; type: "QPointF"; isReadonly: true } + Property { name: "startPoint1"; type: "QPointF"; isReadonly: true } + Property { name: "point2"; type: "QPointF"; isReadonly: true } + Property { name: "startPoint2"; type: "QPointF"; isReadonly: true } + Property { name: "pointCount"; type: "int"; isReadonly: true } + Property { name: "accepted"; type: "bool" } + } + Component { + name: "QQuickPositionerAttached" + prototype: "QObject" + Property { name: "index"; type: "int"; isReadonly: true } + Property { name: "isFirstItem"; type: "bool"; isReadonly: true } + Property { name: "isLastItem"; type: "bool"; isReadonly: true } + } + Component { + name: "QQuickPropertyAction" + prototype: "QQuickAbstractAnimation" + exports: ["QtQuick/PropertyAction 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "target"; type: "QObject"; isPointer: true } + Property { name: "property"; type: "string" } + Property { name: "properties"; type: "string" } + Property { name: "targets"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "exclude"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "value"; type: "QVariant" } + Signal { + name: "valueChanged" + Parameter { type: "QVariant" } + } + Signal { + name: "propertiesChanged" + Parameter { type: "string" } + } + } + Component { + name: "QQuickPropertyAnimation" + prototype: "QQuickAbstractAnimation" + exports: ["QtQuick/PropertyAnimation 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "duration"; type: "int" } + Property { name: "from"; type: "QVariant" } + Property { name: "to"; type: "QVariant" } + Property { name: "easing"; type: "QEasingCurve" } + Property { name: "target"; type: "QObject"; isPointer: true } + Property { name: "property"; type: "string" } + Property { name: "properties"; type: "string" } + Property { name: "targets"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "exclude"; type: "QObject"; isList: true; isReadonly: true } + Signal { + name: "durationChanged" + Parameter { type: "int" } + } + Signal { + name: "fromChanged" + Parameter { type: "QVariant" } + } + Signal { + name: "toChanged" + Parameter { type: "QVariant" } + } + Signal { + name: "easingChanged" + Parameter { type: "QEasingCurve" } + } + Signal { + name: "propertiesChanged" + Parameter { type: "string" } + } + } + Component { + name: "QQuickPropertyChanges" + prototype: "QQuickStateOperation" + exports: ["QtQuick/PropertyChanges 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "target"; type: "QObject"; isPointer: true } + Property { name: "restoreEntryValues"; type: "bool" } + Property { name: "explicit"; type: "bool" } + } + Component { + name: "QQuickRectangle" + defaultProperty: "data" + prototype: "QQuickItem" + exports: ["QtQuick/Rectangle 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "color"; type: "QColor" } + Property { name: "gradient"; type: "QQuickGradient"; isPointer: true } + Property { name: "border"; type: "QQuickPen"; isReadonly: true; isPointer: true } + Property { name: "radius"; type: "double" } + } + Component { + name: "QQuickRepeater" + defaultProperty: "delegate" + prototype: "QQuickItem" + exports: ["QtQuick/Repeater 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "model"; type: "QVariant" } + Property { name: "delegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "count"; type: "int"; isReadonly: true } + Signal { + name: "itemAdded" + Parameter { name: "index"; type: "int" } + Parameter { name: "item"; type: "QQuickItem"; isPointer: true } + } + Signal { + name: "itemRemoved" + Parameter { name: "index"; type: "int" } + Parameter { name: "item"; type: "QQuickItem"; isPointer: true } + } + Method { + name: "itemAt" + type: "QQuickItem*" + Parameter { name: "index"; type: "int" } + } + } + Component { + name: "QQuickRotation" + prototype: "QQuickTransform" + exports: ["QtQuick/Rotation 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "origin"; type: "QVector3D" } + Property { name: "angle"; type: "double" } + Property { name: "axis"; type: "QVector3D" } + } + Component { + name: "QQuickRotationAnimation" + prototype: "QQuickPropertyAnimation" + exports: ["QtQuick/RotationAnimation 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "RotationDirection" + values: { + "Numerical": 0, + "Shortest": 1, + "Clockwise": 2, + "Counterclockwise": 3 + } + } + Property { name: "from"; type: "double" } + Property { name: "to"; type: "double" } + Property { name: "direction"; type: "RotationDirection" } + } + Component { + name: "QQuickRotationAnimator" + prototype: "QQuickAnimator" + exports: ["QtQuick/RotationAnimator 2.2"] + exportMetaObjectRevisions: [0] + Enum { + name: "RotationDirection" + values: { + "Numerical": 0, + "Shortest": 1, + "Clockwise": 2, + "Counterclockwise": 3 + } + } + Property { name: "direction"; type: "RotationDirection" } + Signal { + name: "directionChanged" + Parameter { name: "dir"; type: "RotationDirection" } + } + } + Component { + name: "QQuickRow" + defaultProperty: "data" + prototype: "QQuickBasePositioner" + exports: ["QtQuick/Row 2.0", "QtQuick/Row 2.6"] + exportMetaObjectRevisions: [0, 6] + Property { name: "layoutDirection"; type: "Qt::LayoutDirection" } + Property { name: "effectiveLayoutDirection"; type: "Qt::LayoutDirection"; isReadonly: true } + } + Component { + name: "QQuickScale" + prototype: "QQuickTransform" + exports: ["QtQuick/Scale 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "origin"; type: "QVector3D" } + Property { name: "xScale"; type: "double" } + Property { name: "yScale"; type: "double" } + Property { name: "zScale"; type: "double" } + Signal { name: "scaleChanged" } + } + Component { + name: "QQuickScaleAnimator" + prototype: "QQuickAnimator" + exports: ["QtQuick/ScaleAnimator 2.2"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickScaleGrid" + prototype: "QObject" + Property { name: "left"; type: "int" } + Property { name: "top"; type: "int" } + Property { name: "right"; type: "int" } + Property { name: "bottom"; type: "int" } + Signal { name: "borderChanged" } + } + Component { + name: "QQuickScriptAction" + prototype: "QQuickAbstractAnimation" + exports: ["QtQuick/ScriptAction 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "script"; type: "QQmlScriptString" } + Property { name: "scriptName"; type: "string" } + } + Component { + name: "QQuickSequentialAnimation" + defaultProperty: "animations" + prototype: "QQuickAnimationGroup" + exports: ["QtQuick/SequentialAnimation 2.0"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickShaderEffect" + defaultProperty: "data" + prototype: "QQuickItem" + exports: ["QtQuick/ShaderEffect 2.0", "QtQuick/ShaderEffect 2.4"] + exportMetaObjectRevisions: [0, 1] + Enum { + name: "CullMode" + values: { + "NoCulling": 0, + "BackFaceCulling": 1, + "FrontFaceCulling": 2 + } + } + Enum { + name: "Status" + values: { + "Compiled": 0, + "Uncompiled": 1, + "Error": 2 + } + } + Property { name: "fragmentShader"; type: "QByteArray" } + Property { name: "vertexShader"; type: "QByteArray" } + Property { name: "blending"; type: "bool" } + Property { name: "mesh"; type: "QVariant" } + Property { name: "cullMode"; type: "CullMode" } + Property { name: "log"; type: "string"; isReadonly: true } + Property { name: "status"; type: "Status"; isReadonly: true } + Property { name: "supportsAtlasTextures"; revision: 1; type: "bool" } + } + Component { + name: "QQuickShaderEffectMesh" + prototype: "QObject" + exports: ["QtQuick/ShaderEffectMesh 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Signal { name: "geometryChanged" } + } + Component { + name: "QQuickShaderEffectSource" + defaultProperty: "data" + prototype: "QQuickItem" + exports: [ + "QtQuick/ShaderEffectSource 2.0", + "QtQuick/ShaderEffectSource 2.6" + ] + exportMetaObjectRevisions: [0, 1] + Enum { + name: "WrapMode" + values: { + "ClampToEdge": 0, + "RepeatHorizontally": 1, + "RepeatVertically": 2, + "Repeat": 3 + } + } + Enum { + name: "Format" + values: { + "Alpha": 6406, + "RGB": 6407, + "RGBA": 6408 + } + } + Enum { + name: "TextureMirroring" + values: { + "NoMirroring": 0, + "MirrorHorizontally": 1, + "MirrorVertically": 2 + } + } + Property { name: "wrapMode"; type: "WrapMode" } + Property { name: "sourceItem"; type: "QQuickItem"; isPointer: true } + Property { name: "sourceRect"; type: "QRectF" } + Property { name: "textureSize"; type: "QSize" } + Property { name: "format"; type: "Format" } + Property { name: "live"; type: "bool" } + Property { name: "hideSource"; type: "bool" } + Property { name: "mipmap"; type: "bool" } + Property { name: "recursive"; type: "bool" } + Property { name: "textureMirroring"; revision: 1; type: "TextureMirroring" } + Signal { name: "scheduledUpdateCompleted" } + Method { name: "scheduleUpdate" } + } + Component { + name: "QQuickShortcut" + prototype: "QObject" + exports: ["QtQuick/Shortcut 2.5", "QtQuick/Shortcut 2.6"] + exportMetaObjectRevisions: [0, 1] + Property { name: "sequence"; type: "QVariant" } + Property { name: "nativeText"; revision: 1; type: "string"; isReadonly: true } + Property { name: "portableText"; revision: 1; type: "string"; isReadonly: true } + Property { name: "enabled"; type: "bool" } + Property { name: "autoRepeat"; type: "bool" } + Property { name: "context"; type: "Qt::ShortcutContext" } + Signal { name: "activated" } + Signal { name: "activatedAmbiguously" } + } + Component { + name: "QQuickSmoothedAnimation" + prototype: "QQuickNumberAnimation" + exports: ["QtQuick/SmoothedAnimation 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "ReversingMode" + values: { + "Eased": 0, + "Immediate": 1, + "Sync": 2 + } + } + Property { name: "velocity"; type: "double" } + Property { name: "reversingMode"; type: "ReversingMode" } + Property { name: "maximumEasingTime"; type: "double" } + } + Component { + name: "QQuickSpringAnimation" + prototype: "QQuickNumberAnimation" + exports: ["QtQuick/SpringAnimation 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "velocity"; type: "double" } + Property { name: "spring"; type: "double" } + Property { name: "damping"; type: "double" } + Property { name: "epsilon"; type: "double" } + Property { name: "modulus"; type: "double" } + Property { name: "mass"; type: "double" } + Signal { name: "syncChanged" } + } + Component { + name: "QQuickSprite" + prototype: "QQuickStochasticState" + exports: ["QtQuick/Sprite 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "source"; type: "QUrl" } + Property { name: "reverse"; type: "bool" } + Property { name: "frameSync"; type: "bool" } + Property { name: "frames"; type: "int" } + Property { name: "frameCount"; type: "int" } + Property { name: "frameHeight"; type: "int" } + Property { name: "frameWidth"; type: "int" } + Property { name: "frameX"; type: "int" } + Property { name: "frameY"; type: "int" } + Property { name: "frameRate"; type: "double" } + Property { name: "frameRateVariation"; type: "double" } + Property { name: "frameDuration"; type: "int" } + Property { name: "frameDurationVariation"; type: "int" } + Signal { + name: "sourceChanged" + Parameter { name: "arg"; type: "QUrl" } + } + Signal { + name: "frameHeightChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "frameWidthChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "reverseChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "frameCountChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "frameXChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "frameYChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "frameRateChanged" + Parameter { name: "arg"; type: "double" } + } + Signal { + name: "frameRateVariationChanged" + Parameter { name: "arg"; type: "double" } + } + Signal { + name: "frameDurationChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "frameDurationVariationChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "frameSyncChanged" + Parameter { name: "arg"; type: "bool" } + } + Method { + name: "setSource" + Parameter { name: "arg"; type: "QUrl" } + } + Method { + name: "setFrameHeight" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setFrameWidth" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setReverse" + Parameter { name: "arg"; type: "bool" } + } + Method { + name: "setFrames" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setFrameCount" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setFrameX" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setFrameY" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setFrameRate" + Parameter { name: "arg"; type: "double" } + } + Method { + name: "setFrameRateVariation" + Parameter { name: "arg"; type: "double" } + } + Method { + name: "setFrameDuration" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setFrameDurationVariation" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setFrameSync" + Parameter { name: "arg"; type: "bool" } + } + } + Component { + name: "QQuickSpriteSequence" + defaultProperty: "sprites" + prototype: "QQuickItem" + exports: ["QtQuick/SpriteSequence 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "running"; type: "bool" } + Property { name: "interpolate"; type: "bool" } + Property { name: "goalSprite"; type: "string" } + Property { name: "currentSprite"; type: "string"; isReadonly: true } + Property { name: "sprites"; type: "QQuickSprite"; isList: true; isReadonly: true } + Signal { + name: "runningChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "interpolateChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "goalSpriteChanged" + Parameter { name: "arg"; type: "string" } + } + Signal { + name: "currentSpriteChanged" + Parameter { name: "arg"; type: "string" } + } + Method { + name: "jumpTo" + Parameter { name: "sprite"; type: "string" } + } + Method { + name: "setGoalSprite" + Parameter { name: "sprite"; type: "string" } + } + Method { + name: "setRunning" + Parameter { name: "arg"; type: "bool" } + } + Method { + name: "setInterpolate" + Parameter { name: "arg"; type: "bool" } + } + } + Component { + name: "QQuickState" + defaultProperty: "changes" + prototype: "QObject" + exports: ["QtQuick/State 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "name"; type: "string" } + Property { name: "when"; type: "QQmlBinding"; isPointer: true } + Property { name: "extend"; type: "string" } + Property { name: "changes"; type: "QQuickStateOperation"; isList: true; isReadonly: true } + Signal { name: "completed" } + } + Component { + name: "QQuickStateChangeScript" + prototype: "QQuickStateOperation" + exports: ["QtQuick/StateChangeScript 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "script"; type: "QQmlScriptString" } + Property { name: "name"; type: "string" } + } + Component { + name: "QQuickStateGroup" + prototype: "QObject" + exports: ["QtQuick/StateGroup 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "state"; type: "string" } + Property { name: "states"; type: "QQuickState"; isList: true; isReadonly: true } + Property { name: "transitions"; type: "QQuickTransition"; isList: true; isReadonly: true } + Signal { + name: "stateChanged" + Parameter { type: "string" } + } + } + Component { name: "QQuickStateOperation"; prototype: "QObject" } + Component { + name: "QQuickStochasticState" + prototype: "QObject" + Property { name: "duration"; type: "int" } + Property { name: "durationVariation"; type: "int" } + Property { name: "randomStart"; type: "bool" } + Property { name: "to"; type: "QVariantMap" } + Property { name: "name"; type: "string" } + Signal { + name: "durationChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "nameChanged" + Parameter { name: "arg"; type: "string" } + } + Signal { + name: "toChanged" + Parameter { name: "arg"; type: "QVariantMap" } + } + Signal { + name: "durationVariationChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { name: "entered" } + Signal { + name: "randomStartChanged" + Parameter { name: "arg"; type: "bool" } + } + Method { + name: "setDuration" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setName" + Parameter { name: "arg"; type: "string" } + } + Method { + name: "setTo" + Parameter { name: "arg"; type: "QVariantMap" } + } + Method { + name: "setDurationVariation" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setRandomStart" + Parameter { name: "arg"; type: "bool" } + } + } + Component { + name: "QQuickSystemPalette" + prototype: "QObject" + exports: ["QtQuick/SystemPalette 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "ColorGroup" + values: { + "Active": 0, + "Inactive": 2, + "Disabled": 1 + } + } + Property { name: "colorGroup"; type: "QQuickSystemPalette::ColorGroup" } + Property { name: "window"; type: "QColor"; isReadonly: true } + Property { name: "windowText"; type: "QColor"; isReadonly: true } + Property { name: "base"; type: "QColor"; isReadonly: true } + Property { name: "text"; type: "QColor"; isReadonly: true } + Property { name: "alternateBase"; type: "QColor"; isReadonly: true } + Property { name: "button"; type: "QColor"; isReadonly: true } + Property { name: "buttonText"; type: "QColor"; isReadonly: true } + Property { name: "light"; type: "QColor"; isReadonly: true } + Property { name: "midlight"; type: "QColor"; isReadonly: true } + Property { name: "dark"; type: "QColor"; isReadonly: true } + Property { name: "mid"; type: "QColor"; isReadonly: true } + Property { name: "shadow"; type: "QColor"; isReadonly: true } + Property { name: "highlight"; type: "QColor"; isReadonly: true } + Property { name: "highlightedText"; type: "QColor"; isReadonly: true } + Signal { name: "paletteChanged" } + } + Component { + name: "QQuickText" + defaultProperty: "data" + prototype: "QQuickImplicitSizeItem" + exports: [ + "QtQuick/Text 2.0", + "QtQuick/Text 2.2", + "QtQuick/Text 2.3", + "QtQuick/Text 2.6" + ] + exportMetaObjectRevisions: [0, 2, 3, 6] + Enum { + name: "HAlignment" + values: { + "AlignLeft": 1, + "AlignRight": 2, + "AlignHCenter": 4, + "AlignJustify": 8 + } + } + Enum { + name: "VAlignment" + values: { + "AlignTop": 32, + "AlignBottom": 64, + "AlignVCenter": 128 + } + } + Enum { + name: "TextStyle" + values: { + "Normal": 0, + "Outline": 1, + "Raised": 2, + "Sunken": 3 + } + } + Enum { + name: "TextFormat" + values: { + "PlainText": 0, + "RichText": 1, + "AutoText": 2, + "StyledText": 4 + } + } + Enum { + name: "TextElideMode" + values: { + "ElideLeft": 0, + "ElideRight": 1, + "ElideMiddle": 2, + "ElideNone": 3 + } + } + Enum { + name: "WrapMode" + values: { + "NoWrap": 0, + "WordWrap": 1, + "WrapAnywhere": 3, + "WrapAtWordBoundaryOrAnywhere": 4, + "Wrap": 4 + } + } + Enum { + name: "RenderType" + values: { + "QtRendering": 0, + "NativeRendering": 1 + } + } + Enum { + name: "LineHeightMode" + values: { + "ProportionalHeight": 0, + "FixedHeight": 1 + } + } + Enum { + name: "FontSizeMode" + values: { + "FixedSize": 0, + "HorizontalFit": 1, + "VerticalFit": 2, + "Fit": 3 + } + } + Property { name: "text"; type: "string" } + Property { name: "font"; type: "QFont" } + Property { name: "color"; type: "QColor" } + Property { name: "linkColor"; type: "QColor" } + Property { name: "style"; type: "TextStyle" } + Property { name: "styleColor"; type: "QColor" } + Property { name: "horizontalAlignment"; type: "HAlignment" } + Property { name: "effectiveHorizontalAlignment"; type: "HAlignment"; isReadonly: true } + Property { name: "verticalAlignment"; type: "VAlignment" } + Property { name: "wrapMode"; type: "WrapMode" } + Property { name: "lineCount"; type: "int"; isReadonly: true } + Property { name: "truncated"; type: "bool"; isReadonly: true } + Property { name: "maximumLineCount"; type: "int" } + Property { name: "textFormat"; type: "TextFormat" } + Property { name: "elide"; type: "TextElideMode" } + Property { name: "contentWidth"; type: "double"; isReadonly: true } + Property { name: "contentHeight"; type: "double"; isReadonly: true } + Property { name: "paintedWidth"; type: "double"; isReadonly: true } + Property { name: "paintedHeight"; type: "double"; isReadonly: true } + Property { name: "lineHeight"; type: "double" } + Property { name: "lineHeightMode"; type: "LineHeightMode" } + Property { name: "baseUrl"; type: "QUrl" } + Property { name: "minimumPixelSize"; type: "int" } + Property { name: "minimumPointSize"; type: "int" } + Property { name: "fontSizeMode"; type: "FontSizeMode" } + Property { name: "renderType"; type: "RenderType" } + Property { name: "hoveredLink"; revision: 2; type: "string"; isReadonly: true } + Property { name: "padding"; revision: 6; type: "double" } + Property { name: "topPadding"; revision: 6; type: "double" } + Property { name: "leftPadding"; revision: 6; type: "double" } + Property { name: "rightPadding"; revision: 6; type: "double" } + Property { name: "bottomPadding"; revision: 6; type: "double" } + Signal { + name: "textChanged" + Parameter { name: "text"; type: "string" } + } + Signal { + name: "linkActivated" + Parameter { name: "link"; type: "string" } + } + Signal { + name: "linkHovered" + revision: 2 + Parameter { name: "link"; type: "string" } + } + Signal { + name: "fontChanged" + Parameter { name: "font"; type: "QFont" } + } + Signal { + name: "styleChanged" + Parameter { name: "style"; type: "TextStyle" } + } + Signal { + name: "horizontalAlignmentChanged" + Parameter { name: "alignment"; type: "HAlignment" } + } + Signal { + name: "verticalAlignmentChanged" + Parameter { name: "alignment"; type: "VAlignment" } + } + Signal { + name: "textFormatChanged" + Parameter { name: "textFormat"; type: "TextFormat" } + } + Signal { + name: "elideModeChanged" + Parameter { name: "mode"; type: "TextElideMode" } + } + Signal { name: "contentSizeChanged" } + Signal { + name: "lineHeightChanged" + Parameter { name: "lineHeight"; type: "double" } + } + Signal { + name: "lineHeightModeChanged" + Parameter { name: "mode"; type: "LineHeightMode" } + } + Signal { + name: "lineLaidOut" + Parameter { name: "line"; type: "QQuickTextLine"; isPointer: true } + } + Signal { name: "paddingChanged"; revision: 6 } + Signal { name: "topPaddingChanged"; revision: 6 } + Signal { name: "leftPaddingChanged"; revision: 6 } + Signal { name: "rightPaddingChanged"; revision: 6 } + Signal { name: "bottomPaddingChanged"; revision: 6 } + Method { name: "doLayout" } + Method { + name: "linkAt" + revision: 3 + type: "string" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + } + Component { name: "QQuickTextDocument"; prototype: "QObject" } + Component { + name: "QQuickTextEdit" + defaultProperty: "data" + prototype: "QQuickImplicitSizeItem" + exports: [ + "QtQuick/TextEdit 2.0", + "QtQuick/TextEdit 2.1", + "QtQuick/TextEdit 2.2", + "QtQuick/TextEdit 2.3", + "QtQuick/TextEdit 2.6" + ] + exportMetaObjectRevisions: [0, 1, 2, 3, 6] + Enum { + name: "HAlignment" + values: { + "AlignLeft": 1, + "AlignRight": 2, + "AlignHCenter": 4, + "AlignJustify": 8 + } + } + Enum { + name: "VAlignment" + values: { + "AlignTop": 32, + "AlignBottom": 64, + "AlignVCenter": 128 + } + } + Enum { + name: "TextFormat" + values: { + "PlainText": 0, + "RichText": 1, + "AutoText": 2 + } + } + Enum { + name: "WrapMode" + values: { + "NoWrap": 0, + "WordWrap": 1, + "WrapAnywhere": 3, + "WrapAtWordBoundaryOrAnywhere": 4, + "Wrap": 4 + } + } + Enum { + name: "SelectionMode" + values: { + "SelectCharacters": 0, + "SelectWords": 1 + } + } + Enum { + name: "RenderType" + values: { + "QtRendering": 0, + "NativeRendering": 1 + } + } + Property { name: "text"; type: "string" } + Property { name: "color"; type: "QColor" } + Property { name: "selectionColor"; type: "QColor" } + Property { name: "selectedTextColor"; type: "QColor" } + Property { name: "font"; type: "QFont" } + Property { name: "horizontalAlignment"; type: "HAlignment" } + Property { name: "effectiveHorizontalAlignment"; type: "HAlignment"; isReadonly: true } + Property { name: "verticalAlignment"; type: "VAlignment" } + Property { name: "wrapMode"; type: "WrapMode" } + Property { name: "lineCount"; type: "int"; isReadonly: true } + Property { name: "length"; type: "int"; isReadonly: true } + Property { name: "contentWidth"; type: "double"; isReadonly: true } + Property { name: "contentHeight"; type: "double"; isReadonly: true } + Property { name: "paintedWidth"; type: "double"; isReadonly: true } + Property { name: "paintedHeight"; type: "double"; isReadonly: true } + Property { name: "textFormat"; type: "TextFormat" } + Property { name: "readOnly"; type: "bool" } + Property { name: "cursorVisible"; type: "bool" } + Property { name: "cursorPosition"; type: "int" } + Property { name: "cursorRectangle"; type: "QRectF"; isReadonly: true } + Property { name: "cursorDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "selectionStart"; type: "int"; isReadonly: true } + Property { name: "selectionEnd"; type: "int"; isReadonly: true } + Property { name: "selectedText"; type: "string"; isReadonly: true } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "persistentSelection"; type: "bool" } + Property { name: "textMargin"; type: "double" } + Property { name: "inputMethodHints"; type: "Qt::InputMethodHints" } + Property { name: "selectByKeyboard"; revision: 1; type: "bool" } + Property { name: "selectByMouse"; type: "bool" } + Property { name: "mouseSelectionMode"; type: "SelectionMode" } + Property { name: "canPaste"; type: "bool"; isReadonly: true } + Property { name: "canUndo"; type: "bool"; isReadonly: true } + Property { name: "canRedo"; type: "bool"; isReadonly: true } + Property { name: "inputMethodComposing"; type: "bool"; isReadonly: true } + Property { name: "baseUrl"; type: "QUrl" } + Property { name: "renderType"; type: "RenderType" } + Property { + name: "textDocument" + revision: 1 + type: "QQuickTextDocument" + isReadonly: true + isPointer: true + } + Property { name: "hoveredLink"; revision: 2; type: "string"; isReadonly: true } + Property { name: "padding"; revision: 6; type: "double" } + Property { name: "topPadding"; revision: 6; type: "double" } + Property { name: "leftPadding"; revision: 6; type: "double" } + Property { name: "rightPadding"; revision: 6; type: "double" } + Property { name: "bottomPadding"; revision: 6; type: "double" } + Signal { name: "contentSizeChanged" } + Signal { + name: "colorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "selectionColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "selectedTextColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "fontChanged" + Parameter { name: "font"; type: "QFont" } + } + Signal { + name: "horizontalAlignmentChanged" + Parameter { name: "alignment"; type: "HAlignment" } + } + Signal { + name: "verticalAlignmentChanged" + Parameter { name: "alignment"; type: "VAlignment" } + } + Signal { + name: "textFormatChanged" + Parameter { name: "textFormat"; type: "TextFormat" } + } + Signal { + name: "readOnlyChanged" + Parameter { name: "isReadOnly"; type: "bool" } + } + Signal { + name: "cursorVisibleChanged" + Parameter { name: "isCursorVisible"; type: "bool" } + } + Signal { + name: "activeFocusOnPressChanged" + Parameter { name: "activeFocusOnPressed"; type: "bool" } + } + Signal { + name: "persistentSelectionChanged" + Parameter { name: "isPersistentSelection"; type: "bool" } + } + Signal { + name: "textMarginChanged" + Parameter { name: "textMargin"; type: "double" } + } + Signal { + name: "selectByKeyboardChanged" + revision: 1 + Parameter { name: "selectByKeyboard"; type: "bool" } + } + Signal { + name: "selectByMouseChanged" + Parameter { name: "selectByMouse"; type: "bool" } + } + Signal { + name: "mouseSelectionModeChanged" + Parameter { name: "mode"; type: "SelectionMode" } + } + Signal { + name: "linkActivated" + Parameter { name: "link"; type: "string" } + } + Signal { + name: "linkHovered" + revision: 2 + Parameter { name: "link"; type: "string" } + } + Signal { name: "editingFinished"; revision: 6 } + Signal { name: "paddingChanged"; revision: 6 } + Signal { name: "topPaddingChanged"; revision: 6 } + Signal { name: "leftPaddingChanged"; revision: 6 } + Signal { name: "rightPaddingChanged"; revision: 6 } + Signal { name: "bottomPaddingChanged"; revision: 6 } + Method { name: "selectAll" } + Method { name: "selectWord" } + Method { + name: "select" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { name: "deselect" } + Method { + name: "isRightToLeft" + type: "bool" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { name: "cut" } + Method { name: "copy" } + Method { name: "paste" } + Method { name: "undo" } + Method { name: "redo" } + Method { + name: "insert" + Parameter { name: "position"; type: "int" } + Parameter { name: "text"; type: "string" } + } + Method { + name: "remove" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { + name: "append" + revision: 2 + Parameter { name: "text"; type: "string" } + } + Method { + name: "inputMethodQuery" + revision: 4 + type: "QVariant" + Parameter { name: "query"; type: "Qt::InputMethodQuery" } + Parameter { name: "argument"; type: "QVariant" } + } + Method { + name: "positionToRectangle" + type: "QRectF" + Parameter { type: "int" } + } + Method { + name: "positionAt" + type: "int" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + Method { + name: "moveCursorSelection" + Parameter { name: "pos"; type: "int" } + } + Method { + name: "moveCursorSelection" + Parameter { name: "pos"; type: "int" } + Parameter { name: "mode"; type: "SelectionMode" } + } + Method { + name: "getText" + type: "string" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { + name: "getFormattedText" + type: "string" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { + name: "linkAt" + revision: 3 + type: "string" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + } + Component { + name: "QQuickTextInput" + defaultProperty: "data" + prototype: "QQuickImplicitSizeItem" + exports: [ + "QtQuick/TextInput 2.0", + "QtQuick/TextInput 2.2", + "QtQuick/TextInput 2.4", + "QtQuick/TextInput 2.6" + ] + exportMetaObjectRevisions: [0, 2, 3, 6] + Enum { + name: "EchoMode" + values: { + "Normal": 0, + "NoEcho": 1, + "Password": 2, + "PasswordEchoOnEdit": 3 + } + } + Enum { + name: "HAlignment" + values: { + "AlignLeft": 1, + "AlignRight": 2, + "AlignHCenter": 4 + } + } + Enum { + name: "VAlignment" + values: { + "AlignTop": 32, + "AlignBottom": 64, + "AlignVCenter": 128 + } + } + Enum { + name: "WrapMode" + values: { + "NoWrap": 0, + "WordWrap": 1, + "WrapAnywhere": 3, + "WrapAtWordBoundaryOrAnywhere": 4, + "Wrap": 4 + } + } + Enum { + name: "SelectionMode" + values: { + "SelectCharacters": 0, + "SelectWords": 1 + } + } + Enum { + name: "CursorPosition" + values: { + "CursorBetweenCharacters": 0, + "CursorOnCharacter": 1 + } + } + Enum { + name: "RenderType" + values: { + "QtRendering": 0, + "NativeRendering": 1 + } + } + Property { name: "text"; type: "string" } + Property { name: "length"; type: "int"; isReadonly: true } + Property { name: "color"; type: "QColor" } + Property { name: "selectionColor"; type: "QColor" } + Property { name: "selectedTextColor"; type: "QColor" } + Property { name: "font"; type: "QFont" } + Property { name: "horizontalAlignment"; type: "HAlignment" } + Property { name: "effectiveHorizontalAlignment"; type: "HAlignment"; isReadonly: true } + Property { name: "verticalAlignment"; type: "VAlignment" } + Property { name: "wrapMode"; type: "WrapMode" } + Property { name: "readOnly"; type: "bool" } + Property { name: "cursorVisible"; type: "bool" } + Property { name: "cursorPosition"; type: "int" } + Property { name: "cursorRectangle"; type: "QRectF"; isReadonly: true } + Property { name: "cursorDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "selectionStart"; type: "int"; isReadonly: true } + Property { name: "selectionEnd"; type: "int"; isReadonly: true } + Property { name: "selectedText"; type: "string"; isReadonly: true } + Property { name: "maximumLength"; type: "int" } + Property { name: "validator"; type: "QValidator"; isPointer: true } + Property { name: "inputMask"; type: "string" } + Property { name: "inputMethodHints"; type: "Qt::InputMethodHints" } + Property { name: "acceptableInput"; type: "bool"; isReadonly: true } + Property { name: "echoMode"; type: "EchoMode" } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "passwordCharacter"; type: "string" } + Property { name: "passwordMaskDelay"; revision: 3; type: "int" } + Property { name: "displayText"; type: "string"; isReadonly: true } + Property { name: "autoScroll"; type: "bool" } + Property { name: "selectByMouse"; type: "bool" } + Property { name: "mouseSelectionMode"; type: "SelectionMode" } + Property { name: "persistentSelection"; type: "bool" } + Property { name: "canPaste"; type: "bool"; isReadonly: true } + Property { name: "canUndo"; type: "bool"; isReadonly: true } + Property { name: "canRedo"; type: "bool"; isReadonly: true } + Property { name: "inputMethodComposing"; type: "bool"; isReadonly: true } + Property { name: "contentWidth"; type: "double"; isReadonly: true } + Property { name: "contentHeight"; type: "double"; isReadonly: true } + Property { name: "renderType"; type: "RenderType" } + Property { name: "padding"; revision: 6; type: "double" } + Property { name: "topPadding"; revision: 6; type: "double" } + Property { name: "leftPadding"; revision: 6; type: "double" } + Property { name: "rightPadding"; revision: 6; type: "double" } + Property { name: "bottomPadding"; revision: 6; type: "double" } + Signal { name: "accepted" } + Signal { name: "editingFinished"; revision: 2 } + Signal { + name: "fontChanged" + Parameter { name: "font"; type: "QFont" } + } + Signal { + name: "horizontalAlignmentChanged" + Parameter { name: "alignment"; type: "HAlignment" } + } + Signal { + name: "verticalAlignmentChanged" + Parameter { name: "alignment"; type: "VAlignment" } + } + Signal { + name: "readOnlyChanged" + Parameter { name: "isReadOnly"; type: "bool" } + } + Signal { + name: "cursorVisibleChanged" + Parameter { name: "isCursorVisible"; type: "bool" } + } + Signal { + name: "maximumLengthChanged" + Parameter { name: "maximumLength"; type: "int" } + } + Signal { + name: "inputMaskChanged" + Parameter { name: "inputMask"; type: "string" } + } + Signal { + name: "echoModeChanged" + Parameter { name: "echoMode"; type: "EchoMode" } + } + Signal { + name: "passwordMaskDelayChanged" + revision: 3 + Parameter { name: "delay"; type: "int" } + } + Signal { + name: "activeFocusOnPressChanged" + Parameter { name: "activeFocusOnPress"; type: "bool" } + } + Signal { + name: "autoScrollChanged" + Parameter { name: "autoScroll"; type: "bool" } + } + Signal { + name: "selectByMouseChanged" + Parameter { name: "selectByMouse"; type: "bool" } + } + Signal { + name: "mouseSelectionModeChanged" + Parameter { name: "mode"; type: "SelectionMode" } + } + Signal { name: "contentSizeChanged" } + Signal { name: "paddingChanged"; revision: 6 } + Signal { name: "topPaddingChanged"; revision: 6 } + Signal { name: "leftPaddingChanged"; revision: 6 } + Signal { name: "rightPaddingChanged"; revision: 6 } + Signal { name: "bottomPaddingChanged"; revision: 6 } + Method { name: "selectAll" } + Method { name: "selectWord" } + Method { + name: "select" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { name: "deselect" } + Method { + name: "isRightToLeft" + type: "bool" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { name: "cut" } + Method { name: "copy" } + Method { name: "paste" } + Method { name: "undo" } + Method { name: "redo" } + Method { + name: "insert" + Parameter { name: "position"; type: "int" } + Parameter { name: "text"; type: "string" } + } + Method { + name: "remove" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { + name: "ensureVisible" + revision: 3 + Parameter { name: "position"; type: "int" } + } + Method { + name: "positionAt" + Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "positionToRectangle" + type: "QRectF" + Parameter { name: "pos"; type: "int" } + } + Method { + name: "moveCursorSelection" + Parameter { name: "pos"; type: "int" } + } + Method { + name: "moveCursorSelection" + Parameter { name: "pos"; type: "int" } + Parameter { name: "mode"; type: "SelectionMode" } + } + Method { + name: "inputMethodQuery" + revision: 3 + type: "QVariant" + Parameter { name: "query"; type: "Qt::InputMethodQuery" } + Parameter { name: "argument"; type: "QVariant" } + } + Method { + name: "getText" + type: "string" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + } + Component { + name: "QQuickTextLine" + prototype: "QObject" + Property { name: "number"; type: "int"; isReadonly: true } + Property { name: "width"; type: "double" } + Property { name: "height"; type: "double" } + Property { name: "x"; type: "double" } + Property { name: "y"; type: "double" } + } + Component { + name: "QQuickTextMetrics" + prototype: "QObject" + exports: ["QtQuick/TextMetrics 2.4"] + exportMetaObjectRevisions: [0] + Property { name: "font"; type: "QFont" } + Property { name: "text"; type: "string" } + Property { name: "advanceWidth"; type: "double"; isReadonly: true } + Property { name: "boundingRect"; type: "QRectF"; isReadonly: true } + Property { name: "width"; type: "double"; isReadonly: true } + Property { name: "height"; type: "double"; isReadonly: true } + Property { name: "tightBoundingRect"; type: "QRectF"; isReadonly: true } + Property { name: "elidedText"; type: "string"; isReadonly: true } + Property { name: "elide"; type: "Qt::TextElideMode" } + Property { name: "elideWidth"; type: "double" } + Signal { name: "metricsChanged" } + } + Component { + name: "QQuickTouchPoint" + prototype: "QObject" + exports: ["QtQuick/TouchPoint 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "pointId"; type: "int"; isReadonly: true } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "x"; type: "double"; isReadonly: true } + Property { name: "y"; type: "double"; isReadonly: true } + Property { name: "pressure"; type: "double"; isReadonly: true } + Property { name: "velocity"; type: "QVector2D"; isReadonly: true } + Property { name: "area"; type: "QRectF"; isReadonly: true } + Property { name: "startX"; type: "double"; isReadonly: true } + Property { name: "startY"; type: "double"; isReadonly: true } + Property { name: "previousX"; type: "double"; isReadonly: true } + Property { name: "previousY"; type: "double"; isReadonly: true } + Property { name: "sceneX"; type: "double"; isReadonly: true } + Property { name: "sceneY"; type: "double"; isReadonly: true } + } + Component { name: "QQuickTransform"; prototype: "QObject" } + Component { + name: "QQuickTransition" + defaultProperty: "animations" + prototype: "QObject" + exports: ["QtQuick/Transition 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "from"; type: "string" } + Property { name: "to"; type: "string" } + Property { name: "reversible"; type: "bool" } + Property { name: "running"; type: "bool"; isReadonly: true } + Property { name: "animations"; type: "QQuickAbstractAnimation"; isList: true; isReadonly: true } + Property { name: "enabled"; type: "bool" } + } + Component { + name: "QQuickTranslate" + prototype: "QQuickTransform" + exports: ["QtQuick/Translate 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "x"; type: "double" } + Property { name: "y"; type: "double" } + } + Component { + name: "QQuickUniformAnimator" + prototype: "QQuickAnimator" + exports: ["QtQuick/UniformAnimator 2.2"] + exportMetaObjectRevisions: [0] + Property { name: "uniform"; type: "string" } + Signal { + name: "uniformChanged" + Parameter { type: "string" } + } + } + Component { + name: "QQuickVector3dAnimation" + prototype: "QQuickPropertyAnimation" + exports: ["QtQuick/Vector3dAnimation 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "from"; type: "QVector3D" } + Property { name: "to"; type: "QVector3D" } + } + Component { + name: "QQuickViewSection" + prototype: "QObject" + exports: ["QtQuick/ViewSection 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "SectionCriteria" + values: { + "FullString": 0, + "FirstCharacter": 1 + } + } + Enum { + name: "LabelPositioning" + values: { + "InlineLabels": 1, + "CurrentLabelAtStart": 2, + "NextLabelAtEnd": 4 + } + } + Property { name: "property"; type: "string" } + Property { name: "criteria"; type: "SectionCriteria" } + Property { name: "delegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "labelPositioning"; type: "int" } + Signal { name: "sectionsChanged" } + } + Component { + name: "QQuickViewTransitionAttached" + prototype: "QObject" + exports: ["QtQuick/ViewTransition 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Property { name: "index"; type: "int"; isReadonly: true } + Property { name: "item"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "destination"; type: "QPointF"; isReadonly: true } + Property { name: "targetIndexes"; type: "QList"; isReadonly: true } + Property { name: "targetItems"; type: "QObject"; isList: true; isReadonly: true } + } + Component { + name: "QQuickWheelEvent" + prototype: "QObject" + Property { name: "x"; type: "double"; isReadonly: true } + Property { name: "y"; type: "double"; isReadonly: true } + Property { name: "angleDelta"; type: "QPoint"; isReadonly: true } + Property { name: "pixelDelta"; type: "QPoint"; isReadonly: true } + Property { name: "buttons"; type: "int"; isReadonly: true } + Property { name: "modifiers"; type: "int"; isReadonly: true } + Property { name: "accepted"; type: "bool" } + } + Component { + name: "QQuickWorkerScript" + prototype: "QObject" + exports: ["QtQuick/WorkerScript 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "source"; type: "QUrl" } + Signal { + name: "message" + Parameter { name: "messageObject"; type: "QQmlV4Handle" } + } + Method { + name: "sendMessage" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + } + Component { + name: "QQuickXAnimator" + prototype: "QQuickAnimator" + exports: ["QtQuick/XAnimator 2.2"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickYAnimator" + prototype: "QQuickAnimator" + exports: ["QtQuick/YAnimator 2.2"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QRegExpValidator" + prototype: "QValidator" + exports: ["QtQuick/RegExpValidator 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "regExp"; type: "QRegExp" } + Signal { + name: "regExpChanged" + Parameter { name: "regExp"; type: "QRegExp" } + } + } + Component { + name: "QValidator" + prototype: "QObject" + Signal { name: "changed" } + } +} diff --git a/bin/win64/QtQuick.2/qmldir b/bin/win64/QtQuick.2/qmldir new file mode 100644 index 0000000..8167e81 --- /dev/null +++ b/bin/win64/QtQuick.2/qmldir @@ -0,0 +1,5 @@ +module QtQuick +plugin qtquick2plugin +classname QtQuick2Plugin +typeinfo plugins.qmltypes +designersupported diff --git a/bin/win64/QtQuick.2/qtquick2plugin.dll b/bin/win64/QtQuick.2/qtquick2plugin.dll new file mode 100644 index 0000000..39bc432 Binary files /dev/null and b/bin/win64/QtQuick.2/qtquick2plugin.dll differ diff --git a/bin/win64/QtQuick/Controls.2/ApplicationWindow.qml b/bin/win64/QtQuick/Controls.2/ApplicationWindow.qml new file mode 100644 index 0000000..98de894 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/ApplicationWindow.qml @@ -0,0 +1,53 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Window 2.2 +import QtQuick.Templates 2.0 as T + +T.ApplicationWindow { + id: window + + color: "#ffffff" + + overlay.modal: Rectangle { + color: "#7f28282a" + } + + overlay.modeless: Rectangle { + color: "#1f28282a" + } +} diff --git a/bin/win64/QtQuick/Controls.2/BusyIndicator.qml b/bin/win64/QtQuick/Controls.2/BusyIndicator.qml new file mode 100644 index 0000000..44c6135 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/BusyIndicator.qml @@ -0,0 +1,65 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Controls 2.0 +import QtQuick.Controls.impl 2.0 +import QtQuick.Templates 2.0 as T + +T.BusyIndicator { + id: control + + implicitWidth: contentItem.implicitWidth + leftPadding + rightPadding + implicitHeight: contentItem.implicitHeight + topPadding + bottomPadding + + padding: 6 + + //! [contentItem] + contentItem: BusyRing { + id: ring + implicitWidth: 48 + implicitHeight: 48 + opacity: control.running ? 1 : 0 + + Behavior on opacity { OpacityAnimator { duration: 250 } } + + BusyRingAnimator { + target: ring + running: control.visible && control.running + } + } + //! [contentItem] +} diff --git a/bin/win64/QtQuick/Controls.2/Button.qml b/bin/win64/QtQuick/Controls.2/Button.qml new file mode 100644 index 0000000..f875a97 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Button.qml @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T + +T.Button { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 6 + leftPadding: padding + 2 + rightPadding: padding + 2 + + //! [contentItem] + contentItem: Text { + text: control.text + font: control.font + opacity: enabled || control.highlighted || control.checked ? 1 : 0.3 + color: control.checked || control.highlighted ? "#ffffff" : (control.visualFocus ? "#0066ff" : (control.down ? "#26282a" : "#353637")) + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + elide: Text.ElideRight + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitWidth: 100 + implicitHeight: 40 + opacity: enabled ? 1 : 0.3 + visible: !control.flat || control.down || control.checked || control.highlighted + color: control.checked || control.highlighted ? + (control.visualFocus ? (control.down ? "#599bff" : "#0066ff") : (control.down ? "#585a5c" : "#353637")) : + (control.visualFocus ? (control.down ? "#cce0ff" : "#f0f6ff") : (control.down ? "#d0d0d0" : "#e0e0e0")) + border.color: "#0066ff" + border.width: control.visualFocus ? 2 : 0 + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/CheckBox.qml b/bin/win64/QtQuick/Controls.2/CheckBox.qml new file mode 100644 index 0000000..3615948 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/CheckBox.qml @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls 2.0 +import QtQuick.Controls.impl 2.0 + +T.CheckBox { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 6 + spacing: 6 + opacity: enabled ? 1 : 0.2 + + //! [indicator] + indicator: CheckIndicator { + x: text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + //! [indicator] + + //! [contentItem] + contentItem: Text { + leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + color: control.down ? "#26282a" : "#353637" + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + } + //! [contentItem] +} diff --git a/bin/win64/QtQuick/Controls.2/CheckDelegate.qml b/bin/win64/QtQuick/Controls.2/CheckDelegate.qml new file mode 100644 index 0000000..dcef7f7 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/CheckDelegate.qml @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls 2.0 +import QtQuick.Controls.impl 2.0 + +T.CheckDelegate { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 12 + spacing: 12 + + //! [contentItem] + contentItem: Text { + leftPadding: control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: !control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + color: control.enabled ? "#26282a" : "#bdbebf" + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + } + //! [contentItem] + + //! [indicator] + indicator: CheckIndicator { + x: control.mirrored ? control.leftPadding : control.width - width - control.rightPadding + y: control.topPadding + (control.availableHeight - height) / 2 + + control: control + } + //! [indicator] + + //! [background] + background: Rectangle { + implicitWidth: 100 + implicitHeight: 40 + visible: control.down || control.highlighted + color: control.down ? "#bdbebf" : "#eeeeee" + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/CheckIndicator.qml b/bin/win64/QtQuick/Controls.2/CheckIndicator.qml new file mode 100644 index 0000000..d78e9e3 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/CheckIndicator.qml @@ -0,0 +1,68 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 + +Rectangle { + id: indicator + + property Item control + + implicitWidth: 28 + implicitHeight: 28 + + color: control.enabled ? (control.down ? (control.visualFocus ? "#cce0ff" : "#f6f6f6") : "#ffffff") : "#353637" + border.width: control.visualFocus ? 2 : 1 + border.color: control.enabled ? (control.visualFocus ? "#0066ff" : (control.down ? "#808080" : "#909090")) : "transparent" + + Image { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + source: "image://default/check/" + (control.visualFocus ? "#0066ff" : "#353637") + sourceSize.width: width + sourceSize.height: height + visible: control.checkState === Qt.Checked + } + + Rectangle { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: 16 + height: 3 + color: control.visualFocus ? "#0066ff" : "#353637" + visible: control.checkState === Qt.PartiallyChecked + } +} diff --git a/bin/win64/QtQuick/Controls.2/ComboBox.qml b/bin/win64/QtQuick/Controls.2/ComboBox.qml new file mode 100644 index 0000000..757af67 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/ComboBox.qml @@ -0,0 +1,133 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Window 2.2 +import QtQuick.Controls 2.0 +import QtQuick.Templates 2.0 as T + +T.ComboBox { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + spacing: 8 + padding: 6 + leftPadding: padding + 6 + rightPadding: padding + 6 + + opacity: enabled ? 1 : 0.3 + + //! [delegate] + delegate: ItemDelegate { + width: control.width + text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] : model[control.textRole]) : modelData + font.weight: control.currentIndex === index ? Font.DemiBold : Font.Normal + highlighted: control.highlightedIndex == index + } + //! [delegate] + + //! [indicator] + indicator: Image { + x: control.mirrored ? control.leftPadding : control.width - width - control.rightPadding + y: control.topPadding + (control.availableHeight - height) / 2 + source: "image://default/double-arrow/" + (control.visualFocus ? "#0066ff" : "#353637") + sourceSize.width: width + sourceSize.height: height + } + //! [indicator] + + //! [contentItem] + contentItem: Text { + leftPadding: control.mirrored && control.indicator ? control.indicator.width + control.spacing : 0 + rightPadding: !control.mirrored && control.indicator ? control.indicator.width + control.spacing : 0 + + text: control.displayText + font: control.font + color: control.visualFocus ? "#0066ff" : "#353637" + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + elide: Text.ElideRight + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitWidth: 120 + implicitHeight: 40 + + color: control.visualFocus ? (control.pressed ? "#cce0ff" : "#f0f6ff") : + (control.pressed || popup.visible ? "#d0d0d0" : "#e0e0e0") + border.color: "#0066ff" + border.width: control.visualFocus ? 2 : 0 + } + //! [background] + + //! [popup] + popup: T.Popup { + y: control.height - (control.visualFocus ? 0 : 1) + width: control.width + implicitHeight: listview.contentHeight + topMargin: 6 + bottomMargin: 6 + + contentItem: ListView { + id: listview + clip: true + model: control.popup.visible ? control.delegateModel : null + currentIndex: control.highlightedIndex + + Rectangle { + z: 10 + parent: listview + width: listview.width + height: listview.height + color: "transparent" + border.color: "#bdbebf" + } + + T.ScrollIndicator.vertical: ScrollIndicator { } + } + + background: Rectangle { } + } + //! [popup] +} diff --git a/bin/win64/QtQuick/Controls.2/Dial.qml b/bin/win64/QtQuick/Controls.2/Dial.qml new file mode 100644 index 0000000..aa13812 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Dial.qml @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Controls 2.0 +import QtQuick.Controls.impl 2.0 +import QtQuick.Templates 2.0 as T + +T.Dial { + id: control + + implicitWidth: 184 + implicitHeight: 184 + + //! [background] + background: DialRing { + width: control.availableWidth + height: control.availableHeight + color: control.visualFocus ? "#0066ff" : "#353637" + progress: control.position + opacity: control.enabled ? 1 : 0.3 + } + //! [background] + + //! [handle] + handle: Image { + id: handleItem + x: background.x + background.width / 2 - handle.width / 2 + y: background.y + background.height / 2 - handle.height / 2 + width: 14 + height: 10 + source: "image://default/dial-indicator/" + (control.visualFocus ? "#0066ff" : "#353637") + sourceSize.width: width + sourceSize.height: height + antialiasing: true + opacity: control.enabled ? 1 : 0.3 + transform: [ + Translate { + y: -Math.min(background.width, background.height) * 0.4 + handle.height / 2 + }, + Rotation { + angle: control.angle + origin.x: handle.width / 2 + origin.y: handle.height / 2 + } + ] + } + //! [handle] +} diff --git a/bin/win64/QtQuick/Controls.2/Drawer.qml b/bin/win64/QtQuick/Controls.2/Drawer.qml new file mode 100644 index 0000000..8cf4e5e --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Drawer.qml @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T + +T.Drawer { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) + + contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) + contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) + + topPadding: control.edge === Qt.BottomEdge + leftPadding: control.edge === Qt.RightEdge + rightPadding: control.edge === Qt.LeftEdge + bottomPadding: control.edge === Qt.TopEdge + + //! [enter] + enter: Transition { SmoothedAnimation { velocity: 5 } } + //! [enter] + + //! [exit] + exit: Transition { SmoothedAnimation { velocity: 5 } } + //! [exit] + + //! [contentItem] + contentItem: Item { } + //! [contentItem] + + //! [background] + background: Rectangle { + Rectangle { + readonly property bool horizontal: control.edge === Qt.LeftEdge || control.edge === Qt.RightEdge + width: horizontal ? 1 : parent.width + height: horizontal ? parent.height : 1 + color: "#353637" + x: control.edge === Qt.LeftEdge ? parent.width - 1 : 0 + y: control.edge === Qt.TopEdge ? parent.height - 1 : 0 + } + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Frame.qml b/bin/win64/QtQuick/Controls.2/Frame.qml new file mode 100644 index 0000000..cb2ffd3 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Frame.qml @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T + +T.Frame { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) + + contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) + contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) + + padding: 12 + + //! [contentItem] + contentItem: Item { } + //! [contentItem] + + //! [background] + background: Rectangle { + color: "transparent" + border.color: "#bdbebf" + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/GroupBox.qml b/bin/win64/QtQuick/Controls.2/GroupBox.qml new file mode 100644 index 0000000..0e9d79f --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/GroupBox.qml @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T + +T.GroupBox { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + label ? label.implicitWidth + leftPadding + rightPadding : 0, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) + + contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) + contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) + + spacing: 6 + padding: 12 + topPadding: padding + (label && label.implicitWidth > 0 ? label.implicitHeight + spacing : 0) + + //! [contentItem] + contentItem: Item { } + //! [contentItem] + + //! [label] + label: Text { + x: control.leftPadding + width: control.availableWidth + + text: control.title + font: control.font + color: control.enabled ? "#353637" : "#bdbebf" + elide: Text.ElideRight + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + } + //! [label] + + //! [background] + background: Rectangle { + y: control.topPadding - control.padding + width: parent.width + height: parent.height - control.topPadding + control.padding + + color: "transparent" + border.color: "#bdbebf" + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/ItemDelegate.qml b/bin/win64/QtQuick/Controls.2/ItemDelegate.qml new file mode 100644 index 0000000..d884a32 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/ItemDelegate.qml @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T + +T.ItemDelegate { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 12 + spacing: 12 + + //! [contentItem] + contentItem: Text { + leftPadding: control.mirrored ? (control.indicator ? control.indicator.width : 0) + control.spacing : 0 + rightPadding: !control.mirrored ? (control.indicator ? control.indicator.width : 0) + control.spacing : 0 + + text: control.text + font: control.font + color: control.enabled ? "#26282a" : "#bdbebf" + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitWidth: 100 + implicitHeight: 40 + visible: control.down || control.highlighted || control.visualFocus + color: control.visualFocus ? (control.pressed ? "#cce0ff" : "#e5efff") : (control.down ? "#bdbebf" : "#eeeeee") + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Label.qml b/bin/win64/QtQuick/Controls.2/Label.qml new file mode 100644 index 0000000..d0f0161 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Label.qml @@ -0,0 +1,45 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T + +T.Label { + id: control + + color: "#26282a" + linkColor: "#45a7d7" // TODO +} diff --git a/bin/win64/QtQuick/Controls.2/Material/ApplicationWindow.qml b/bin/win64/QtQuick/Controls.2/Material/ApplicationWindow.qml new file mode 100644 index 0000000..db27f25 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/ApplicationWindow.qml @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Window 2.2 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.ApplicationWindow { + id: window + + color: Material.backgroundColor + + overlay.modal: Rectangle { + color: window.Material.backgroundDimColor + Behavior on opacity { NumberAnimation { duration: 150 } } + } + + overlay.modeless: Rectangle { + color: window.Material.backgroundDimColor + Behavior on opacity { NumberAnimation { duration: 150 } } + } +} diff --git a/bin/win64/QtQuick/Controls.2/Material/BoxShadow.qml b/bin/win64/QtQuick/Controls.2/Material/BoxShadow.qml new file mode 100644 index 0000000..b70fcee --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/BoxShadow.qml @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtGraphicalEffects 1.0 + +/*! + A implementation of CSS's box-shadow, used by ElevationEffect for a Material Design + elevation shadow effect. + */ +RectangularGlow { + // The 4 properties from CSS box-shadow, plus the inherited color property + property int offsetX + property int offsetY + property int blurRadius + property int spreadRadius + + // The source item the shadow is being applied to, used for correctly + // calculating the corner radious + property Item source + + property bool fullWidth + property bool fullHeight + + x: (parent.width - width)/2 + offsetX + y: (parent.height - height)/2 + offsetY + + implicitWidth: source ? source.width : parent.width + implicitHeight: source ? source.height : parent.height + + width: implicitWidth + 2 * spreadRadius + (fullWidth ? 2 * cornerRadius : 0) + height: implicitHeight + 2 * spreadRadius + (fullHeight ? 2 * cornerRadius : 0) + glowRadius: blurRadius/2 + spread: 0.05 + cornerRadius: blurRadius + (source && source.radius || 0) +} diff --git a/bin/win64/QtQuick/Controls.2/Material/BusyIndicator.qml b/bin/win64/QtQuick/Controls.2/Material/BusyIndicator.qml new file mode 100644 index 0000000..bf3d445 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/BusyIndicator.qml @@ -0,0 +1,72 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.BusyIndicator { + id: control + + implicitWidth: contentItem.implicitWidth + leftPadding + rightPadding + implicitHeight: contentItem.implicitHeight + topPadding + bottomPadding + + padding: 6 + + //! [contentItem] + contentItem: ProgressRing { + id: ring + x: control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + implicitWidth: 48 + implicitHeight: 48 + width: size + height: size + opacity: control.running ? 1 : 0 + color: control.Material.accentColor + + readonly property real size: Math.min(control.availableWidth, control.availableHeight) + + Behavior on opacity { OpacityAnimator { duration: 250 } } + + RingAnimator { + target: ring + running: control.visible && control.running + } + } + //! [contentItem] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/Button.qml b/bin/win64/QtQuick/Controls.2/Material/Button.qml new file mode 100644 index 0000000..a7d9910 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/Button.qml @@ -0,0 +1,110 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.Button { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + // external vertical padding is 6 (to increase touch area) + padding: 12 + leftPadding: padding - 4 + rightPadding: padding - 4 + + Material.elevation: flat ? control.down || control.hovered ? 2 : 0 + : control.down ? 8 : 2 + Material.background: flat ? "transparent" : undefined + + //! [contentItem] + contentItem: Text { + text: control.text + font: control.font + color: !control.enabled ? control.Material.hintTextColor : + control.flat && control.highlighted ? control.Material.accentColor : + control.highlighted ? control.Material.primaryHighlightedTextColor : control.Material.primaryTextColor + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + elide: Text.ElideRight + } + //! [contentItem] + + //! [background] + // TODO: Add a proper ripple/ink effect for mouse/touch input and focus state + background: Rectangle { + implicitWidth: 64 + implicitHeight: 48 + + // external vertical padding is 6 (to increase touch area) + y: 6 + width: parent.width + height: parent.height - 12 + radius: 2 + color: !control.enabled + ? control.Material.buttonDisabledColor + : control.down + ? control.highlighted ? control.Material.highlightedButtonPressColor + : control.Material.buttonPressColor + : control.visualFocus || control.checked + ? control.highlighted ? control.Material.highlightedButtonHoverColor + : control.Material.buttonHoverColor + : control.highlighted ? control.Material.highlightedButtonColor + : control.Material.buttonColor + + Behavior on color { + ColorAnimation { + duration: 400 + } + } + + // The layer is disabled when the button color is transparent so you can do + // Material.background: "transparent" and get a proper flat button without needing + // to set Material.elevation as well + layer.enabled: control.enabled && control.Material.buttonColor.a > 0 + layer.effect: ElevationEffect { + elevation: control.Material.elevation + } + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/CheckBox.qml b/bin/win64/QtQuick/Controls.2/Material/CheckBox.qml new file mode 100644 index 0000000..0163e37 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/CheckBox.qml @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.CheckBox { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + spacing: 8 + padding: 8 + topPadding: padding + 7 + bottomPadding: padding + 7 + + //! [indicator] + indicator: CheckIndicator { + x: text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + //! [indicator] + + //! [contentItem] + contentItem: Text { + leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + color: control.enabled ? control.Material.primaryTextColor : control.Material.hintTextColor + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + } + //! [contentItem] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/CheckDelegate.qml b/bin/win64/QtQuick/Controls.2/Material/CheckDelegate.qml new file mode 100644 index 0000000..549a957 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/CheckDelegate.qml @@ -0,0 +1,88 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.CheckDelegate { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 16 + topPadding: 14 + bottomPadding: 14 + spacing: 16 + + //! [indicator] + indicator: CheckIndicator { + x: text ? (control.mirrored ? control.leftPadding : control.width - width - control.rightPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + //! [indicator] + + //! [contentItem] + contentItem: Text { + leftPadding: !control.mirrored ? 0 : control.indicator.width + control.spacing + rightPadding: control.mirrored ? 0 : control.indicator.width + control.spacing + + text: control.text + font: control.font + color: control.enabled ? control.Material.primaryTextColor : control.Material.hintTextColor + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitHeight: 48 + + visible: control.down || control.highlighted + color: control.down ? control.Material.buttonPressColor : control.Material.listHighlightColor + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/CheckIndicator.qml b/bin/win64/QtQuick/Controls.2/Material/CheckIndicator.qml new file mode 100644 index 0000000..c541e22 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/CheckIndicator.qml @@ -0,0 +1,110 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Controls.Material 2.0 + +Rectangle { + id: indicatorItem + implicitWidth: 18 + implicitHeight: 18 + color: "transparent" + border.color: control.checked ? control.Material.accentColor : control.Material.secondaryTextColor + border.width: control.checked ? width / 2 : 2 + radius: 2 + + property alias control: ripple.control + + Behavior on border.width { + NumberAnimation { + duration: 100 + easing.type: Easing.OutCubic + } + } + + Behavior on border.color { + ColorAnimation { + duration: 100 + easing.type: Easing.OutCubic + } + } + + Ripple { + id: ripple + width: parent.width + height: width + control: control + colored: control.checked + opacity: control.down || control.visualFocus ? 1 : 0 + } + + // TODO: This needs to be transparent + Image { + id: checkImage + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: 14 + height: 14 + source: "qrc:/qt-project.org/imports/QtQuick/Controls.2/Material/images/check.png" + fillMode: Image.PreserveAspectFit + + scale: control.checked ? 1 : 0 + Behavior on scale { NumberAnimation { duration: 100 } } + } + + states: State { + name: "checked" + when: control.checked + } + + transitions: Transition { + SequentialAnimation { + NumberAnimation { + target: indicatorItem + property: "scale" + // Go down 2 pixels in size. + to: 1 - 2 / indicatorItem.width + duration: 120 + } + NumberAnimation { + target: indicatorItem + property: "scale" + to: 1 + duration: 120 + } + } + } +} diff --git a/bin/win64/QtQuick/Controls.2/Material/ComboBox.qml b/bin/win64/QtQuick/Controls.2/Material/ComboBox.qml new file mode 100644 index 0000000..b573a31 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/ComboBox.qml @@ -0,0 +1,164 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Window 2.2 +import QtQuick.Controls 2.0 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.ComboBox { + id: control + + Material.elevation: control.pressed ? 8 : 2 + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + spacing: 6 + padding: 16 + + //! [delegate] + delegate: MenuItem { + width: control.width + text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] : model[control.textRole]) : modelData + Material.foreground: control.currentIndex === index ? control.Material.accent : control.Material.foreground + highlighted: control.highlightedIndex === index + } + //! [delegate] + + //! [indicator] + indicator: Image { + x: control.mirrored ? control.leftPadding : control.width - width - control.rightPadding + y: control.topPadding + (control.availableHeight - height) / 2 + opacity: !control.enabled ? 0.5 : 1.0 + source: "qrc:/qt-project.org/imports/QtQuick/Controls.2/Material/images/drop-indicator.png" + } + //! [indicator] + + //! [contentItem] + contentItem: Text { + leftPadding: control.mirrored && control.indicator ? control.indicator.width + control.spacing : 0 + rightPadding: !control.mirrored && control.indicator ? control.indicator.width + control.spacing : 0 + + text: control.displayText + font: control.font + color: control.enabled ? control.Material.primaryTextColor : control.Material.hintTextColor + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + elide: Text.ElideRight + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitWidth: 120 + implicitHeight: 48 + + radius: 2 + color: control.Material.dialogColor + + Behavior on color { + ColorAnimation { + duration: 400 + } + } + + layer.enabled: control.enabled && control.Material.elevation > 0 + layer.effect: ElevationEffect { + elevation: control.Material.elevation + } + + Rectangle { + width: parent.width + height: parent.height + radius: parent.radius + visible: control.visualFocus + color: control.Material.checkBoxUncheckedRippleColor + } + } + //! [background] + + //! [popup] + popup: T.Popup { + width: control.width + implicitHeight: listview.contentHeight + transformOrigin: Item.Top + topMargin: 12 + bottomMargin: 12 + + Material.theme: control.Material.theme + Material.accent: control.Material.accent + Material.primary: control.Material.primary + + enter: Transition { + // grow_fade_in + NumberAnimation { property: "scale"; from: 0.9; to: 1.0; easing.type: Easing.OutQuint; duration: 220 } + NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; easing.type: Easing.OutCubic; duration: 150 } + } + + exit: Transition { + // shrink_fade_out + NumberAnimation { property: "scale"; from: 1.0; to: 0.9; easing.type: Easing.OutQuint; duration: 220 } + NumberAnimation { property: "opacity"; from: 1.0; to: 0.0; easing.type: Easing.OutCubic; duration: 150 } + } + + contentItem: ListView { + id: listview + clip: true + model: control.popup.visible ? control.delegateModel : null + currentIndex: control.highlightedIndex + + T.ScrollIndicator.vertical: ScrollIndicator { } + } + + background: Rectangle { + radius: 3 + color: control.Material.dialogColor + + layer.enabled: control.enabled + layer.effect: ElevationEffect { + elevation: 8 + } + } + } + //! [popup] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/Dial.qml b/bin/win64/QtQuick/Controls.2/Material/Dial.qml new file mode 100644 index 0000000..5d1f627 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/Dial.qml @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.Dial { + id: control + + implicitWidth: 100 + implicitHeight: 100 + + //! [background] + background: Rectangle { + x: control.width / 2 - width / 2 + y: control.height / 2 - height / 2 + width: Math.max(64, Math.min(control.width, control.height)) + height: width + color: "transparent" + radius: width / 2 + + border.color: control.enabled ? control.Material.accentColor : control.Material.hintTextColor + } + //! [background] + + //! [handle] + handle: Rectangle { + id: handleItem + + x: background.x + background.width / 2 - handle.width / 2 + y: background.y + background.height / 2 - handle.height / 2 + transform: [ + Translate { + y: -background.height * 0.4 + handle.height / 2 + }, + Rotation { + angle: control.angle + origin.x: handle.width / 2 + origin.y: handle.height / 2 + } + ] + implicitWidth: 14 + implicitHeight: 14 + radius: width / 2 + color: control.enabled ? control.Material.accentColor : control.Material.hintTextColor + } + //! [handle] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/Drawer.qml b/bin/win64/QtQuick/Controls.2/Material/Drawer.qml new file mode 100644 index 0000000..822bf1c --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/Drawer.qml @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.Drawer { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) + + contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) + contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) + + //! [enter] + enter: Transition { SmoothedAnimation { velocity: 5 } } + //! [enter] + + //! [exit] + exit: Transition { SmoothedAnimation { velocity: 5 } } + //! [exit] + + //! [contentItem] + contentItem: Item { } + //! [contentItem] + + //! [background] + background: Rectangle { + color: control.Material.dialogColor + + layer.enabled: control.position > 0 + layer.effect: ElevationEffect { + elevation: 16 + fullHeight: true + } + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/ElevationEffect.qml b/bin/win64/QtQuick/Controls.2/Material/ElevationEffect.qml new file mode 100644 index 0000000..4ee4369 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/ElevationEffect.qml @@ -0,0 +1,279 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +/*! + An effect for standard Material Design elevation shadows. Useful for using as \c layer.effect. + */ +Item { + id: effect + + /*! + The source the effect is applied to. + */ + property var source + + /*! + The elevation of the \l source Item. + */ + property int elevation: 0 + + /*! + Set to \c true if the \l source Item is the same width as its parent and the shadow + should be full width instead of rounding around the corner of the Item. + + \sa fullHeight + */ + property bool fullWidth: false + + /*! + Set to \c true if the \l source Item is the same height as its parent and the shadow + should be full height instead of rounding around the corner of the Item. + + \sa fullWidth + */ + property bool fullHeight: false + + /*! + \internal + + The actual source Item the effect is applied to. + */ + readonly property Item sourceItem: source.sourceItem + + /* + * The following shadow values are taken from Angular Material + * + * The MIT License (MIT) + * + * Copyright (c) 2014-2016 Google, Inc. http://angularjs.org + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + /*! + \internal + + The shadows to use for each possible elevation. There are three shadows that when combined + make up the elevation. + */ + readonly property var _shadows: [ + [{offset: 0, blur: 0, spread: 0}, + {offset: 0, blur: 0, spread: 0}, + {offset: 0, blur: 0, spread: 0}], + + [{offset: 1, blur: 3, spread: 0}, + {offset: 1, blur: 1, spread: 0}, + {offset: 2, blur: 1, spread: -1}], + + [{offset: 1, blur: 5, spread: 0}, + {offset: 2, blur: 2, spread: 0}, + {offset: 3, blur: 1, spread: -2}], + + [{offset: 1, blur: 8, spread: 0}, + {offset: 3, blur: 4, spread: 0}, + {offset: 3, blur: 3, spread: -2}], + + [{offset: 2, blur: 4, spread: -1}, + {offset: 4, blur: 5, spread: 0}, + {offset: 1, blur: 10, spread: 0}], + + [{offset: 3, blur: 5, spread: -1}, + {offset: 5, blur: 8, spread: 0}, + {offset: 1, blur: 14, spread: 0}], + + [{offset: 3, blur: 5, spread: -1}, + {offset: 6, blur: 10, spread: 0}, + {offset: 1, blur: 18, spread: 0}], + + [{offset: 4, blur: 5, spread: -2}, + {offset: 7, blur: 10, spread: 1}, + {offset: 2, blur: 16, spread: 1}], + + [{offset: 5, blur: 5, spread: -3}, + {offset: 8, blur: 10, spread: 1}, + {offset: 3, blur: 14, spread: 2}], + + [{offset: 5, blur: 6, spread: -3}, + {offset: 9, blur: 12, spread: 1}, + {offset: 3, blur: 16, spread: 2}], + + [{offset: 6, blur: 6, spread: -3}, + {offset: 10, blur: 14, spread: 1}, + {offset: 4, blur: 18, spread: 3}], + + [{offset: 6, blur: 7, spread: -4}, + {offset: 11, blur: 15, spread: 1}, + {offset: 4, blur: 20, spread: 3}], + + [{offset: 7, blur: 8, spread: -4}, + {offset: 12, blur: 17, spread: 2}, + {offset: 5, blur: 22, spread: 4}], + + [{offset: 7, blur: 8, spread: -4}, + {offset: 13, blur: 19, spread: 2}, + {offset: 5, blur: 24, spread: 4}], + + [{offset: 7, blur: 9, spread: -4}, + {offset: 14, blur: 21, spread: 2}, + {offset: 5, blur: 26, spread: 4}], + + [{offset: 8, blur: 9, spread: -5}, + {offset: 15, blur: 22, spread: 2}, + {offset: 6, blur: 28, spread: 5}], + + [{offset: 8, blur: 10, spread: -5}, + {offset: 16, blur: 24, spread: 2}, + {offset: 6, blur: 30, spread: 5}], + + [{offset: 8, blur: 11, spread: -5}, + {offset: 17, blur: 26, spread: 2}, + {offset: 6, blur: 32, spread: 5}], + + [{offset: 9, blur: 11, spread: -5}, + {offset: 18, blur: 28, spread: 2}, + {offset: 7, blur: 34, spread: 6}], + + [{offset: 9, blur: 12, spread: -6}, + {offset: 19, blur: 29, spread: 2}, + {offset: 7, blur: 36, spread: 6}], + + [{offset: 10, blur: 13, spread: -6}, + {offset: 20, blur: 31, spread: 3}, + {offset: 8, blur: 38, spread: 7}], + + [{offset: 10, blur: 13, spread: -6}, + {offset: 21, blur: 33, spread: 3}, + {offset: 8, blur: 40, spread: 7}], + + [{offset: 10, blur: 14, spread: -6}, + {offset: 22, blur: 35, spread: 3}, + {offset: 8, blur: 42, spread: 7}], + + [{offset: 11, blur: 14, spread: -7}, + {offset: 23, blur: 36, spread: 3}, + {offset: 9, blur: 44, spread: 8}], + + [{offset: 11, blur: 15, spread: -7}, + {offset: 24, blur: 38, spread: 3}, + {offset: 9, blur: 46, spread: 8}] + ] + + /*! + \internal + + The current shadow based on the elevation. + */ + readonly property var _shadow: _shadows[Math.max(0, Math.min(elevation, _shadows.length - 1))] + + // Nest the shadows and source view in two items rendered as a layer + // so the shadow is not clipped by the bounds of the source view + Item { + property int margin: -100 + + x: margin + y: margin + width: parent.width - 2 * margin + height: parent.height - 2 * margin + + // By rendering as a layer, the shadow will never show through the source item, + // even when the source item's opacity is less than 1 + layer.enabled: true + + // The box shadows automatically pick up the size of the source Item and not + // the size of the parent, so we don't need to worry about the extra padding + // in the parent Item + BoxShadow { + offsetY: _shadow[0].offset + blurRadius: _shadow[0].blur + spreadRadius: _shadow[0].spread + color: Qt.rgba(0,0,0, 0.2) + + fullWidth: effect.fullWidth + fullHeight: effect.fullHeight + source: effect.sourceItem + } + + BoxShadow { + offsetY: _shadow[1].offset + blurRadius: _shadow[1].blur + spreadRadius: _shadow[1].spread + color: Qt.rgba(0,0,0, 0.14) + + fullWidth: effect.fullWidth + fullHeight: effect.fullHeight + source: effect.sourceItem + } + + BoxShadow { + offsetY: _shadow[2].offset + blurRadius: _shadow[2].blur + spreadRadius: _shadow[2].spread + color: Qt.rgba(0,0,0, 0.12) + + fullWidth: effect.fullWidth + fullHeight: effect.fullHeight + source: effect.sourceItem + } + + ShaderEffect { + property alias source: effect.source + + x: (parent.width - width)/2 + y: (parent.height - height)/2 + width: sourceItem.width + height: sourceItem.height + } + } +} diff --git a/bin/win64/QtQuick/Controls.2/Material/Frame.qml b/bin/win64/QtQuick/Controls.2/Material/Frame.qml new file mode 100644 index 0000000..65eab21 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/Frame.qml @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.Frame { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) + + contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) + contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) + + padding: 12 + + //! [contentItem] + contentItem: Item { } + //! [contentItem] + + //! [background] + background: Rectangle { + radius: 3 + color: "transparent" + border.color: control.Material.frameColor + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/GroupBox.qml b/bin/win64/QtQuick/Controls.2/Material/GroupBox.qml new file mode 100644 index 0000000..8e7704a --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/GroupBox.qml @@ -0,0 +1,85 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.GroupBox { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + label ? label.implicitWidth + leftPadding + rightPadding : 0, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) + + contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) + contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) + + spacing: 6 + padding: 12 + topPadding: padding + (label && label.implicitWidth > 0 ? label.implicitHeight + spacing : 0) + + //! [contentItem] + contentItem: Item {} + //! [contentItem] + + //! [label] + label: Text { + x: control.leftPadding + width: control.availableWidth + + text: control.title + font: control.font + color: control.enabled ? control.Material.primaryTextColor : control.Material.hintTextColor + elide: Text.ElideRight + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + } + //! [label] + + //! [background] + background: Rectangle { + y: control.topPadding - control.padding + width: parent.width + height: parent.height - control.topPadding + control.padding + + radius: 3 + color: "transparent" + border.color: control.Material.frameColor + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/ItemDelegate.qml b/bin/win64/QtQuick/Controls.2/Material/ItemDelegate.qml new file mode 100644 index 0000000..19c832c --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/ItemDelegate.qml @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.ItemDelegate { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 16 + spacing: 16 + + //! [contentItem] + contentItem: Text { + leftPadding: control.checkable && !control.mirrored ? (control.indicator ? control.indicator.width : 0) + control.spacing : 0 + rightPadding: control.checkable && control.mirrored ? (control.indicator ? control.indicator.width : 0) + control.spacing : 0 + + text: control.text + font: control.font + color: control.enabled ? control.Material.primaryTextColor : control.Material.hintTextColor + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitHeight: 48 + + visible: control.down || control.highlighted + color: control.down ? control.Material.buttonPressColor : control.Material.listHighlightColor + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/Label.qml b/bin/win64/QtQuick/Controls.2/Material/Label.qml new file mode 100644 index 0000000..8bda5cc --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/Label.qml @@ -0,0 +1,46 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.Label { + id: control + + color: enabled ? Material.primaryTextColor : Material.hintTextColor + linkColor: Material.accentColor +} diff --git a/bin/win64/QtQuick/Controls.2/Material/Menu.qml b/bin/win64/QtQuick/Controls.2/Material/Menu.qml new file mode 100644 index 0000000..557c691 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/Menu.qml @@ -0,0 +1,100 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Controls 2.0 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.Menu { + id: control + + Material.elevation: 8 + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem ? contentItem.implicitWidth + leftPadding + rightPadding : 0) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem ? contentItem.implicitHeight : 0) + topPadding + bottomPadding + + margins: 0 + topPadding: 8 + bottomPadding: 8 + + transformOrigin: Item.Top + + enter: Transition { + // grow_fade_in + NumberAnimation { property: "scale"; from: 0.9; to: 1.0; easing.type: Easing.OutQuint; duration: 220 } + NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; easing.type: Easing.OutCubic; duration: 150 } + } + + exit: Transition { + // shrink_fade_out + NumberAnimation { property: "scale"; from: 1.0; to: 0.9; easing.type: Easing.OutQuint; duration: 220 } + NumberAnimation { property: "opacity"; from: 1.0; to: 0.0; easing.type: Easing.OutCubic; duration: 150 } + } + + //! [contentItem] + contentItem: ListView { + implicitHeight: contentHeight + + model: control.contentModel + // TODO: improve this? + interactive: ApplicationWindow.window ? contentHeight > ApplicationWindow.window.height : false + clip: true + keyNavigationWraps: false + currentIndex: -1 + + ScrollIndicator.vertical: ScrollIndicator {} + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitWidth: 200 + implicitHeight: 48 + + radius: 3 + color: control.Material.dialogColor + + layer.enabled: control.Material.elevation > 0 + layer.effect: ElevationEffect { + elevation: control.Material.elevation + } + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/MenuItem.qml b/bin/win64/QtQuick/Controls.2/Material/MenuItem.qml new file mode 100644 index 0000000..85deb23 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/MenuItem.qml @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.MenuItem { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 16 + topPadding: 12 + bottomPadding: 12 + spacing: 16 + + //! [indicator] + indicator: CheckIndicator { + x: text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + visible: control.checkable + control: control + } + //! [indicator] + + //! [contentItem] + contentItem: Text { + leftPadding: control.checkable && !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.checkable && control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + color: control.enabled ? control.Material.primaryTextColor : control.Material.hintTextColor + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitWidth: 200 + implicitHeight: 48 + visible: control.down || control.highlighted + color: control.down ? control.Material.buttonPressColor : control.Material.listHighlightColor + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/Page.qml b/bin/win64/QtQuick/Controls.2/Material/Page.qml new file mode 100644 index 0000000..b155b2e --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/Page.qml @@ -0,0 +1,53 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.Page { + id: control + + //! [contentItem] + contentItem: Item { } + //! [contentItem] + + //! [background] + background: Rectangle { + color: control.Material.backgroundColor + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/PageIndicator.qml b/bin/win64/QtQuick/Controls.2/Material/PageIndicator.qml new file mode 100644 index 0000000..085a131 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/PageIndicator.qml @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.PageIndicator { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + + padding: 6 + spacing: 6 + + //! [delegate] + delegate: Rectangle { + implicitWidth: 8 + implicitHeight: 8 + + radius: width / 2 + color: control.enabled ? control.Material.primaryTextColor : control.Material.hintTextColor + + opacity: index === currentIndex ? 0.95 : pressed ? 0.7 : 0.45 + Behavior on opacity { OpacityAnimator { duration: 100 } } + } + //! [delegate] + + //! [contentItem] + contentItem: Row { + spacing: control.spacing + + Repeater { + model: control.count + delegate: control.delegate + } + } + //! [contentItem] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/Pane.qml b/bin/win64/QtQuick/Controls.2/Material/Pane.qml new file mode 100644 index 0000000..434c676 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/Pane.qml @@ -0,0 +1,67 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.Pane { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) + + contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) + contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) + + padding: 12 + + //! [contentItem] + contentItem: Item { } + //! [contentItem] + + //! [background] + background: Rectangle { + color: control.Material.backgroundColor + + layer.enabled: control.enabled && control.Material.elevation > 0 + layer.effect: ElevationEffect { + elevation: control.Material.elevation + } + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/Popup.qml b/bin/win64/QtQuick/Controls.2/Material/Popup.qml new file mode 100644 index 0000000..04d15fa --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/Popup.qml @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.Popup { + id: control + + Material.elevation: 24 + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentWidth > 0 ? contentWidth + leftPadding + rightPadding : 0) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentWidth > 0 ? contentHeight + topPadding + bottomPadding : 0) + + contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) + contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) + + padding: 12 + + enter: Transition { + // grow_fade_in + NumberAnimation { property: "scale"; from: 0.9; to: 1.0; easing.type: Easing.OutQuint; duration: 220 } + NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; easing.type: Easing.OutCubic; duration: 150 } + } + + exit: Transition { + // shrink_fade_out + NumberAnimation { property: "scale"; from: 1.0; to: 0.9; easing.type: Easing.OutQuint; duration: 220 } + NumberAnimation { property: "opacity"; from: 1.0; to: 0.0; easing.type: Easing.OutCubic; duration: 150 } + } + + contentItem: Item { } + + background: Rectangle { + radius: 3 + color: control.Material.dialogColor + + layer.enabled: control.Material.elevation > 0 + layer.effect: ElevationEffect { + elevation: control.Material.elevation + } + } +} diff --git a/bin/win64/QtQuick/Controls.2/Material/ProgressBar.qml b/bin/win64/QtQuick/Controls.2/Material/ProgressBar.qml new file mode 100644 index 0000000..d5e2870 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/ProgressBar.qml @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.ProgressBar { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + + //! [contentItem] + contentItem: ProgressStrip { + id: strip + implicitHeight: 4 + + scale: control.mirrored ? -1 : 1 + indeterminate: control.indeterminate + color: control.Material.accentColor + progress: control.position + + StripAnimator { + target: strip + running: control.visible && control.indeterminate + } + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitWidth: 200 + implicitHeight: 4 + x: control.leftPadding + y: control.topPadding + (control.availableHeight - height) / 2 + width: control.availableWidth + height: 4 + + color: Qt.rgba(control.Material.accentColor.r, control.Material.accentColor.g, control.Material.accentColor.b, 0.25) + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/RadioButton.qml b/bin/win64/QtQuick/Controls.2/Material/RadioButton.qml new file mode 100644 index 0000000..ddf496a --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/RadioButton.qml @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.RadioButton { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + spacing: 8 + padding: 8 + topPadding: padding + 6 + bottomPadding: padding + 6 + + //! [indicator] + indicator: RadioIndicator { + x: text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + //! [indicator] + + //! [contentItem] + contentItem: Text { + leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + color: control.enabled ? control.Material.primaryTextColor : control.Material.hintTextColor + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + } + //! [contentItem] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/RadioDelegate.qml b/bin/win64/QtQuick/Controls.2/Material/RadioDelegate.qml new file mode 100644 index 0000000..ba443be --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/RadioDelegate.qml @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.RadioDelegate { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 16 + topPadding: 8 + bottomPadding: 8 + spacing: 16 + + //! [indicator] + indicator: RadioIndicator { + x: text ? (control.mirrored ? control.leftPadding : control.width - width - control.rightPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + //! [indicator] + + //! [contentItem] + contentItem: Text { + leftPadding: !control.mirrored ? 0 : control.indicator.width + control.spacing + rightPadding: control.mirrored ? 0 : control.indicator.width + control.spacing + + text: control.text + font: control.font + color: control.enabled ? control.Material.primaryTextColor : control.Material.hintTextColor + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitHeight: 48 + + visible: control.down || control.highlighted + color: control.down ? control.Material.buttonPressColor : control.Material.listHighlightColor + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/RadioIndicator.qml b/bin/win64/QtQuick/Controls.2/Material/RadioIndicator.qml new file mode 100644 index 0000000..4090c73 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/RadioIndicator.qml @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +Rectangle { + implicitWidth: 20 + implicitHeight: 20 + radius: width / 2 + border.width: 2 + border.color: control.checked || control.down ? control.Material.accentColor : control.Material.secondaryTextColor + color: "transparent" + + property alias control: ripple.control + + Ripple { + id: ripple + width: parent.width + height: width + control: control + colored: control.checked + opacity: control.down || control.visualFocus ? 1 : 0 + } + + Rectangle { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: 10 + height: 10 + radius: width / 2 + color: parent.border.color + visible: control.checked || control.down + } +} diff --git a/bin/win64/QtQuick/Controls.2/Material/RangeSlider.qml b/bin/win64/QtQuick/Controls.2/Material/RangeSlider.qml new file mode 100644 index 0000000..d7589cf --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/RangeSlider.qml @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.RangeSlider { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + Math.max(background ? background.implicitWidth : 0, + first.handle ? first.handle.implicitWidth : 0, + second.handle ? second.handle.implicitWidth : 0) + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(background ? background.implicitHeight : 0, + first.handle ? first.handle.implicitHeight : 0, + second.handle ? second.handle.implicitHeight : 0) + topPadding + bottomPadding) + + padding: 6 + + //! [firstHandle] + first.handle: SliderHandle { + x: control.leftPadding + (horizontal ? control.first.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) + y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : control.first.visualPosition * (control.availableHeight - height)) + value: first.value + handleHasFocus: activeFocus + handlePressed: first.pressed + } + //! [firstHandle] + + //! [secondHandle] + second.handle: SliderHandle { + x: control.leftPadding + (horizontal ? control.second.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) + y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : control.second.visualPosition * (control.availableHeight - height)) + value: second.value + handleHasFocus: activeFocus + handlePressed: second.pressed + } + //! [secondHandle] + + //! [background] + background: Rectangle { + x: control.leftPadding + (horizontal ? 0 : (control.availableWidth - width) / 2) + y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : 0) + implicitWidth: horizontal ? 200 : 1 + implicitHeight: horizontal ? 1 : 200 + width: horizontal ? control.availableWidth : implicitWidth + height: horizontal ? implicitHeight : control.availableHeight + color: control.Material.primaryTextColor + scale: horizontal && control.mirrored ? -1 : 1 + + readonly property bool horizontal: control.orientation === Qt.Horizontal + + Rectangle { + x: parent.horizontal ? control.first.position * parent.width : -1 + y: parent.horizontal ? -1 : control.second.visualPosition * parent.height + 3 + width: parent.horizontal ? control.second.position * parent.width - control.first.position * parent.width - 3 : 3 + height: parent.horizontal ? 3 : control.second.position * parent.height - control.first.position * parent.height - 3 + + color: control.Material.accentColor + } + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/Ripple.qml b/bin/win64/QtQuick/Controls.2/Material/Ripple.qml new file mode 100644 index 0000000..1565038 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/Ripple.qml @@ -0,0 +1,51 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Controls.Material 2.0 + +Rectangle { + property Item control + property bool colored: false + + radius: width / 2 + scale: 2.5 + color: colored ? control.Material.checkBoxCheckedRippleColor : control.Material.checkBoxUncheckedRippleColor + + Behavior on opacity { + NumberAnimation {} + } +} diff --git a/bin/win64/QtQuick/Controls.2/Material/ScrollBar.qml b/bin/win64/QtQuick/Controls.2/Material/ScrollBar.qml new file mode 100644 index 0000000..41ee5ef --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/ScrollBar.qml @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.ScrollBar { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + + padding: 2 + + //! [contentItem] + contentItem: Rectangle { + id: handle + + implicitWidth: 4 + implicitHeight: 4 + + color: control.pressed ? control.Material.scrollBarPressedColor : control.Material.scrollBarColor + visible: control.size < 1.0 + opacity: 0.0 + + states: State { + name: "active" + when: control.active + PropertyChanges { target: handle; opacity: 0.75 } + } + + transitions: Transition { + from: "active" + SequentialAnimation { + PauseAnimation { duration: 450 } + NumberAnimation { target: handle; duration: 200; property: "opacity"; to: 0.0 } + } + } + } + //! [contentItem] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/ScrollIndicator.qml b/bin/win64/QtQuick/Controls.2/Material/ScrollIndicator.qml new file mode 100644 index 0000000..0219aa2 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/ScrollIndicator.qml @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.ScrollIndicator { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + + padding: 2 + + //! [contentItem] + contentItem: Rectangle { + id: indicator + + implicitWidth: 4 + implicitHeight: 4 + + color: control.Material.scrollBarColor + visible: control.size < 1.0 + opacity: 0.0 + + states: State { + name: "active" + when: control.active + PropertyChanges { target: indicator; opacity: 0.75 } + } + + transitions: [ + Transition { + from: "active" + SequentialAnimation { + PauseAnimation { duration: 450 } + NumberAnimation { target: indicator; duration: 200; property: "opacity"; to: 0.0 } + } + } + ] + } + //! [contentItem] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/Slider.qml b/bin/win64/QtQuick/Controls.2/Material/Slider.qml new file mode 100644 index 0000000..d6280b6 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/Slider.qml @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.Slider { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + Math.max(background ? background.implicitWidth : 0, + handle ? handle.implicitWidth : 0) + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(background ? background.implicitHeight : 0, + handle ? handle.implicitHeight : 0) + topPadding + bottomPadding) + + padding: 6 + + //! [handle] + handle: SliderHandle { + x: control.leftPadding + (horizontal ? control.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) + y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : control.visualPosition * (control.availableHeight - height)) + value: control.value + handleHasFocus: control.visualFocus + handlePressed: control.pressed + } + //! [handle] + + //! [background] + background: Rectangle { + x: control.leftPadding + (horizontal ? 0 : (control.availableWidth - width) / 2) + y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : 0) + implicitWidth: horizontal ? 200 : 1 + implicitHeight: horizontal ? 1 : 200 + width: horizontal ? control.availableWidth : implicitWidth + height: horizontal ? implicitHeight : control.availableHeight + color: control.Material.primaryTextColor + scale: horizontal && control.mirrored ? -1 : 1 + + readonly property bool horizontal: control.orientation === Qt.Horizontal + + Rectangle { + x: parent.horizontal ? 0 : (parent.width - width) / 2 + y: parent.horizontal ? (parent.height - height) / 2 : control.visualPosition * parent.height + width: parent.horizontal ? control.position * parent.width : 3 + height: parent.horizontal ? 3 : control.position * parent.height + + color: control.Material.accentColor + } + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/SliderHandle.qml b/bin/win64/QtQuick/Controls.2/Material/SliderHandle.qml new file mode 100644 index 0000000..49f833d --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/SliderHandle.qml @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Controls.Material 2.0 + +Item { + id: root + implicitWidth: initialSize + implicitHeight: initialSize + + property real value: 0 + property bool handleHasFocus: false + property bool handlePressed: false + readonly property int initialSize: 13 + readonly property bool horizontal: control.orientation === Qt.Horizontal + readonly property var control: parent + + Rectangle { + id: handleRect + width: parent.width + height: parent.height + radius: width / 2 + color: root.control.Material.accentColor + scale: root.handlePressed ? 1.5 : 1 + + Behavior on scale { + NumberAnimation { + duration: 250 + } + } + } + + Ripple { + width: parent.width + height: width + control: root.control + colored: true + opacity: root.handleHasFocus && !root.handlePressed ? 1 : 0 + } +} diff --git a/bin/win64/QtQuick/Controls.2/Material/SpinBox.qml b/bin/win64/QtQuick/Controls.2/Material/SpinBox.qml new file mode 100644 index 0000000..567fbfe --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/SpinBox.qml @@ -0,0 +1,178 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.SpinBox { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + + (up.indicator ? up.indicator.implicitWidth : 0) + + (down.indicator ? down.indicator.implicitWidth : 0)) + implicitHeight: Math.max(contentItem.implicitHeight + topPadding + bottomPadding, + background ? background.implicitHeight : 0, + up.indicator ? up.indicator.implicitHeight : 0, + down.indicator ? down.indicator.implicitHeight : 0) + baselineOffset: contentItem.y + contentItem.baselineOffset + + spacing: 6 + topPadding: 8 + bottomPadding: 16 + leftPadding: (control.mirrored ? (up.indicator ? up.indicator.width : 0) : (down.indicator ? down.indicator.width : 0)) + rightPadding: (control.mirrored ? (down.indicator ? down.indicator.width : 0) : (up.indicator ? up.indicator.width : 0)) + + //! [validator] + validator: IntValidator { + locale: control.locale.name + bottom: Math.min(control.from, control.to) + top: Math.max(control.from, control.to) + } + //! [validator] + + //! [contentItem] + contentItem: TextInput { + text: control.textFromValue(control.value, control.locale) + + font: control.font + color: control.Material.primaryTextColor + selectionColor: control.Material.textSelectionColor + selectedTextColor: control.Material.primaryTextColor + horizontalAlignment: Qt.AlignHCenter + verticalAlignment: Qt.AlignVCenter + cursorDelegate: Rectangle { + id: cursor + color: control.Material.accentColor + width: 2 + visible: control.activeFocus && contentItem.selectionStart === contentItem.selectionEnd + + Connections { + target: contentItem + onCursorPositionChanged: { + // keep a moving cursor visible + cursor.opacity = 1 + timer.restart() + } + } + + Timer { + id: timer + running: control.activeFocus + repeat: true + interval: Qt.styleHints.cursorFlashTime + onTriggered: cursor.opacity = !cursor.opacity ? 1 : 0 + // force the cursor visible when gaining focus + onRunningChanged: cursor.opacity = 1 + } + } + + readOnly: !control.editable + validator: control.validator + inputMethodHints: Qt.ImhFormattedNumbersOnly + } + //! [contentItem] + + //! [up.indicator] + up.indicator: PaddedRectangle { + x: control.mirrored ? 0 : parent.width - width + implicitWidth: 48 + implicitHeight: 48 + height: parent.height + width: height + padding: control.spacing + radius: 3 + color: Qt.tint(Qt.tint(control.Material.buttonColor, + control.activeFocus ? control.Material.buttonHoverColor : "transparent"), + control.up.pressed ? control.Material.buttonPressColor: "transparent") + + Rectangle { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: Math.min(parent.width / 3, parent.width / 3) + height: 2 + color: enabled ? control.Material.primaryTextColor : control.Material.spinBoxDisabledIconColor + } + Rectangle { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: 2 + height: Math.min(parent.width / 3, parent.width / 3) + color: enabled ? control.Material.primaryTextColor : control.Material.spinBoxDisabledIconColor + } + } + //! [up.indicator] + + //! [down.indicator] + down.indicator: PaddedRectangle { + x: control.mirrored ? parent.width - width : 0 + implicitWidth: 48 + implicitHeight: 48 + height: parent.height + width: height + padding: control.spacing + radius: 3 + color: Qt.tint(Qt.tint(control.Material.buttonColor, + control.activeFocus ? control.Material.buttonHoverColor : "transparent"), + control.down.pressed ? control.Material.buttonPressColor : "transparent") + + Rectangle { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: parent.width / 3 + height: 2 + color: enabled ? control.Material.primaryTextColor : control.Material.spinBoxDisabledIconColor + } + } + //! [down.indicator] + + //! [background] + background: Item { + implicitWidth: 192 + implicitHeight: 48 + + Rectangle { + x: parent.width / 2 - width / 2 + y: parent.y + parent.height - height - control.bottomPadding / 2 + width: control.availableWidth + height: control.activeFocus ? 2 : 1 + color: control.activeFocus ? control.Material.accentColor : control.Material.hintTextColor + } + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/StackView.qml b/bin/win64/QtQuick/Controls.2/Material/StackView.qml new file mode 100644 index 0000000..f375630 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/StackView.qml @@ -0,0 +1,90 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.4 +import QtQuick.Templates 2.0 as T + +T.StackView { + id: control + + //! [popEnter] + popEnter: Transition { + // slide_in_left + NumberAnimation { property: "x"; from: (control.mirrored ? -0.5 : 0.5) * -control.width; to: 0; duration: 200; easing.type: Easing.OutCubic } + NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; duration: 200; easing.type: Easing.OutCubic } + } + //! [popEnter] + + //! [popExit] + popExit: Transition { + // slide_out_right + NumberAnimation { property: "x"; from: 0; to: (control.mirrored ? -0.5 : 0.5) * control.width; duration: 200; easing.type: Easing.OutCubic } + NumberAnimation { property: "opacity"; from: 1.0; to: 0.0; duration: 200; easing.type: Easing.OutCubic } + } + //! [popExit] + + //! [pushEnter] + pushEnter: Transition { + // slide_in_right + NumberAnimation { property: "x"; from: (control.mirrored ? -0.5 : 0.5) * control.width; to: 0; duration: 200; easing.type: Easing.OutCubic } + NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; duration: 200; easing.type: Easing.OutCubic } + } + //! [pushEnter] + + //! [pushExit] + pushExit: Transition { + // slide_out_left + NumberAnimation { property: "x"; from: 0; to: (control.mirrored ? -0.5 : 0.5) * -control.width; duration: 200; easing.type: Easing.OutCubic } + NumberAnimation { property: "opacity"; from: 1.0; to: 0.0; duration: 200; easing.type: Easing.OutCubic } + } + //! [pushExit] + + //! [replaceEnter] + replaceEnter: Transition { + // slide_in_right + NumberAnimation { property: "x"; from: (control.mirrored ? -0.5 : 0.5) * control.width; to: 0; duration: 200; easing.type: Easing.OutCubic } + NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; duration: 200; easing.type: Easing.OutCubic } + } + //! [replaceEnter] + + //! [replaceExit] + replaceExit: Transition { + // slide_out_left + NumberAnimation { property: "x"; from: 0; to: (control.mirrored ? -0.5 : 0.5) * -control.width; duration: 200; easing.type: Easing.OutCubic } + NumberAnimation { property: "opacity"; from: 1.0; to: 0.0; duration: 200; easing.type: Easing.OutCubic } + } + //! [replaceExit] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/SwipeDelegate.qml b/bin/win64/QtQuick/Controls.2/Material/SwipeDelegate.qml new file mode 100644 index 0000000..e1375f7 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/SwipeDelegate.qml @@ -0,0 +1,104 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.SwipeDelegate { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 16 + topPadding: 8 + bottomPadding: 8 + spacing: 16 + + //! [contentItem] + contentItem: Text { + leftPadding: !control.mirrored ? (control.indicator ? control.indicator.width + control.spacing : 0) : 0 + rightPadding: control.mirrored ? (control.indicator ? control.indicator.width + control.spacing : 0) : 0 + + text: control.text + font: control.font + color: control.enabled ? control.Material.primaryTextColor : control.Material.hintTextColor + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + + Behavior on x { + enabled: !control.down + NumberAnimation { + easing.type: Easing.InOutCubic + duration: 400 + } + } + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitHeight: 48 + + color: control.Material.backgroundColor + + Rectangle { + width: parent.width + height: parent.height + visible: control.down || control.highlighted || control.visualFocus + color: control.down ? control.Material.buttonPressColor : + control.visualFocus || control.hovered ? control.Material.swipeDelegateHoverColor : + control.Material.listHighlightColor + } + + Behavior on x { + enabled: !control.down + NumberAnimation { + easing.type: Easing.InOutCubic + duration: 400 + } + } + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/SwipeView.qml b/bin/win64/QtQuick/Controls.2/Material/SwipeView.qml new file mode 100644 index 0000000..ab53203 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/SwipeView.qml @@ -0,0 +1,64 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T + +T.SwipeView { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + + //! [contentItem] + contentItem: ListView { + model: control.contentModel + currentIndex: control.currentIndex + + spacing: control.spacing + orientation: Qt.Horizontal + snapMode: ListView.SnapOneItem + boundsBehavior: Flickable.StopAtBounds + + highlightRangeMode: ListView.StrictlyEnforceRange + preferredHighlightBegin: 0 + preferredHighlightEnd: 0 + highlightMoveDuration: 250 + } + //! [contentItem] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/Switch.qml b/bin/win64/QtQuick/Controls.2/Material/Switch.qml new file mode 100644 index 0000000..3777610 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/Switch.qml @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 +import QtQuick.Templates 2.0 as T + +T.Switch { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 8 + spacing: 8 + + //! [indicator] + indicator: SwitchIndicator { + x: text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + //! [indicator] + + //! [contentItem] + contentItem: Text { + leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + color: control.enabled ? control.Material.primaryTextColor : control.Material.hintTextColor + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + } + //! [contentItem] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/SwitchDelegate.qml b/bin/win64/QtQuick/Controls.2/Material/SwitchDelegate.qml new file mode 100644 index 0000000..b729f01 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/SwitchDelegate.qml @@ -0,0 +1,88 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.SwitchDelegate { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 16 + topPadding: 8 + bottomPadding: 8 + spacing: 16 + + //! [indicator] + indicator: SwitchIndicator { + x: text ? (control.mirrored ? control.leftPadding : control.width - width - control.rightPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + //! [indicator] + + //! [contentItem] + contentItem: Text { + leftPadding: !control.mirrored ? 0 : control.indicator.width + control.spacing + rightPadding: control.mirrored ? 0 : control.indicator.width + control.spacing + + text: control.text + font: control.font + color: control.enabled ? control.Material.primaryTextColor : control.Material.hintTextColor + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitHeight: 48 + + visible: control.down || control.highlighted + color: control.down ? control.Material.buttonPressColor : control.Material.listHighlightColor + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/SwitchIndicator.qml b/bin/win64/QtQuick/Controls.2/Material/SwitchIndicator.qml new file mode 100644 index 0000000..0d2163b --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/SwitchIndicator.qml @@ -0,0 +1,90 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +Item { + id: indicator + implicitWidth: 38 + implicitHeight: 32 + + property alias control: ripple.control + + Material.elevation: 1 + + Ripple { + id: ripple + x: handle.x + handle.width / 2 - width / 2 + y: handle.y + handle.height / 2 - height / 2 + width: handle.width + height: width + colored: control.checked + opacity: control.pressed || control.visualFocus ? 1 : 0 + } + + Rectangle { + width: parent.width + height: 14 + radius: height / 2 + y: parent.height / 2 - height / 2 + color: control.enabled ? (control.checked ? control.Material.switchCheckedTrackColor : control.Material.switchUncheckedTrackColor) + : control.Material.switchDisabledTrackColor + } + + Rectangle { + id: handle + x: Math.max(0, Math.min(parent.width - width, control.visualPosition * parent.width - (width / 2))) + y: (parent.height - height) / 2 + width: 20 + height: 20 + radius: width / 2 + color: control.enabled ? (control.checked ? control.Material.switchCheckedHandleColor : control.Material.switchUncheckedHandleColor) + : control.Material.switchDisabledHandleColor + + Behavior on x { + enabled: !control.pressed + SmoothedAnimation { + duration: 300 + } + } + layer.enabled: indicator.Material.elevation > 0 + layer.effect: ElevationEffect { + elevation: indicator.Material.elevation + } + } +} diff --git a/bin/win64/QtQuick/Controls.2/Material/TabBar.qml b/bin/win64/QtQuick/Controls.2/Material/TabBar.qml new file mode 100644 index 0000000..79238da --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/TabBar.qml @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.TabBar { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + + spacing: 1 + + //! [contentItem] + contentItem: ListView { + implicitWidth: contentWidth + implicitHeight: 48 + + model: control.contentModel + currentIndex: control.currentIndex + + spacing: control.spacing + orientation: ListView.Horizontal + boundsBehavior: Flickable.StopAtBounds + snapMode: ListView.SnapToItem + + highlightMoveDuration: 250 + highlightResizeDuration: 0 + highlightFollowsCurrentItem: true + highlight: Item { + z: 2 + Rectangle { + height: 2 + width: parent.width + y: control.position === T.TabBar.Footer ? 0 : parent.height - height + color: control.Material.accentColor + } + } + } + //! [contentItem] + + //! [background] + background: Rectangle { + color: control.Material.backgroundColor + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/TabButton.qml b/bin/win64/QtQuick/Controls.2/Material/TabButton.qml new file mode 100644 index 0000000..9659205 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/TabButton.qml @@ -0,0 +1,68 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.TabButton { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.contentHeight + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 12 + + //! [contentItem] + contentItem: Text { + text: control.text + font: control.font + elide: Text.ElideRight + color: !control.enabled ? control.Material.hintTextColor : control.down || control.checked ? control.Material.accentColor : control.Material.primaryTextColor + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + } + //! [contentItem] + + //! [background] + background: Item { + implicitHeight: 48 + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/TextArea.qml b/bin/win64/QtQuick/Controls.2/Material/TextArea.qml new file mode 100644 index 0000000..8098ac4 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/TextArea.qml @@ -0,0 +1,109 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.TextArea { + id: control + + implicitWidth: Math.max(contentWidth + leftPadding + rightPadding, + background ? background.implicitWidth : 0, + placeholder.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(contentHeight + 1 + topPadding + bottomPadding, + background ? background.implicitHeight : 0, + placeholder.implicitHeight + 1 + topPadding + bottomPadding) + + topPadding: 8 + bottomPadding: 16 + + color: enabled ? Material.primaryTextColor : Material.hintTextColor + selectionColor: Material.accentColor + selectedTextColor: Material.primaryHighlightedTextColor + cursorDelegate: Rectangle { + id: cursor + clip: true // TODO + color: control.Material.accentColor + width: 2 + visible: control.activeFocus && control.selectionStart === control.selectionEnd + + Connections { + target: control + onCursorPositionChanged: { + // keep a moving cursor visible + cursor.opacity = 1 + timer.restart() + } + } + + Timer { + id: timer + running: control.activeFocus + repeat: true + interval: Qt.styleHints.cursorFlashTime + onTriggered: cursor.opacity = !cursor.opacity ? 1 : 0 + // force the cursor visible when gaining focus + onRunningChanged: cursor.opacity = 1 + } + } + + //! [placeholder] + Text { + id: placeholder + x: control.leftPadding + y: control.topPadding + width: control.width - (control.leftPadding + control.rightPadding) + height: control.height - (control.topPadding + control.bottomPadding) + text: control.placeholderText + font: control.font + color: control.Material.hintTextColor + horizontalAlignment: control.horizontalAlignment + verticalAlignment: control.verticalAlignment + elide: Text.ElideRight + visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) + } + //! [placeholder] + + //! [background] + background: Rectangle { + y: parent.height - height - control.bottomPadding / 2 + implicitWidth: 120 + height: control.activeFocus ? 2 : 1 + color: control.activeFocus ? control.Material.accentColor : control.Material.hintTextColor + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/TextField.qml b/bin/win64/QtQuick/Controls.2/Material/TextField.qml new file mode 100644 index 0000000..2f3b9f2 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/TextField.qml @@ -0,0 +1,108 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.TextField { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + placeholder.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + placeholder.implicitHeight + 1 + topPadding + bottomPadding) + + topPadding: 8 + bottomPadding: 16 + + color: enabled ? Material.primaryTextColor : Material.hintTextColor + selectionColor: Material.accentColor + selectedTextColor: Material.primaryHighlightedTextColor + verticalAlignment: TextInput.AlignVCenter + cursorDelegate: Rectangle { + id: cursor + color: control.Material.accentColor + width: 2 + visible: control.activeFocus && control.selectionStart === control.selectionEnd + + Connections { + target: control + onCursorPositionChanged: { + // keep a moving cursor visible + cursor.opacity = 1 + timer.restart() + } + } + + Timer { + id: timer + running: control.activeFocus + repeat: true + interval: Qt.styleHints.cursorFlashTime + onTriggered: cursor.opacity = !cursor.opacity ? 1 : 0 + // force the cursor visible when gaining focus + onRunningChanged: cursor.opacity = 1 + } + } + + //! [placeholder] + Text { + id: placeholder + x: control.leftPadding + y: control.topPadding + width: control.width - (control.leftPadding + control.rightPadding) + height: control.height - (control.topPadding + control.bottomPadding) + text: control.placeholderText + font: control.font + color: control.Material.hintTextColor + horizontalAlignment: control.horizontalAlignment + verticalAlignment: control.verticalAlignment + elide: Text.ElideRight + visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) + + } + //! [placeholder] + + //! [background] + background: Rectangle { + y: control.height - height - control.bottomPadding / 2 + implicitWidth: 120 + height: control.activeFocus ? 2 : 1 + color: control.activeFocus ? control.Material.accentColor : control.Material.hintTextColor + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/ToolBar.qml b/bin/win64/QtQuick/Controls.2/Material/ToolBar.qml new file mode 100644 index 0000000..e41c669 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/ToolBar.qml @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 +import QtQuick.Controls.Material.impl 2.0 + +T.ToolBar { + id: control + + Material.elevation: 4 + + implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) + + contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) + contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) + + Material.foreground: Material.toolTextColor + + //! [contentItem] + contentItem: Item { } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitHeight: 48 + color: control.Material.primaryColor + + layer.enabled: control.Material.elevation > 0 + layer.effect: ElevationEffect { + elevation: control.Material.elevation + fullWidth: true + } + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/ToolButton.qml b/bin/win64/QtQuick/Controls.2/Material/ToolButton.qml new file mode 100644 index 0000000..2fcae7e --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/ToolButton.qml @@ -0,0 +1,72 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.ToolButton { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 6 + + //! [contentItem] + contentItem: Text { + text: control.text + font: control.font + color: control.enabled ? control.Material.primaryTextColor : control.Material.hintTextColor + elide: Text.ElideRight + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitWidth: 48 + implicitHeight: 48 + + color: control.down ? control.Material.buttonPressColor : control.Material.buttonHoverColor + visible: control.enabled && (control.down || control.visualFocus || control.checked || control.highlighted) + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/ToolTip.qml b/bin/win64/QtQuick/Controls.2/Material/ToolTip.qml new file mode 100644 index 0000000..5b1b966 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/ToolTip.qml @@ -0,0 +1,88 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.ToolTip { + id: control + + x: parent ? (parent.width - implicitWidth) / 2 : 0 + y: -implicitHeight - 24 + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + + margins: 12 + padding: 8 + leftPadding: padding + 8 + rightPadding: padding + 8 + + closePolicy: T.Popup.CloseOnEscape | T.Popup.CloseOnPressOutsideParent | T.Popup.CloseOnReleaseOutsideParent + + Material.theme: Material.Dark + + enter: Transition { + // toast_enter + NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; easing.type: Easing.OutQuad; duration: 500 } + } + + exit: Transition { + // toast_exit + NumberAnimation { property: "opacity"; from: 1.0; to: 0.0; easing.type: Easing.InQuad; duration: 500 } + } + + //! [contentItem] + contentItem: Text { + text: control.text + font: control.font + // TODO: wrapMode: Label.Wrap + color: control.Material.primaryTextColor + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitHeight: 32 + color: control.Material.tooltipColor + opacity: 0.9 + radius: 2 + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/Tumbler.qml b/bin/win64/QtQuick/Controls.2/Material/Tumbler.qml new file mode 100644 index 0000000..67baa82 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/Tumbler.qml @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Controls 2.0 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Material 2.0 + +T.Tumbler { + id: control + implicitWidth: 60 + implicitHeight: 200 + + //! [delegate] + delegate: Text { + id: label + text: modelData + color: control.Material.primaryTextColor + font: control.font + opacity: (1.0 - Math.abs(Tumbler.displacement) / (visibleItemCount / 2)) * (control.enabled ? 1 : 0.6) + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + } + //! [delegate] + + //! [contentItem] + contentItem: PathView { + id: pathView + model: control.model + delegate: control.delegate + clip: true + pathItemCount: control.visibleItemCount + 1 + preferredHighlightBegin: 0.5 + preferredHighlightEnd: 0.5 + dragMargin: width / 2 + + path: Path { + startX: pathView.width / 2 + startY: -pathView.delegateHeight / 2 + PathLine { + x: pathView.width / 2 + y: pathView.pathItemCount * pathView.delegateHeight - pathView.delegateHeight / 2 + } + } + + property real delegateHeight: control.availableHeight / control.visibleItemCount + } + //! [contentItem] +} diff --git a/bin/win64/QtQuick/Controls.2/Material/plugins.qmltypes b/bin/win64/QtQuick/Controls.2/Material/plugins.qmltypes new file mode 100644 index 0000000..0ff6408 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/plugins.qmltypes @@ -0,0 +1,92 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by: +// 'qmlplugindump -nonrelocatable QtQuick.Controls.Material 2.0' + +Module { + dependencies: [] + Component { + name: "QQuickMaterialStyle" + prototype: "QQuickStyle" + exports: ["QtQuick.Controls.Material/Material 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "Theme" + values: { + "Light": 0, + "Dark": 1 + } + } + Enum { + name: "Color" + values: { + "Red": 0, + "Pink": 1, + "Purple": 2, + "DeepPurple": 3, + "Indigo": 4, + "Blue": 5, + "LightBlue": 6, + "Cyan": 7, + "Teal": 8, + "Green": 9, + "LightGreen": 10, + "Lime": 11, + "Yellow": 12, + "Amber": 13, + "Orange": 14, + "DeepOrange": 15, + "Brown": 16, + "Grey": 17, + "BlueGrey": 18 + } + } + Enum { + name: "Shade" + values: { + "Shade50": 0, + "Shade100": 1, + "Shade200": 2, + "Shade300": 3, + "Shade400": 4, + "Shade500": 5, + "Shade600": 6, + "Shade700": 7, + "Shade800": 8, + "Shade900": 9, + "ShadeA100": 10, + "ShadeA200": 11, + "ShadeA400": 12, + "ShadeA700": 13 + } + } + Property { name: "theme"; type: "Theme" } + Property { name: "primary"; type: "QVariant" } + Property { name: "accent"; type: "QVariant" } + Property { name: "foreground"; type: "QVariant" } + Property { name: "background"; type: "QVariant" } + Signal { name: "paletteChanged" } + Method { + name: "color" + type: "QColor" + Parameter { name: "color"; type: "Color" } + Parameter { name: "shade"; type: "Shade" } + } + Method { + name: "color" + type: "QColor" + Parameter { name: "color"; type: "Color" } + } + Method { + name: "shade" + type: "QColor" + Parameter { name: "color"; type: "QColor" } + Parameter { name: "shade"; type: "Shade" } + } + } + Component { name: "QQuickStyle"; prototype: "QObject" } +} diff --git a/bin/win64/QtQuick/Controls.2/Material/qmldir b/bin/win64/QtQuick/Controls.2/Material/qmldir new file mode 100644 index 0000000..51dafa0 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Material/qmldir @@ -0,0 +1,5 @@ +module QtQuick.Controls.Material +plugin qtquickcontrols2materialstyleplugin +classname QtQuickControls2MaterialStylePlugin +depends QtQuick.Controls 2.0 +depends QtGraphicalEffects 1.0 diff --git a/bin/win64/QtQuick/Controls.2/Material/qtquickcontrols2materialstyleplugin.dll b/bin/win64/QtQuick/Controls.2/Material/qtquickcontrols2materialstyleplugin.dll new file mode 100644 index 0000000..115942d Binary files /dev/null and b/bin/win64/QtQuick/Controls.2/Material/qtquickcontrols2materialstyleplugin.dll differ diff --git a/bin/win64/QtQuick/Controls.2/Menu.qml b/bin/win64/QtQuick/Controls.2/Menu.qml new file mode 100644 index 0000000..e349a89 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Menu.qml @@ -0,0 +1,73 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Controls 2.0 +import QtQuick.Templates 2.0 as T + +T.Menu { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem ? contentItem.implicitWidth + leftPadding + rightPadding : 0) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem ? contentItem.implicitHeight : 0) + topPadding + bottomPadding + + margins: 0 + + //! [contentItem] + contentItem: ListView { + implicitHeight: contentHeight + model: control.contentModel + // TODO: improve this? + interactive: ApplicationWindow.window ? contentHeight > ApplicationWindow.window.height : false + clip: true + keyNavigationWraps: false + currentIndex: -1 + + ScrollIndicator.vertical: ScrollIndicator {} + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitWidth: 200 + implicitHeight: 40 + color: "#ffffff" + border.color: "#353637" + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/MenuItem.qml b/bin/win64/QtQuick/Controls.2/MenuItem.qml new file mode 100644 index 0000000..ead943b --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/MenuItem.qml @@ -0,0 +1,91 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T + +T.MenuItem { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 6 + + //! [contentItem] + contentItem: Text { + leftPadding: control.checkable && !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.checkable && control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + color: control.enabled ? "#26282a" : "#bdbebf" + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + } + //! [contentItem] + + //! [indicator] + indicator: Image { + x: control.mirrored ? control.width - width - control.rightPadding : control.leftPadding + y: control.topPadding + (control.availableHeight - height) / 2 + + visible: control.checked + source: control.checkable ? "qrc:/qt-project.org/imports/QtQuick/Controls.2/images/check.png" : "" + } + //! [indicator] + + //! [background] + background: Item { + implicitWidth: 200 + implicitHeight: 40 + + Rectangle { + x: 1 + y: 1 + width: parent.width - 2 + height: parent.height - 2 + color: control.visualFocus || control.down ? "#eeeeee" : "transparent" + } + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Page.qml b/bin/win64/QtQuick/Controls.2/Page.qml new file mode 100644 index 0000000..3cbb156 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Page.qml @@ -0,0 +1,52 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T + +T.Page { + id: control + + //! [contentItem] + contentItem: Item { } + //! [contentItem] + + //! [background] + background: Rectangle { + color: "#ffffff" + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/PageIndicator.qml b/bin/win64/QtQuick/Controls.2/PageIndicator.qml new file mode 100644 index 0000000..5b61acd --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/PageIndicator.qml @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T + +T.PageIndicator { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + + padding: 6 + spacing: 6 + + //! [delegate] + delegate: Rectangle { + implicitWidth: 8 + implicitHeight: 8 + + radius: width / 2 + color: "#28282a" // TODO + + opacity: index === currentIndex ? 0.95 : pressed ? 0.7 : 0.45 + Behavior on opacity { OpacityAnimator { duration: 100 } } + } + //! [delegate] + + //! [contentItem] + contentItem: Row { + spacing: control.spacing + + Repeater { + model: control.count + delegate: control.delegate + } + } + //! [contentItem] +} diff --git a/bin/win64/QtQuick/Controls.2/Pane.qml b/bin/win64/QtQuick/Controls.2/Pane.qml new file mode 100644 index 0000000..eb79129 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Pane.qml @@ -0,0 +1,60 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T + +T.Pane { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) + + contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) + contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) + + padding: 12 + + //! [contentItem] + contentItem: Item { } + //! [contentItem] + + //! [background] + background: Rectangle { + color: "#ffffff" + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Popup.qml b/bin/win64/QtQuick/Controls.2/Popup.qml new file mode 100644 index 0000000..72428f2 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Popup.qml @@ -0,0 +1,58 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T + +T.Popup { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentWidth > 0 ? contentWidth + leftPadding + rightPadding : 0) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentWidth > 0 ? contentHeight + topPadding + bottomPadding : 0) + + contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) + contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) + + padding: 12 + + contentItem: Item { } + + background: Rectangle { + border.color: "#353637" + } +} diff --git a/bin/win64/QtQuick/Controls.2/ProgressBar.qml b/bin/win64/QtQuick/Controls.2/ProgressBar.qml new file mode 100644 index 0000000..fb312b1 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/ProgressBar.qml @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls 2.0 +import QtQuick.Controls.impl 2.0 + +T.ProgressBar { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + + //! [contentItem] + contentItem: ProgressStrip { + id: strip + implicitHeight: 6 + implicitWidth: 116 + scale: control.mirrored ? -1 : 1 + progress: control.position + indeterminate: control.indeterminate + + ProgressStripAnimator { + target: strip + running: control.visible && control.indeterminate + } + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitWidth: 200 + implicitHeight: 6 + x: control.leftPadding + y: control.topPadding + (control.availableHeight - height) / 2 + width: control.availableWidth + height: 6 + + color: "#e4e4e4" + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/RadioButton.qml b/bin/win64/QtQuick/Controls.2/RadioButton.qml new file mode 100644 index 0000000..8a2d7c9 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/RadioButton.qml @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Controls 2.0 +import QtQuick.Controls.impl 2.0 +import QtQuick.Templates 2.0 as T + +T.RadioButton { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 6 + spacing: 6 + opacity: enabled ? 1 : 0.2 + + //! [indicator] + indicator: RadioIndicator { + x: text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + //! [indicator] + + //! [contentItem] + contentItem: Text { + leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + color: control.down ? "#26282a" : "#353637" + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + } + //! [contentItem] +} diff --git a/bin/win64/QtQuick/Controls.2/RadioDelegate.qml b/bin/win64/QtQuick/Controls.2/RadioDelegate.qml new file mode 100644 index 0000000..d745054 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/RadioDelegate.qml @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Controls 2.0 +import QtQuick.Controls.impl 2.0 +import QtQuick.Templates 2.0 as T + +T.RadioDelegate { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 12 + spacing: 12 + + //! [contentItem] + contentItem: Text { + leftPadding: control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: !control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + color: control.enabled ? "#26282a" : "#bdbebf" + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + } + //! [contentItem] + + //! [indicator] + indicator: RadioIndicator { + x: control.mirrored ? control.leftPadding : control.width - width - control.rightPadding + y: control.topPadding + (control.availableHeight - height) / 2 + + control: control + } + //! [indicator] + + //! [background] + background: Rectangle { + implicitWidth: 100 + implicitHeight: 40 + visible: control.down || control.highlighted + color: control.down ? "#bdbebf" : "#eeeeee" + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/RadioIndicator.qml b/bin/win64/QtQuick/Controls.2/RadioIndicator.qml new file mode 100644 index 0000000..08c24cc --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/RadioIndicator.qml @@ -0,0 +1,59 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 + +Rectangle { + implicitWidth: 28 + implicitHeight: 28 + + radius: width / 2 + color: control.down ? (control.visualFocus ? "#cce0ff" : "#f6f6f6") : (control.visualFocus ? "#f0f6ff" : "#ffffff") + border.width: control.visualFocus ? 2 : 1 + border.color: control.visualFocus ? "#0066ff" : (control.down ? "#808080" : "#909090") + + property Item control + + Rectangle { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: 20 + height: 20 + radius: width / 2 + color: control.down ? "#26282a" : "#353637" + visible: control.checked + } +} diff --git a/bin/win64/QtQuick/Controls.2/RangeSlider.qml b/bin/win64/QtQuick/Controls.2/RangeSlider.qml new file mode 100644 index 0000000..8d28529 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/RangeSlider.qml @@ -0,0 +1,100 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T + +T.RangeSlider { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + Math.max(background ? background.implicitWidth : 0, + first.handle ? first.handle.implicitWidth : 0, + second.handle ? second.handle.implicitWidth : 0) + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(background ? background.implicitHeight : 0, + first.handle ? first.handle.implicitHeight : 0, + second.handle ? second.handle.implicitHeight : 0) + topPadding + bottomPadding) + + padding: 6 + + //! [firstHandle] + first.handle: Rectangle { + x: control.leftPadding + (horizontal ? control.first.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) + y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : control.first.visualPosition * (control.availableHeight - height)) + implicitWidth: 28 + implicitHeight: 28 + radius: width / 2 + border.width: activeFocus ? 2 : 1 + border.color: control.enabled ? (activeFocus ? "#0066ff" : (control.first.pressed ? "#808080" : "#909090")) : "#d6d6d6" + color: control.enabled ? (first.pressed ? (activeFocus ? "#cce0ff" : "#f6f6f6") : (activeFocus ? "#f0f6ff" : "#ffffff")) : "#fdfdfd" + + readonly property bool horizontal: control.orientation === Qt.Horizontal + } + //! [firstHandle] + + //! [secondHandle] + second.handle: Rectangle { + x: control.leftPadding + (horizontal ? control.second.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) + y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : control.second.visualPosition * (control.availableHeight - height)) + implicitWidth: 28 + implicitHeight: 28 + radius: width / 2 + border.width: activeFocus ? 2 : 1 + border.color: control.enabled ? (activeFocus ? "#0066ff" : (control.first.pressed ? "#808080" : "#909090")) : "#d6d6d6" + color: control.enabled ? (second.pressed ? (activeFocus ? "#cce0ff" : "#f6f6f6") : (activeFocus ? "#f0f6ff" : "#ffffff")) : "#fdfdfd" + + readonly property bool horizontal: control.orientation === Qt.Horizontal + } + //! [secondHandle] + + //! [background] + background: Rectangle { + x: control.leftPadding + (horizontal ? 0 : (control.availableWidth - width) / 2) + y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : 0) + implicitWidth: horizontal ? 200 : 6 + implicitHeight: horizontal ? 6 : 200 + width: horizontal ? control.availableWidth : implicitWidth + height: horizontal ? implicitHeight : control.availableHeight + radius: 3 + opacity: control.enabled ? 1 : 0.3 + color: "#e0e0e0" + scale: horizontal && control.mirrored ? -1 : 1 + + readonly property bool horizontal: control.orientation === Qt.Horizontal + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/ScrollBar.qml b/bin/win64/QtQuick/Controls.2/ScrollBar.qml new file mode 100644 index 0000000..8ccbc32 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/ScrollBar.qml @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T + +T.ScrollBar { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + + padding: 2 + + //! [contentItem] + contentItem: Rectangle { + id: handle + + implicitWidth: 6 + implicitHeight: 6 + + radius: width / 2 + color: control.pressed ? "#28282a" : "#bdbebf" + visible: control.size < 1.0 + opacity: 0.0 + + states: State { + name: "active" + when: control.active + PropertyChanges { target: handle; opacity: 0.75 } + } + + transitions: Transition { + from: "active" + SequentialAnimation { + PauseAnimation { duration: 450 } + NumberAnimation { target: handle; duration: 200; property: "opacity"; to: 0.0 } + } + } + } + //! [contentItem] +} diff --git a/bin/win64/QtQuick/Controls.2/ScrollIndicator.qml b/bin/win64/QtQuick/Controls.2/ScrollIndicator.qml new file mode 100644 index 0000000..cd7b53f --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/ScrollIndicator.qml @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T + +T.ScrollIndicator { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + + padding: 2 + + //! [contentItem] + contentItem: Rectangle { + id: indicator + + implicitWidth: 2 + implicitHeight: 2 + + color: "#bdbebf" + visible: control.size < 1.0 + opacity: 0.0 + + states: State { + name: "active" + when: control.active + PropertyChanges { target: indicator; opacity: 0.75 } + } + + transitions: [ + Transition { + from: "active" + SequentialAnimation { + PauseAnimation { duration: 450 } + NumberAnimation { target: indicator; duration: 200; property: "opacity"; to: 0.0 } + } + } + ] + } + //! [contentItem] +} diff --git a/bin/win64/QtQuick/Controls.2/Slider.qml b/bin/win64/QtQuick/Controls.2/Slider.qml new file mode 100644 index 0000000..a44a6c8 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Slider.qml @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T + +T.Slider { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + Math.max(background ? background.implicitWidth : 0, + handle ? handle.implicitWidth : 0) + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(background ? background.implicitHeight : 0, + handle ? handle.implicitHeight : 0) + topPadding + bottomPadding) + + padding: 6 + + //! [handle] + handle: Rectangle { + x: control.leftPadding + (horizontal ? control.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) + y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : control.visualPosition * (control.availableHeight - height)) + implicitWidth: 28 + implicitHeight: 28 + radius: width / 2 + color: control.enabled ? (control.pressed ? (control.visualFocus ? "#cce0ff" : "#f6f6f6") : (control.visualFocus ? "#f0f6ff" : "#ffffff")) : "#fdfdfd" + border.width: control.visualFocus ? 2 : 1 + border.color: control.enabled ? (control.visualFocus ? "#0066ff" : (control.pressed ? "#808080" : "#909090")) : "#d6d6d6" + + readonly property bool horizontal: control.orientation === Qt.Horizontal + } + //! [handle] + + //! [background] + background: Rectangle { + x: control.leftPadding + (horizontal ? 0 : (control.availableWidth - width) / 2) + y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : 0) + implicitWidth: horizontal ? 200 : 6 + implicitHeight: horizontal ? 6 : 200 + width: horizontal ? control.availableWidth : implicitWidth + height: horizontal ? implicitHeight : control.availableHeight + radius: 3 + opacity: control.enabled ? 1 : 0.3 + color: "#e0e0e0" + scale: horizontal && control.mirrored ? -1 : 1 + + readonly property bool horizontal: control.orientation === Qt.Horizontal + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/SpinBox.qml b/bin/win64/QtQuick/Controls.2/SpinBox.qml new file mode 100644 index 0000000..8985311 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/SpinBox.qml @@ -0,0 +1,145 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T + +T.SpinBox { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + 2 * padding + + (up.indicator ? up.indicator.implicitWidth : 0) + + (down.indicator ? down.indicator.implicitWidth : 0)) + implicitHeight: Math.max(contentItem.implicitHeight + topPadding + bottomPadding, + background ? background.implicitHeight : 0, + up.indicator ? up.indicator.implicitHeight : 0, + down.indicator ? down.indicator.implicitHeight : 0) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 6 + leftPadding: padding + (control.mirrored ? (up.indicator ? up.indicator.width : 0) : (down.indicator ? down.indicator.width : 0)) + rightPadding: padding + (control.mirrored ? (down.indicator ? down.indicator.width : 0) : (up.indicator ? up.indicator.width : 0)) + + //! [validator] + validator: IntValidator { + locale: control.locale.name + bottom: Math.min(control.from, control.to) + top: Math.max(control.from, control.to) + } + //! [validator] + + //! [contentItem] + contentItem: TextInput { + z: 2 + text: control.textFromValue(control.value, control.locale) + opacity: control.enabled ? 1 : 0.3 + + font: control.font + color: "#353637" + selectionColor: "#0066ff" + selectedTextColor: "#ffffff" + horizontalAlignment: Qt.AlignHCenter + verticalAlignment: Qt.AlignVCenter + + readOnly: !control.editable + validator: control.validator + inputMethodHints: Qt.ImhFormattedNumbersOnly + + Rectangle { + x: -6 - (down.indicator ? 1 : 0) + y: -6 + width: control.width - (up.indicator ? up.indicator.width - 1 : 0) - (down.indicator ? down.indicator.width - 1 : 0) + height: control.height + visible: control.activeFocus + color: "transparent" + border.color: "#0066ff" + border.width: 2 + } + } + //! [contentItem] + + //! [up.indicator] + up.indicator: Rectangle { + x: control.mirrored ? 0 : parent.width - width + height: parent.height + implicitWidth: 40 + implicitHeight: 40 + color: up.pressed ? "#d0d0d0" : "#e0e0e0" + + Rectangle { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: parent.width / 3 + height: 2 + color: enabled ? "#353637" : "#bdbebf" + } + Rectangle { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: 2 + height: parent.width / 3 + color: enabled ? "#353637" : "#bdbebf" + } + } + //! [up.indicator] + + //! [down.indicator] + down.indicator: Rectangle { + x: control.mirrored ? parent.width - width : 0 + height: parent.height + implicitWidth: 40 + implicitHeight: 40 + color: down.pressed ? "#d0d0d0" : "#e0e0e0" + + Rectangle { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: parent.width / 3 + height: 2 + color: enabled ? "#353637" : "#bdbebf" + } + } + //! [down.indicator] + + //! [background] + background: Rectangle { + opacity: control.enabled ? 1 : 0.3 + implicitWidth: 140 + border.color: "#e0e0e0" + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/StackView.qml b/bin/win64/QtQuick/Controls.2/StackView.qml new file mode 100644 index 0000000..aa95c6a --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/StackView.qml @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.4 +import QtQuick.Controls 2.0 +import QtQuick.Templates 2.0 as T + +T.StackView { + id: control + + //! [popEnter] + popEnter: Transition { + XAnimator { from: (control.mirrored ? -1 : 1) * -control.width; to: 0; duration: 400; easing.type: Easing.OutCubic } + } + //! [popEnter] + + //! [popExit] + popExit: Transition { + XAnimator { from: 0; to: (control.mirrored ? -1 : 1) * control.width; duration: 400; easing.type: Easing.OutCubic } + } + //! [popExit] + + //! [pushEnter] + pushEnter: Transition { + XAnimator { from: (control.mirrored ? -1 : 1) * control.width; to: 0; duration: 400; easing.type: Easing.OutCubic } + } + //! [pushEnter] + + //! [pushExit] + pushExit: Transition { + XAnimator { from: 0; to: (control.mirrored ? -1 : 1) * -control.width; duration: 400; easing.type: Easing.OutCubic } + } + //! [pushExit] + + //! [replaceEnter] + replaceEnter: Transition { + XAnimator { from: (control.mirrored ? -1 : 1) * control.width; to: 0; duration: 400; easing.type: Easing.OutCubic } + } + //! [replaceEnter] + + //! [replaceExit] + replaceExit: Transition { + XAnimator { from: 0; to: (control.mirrored ? -1 : 1) * -control.width; duration: 400; easing.type: Easing.OutCubic } + } + //! [replaceExit] +} diff --git a/bin/win64/QtQuick/Controls.2/SwipeDelegate.qml b/bin/win64/QtQuick/Controls.2/SwipeDelegate.qml new file mode 100644 index 0000000..7ffd5a2 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/SwipeDelegate.qml @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T + +T.SwipeDelegate { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 12 + spacing: 12 + + //! [contentItem] + contentItem: Text { + leftPadding: control.mirrored ? (control.indicator ? control.indicator.width : 0) + control.spacing : 0 + rightPadding: !control.mirrored ? (control.indicator ? control.indicator.width : 0) + control.spacing : 0 + + text: control.text + font: control.font + color: control.enabled ? "#26282a" : "#bdbebf" + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + + Behavior on x { + enabled: !control.down + NumberAnimation { + easing.type: Easing.InOutCubic + duration: 400 + } + } + } + //! [contentItem] + + //! [background] + background: Rectangle { + color: control.visualFocus ? (control.down ? "#cce0ff" : "#e5efff") : (control.down ? "#bdbebf" : "#ffffff") + + Behavior on x { + enabled: !control.down + NumberAnimation { + easing.type: Easing.InOutCubic + duration: 400 + } + } + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/SwipeView.qml b/bin/win64/QtQuick/Controls.2/SwipeView.qml new file mode 100644 index 0000000..71676f1 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/SwipeView.qml @@ -0,0 +1,67 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Controls 2.0 +import QtQuick.Templates 2.0 as T + +T.SwipeView { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + + Accessible.role: Accessible.PageTabList + + //! [contentItem] + contentItem: ListView { + model: control.contentModel + currentIndex: control.currentIndex + + spacing: control.spacing + orientation: Qt.Horizontal + snapMode: ListView.SnapOneItem + boundsBehavior: Flickable.StopAtBounds + + highlightRangeMode: ListView.StrictlyEnforceRange + preferredHighlightBegin: 0 + preferredHighlightEnd: 0 + highlightMoveDuration: 250 + } + //! [contentItem] +} diff --git a/bin/win64/QtQuick/Controls.2/Switch.qml b/bin/win64/QtQuick/Controls.2/Switch.qml new file mode 100644 index 0000000..0810626 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Switch.qml @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls 2.0 +import QtQuick.Controls.impl 2.0 + +T.Switch { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 6 + spacing: 6 + + //! [indicator] + indicator: SwitchIndicator { + x: text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + //! [indicator] + + //! [contentItem] + contentItem: Text { + leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + color: control.enabled ? "#26282a" : "#bdbebf" + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + } + //! [contentItem] +} diff --git a/bin/win64/QtQuick/Controls.2/SwitchDelegate.qml b/bin/win64/QtQuick/Controls.2/SwitchDelegate.qml new file mode 100644 index 0000000..430fc8e --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/SwitchDelegate.qml @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls 2.0 +import QtQuick.Controls.impl 2.0 + +T.SwitchDelegate { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 12 + spacing: 12 + + //! [indicator] + indicator: SwitchIndicator { + x: text ? (control.mirrored ? control.leftPadding : control.width - width - control.rightPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + //! [indicator] + + //! [contentItem] + contentItem: Text { + leftPadding: control.indicator && !control.mirrored ? 0 : control.indicator.width + control.spacing + rightPadding: control.indicator && control.mirrored ? 0 : control.indicator.width + control.spacing + + text: control.text + font: control.font + color: control.enabled ? "#26282a" : "#bdbebf" + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitWidth: 100 + implicitHeight: 40 + visible: control.down || control.highlighted + color: control.down ? "#bdbebf" : "#eeeeee" + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/SwitchIndicator.qml b/bin/win64/QtQuick/Controls.2/SwitchIndicator.qml new file mode 100644 index 0000000..f11f714 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/SwitchIndicator.qml @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 + +Item { + implicitWidth: 56 + implicitHeight: 28 + + property Item control + + Rectangle { + y: parent.height / 2 - height / 2 + width: 56 + height: 16 + radius: 8 + opacity: control.enabled ? 1 : 0.3 + color: control.checked ? (control.visualFocus ? "#0066ff" : "#353637") : "#e0e0e0" + border.width: control.visualFocus ? 2 : 0 + border.color: "#0066ff" + } + + Rectangle { + x: Math.max(0, Math.min(parent.width - width, control.visualPosition * parent.width - (width / 2))) + y: (parent.height - height) / 2 + width: 28 + height: 28 + radius: 16 + color: control.enabled ? (control.down ? (control.visualFocus ? "#cce0ff" : "#f6f6f6") : (control.visualFocus ? "#f0f6ff" : "#ffffff")) : "#fdfdfd" + border.width: control.visualFocus ? 2 : 1 + border.color: control.enabled ? (control.visualFocus ? "#0066ff" : (control.down ? "#808080" : "#909090")) : "#d6d6d6" + + Behavior on x { + enabled: !control.down + SmoothedAnimation { velocity: 200 } + } + } +} diff --git a/bin/win64/QtQuick/Controls.2/TabBar.qml b/bin/win64/QtQuick/Controls.2/TabBar.qml new file mode 100644 index 0000000..6f3e040 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/TabBar.qml @@ -0,0 +1,68 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T + +T.TabBar { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + + spacing: 1 + + //! [contentItem] + contentItem: ListView { + implicitWidth: contentWidth + implicitHeight: 40 + + model: control.contentModel + currentIndex: control.currentIndex + + spacing: control.spacing + orientation: ListView.Horizontal + boundsBehavior: Flickable.StopAtBounds + snapMode: ListView.SnapToItem + } + //! [contentItem] + + //! [background] + background: Rectangle { } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/TabButton.qml b/bin/win64/QtQuick/Controls.2/TabButton.qml new file mode 100644 index 0000000..870edb6 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/TabButton.qml @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T + +T.TabButton { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.contentHeight + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 6 + + //! [contentItem] + contentItem: Text { + text: control.text + font: control.font + elide: Text.ElideRight + opacity: enabled ? 1 : 0.3 + color: !control.checked ? "#ffffff" : control.down ? "#26282a" : "#353637" + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitHeight: 40 + color: control.down ? (control.checked ? "#e4e4e4" : "#585a5c") : (control.checked ? "transparent" : "#353637") + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/TextArea.qml b/bin/win64/QtQuick/Controls.2/TextArea.qml new file mode 100644 index 0000000..f1ec6df --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/TextArea.qml @@ -0,0 +1,73 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T + +T.TextArea { + id: control + + implicitWidth: Math.max(contentWidth + leftPadding + rightPadding, + background ? background.implicitWidth : 0, + placeholder.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(contentHeight + topPadding + bottomPadding, + background ? background.implicitHeight : 0, + placeholder.implicitHeight + topPadding + bottomPadding) + + padding: 6 + leftPadding: padding + 4 + + opacity: enabled ? 1 : 0.2 + color: "#353637" + selectionColor: "#fddd5c" + selectedTextColor: color + + Text { + id: placeholder + x: control.leftPadding + y: control.topPadding + width: control.width - (control.leftPadding + control.rightPadding) + height: control.height - (control.topPadding + control.bottomPadding) + + text: control.placeholderText + font: control.font + color: "#c2c2c2" + horizontalAlignment: control.horizontalAlignment + verticalAlignment: control.verticalAlignment + visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) + elide: Text.ElideRight + } +} diff --git a/bin/win64/QtQuick/Controls.2/TextField.qml b/bin/win64/QtQuick/Controls.2/TextField.qml new file mode 100644 index 0000000..aea83dd --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/TextField.qml @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T + +T.TextField { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + placeholder.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + placeholder.implicitHeight + topPadding + bottomPadding) + + padding: 6 + leftPadding: padding + 4 + + opacity: enabled ? 1 : 0.2 + color: "#353637" + selectionColor: "#fddd5c" + selectedTextColor: color + verticalAlignment: TextInput.AlignVCenter + + Text { + id: placeholder + x: control.leftPadding + y: control.topPadding + width: control.width - (control.leftPadding + control.rightPadding) + height: control.height - (control.topPadding + control.bottomPadding) + + text: control.placeholderText + font: control.font + color: "#bdbebf" + horizontalAlignment: control.horizontalAlignment + verticalAlignment: control.verticalAlignment + visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) + elide: Text.ElideRight + } + + //! [background] + background: Rectangle { + implicitWidth: 200 + implicitHeight: 40 + border.width: control.activeFocus ? 2 : 1 + color: control.enabled ? "transparent" : "#353637" + border.color: control.activeFocus ? "#0066ff" : (control.enabled ? "#bdbebf" : "transparent") + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/ToolBar.qml b/bin/win64/QtQuick/Controls.2/ToolBar.qml new file mode 100644 index 0000000..a787df6 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/ToolBar.qml @@ -0,0 +1,59 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T + +T.ToolBar { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) + + contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) + contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) + + //! [contentItem] + contentItem: Item { } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitHeight: 40 + color: "#eeeeee" + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/ToolButton.qml b/bin/win64/QtQuick/Controls.2/ToolButton.qml new file mode 100644 index 0000000..2887d6b --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/ToolButton.qml @@ -0,0 +1,72 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T + +T.ToolButton { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 6 + + //! [contentItem] + contentItem: Text { + text: control.text + font: control.font + color: control.enabled ? (control.visualFocus ? "#0066ff" : "#26282a") : "#c2c2c2" + elide: Text.ElideRight + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitWidth: 40 + implicitHeight: 40 + + color: Qt.darker("#33333333", control.enabled && (control.checked || control.highlighted) ? 1.5 : 1.0) + opacity: control.down ? 1.0 : control.enabled && (control.checked || control.highlighted) ? 0.5 : 0 + visible: control.down || (control.enabled && (control.checked || control.highlighted)) + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/ToolTip.qml b/bin/win64/QtQuick/Controls.2/ToolTip.qml new file mode 100644 index 0000000..876e227 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/ToolTip.qml @@ -0,0 +1,70 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Controls 2.0 +import QtQuick.Templates 2.0 as T + +T.ToolTip { + id: control + + x: parent ? (parent.width - implicitWidth) / 2 : 0 + y: -implicitHeight - 3 + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + + margins: 6 + padding: 6 + + closePolicy: T.Popup.CloseOnEscape | T.Popup.CloseOnPressOutsideParent | T.Popup.CloseOnReleaseOutsideParent + + //! [contentItem] + contentItem: Text { + text: control.text + font: control.font + // TODO: wrapMode: Label.Wrap + } + //! [contentItem] + + //! [background] + background: Rectangle { + border.color: "#353637" + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Tumbler.qml b/bin/win64/QtQuick/Controls.2/Tumbler.qml new file mode 100644 index 0000000..13bc085 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Tumbler.qml @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Controls 2.0 +import QtQuick.Templates 2.0 as T + +T.Tumbler { + id: control + implicitWidth: 60 + implicitHeight: 200 + + //! [delegate] + delegate: Text { + id: label + text: modelData + color: control.visualFocus ? "#0066ff" : "#26282a" + font: control.font + opacity: (1.0 - Math.abs(Tumbler.displacement) / (visibleItemCount / 2)) * (control.enabled ? 1 : 0.6) + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + } + //! [delegate] + + //! [contentItem] + contentItem: PathView { + id: pathView + model: control.model + delegate: control.delegate + clip: true + pathItemCount: control.visibleItemCount + 1 + preferredHighlightBegin: 0.5 + preferredHighlightEnd: 0.5 + dragMargin: width / 2 + + path: Path { + startX: pathView.width / 2 + startY: -pathView.delegateHeight / 2 + PathLine { + x: pathView.width / 2 + y: pathView.pathItemCount * pathView.delegateHeight - pathView.delegateHeight / 2 + } + } + + property real delegateHeight: control.availableHeight / control.visibleItemCount + } + //! [contentItem] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/ApplicationWindow.qml b/bin/win64/QtQuick/Controls.2/Universal/ApplicationWindow.qml new file mode 100644 index 0000000..70bd403 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/ApplicationWindow.qml @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 +import QtQuick.Controls.Universal.impl 2.0 + +T.ApplicationWindow { + id: window + + color: Universal.background + + overlay.modal: Rectangle { + color: window.Universal.baseLowColor + } + + overlay.modeless: Rectangle { + color: window.Universal.baseLowColor + } + + FocusRectangle { + parent: window.activeFocusControl + width: parent ? parent.width : 0 + height: parent ? parent.height : 0 + visible: parent && !!parent.useSystemFocusVisuals && !!parent.visualFocus + } +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/BusyIndicator.qml b/bin/win64/QtQuick/Controls.2/Universal/BusyIndicator.qml new file mode 100644 index 0000000..ef66641 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/BusyIndicator.qml @@ -0,0 +1,66 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 +import QtQuick.Controls.Universal.impl 2.0 + +T.BusyIndicator { + id: control + + implicitWidth: contentItem.implicitWidth + leftPadding + rightPadding + implicitHeight: contentItem.implicitHeight + topPadding + bottomPadding + + //! [contentItem] + contentItem: ProgressRing { + id: ring + + implicitWidth: 20 + implicitHeight: 20 + + readonly property real size: Math.min(control.availableWidth, control.availableHeight) + + count: size < 60 ? 5 : 6 // "Small" vs. "Large" + color: control.Universal.accent + + ProgressRingAnimator { + target: ring + running: control.visible && control.running + } + } + //! [contentItem] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/Button.qml b/bin/win64/QtQuick/Controls.2/Universal/Button.qml new file mode 100644 index 0000000..60a2ac5 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/Button.qml @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.Button { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 8 + topPadding: padding - 4 + bottomPadding: padding - 4 + + property bool useSystemFocusVisuals: true + + //! [contentItem] + contentItem: Text { + text: control.text + font: control.font + elide: Text.ElideRight + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + + opacity: enabled ? 1.0 : 0.2 + color: control.Universal.foreground + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitWidth: 32 + implicitHeight: 32 + + visible: !control.flat || control.down || control.checked || control.highlighted + color: control.down ? control.Universal.baseMediumLowColor : + control.enabled && (control.highlighted || control.checked) ? control.Universal.accent : + control.Universal.baseLowColor + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/CheckBox.qml b/bin/win64/QtQuick/Controls.2/Universal/CheckBox.qml new file mode 100644 index 0000000..262f16b --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/CheckBox.qml @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 +import QtQuick.Controls.Universal.impl 2.0 + +T.CheckBox { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 6 + spacing: 8 + + property bool useSystemFocusVisuals: true + + //! [indicator] + indicator: CheckIndicator { + x: text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + //! [indicator] + + //! [contentItem] + contentItem: Text { + leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + + opacity: enabled ? 1.0 : 0.2 + color: control.Universal.foreground + } + //! [contentItem] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/CheckDelegate.qml b/bin/win64/QtQuick/Controls.2/Universal/CheckDelegate.qml new file mode 100644 index 0000000..9441c7b --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/CheckDelegate.qml @@ -0,0 +1,96 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.CheckDelegate { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + spacing: 12 + + padding: 12 + topPadding: padding - 1 + bottomPadding: padding + 1 + + //! [indicator] + indicator: CheckIndicator { + x: text ? (control.mirrored ? control.leftPadding : control.width - width - control.rightPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + //! [indicator] + + //! [contentItem] + contentItem: Text { + leftPadding: !control.mirrored ? 0 : control.indicator.width + control.spacing + rightPadding: control.mirrored ? 0 : control.indicator.width + control.spacing + + text: control.text + font: control.font + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + + opacity: enabled ? 1.0 : 0.2 + color: control.Universal.foreground + } + //! [contentItem] + + //! [background] + background: Rectangle { + visible: control.down || control.highlighted || control.visualFocus + color: control.down ? control.Universal.listMediumColor : control.Universal.altMediumLowColor + Rectangle { + width: parent.width + height: parent.height + visible: control.visualFocus || control.highlighted + color: control.Universal.accent + opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6 + } + + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/CheckIndicator.qml b/bin/win64/QtQuick/Controls.2/Universal/CheckIndicator.qml new file mode 100644 index 0000000..eeecf26 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/CheckIndicator.qml @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +Rectangle { + implicitWidth: 20 + implicitHeight: 20 + + color: !control.enabled ? "transparent" : + control.down && control.checkState !== Qt.PartiallyChecked ? control.Universal.baseMediumColor : + control.checkState === Qt.Checked ? control.Universal.accent : "transparent" + border.color: !control.enabled ? control.Universal.baseLowColor : + control.down ? control.Universal.baseMediumColor : + control.checked ? control.Universal.accent : control.Universal.baseMediumHighColor + border.width: 2 // CheckBoxBorderThemeThickness + + property Item control + + Image { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + + visible: control.checkState === Qt.Checked + source: "image://universal/checkmark/" + (!control.enabled ? control.Universal.baseLowColor : control.Universal.chromeWhiteColor) + sourceSize.width: width + sourceSize.height: height + } + + Rectangle { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: parent.width / 2 + height: parent.height / 2 + + visible: control.checkState === Qt.PartiallyChecked + color: !control.enabled ? control.Universal.baseLowColor : + control.down ? control.Universal.baseMediumColor : control.Universal.baseMediumHighColor + } +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/ComboBox.qml b/bin/win64/QtQuick/Controls.2/Universal/ComboBox.qml new file mode 100644 index 0000000..6d550aa --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/ComboBox.qml @@ -0,0 +1,143 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Window 2.2 +import QtQuick.Controls 2.0 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.ComboBox { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + spacing: 10 + padding: 12 + topPadding: padding - 7 + rightPadding: padding - 2 + bottomPadding: padding - 5 + + //! [delegate] + delegate: ItemDelegate { + width: control.width + text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] : model[control.textRole]) : modelData + highlighted: control.highlightedIndex === index + } + //! [delegate] + + //! [indicator] + indicator: Image { + x: control.mirrored ? control.leftPadding : control.width - width - control.rightPadding + y: control.topPadding + (control.availableHeight - height) / 2 + source: "image://universal/downarrow/" + (!control.enabled ? control.Universal.baseLowColor : control.Universal.baseMediumHighColor) + sourceSize.width: width + sourceSize.height: height + } + //! [indicator] + + //! [contentItem] + contentItem: Text { + leftPadding: control.mirrored && control.indicator ? control.indicator.width + control.spacing : 0 + rightPadding: !control.mirrored && control.indicator ? control.indicator.width + control.spacing : 0 + + text: control.displayText + font: control.font + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + elide: Text.ElideRight + + opacity: enabled ? 1.0 : 0.2 + color: control.Universal.foreground + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitWidth: 120 + implicitHeight: 32 + + border.width: 2 // ComboBoxBorderThemeThickness + border.color: !control.enabled ? control.Universal.baseLowColor : + control.pressed || popup.visible ? control.Universal.baseMediumLowColor : control.Universal.baseMediumLowColor + color: !control.enabled ? control.Universal.baseLowColor : + control.pressed || popup.visible ? control.Universal.listMediumColor : control.Universal.altMediumLowColor + + Rectangle { + x: 2 + y: 2 + width: parent.width - 4 + height: parent.height - 4 + + visible: control.visualFocus + color: control.Universal.accent + opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6 + } + } + //! [background] + + //! [popup] + popup: T.Popup { + width: control.width + implicitHeight: Math.min(396, listview.contentHeight) + topMargin: 8 + bottomMargin: 8 + + Universal.theme: control.Universal.theme + Universal.accent: control.Universal.accent + + contentItem: ListView { + id: listview + clip: true + model: control.popup.visible ? control.delegateModel : null + currentIndex: control.highlightedIndex + + T.ScrollIndicator.vertical: ScrollIndicator { } + } + + background: Rectangle { + color: control.Universal.chromeMediumLowColor + border.color: control.Universal.chromeHighColor + border.width: 1 // FlyoutBorderThemeThickness + } + } + //! [popup] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/Dial.qml b/bin/win64/QtQuick/Controls.2/Universal/Dial.qml new file mode 100644 index 0000000..466c602 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/Dial.qml @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.Dial { + id: control + + implicitWidth: 100 + implicitHeight: 100 + + //! [background] + background: Rectangle { + x: control.width / 2 - width / 2 + y: control.height / 2 - height / 2 + width: Math.max(64, Math.min(control.width, control.height)) + height: width + radius: width / 2 + color: "transparent" + border.color: !control.enabled ? control.Universal.baseLowColor : control.Universal.baseMediumColor + border.width: 2 + } + //! [background] + + //! [handle] + handle: Rectangle { + implicitWidth: 20 + implicitHeight: 20 + + x: background.x + background.width / 2 - handle.width / 2 + y: background.y + background.height / 2 - handle.height / 2 + + radius: width / 2 + color: !control.enabled ? control.Universal.baseLowColor : + control.down ? control.Universal.baseMediumColor : control.Universal.baseMediumHighColor + + transform: [ + Translate { + y: -background.height * 0.4 + handle.height / 2 + }, + Rotation { + angle: control.angle + origin.x: handle.width / 2 + origin.y: handle.height / 2 + } + ] + } + //! [handle] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/Drawer.qml b/bin/win64/QtQuick/Controls.2/Universal/Drawer.qml new file mode 100644 index 0000000..e23403a --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/Drawer.qml @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.Drawer { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) + + contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) + contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) + + topPadding: control.edge === Qt.BottomEdge + leftPadding: control.edge === Qt.RightEdge + rightPadding: control.edge === Qt.LeftEdge + bottomPadding: control.edge === Qt.TopEdge + + //! [enter] + enter: Transition { SmoothedAnimation { velocity: 5 } } + //! [enter] + + //! [exit] + exit: Transition { SmoothedAnimation { velocity: 5 } } + //! [exit] + + //! [contentItem] + contentItem: Item { } + //! [contentItem] + + //! [background] + background: Rectangle { + color: control.Universal.chromeMediumLowColor + Rectangle { + readonly property bool horizontal: control.edge === Qt.LeftEdge || control.edge === Qt.RightEdge + width: horizontal ? 1 : parent.width + height: horizontal ? parent.height : 1 + color: control.Universal.chromeHighColor + x: control.edge === Qt.LeftEdge ? parent.width - 1 : 0 + y: control.edge === Qt.TopEdge ? parent.height - 1 : 0 + } + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/Frame.qml b/bin/win64/QtQuick/Controls.2/Universal/Frame.qml new file mode 100644 index 0000000..8d8b9d7 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/Frame.qml @@ -0,0 +1,62 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.Frame { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) + + contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) + contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) + + padding: 12 + + //! [contentItem] + contentItem: Item { } + //! [contentItem] + + //! [background] + background: Rectangle { + color: "transparent" + border.color: control.Universal.chromeDisabledLowColor + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/GroupBox.qml b/bin/win64/QtQuick/Controls.2/Universal/GroupBox.qml new file mode 100644 index 0000000..a163fb1 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/GroupBox.qml @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.GroupBox { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + label ? label.implicitWidth + leftPadding + rightPadding : 0, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) + + contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) + contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) + + spacing: 12 + padding: 12 + topPadding: padding + (label && label.implicitWidth > 0 ? label.implicitHeight + spacing : 0) + + //! [contentItem] + contentItem: Item { } + //! [contentItem] + + //! [label] + label: Text { + x: control.leftPadding + width: control.availableWidth + + text: control.title + font: control.font + elide: Text.ElideRight + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + + opacity: enabled ? 1.0 : 0.2 + color: control.Universal.foreground + } + //! [label] + + //! [background] + background: Rectangle { + y: control.topPadding - control.padding + width: parent.width + height: parent.height - control.topPadding + control.padding + + color: "transparent" + border.color: control.Universal.chromeDisabledLowColor + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/ItemDelegate.qml b/bin/win64/QtQuick/Controls.2/Universal/ItemDelegate.qml new file mode 100644 index 0000000..af239e4 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/ItemDelegate.qml @@ -0,0 +1,88 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.ItemDelegate { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + spacing: 12 + + padding: 12 + topPadding: padding - 1 + bottomPadding: padding + 1 + + //! [contentItem] + contentItem: Text { + leftPadding: !control.mirrored ? (control.indicator ? control.indicator.width : 0) + control.spacing : 0 + rightPadding: control.mirrored ? (control.indicator ? control.indicator.width : 0) + control.spacing : 0 + + text: control.text + font: control.font + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + + opacity: enabled ? 1.0 : 0.2 + color: control.Universal.foreground + } + //! [contentItem] + + //! [background] + background: Rectangle { + visible: control.down || control.highlighted || control.visualFocus + color: control.down ? control.Universal.listMediumColor : control.Universal.altMediumLowColor + Rectangle { + width: parent.width + height: parent.height + visible: control.visualFocus || control.highlighted + color: control.Universal.accent + opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6 + } + + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/Label.qml b/bin/win64/QtQuick/Controls.2/Universal/Label.qml new file mode 100644 index 0000000..9b50f4f --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/Label.qml @@ -0,0 +1,47 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.Label { + id: control + + opacity: enabled ? 1.0 : 0.2 + color: control.Universal.foreground + linkColor: Universal.accent +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/Menu.qml b/bin/win64/QtQuick/Controls.2/Universal/Menu.qml new file mode 100644 index 0000000..d506fea --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/Menu.qml @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Controls 2.0 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.Menu { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem ? contentItem.implicitWidth + leftPadding + rightPadding : 0) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem ? contentItem.implicitHeight : 0) + topPadding + bottomPadding + + margins: 0 + + //! [contentItem] + contentItem: ListView { + implicitHeight: contentHeight + model: control.contentModel + // TODO: improve this? + interactive: ApplicationWindow.window ? contentHeight > ApplicationWindow.window.height : false + clip: true + keyNavigationWraps: false + currentIndex: -1 + + ScrollIndicator.vertical: ScrollIndicator {} + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitWidth: 200 + implicitHeight: 40 + color: control.Universal.chromeMediumLowColor + border.color: control.Universal.chromeHighColor + border.width: 1 // FlyoutBorderThemeThickness + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/MenuItem.qml b/bin/win64/QtQuick/Controls.2/Universal/MenuItem.qml new file mode 100644 index 0000000..342c0d7 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/MenuItem.qml @@ -0,0 +1,102 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.MenuItem { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 12 + topPadding: padding - 1 + bottomPadding: padding + 1 + spacing: 12 + + //! [contentItem] + contentItem: Text { + leftPadding: !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + color: !control.enabled ? control.Universal.baseLowColor : control.Universal.baseHighColor + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + } + //! [contentItem] + + //! [indicator] + indicator: Image { + x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + + visible: control.checked + source: !control.checkable ? "" : "image://universal/checkmark/" + (!control.enabled ? control.Universal.baseLowColor : control.down ? control.Universal.baseHighColor : control.Universal.baseMediumHighColor) + sourceSize.width: width + sourceSize.height: height + } + //! [indicator] + + //! [background] + background: Rectangle { + implicitWidth: 200 + implicitHeight: 40 + + color: !control.enabled ? control.Universal.baseLowColor : + control.down ? control.Universal.listMediumColor : control.Universal.altMediumLowColor + + Rectangle { + x: 1; y: 1 + width: parent.width - 2 + height: parent.height - 2 + + visible: control.visualFocus + color: control.Universal.accent + opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6 + } + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/Page.qml b/bin/win64/QtQuick/Controls.2/Universal/Page.qml new file mode 100644 index 0000000..f4509b4 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/Page.qml @@ -0,0 +1,53 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.Page { + id: control + + //! [contentItem] + contentItem: Item { } + //! [contentItem] + + //! [background] + background: Rectangle { + color: control.Universal.background + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/PageIndicator.qml b/bin/win64/QtQuick/Controls.2/Universal/PageIndicator.qml new file mode 100644 index 0000000..636f029 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/PageIndicator.qml @@ -0,0 +1,73 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.PageIndicator { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + + padding: 6 + spacing: 7 + + //! [delegate] + delegate: Rectangle { + implicitWidth: 5 + implicitHeight: 5 + + radius: width / 2 + color: index === control.currentIndex ? control.Universal.baseMediumHighColor : + pressed ? control.Universal.baseMediumLowColor : control.Universal.baseLowColor + } + //! [delegate] + + //! [contentItem] + contentItem: Row { + spacing: control.spacing + + Repeater { + model: control.count + delegate: control.delegate + } + } + //! [contentItem] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/Pane.qml b/bin/win64/QtQuick/Controls.2/Universal/Pane.qml new file mode 100644 index 0000000..7a97da5 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/Pane.qml @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.Pane { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) + + contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) + contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) + + padding: 12 + + //! [contentItem] + contentItem: Item { } + //! [contentItem] + + //! [background] + background: Rectangle { + color: control.Universal.background + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/Popup.qml b/bin/win64/QtQuick/Controls.2/Universal/Popup.qml new file mode 100644 index 0000000..892db08 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/Popup.qml @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.Popup { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentWidth > 0 ? contentWidth + leftPadding + rightPadding : 0) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentWidth > 0 ? contentHeight + topPadding + bottomPadding : 0) + + contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) + contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) + + padding: 12 + + contentItem: Item { } + + background: Rectangle { + color: control.Universal.chromeMediumLowColor + border.color: control.Universal.chromeHighColor + border.width: 1 // FlyoutBorderThemeThickness + } +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/ProgressBar.qml b/bin/win64/QtQuick/Controls.2/Universal/ProgressBar.qml new file mode 100644 index 0000000..b8df774 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/ProgressBar.qml @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 +import QtQuick.Controls.Universal.impl 2.0 + +T.ProgressBar { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + + //! [contentItem] + contentItem: ProgressStrip { + id: strip + implicitHeight: 10 + + scale: control.mirrored ? -1 : 1 + indeterminate: control.indeterminate + color: control.Universal.accent + progress: control.position + clip: control.indeterminate + + ProgressStripAnimator { + target: strip + running: control.visible && control.indeterminate + } + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitWidth: 100 + implicitHeight: 10 + + x: control.leftPadding + y: control.topPadding + (control.availableHeight - height) / 2 + width: control.availableWidth + height: 10 + + visible: !control.indeterminate + color: control.Universal.baseLowColor + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/RadioButton.qml b/bin/win64/QtQuick/Controls.2/Universal/RadioButton.qml new file mode 100644 index 0000000..b2f2966 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/RadioButton.qml @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 +import QtQuick.Controls.Universal.impl 2.0 + +T.RadioButton { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 6 + spacing: 8 + + property bool useSystemFocusVisuals: true + + //! [indicator] + indicator: RadioIndicator { + x: text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + //! [indicator] + + //! [contentItem] + contentItem: Text { + leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + + opacity: enabled ? 1.0 : 0.2 + color: control.Universal.foreground + } + //! [contentItem] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/RadioDelegate.qml b/bin/win64/QtQuick/Controls.2/Universal/RadioDelegate.qml new file mode 100644 index 0000000..8bf05d2 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/RadioDelegate.qml @@ -0,0 +1,98 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.RadioDelegate { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + spacing: 12 + + padding: 12 + topPadding: padding - 1 + bottomPadding: padding + 1 + + property Item control + + //! [indicator] + indicator: RadioIndicator { + x: text ? (control.mirrored ? control.leftPadding : control.width - width - control.rightPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + //! [indicator] + + //! [contentItem] + contentItem: Text { + leftPadding: !control.mirrored ? 0 : control.indicator.width + control.spacing + rightPadding: control.mirrored ? 0 : control.indicator.width + control.spacing + + text: control.text + font: control.font + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + + opacity: enabled ? 1.0 : 0.2 + color: control.Universal.foreground + } + //! [contentItem] + + //! [background] + background: Rectangle { + visible: control.down || control.highlighted || control.visualFocus + color: control.down ? control.Universal.listMediumColor : control.Universal.altMediumLowColor + Rectangle { + width: parent.width + height: parent.height + visible: control.visualFocus || control.highlighted + color: control.Universal.accent + opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6 + } + + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/RadioIndicator.qml b/bin/win64/QtQuick/Controls.2/Universal/RadioIndicator.qml new file mode 100644 index 0000000..65790e6 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/RadioIndicator.qml @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Controls.Universal 2.0 + +Rectangle { + implicitWidth: 20 + implicitHeight: 20 + radius: width / 2 + color: "transparent" + border.width: 2 // RadioButtonBorderThemeThickness + border.color: control.checked ? "transparent" : + !control.enabled ? control.Universal.baseLowColor : + control.down ? control.Universal.baseMediumColor : control.Universal.baseMediumHighColor + + property var control + + Rectangle { + id: checkOuterEllipse + width: parent.width + height: parent.height + + radius: width / 2 + opacity: control.checked ? 1 : 0 + color: "transparent" + border.width: 2 // RadioButtonBorderThemeThickness + border.color: !control.enabled ? control.Universal.baseLowColor : + control.down ? control.Universal.baseMediumColor : control.Universal.accent + } + + Rectangle { + id: checkGlyph + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: parent.width / 2 + height: parent.height / 2 + + radius: width / 2 + opacity: control.checked ? 1 : 0 + color: !control.enabled ? control.Universal.baseLowColor : + control.down ? control.Universal.baseMediumColor : control.Universal.baseMediumHighColor + } +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/RangeSlider.qml b/bin/win64/QtQuick/Controls.2/Universal/RangeSlider.qml new file mode 100644 index 0000000..061f95d --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/RangeSlider.qml @@ -0,0 +1,118 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.RangeSlider { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + Math.max(background ? background.implicitWidth : 0, + first.handle ? first.handle.implicitWidth : 0, + second.handle ? second.handle.implicitWidth : 0) + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(background ? background.implicitHeight : 0, + first.handle ? first.handle.implicitHeight : 0, + second.handle ? second.handle.implicitHeight : 0) + topPadding + bottomPadding) + + padding: 6 + + //! [firstHandle] + first.handle: Rectangle { + implicitWidth: horizontal ? 8 : 24 + implicitHeight: horizontal ? 24 : 8 + + readonly property bool horizontal: control.orientation === Qt.Horizontal + + x: control.leftPadding + (horizontal ? control.first.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) + y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : control.first.visualPosition * (control.availableHeight - height)) + + radius: 4 + color: control.first.pressed ? control.Universal.chromeHighColor : control.enabled ? control.Universal.accent : control.Universal.chromeDisabledHighColor + } + //! [firstHandle] + + //! [secondHandle] + second.handle: Rectangle { + implicitWidth: horizontal ? 8 : 24 + implicitHeight: horizontal ? 24 : 8 + + readonly property bool horizontal: control.orientation === Qt.Horizontal + + x: control.leftPadding + (horizontal ? control.second.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) + y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : control.second.visualPosition * (control.availableHeight - height)) + + radius: 4 + color: control.second.pressed ? control.Universal.chromeHighColor : control.enabled ? control.Universal.accent : control.Universal.chromeDisabledHighColor + } + //! [secondHandle] + + //! [background] + background: Item { + implicitWidth: horizontal ? 200 : 18 + implicitHeight: horizontal ? 18 : 200 + + readonly property bool horizontal: control.orientation === Qt.Horizontal + + x: control.leftPadding + (horizontal ? 0 : (control.availableWidth - width) / 2) + y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : 0) + width: horizontal ? control.availableWidth : implicitWidth + height: horizontal ? implicitHeight : control.availableHeight + + scale: horizontal && control.mirrored ? -1 : 1 + + Rectangle { + x: parent.horizontal ? 0 : (parent.width - width) / 2 + y: parent.horizontal ? (parent.height - height) / 2 : 0 + width: parent.horizontal ? parent.width : 2 // SliderBackgroundThemeHeight + height: !parent.horizontal ? parent.height : 2 // SliderBackgroundThemeHeight + + color: control.enabled ? control.Universal.baseMediumLowColor : control.Universal.chromeDisabledHighColor + } + + Rectangle { + x: parent.horizontal ? control.first.position * parent.width : (parent.width - width) / 2 + y: parent.horizontal ? (parent.height - height) / 2 : control.second.visualPosition * parent.height + width: parent.horizontal ? control.second.position * parent.width - control.first.position * parent.width : 2 // SliderBackgroundThemeHeight + height: !parent.horizontal ? control.second.position * parent.height - control.first.position * parent.height : 2 // SliderBackgroundThemeHeight + + color: control.enabled ? control.Universal.accent : control.Universal.chromeDisabledHighColor + } + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/ScrollBar.qml b/bin/win64/QtQuick/Controls.2/Universal/ScrollBar.qml new file mode 100644 index 0000000..1908738 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/ScrollBar.qml @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.ScrollBar { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + + // TODO: arrows + + //! [contentItem] + contentItem: Rectangle { + implicitWidth: 12 + implicitHeight: 12 + + color: control.pressed ? control.Universal.baseMediumColor : control.Universal.chromeHighColor + visible: control.size < 1.0 + opacity: 0.0 + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitWidth: 12 + implicitHeight: 12 + + color: control.Universal.chromeLowColor + visible: control.size < 1.0 + opacity: 0.0 + } + //! [background] + + states: [ + State { + name: "active" + when: control.active + } + ] + + transitions: [ + Transition { + to: "active" + NumberAnimation { targets: [contentItem, background]; property: "opacity"; to: 1.0 } + }, + Transition { + from: "active" + SequentialAnimation { + PauseAnimation { duration: 3000 } + NumberAnimation { targets: [contentItem, background]; property: "opacity"; to: 0.0 } + } + } + ] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/ScrollIndicator.qml b/bin/win64/QtQuick/Controls.2/Universal/ScrollIndicator.qml new file mode 100644 index 0000000..9f9f3fc --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/ScrollIndicator.qml @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.ScrollIndicator { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + + //! [contentItem] + contentItem: Rectangle { + id: indicator + + implicitWidth: 6 + implicitHeight: 6 + + color: control.Universal.baseMediumLowColor + visible: control.size < 1.0 + opacity: 0.0 + + states: [ + State { + name: "active" + when: control.active + } + ] + + transitions: [ + Transition { + to: "active" + NumberAnimation { target: indicator; property: "opacity"; to: 1.0 } + }, + Transition { + from: "active" + SequentialAnimation { + PauseAnimation { duration: 5000 } + NumberAnimation { target: indicator; property: "opacity"; to: 0.0 } + } + } + ] + } + //! [contentItem] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/Slider.qml b/bin/win64/QtQuick/Controls.2/Universal/Slider.qml new file mode 100644 index 0000000..9662acd --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/Slider.qml @@ -0,0 +1,103 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.Slider { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + Math.max(background ? background.implicitWidth : 0, + handle ? handle.implicitWidth : 0) + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(background ? background.implicitHeight : 0, + handle ? handle.implicitHeight : 0) + topPadding + bottomPadding) + + padding: 6 + + property bool useSystemFocusVisuals: true + + //! [handle] + handle: Rectangle { + implicitWidth: horizontal ? 8 : 24 + implicitHeight: horizontal ? 24 : 8 + + readonly property bool horizontal: control.orientation === Qt.Horizontal + + x: control.leftPadding + (horizontal ? control.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) + y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : control.visualPosition * (control.availableHeight - height)) + + radius: 4 + color: control.pressed ? control.Universal.chromeHighColor : control.enabled ? control.Universal.accent : control.Universal.chromeDisabledHighColor + } + //! [handle] + + //! [background] + background: Item { + implicitWidth: horizontal ? 200 : 18 + implicitHeight: horizontal ? 18 : 200 + + readonly property bool horizontal: control.orientation === Qt.Horizontal + + x: control.leftPadding + (horizontal ? 0 : (control.availableWidth - width) / 2) + y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : 0) + width: horizontal ? control.availableWidth : implicitWidth + height: horizontal ? implicitHeight : control.availableHeight + + scale: horizontal && control.mirrored ? -1 : 1 + + Rectangle { + x: parent.horizontal ? 0 : (parent.width - width) / 2 + y: parent.horizontal ? (parent.height - height) / 2 : 0 + width: parent.horizontal ? parent.width : 2 // SliderTrackThemeHeight + height: !parent.horizontal ? parent.height : 2 // SliderTrackThemeHeight + + color: control.enabled ? control.Universal.baseMediumLowColor : control.Universal.chromeDisabledHighColor + } + + Rectangle { + x: parent.horizontal ? 0 : (parent.width - width) / 2 + y: parent.horizontal ? (parent.height - height) / 2 : control.visualPosition * parent.height + width: parent.horizontal ? control.position * parent.width : 2 // SliderTrackThemeHeight + height: !parent.horizontal ? control.position * parent.height : 2 // SliderTrackThemeHeight + + color: control.enabled ? control.Universal.accent : control.Universal.chromeDisabledHighColor + } + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/SpinBox.qml b/bin/win64/QtQuick/Controls.2/Universal/SpinBox.qml new file mode 100644 index 0000000..4654aa0 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/SpinBox.qml @@ -0,0 +1,156 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.SpinBox { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + 16 + + (up.indicator ? up.indicator.implicitWidth : 0) + + (down.indicator ? down.indicator.implicitWidth : 0)) + implicitHeight: Math.max(contentItem.implicitHeight + topPadding + bottomPadding, + background ? background.implicitHeight : 0, + up.indicator ? up.indicator.implicitHeight : 0, + down.indicator ? down.indicator.implicitHeight : 0) + baselineOffset: contentItem.y + contentItem.baselineOffset + + // TextControlThemePadding + 2 (border) + padding: 12 + topPadding: padding - 7 + leftPadding: padding + (control.mirrored ? (up.indicator ? up.indicator.width : 0) : (down.indicator ? down.indicator.width : 0)) + rightPadding: padding - 4 + (control.mirrored ? (down.indicator ? down.indicator.width : 0) : (up.indicator ? up.indicator.width : 0)) + bottomPadding: padding - 5 + + Universal.theme: activeFocus ? Universal.Light : undefined + + //! [validator] + validator: IntValidator { + locale: control.locale.name + bottom: Math.min(control.from, control.to) + top: Math.max(control.from, control.to) + } + //! [validator] + + //! [contentItem] + contentItem: TextInput { + text: control.textFromValue(control.value, control.locale) + + font: control.font + color: !enabled ? control.Universal.chromeDisabledLowColor : + activeFocus ? control.Universal.chromeBlackHighColor : control.Universal.foreground + selectionColor: control.Universal.accent + selectedTextColor: control.Universal.chromeWhiteColor + horizontalAlignment: Qt.AlignHCenter + verticalAlignment: TextInput.AlignVCenter + + readOnly: !control.editable + validator: control.validator + inputMethodHints: Qt.ImhFormattedNumbersOnly + } + //! [contentItem] + + //! [up.indicator] + up.indicator: Item { + implicitWidth: 28 + height: parent.height + 4 + y: -2 + x: control.mirrored ? 0 : parent.width - width + + Rectangle { + x: 2; y: 4 + width: parent.width - 4 + height: parent.height - 8 + color: !control.up.pressed ? "transparent" : + control.activeFocus ? control.Universal.accent + : control.Universal.chromeDisabledLowColor + } + + Image { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + source: "image://universal/" + (control.mirrored ? "left" : "right") + "arrow/" + + (!enabled ? control.Universal.chromeDisabledLowColor : + control.activeFocus ? control.Universal.chromeBlackHighColor : control.Universal.baseHighColor) + sourceSize.width: width + sourceSize.height: height + } + } + //! [up.indicator] + + //! [down.indicator] + down.indicator: Item { + implicitWidth: 28 + height: parent.height + 4 + y: -2 + x: control.mirrored ? parent.width - width : 0 + + Rectangle { + x: 2; y: 4 + width: parent.width - 4 + height: parent.height - 8 + color: !control.down.pressed ? "transparent" : + control.activeFocus ? control.Universal.accent + : control.Universal.chromeDisabledLowColor + } + + Image { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + source: "image://universal/" + (control.mirrored ? "right" : "left") + "arrow/" + + (!enabled ? control.Universal.chromeDisabledLowColor : + control.activeFocus ? control.Universal.chromeBlackHighColor : control.Universal.baseHighColor) + sourceSize.width: width + sourceSize.height: height + } + } + //! [down.indicator] + + //! [background] + background: Rectangle { + implicitWidth: 60 + 28 // TextControlThemeMinWidth - 4 (border) + implicitHeight: 28 // TextControlThemeMinHeight - 4 (border) + + border.width: 2 // TextControlBorderThemeThickness + border.color: !control.enabled ? control.Universal.baseLowColor : + control.activeFocus ? control.Universal.accent : control.Universal.chromeDisabledLowColor + color: control.enabled ? control.Universal.background : control.Universal.baseLowColor + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/StackView.qml b/bin/win64/QtQuick/Controls.2/Universal/StackView.qml new file mode 100644 index 0000000..6023942 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/StackView.qml @@ -0,0 +1,88 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.StackView { + id: control + + //! [popEnter] + popEnter: Transition { + ParallelAnimation { + NumberAnimation { property: "opacity"; from: 0; to: 1; duration: 200; easing.type: Easing.InQuint } + NumberAnimation { property: "x"; from: (control.mirrored ? -0.3 : 0.3) * -control.width; to: 0; duration: 400; easing.type: Easing.OutCubic } + } + } + //! [popEnter] + + //! [popExit] + popExit: Transition { + NumberAnimation { property: "opacity"; from: 1; to: 0; duration: 200; easing.type: Easing.OutQuint } + } + //! [popExit] + + //! [pushEnter] + pushEnter: Transition { + ParallelAnimation { + NumberAnimation { property: "opacity"; from: 0; to: 1; duration: 200; easing.type: Easing.InQuint } + NumberAnimation { property: "x"; from: (control.mirrored ? -0.3 : 0.3) * control.width; to: 0; duration: 400; easing.type: Easing.OutCubic } + } + } + //! [pushEnter] + + //! [pushExit] + pushExit: Transition { + NumberAnimation { property: "opacity"; from: 1; to: 0; duration: 200; easing.type: Easing.OutQuint } + } + //! [pushExit] + + //! [replaceEnter] + replaceEnter: Transition { + ParallelAnimation { + NumberAnimation { property: "opacity"; from: 0; to: 1; duration: 200; easing.type: Easing.InQuint } + NumberAnimation { property: "x"; from: (control.mirrored ? -0.3 : 0.3) * control.width; to: 0; duration: 400; easing.type: Easing.OutCubic } + } + } + //! [replaceEnter] + + //! [replaceExit] + replaceExit: Transition { + NumberAnimation { property: "opacity"; from: 1; to: 0; duration: 200; easing.type: Easing.OutQuint } + } + //! [replaceExit] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/SwipeDelegate.qml b/bin/win64/QtQuick/Controls.2/Universal/SwipeDelegate.qml new file mode 100644 index 0000000..d11983e --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/SwipeDelegate.qml @@ -0,0 +1,109 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.SwipeDelegate { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + spacing: 12 + + padding: 12 + topPadding: padding - 1 + bottomPadding: padding + 1 + + //! [contentItem] + contentItem: Text { + leftPadding: !control.mirrored ? (control.indicator ? control.indicator.width : 0) + control.spacing : 0 + rightPadding: control.mirrored ? (control.indicator ? control.indicator.width : 0) + control.spacing : 0 + + text: control.text + font: control.font + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering + + opacity: enabled ? 1.0 : 0.2 + color: control.Universal.foreground + + Behavior on x { + enabled: !control.down + NumberAnimation { + easing.type: Easing.InOutCubic + duration: 400 + } + } + } + //! [contentItem] + + //! [background] + background: Rectangle { + color: control.Universal.background + + Rectangle { + width: parent.width + height: parent.height + color: control.down ? control.Universal.listMediumColor : control.Universal.altMediumLowColor + Rectangle { + width: parent.width + height: parent.height + visible: control.visualFocus || control.highlighted + color: control.Universal.accent + opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6 + } + } + + Behavior on x { + enabled: !control.down + NumberAnimation { + easing.type: Easing.InOutCubic + duration: 400 + } + } + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/Switch.qml b/bin/win64/QtQuick/Controls.2/Universal/Switch.qml new file mode 100644 index 0000000..988b328 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/Switch.qml @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.Switch { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 5 + spacing: 8 + + property bool useSystemFocusVisuals: true + + //! [indicator] + indicator: SwitchIndicator { + x: text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + //! [indicator] + + //! [contentItem] + contentItem: Text { + leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + + opacity: enabled ? 1.0 : 0.2 + color: control.Universal.foreground + } + //! [contentItem] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/SwitchDelegate.qml b/bin/win64/QtQuick/Controls.2/Universal/SwitchDelegate.qml new file mode 100644 index 0000000..43a1c4e --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/SwitchDelegate.qml @@ -0,0 +1,96 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.SwitchDelegate { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + spacing: 12 + + padding: 12 + topPadding: padding - 1 + bottomPadding: padding + 1 + + //! [indicator] + indicator: SwitchIndicator { + x: text ? (control.mirrored ? control.leftPadding : control.width - width - control.rightPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + //! [indicator] + + //! [contentItem] + contentItem: Text { + leftPadding: !control.mirrored ? 0 : control.indicator.width + control.spacing + rightPadding: control.mirrored ? 0 : control.indicator.width + control.spacing + + text: control.text + font: control.font + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + + opacity: enabled ? 1.0 : 0.2 + color: control.Universal.foreground + } + //! [contentItem] + + //! [background] + background: Rectangle { + visible: control.down || control.highlighted || control.visualFocus + color: control.down ? control.Universal.listMediumColor : control.Universal.altMediumLowColor + Rectangle { + width: parent.width + height: parent.height + visible: control.visualFocus || control.highlighted + color: control.Universal.accent + opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6 + } + + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/SwitchIndicator.qml b/bin/win64/QtQuick/Controls.2/Universal/SwitchIndicator.qml new file mode 100644 index 0000000..b3d44d9 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/SwitchIndicator.qml @@ -0,0 +1,72 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +Rectangle { + implicitWidth: 44 + implicitHeight: 20 + + radius: 10 + color: !control.enabled ? "transparent" : + control.pressed ? control.Universal.baseMediumColor : + control.checked ? control.Universal.accent : "transparent" + border.color: !control.enabled ? control.Universal.baseLowColor : + control.checked && !control.pressed ? control.Universal.accent : control.Universal.baseMediumColor + border.width: 2 + + property Item control + + Rectangle { + width: 10 + height: 10 + radius: 5 + + color: !control.enabled ? control.Universal.baseLowColor : + control.pressed || control.checked ? control.Universal.chromeWhiteColor : control.Universal.baseMediumHighColor + + x: Math.max(5, Math.min(parent.width - width - 5, + control.visualPosition * parent.width - (width / 2))) + y: (parent.height - height) / 2 + + Behavior on x { + enabled: !control.pressed + SmoothedAnimation { velocity: 200 } + } + } +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/TabBar.qml b/bin/win64/QtQuick/Controls.2/Universal/TabBar.qml new file mode 100644 index 0000000..b25137c --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/TabBar.qml @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.7 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.TabBar { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + + //! [contentItem] + contentItem: PathView { + implicitWidth: 200 + implicitHeight: 48 + + model: control.contentModel + currentIndex: control.currentIndex + + interactive: false + snapMode: PathView.SnapToItem + movementDirection: PathView.Positive + highlightMoveDuration: 100 + + path: Path { + startX: control.count ? control.availableWidth / control.count / 2 : 0 + startY: control.availableHeight / 2 + PathLine { + x: control.count ? control.availableWidth + (control.availableWidth / control.count / 2) : 0 + y: control.availableHeight / 2 + } + } + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitWidth: 200 + implicitHeight: 48 + color: control.Universal.background + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/TabButton.qml b/bin/win64/QtQuick/Controls.2/Universal/TabButton.qml new file mode 100644 index 0000000..3a1845a --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/TabButton.qml @@ -0,0 +1,64 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.TabButton { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 12 // PivotItemMargin + + //! [contentItem] + contentItem: Text { + text: control.text + font: control.font + elide: Text.ElideRight + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + + opacity: control.checked || control.down ? 1.0 : 0.2 + color: control.Universal.foreground + } + //! [contentItem] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/TextArea.qml b/bin/win64/QtQuick/Controls.2/Universal/TextArea.qml new file mode 100644 index 0000000..b4c3813 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/TextArea.qml @@ -0,0 +1,92 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.TextArea { + id: control + + implicitWidth: Math.max(contentWidth + leftPadding + rightPadding, + background ? background.implicitWidth : 0, + placeholder.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(contentHeight + topPadding + bottomPadding, + background ? background.implicitHeight : 0, + placeholder.implicitHeight + topPadding + bottomPadding) + + // TextControlThemePadding + 2 (border) + padding: 12 + topPadding: padding - 7 + rightPadding: padding - 4 + bottomPadding: padding - 5 + + Universal.theme: activeFocus ? Universal.Light : undefined + + color: !enabled ? Universal.chromeDisabledLowColor : + activeFocus ? Universal.chromeBlackHighColor : Universal.foreground + selectionColor: Universal.accent + selectedTextColor: Universal.chromeWhiteColor + + Text { + id: placeholder + x: control.leftPadding + y: control.topPadding + width: control.width - (control.leftPadding + control.rightPadding) + height: control.height - (control.topPadding + control.bottomPadding) + + text: control.placeholderText + font: control.font + color: !control.enabled ? control.Universal.chromeDisabledLowColor : + control.activeFocus ? control.Universal.chromeBlackMediumLowColor : control.Universal.baseMediumColor + visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) + horizontalAlignment: control.horizontalAlignment + verticalAlignment: control.verticalAlignment + elide: Text.ElideRight + } + + //! [background] + background: Rectangle { + implicitWidth: 60 // TextControlThemeMinWidth - 4 (border) + implicitHeight: 28 // TextControlThemeMinHeight - 4 (border) + + border.width: 2 // TextControlBorderThemeThickness + border.color: !control.enabled ? control.Universal.baseLowColor : + control.activeFocus ? control.Universal.accent : control.Universal.chromeDisabledLowColor + color: control.enabled ? control.Universal.background : control.Universal.baseLowColor + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/TextField.qml b/bin/win64/QtQuick/Controls.2/Universal/TextField.qml new file mode 100644 index 0000000..041cf0e --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/TextField.qml @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.TextField { + id: control + + implicitWidth: Math.max(contentWidth + leftPadding + rightPadding, + background ? background.implicitWidth : 0, + placeholder.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(contentHeight + topPadding + bottomPadding, + background ? background.implicitHeight : 0, + placeholder.implicitHeight + topPadding + bottomPadding) + + // TextControlThemePadding + 2 (border) + padding: 12 + topPadding: padding - 7 + rightPadding: padding - 4 + bottomPadding: padding - 5 + + Universal.theme: activeFocus ? Universal.Light : undefined + + color: !enabled ? Universal.chromeDisabledLowColor : + activeFocus ? Universal.chromeBlackHighColor : Universal.foreground + selectionColor: Universal.accent + selectedTextColor: Universal.chromeWhiteColor + verticalAlignment: TextInput.AlignVCenter + + Text { + id: placeholder + x: control.leftPadding + y: control.topPadding + width: control.width - (control.leftPadding + control.rightPadding) + height: control.height - (control.topPadding + control.bottomPadding) + + text: control.placeholderText + font: control.font + color: !control.enabled ? control.Universal.chromeDisabledLowColor : + control.activeFocus ? control.Universal.chromeBlackMediumLowColor : control.Universal.baseMediumColor + visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) + horizontalAlignment: control.horizontalAlignment + verticalAlignment: control.verticalAlignment + elide: Text.ElideRight + } + + //! [background] + background: Rectangle { + implicitWidth: 60 // TextControlThemeMinWidth - 4 (border) + implicitHeight: 28 // TextControlThemeMinHeight - 4 (border) + + border.width: 2 // TextControlBorderThemeThickness + border.color: !control.enabled ? control.Universal.baseLowColor : + control.activeFocus ? control.Universal.accent : control.Universal.chromeDisabledLowColor + color: control.enabled ? control.Universal.background : control.Universal.baseLowColor + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/ToolBar.qml b/bin/win64/QtQuick/Controls.2/Universal/ToolBar.qml new file mode 100644 index 0000000..721d817 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/ToolBar.qml @@ -0,0 +1,60 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.ToolBar { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) + + contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) + contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) + + //! [contentItem] + contentItem: Item { } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitHeight: 48 // AppBarThemeCompactHeight + color: control.Universal.chromeMediumColor + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/ToolButton.qml b/bin/win64/QtQuick/Controls.2/Universal/ToolButton.qml new file mode 100644 index 0000000..525623b --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/ToolButton.qml @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.ToolButton { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 6 + + property bool useSystemFocusVisuals: true + + //! [contentItem] + contentItem: Text { + text: control.text + font: control.font + elide: Text.ElideRight + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + + opacity: enabled ? 1.0 : 0.2 + color: control.Universal.foreground + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitWidth: 68 + implicitHeight: 48 // AppBarThemeCompactHeight + + color: control.down ? control.Universal.listMediumColor : + control.enabled && (control.highlighted || control.checked) ? control.Universal.accent : "transparent" + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/ToolTip.qml b/bin/win64/QtQuick/Controls.2/Universal/ToolTip.qml new file mode 100644 index 0000000..1657681 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/ToolTip.qml @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.ToolTip { + id: control + + x: parent ? (parent.width - implicitWidth) / 2 : 0 + y: -implicitHeight - 16 + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + + margins: 8 + padding: 8 + topPadding: padding - 3 + bottomPadding: padding - 1 + + closePolicy: T.Popup.CloseOnEscape | T.Popup.CloseOnPressOutsideParent | T.Popup.CloseOnReleaseOutsideParent + + //! [contentItem] + contentItem: Text { + text: control.text + font: control.font + // TODO: wrapMode: Label.Wrap + opacity: enabled ? 1.0 : 0.2 + color: control.Universal.foreground + } + //! [contentItem] + + //! [background] + background: Rectangle { + color: control.Universal.chromeMediumLowColor + border.color: control.Universal.chromeHighColor + border.width: 1 // ToolTipBorderThemeThickness + } + //! [background] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/Tumbler.qml b/bin/win64/QtQuick/Controls.2/Universal/Tumbler.qml new file mode 100644 index 0000000..6869f1e --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/Tumbler.qml @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 +import QtQuick.Controls 2.0 + +T.Tumbler { + id: control + + implicitWidth: 60 + implicitHeight: 200 + + //! [delegate] + delegate: Text { + text: modelData + font: control.font + color: control.Universal.foreground + opacity: (1.0 - Math.abs(Tumbler.displacement) / (visibleItemCount / 2)) * (control.enabled ? 1 : 0.6) + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + } + //! [delegate] + + //! [contentItem] + contentItem: PathView { + id: pathView + model: control.model + delegate: control.delegate + clip: true + pathItemCount: control.visibleItemCount + 1 + preferredHighlightBegin: 0.5 + preferredHighlightEnd: 0.5 + dragMargin: width / 2 + + path: Path { + startX: pathView.width / 2 + startY: -pathView.delegateHeight / 2 + PathLine { + x: pathView.width / 2 + y: pathView.pathItemCount * pathView.delegateHeight - pathView.delegateHeight / 2 + } + } + + property real delegateHeight: control.availableHeight / control.visibleItemCount + } + //! [contentItem] +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/plugins.qmltypes b/bin/win64/QtQuick/Controls.2/Universal/plugins.qmltypes new file mode 100644 index 0000000..165e658 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/plugins.qmltypes @@ -0,0 +1,61 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by: +// 'qmlplugindump -nonrelocatable QtQuick.Controls.Universal 2.0' + +Module { + dependencies: [] + Component { name: "QQuickStyle"; prototype: "QObject" } + Component { + name: "QQuickUniversalStyle" + prototype: "QQuickStyle" + exports: ["QtQuick.Controls.Universal/Universal 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "Theme" + values: { + "Light": 0, + "Dark": 1 + } + } + Enum { + name: "Color" + values: { + "Lime": 0, + "Green": 1, + "Emerald": 2, + "Teal": 3, + "Cyan": 4, + "Cobalt": 5, + "Indigo": 6, + "Violet": 7, + "Pink": 8, + "Magenta": 9, + "Crimson": 10, + "Red": 11, + "Orange": 12, + "Amber": 13, + "Yellow": 14, + "Brown": 15, + "Olive": 16, + "Steel": 17, + "Mauve": 18, + "Taupe": 19 + } + } + Property { name: "theme"; type: "Theme" } + Property { name: "accent"; type: "QVariant" } + Property { name: "foreground"; type: "QVariant" } + Property { name: "background"; type: "QVariant" } + Signal { name: "paletteChanged" } + Method { + name: "color" + type: "QColor" + Parameter { name: "color"; type: "Color" } + } + } +} diff --git a/bin/win64/QtQuick/Controls.2/Universal/qmldir b/bin/win64/QtQuick/Controls.2/Universal/qmldir new file mode 100644 index 0000000..e4b804a --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/Universal/qmldir @@ -0,0 +1,4 @@ +module QtQuick.Controls.Universal +plugin qtquickcontrols2universalstyleplugin +classname QtQuickControls2UniversalStylePlugin +depends QtQuick.Controls 2.0 diff --git a/bin/win64/QtQuick/Controls.2/Universal/qtquickcontrols2universalstyleplugin.dll b/bin/win64/QtQuick/Controls.2/Universal/qtquickcontrols2universalstyleplugin.dll new file mode 100644 index 0000000..47b10dc Binary files /dev/null and b/bin/win64/QtQuick/Controls.2/Universal/qtquickcontrols2universalstyleplugin.dll differ diff --git a/bin/win64/QtQuick/Controls.2/plugins.qmltypes b/bin/win64/QtQuick/Controls.2/plugins.qmltypes new file mode 100644 index 0000000..acf94c5 --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/plugins.qmltypes @@ -0,0 +1,2074 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by: +// 'qmlplugindump -nonrelocatable QtQuick.Controls 2.0 -merge ..\templates\plugins.qmltypes -dependencies dep.json' + +Module { + dependencies: ["QtQuick.Templates 2.0", "QtQuick.Window 2.2", "QtQuick 2.7"] + Component { + name: "QQuickAbstractAnimation" + prototype: "QObject" + Enum { + name: "Loops" + values: { + "Infinite": -2 + } + } + Property { name: "running"; type: "bool" } + Property { name: "paused"; type: "bool" } + Property { name: "alwaysRunToEnd"; type: "bool" } + Property { name: "loops"; type: "int" } + Signal { name: "started" } + Signal { name: "stopped" } + Signal { + name: "runningChanged" + Parameter { type: "bool" } + } + Signal { + name: "pausedChanged" + Parameter { type: "bool" } + } + Signal { + name: "alwaysRunToEndChanged" + Parameter { type: "bool" } + } + Signal { + name: "loopCountChanged" + Parameter { type: "int" } + } + Method { name: "restart" } + Method { name: "start" } + Method { name: "pause" } + Method { name: "resume" } + Method { name: "stop" } + Method { name: "complete" } + } + Component { + name: "QQuickAnimator" + prototype: "QQuickAbstractAnimation" + exports: [ + "QtQuick.Controls.impl/BusyRingAnimator 2.0", + "QtQuick.Controls.impl/ProgressStripAnimator 2.0" + ] + exportMetaObjectRevisions: [0, 0] + Property { name: "target"; type: "QQuickItem"; isPointer: true } + Property { name: "easing"; type: "QEasingCurve" } + Property { name: "duration"; type: "int" } + Property { name: "to"; type: "double" } + Property { name: "from"; type: "double" } + Signal { + name: "targetItemChanged" + Parameter { type: "QQuickItem"; isPointer: true } + } + Signal { + name: "durationChanged" + Parameter { name: "duration"; type: "int" } + } + Signal { + name: "easingChanged" + Parameter { name: "curve"; type: "QEasingCurve" } + } + Signal { + name: "toChanged" + Parameter { name: "to"; type: "double" } + } + Signal { + name: "fromChanged" + Parameter { name: "from"; type: "double" } + } + } + Component { + name: "QQuickBusyIndicatorRing" + defaultProperty: "data" + prototype: "QQuickItem" + exports: ["QtQuick.Controls.impl/BusyRing 2.0"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickButtonGroup" + prototype: "QObject" + exports: ["QtQuick.Controls/ButtonGroup 2.0"] + exportMetaObjectRevisions: [0] + attachedType: "QQuickButtonGroupAttached" + Property { name: "checkedButton"; type: "QQuickAbstractButton"; isPointer: true } + Property { name: "buttons"; type: "QQuickAbstractButton"; isList: true; isReadonly: true } + Method { + name: "addButton" + Parameter { name: "button"; type: "QQuickAbstractButton"; isPointer: true } + } + Method { + name: "removeButton" + Parameter { name: "button"; type: "QQuickAbstractButton"; isPointer: true } + } + } + Component { + name: "QQuickButtonGroupAttached" + prototype: "QObject" + Property { name: "group"; type: "QQuickButtonGroup"; isPointer: true } + } + Component { + name: "QQuickDialRing" + defaultProperty: "data" + prototype: "QQuickPaintedItem" + exports: ["QtQuick.Controls.impl/DialRing 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "progress"; type: "double" } + Property { name: "color"; type: "QColor" } + } + Component { + name: "QQuickPaintedItem" + defaultProperty: "data" + prototype: "QQuickItem" + Enum { + name: "RenderTarget" + values: { + "Image": 0, + "FramebufferObject": 1, + "InvertedYFramebufferObject": 2 + } + } + Property { name: "contentsSize"; type: "QSize" } + Property { name: "fillColor"; type: "QColor" } + Property { name: "contentsScale"; type: "double" } + Property { name: "renderTarget"; type: "RenderTarget" } + Property { name: "textureSize"; type: "QSize" } + } + Component { + name: "QQuickProgressStrip" + defaultProperty: "data" + prototype: "QQuickItem" + exports: ["QtQuick.Controls.impl/ProgressStrip 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "indeterminate"; type: "bool" } + Property { name: "progress"; type: "double" } + } + Component { + prototype: "QQuickApplicationWindow" + name: "QtQuick.Controls/ApplicationWindow 2.0" + exports: ["QtQuick.Controls/ApplicationWindow 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickBusyIndicator" + name: "QtQuick.Controls/BusyIndicator 2.0" + exports: ["QtQuick.Controls/BusyIndicator 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickButton" + name: "QtQuick.Controls/Button 2.0" + exports: ["QtQuick.Controls/Button 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickCheckBox" + name: "QtQuick.Controls/CheckBox 2.0" + exports: ["QtQuick.Controls/CheckBox 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickCheckDelegate" + name: "QtQuick.Controls/CheckDelegate 2.0" + exports: ["QtQuick.Controls/CheckDelegate 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickItem" + name: "QtQuick.Controls.impl/CheckIndicator 2.0" + exports: ["QtQuick.Controls.impl/CheckIndicator 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "QQuickItem"; isPointer: true } + Property { name: "color"; type: "QColor" } + Property { name: "gradient"; type: "QQuickGradient"; isPointer: true } + Property { name: "border"; type: "QQuickPen"; isReadonly: true; isPointer: true } + Property { name: "radius"; type: "double" } + } + Component { + prototype: "QQuickComboBox" + name: "QtQuick.Controls/ComboBox 2.0" + exports: ["QtQuick.Controls/ComboBox 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickDial" + name: "QtQuick.Controls/Dial 2.0" + exports: ["QtQuick.Controls/Dial 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickDrawer" + name: "QtQuick.Controls/Drawer 2.0" + exports: ["QtQuick.Controls/Drawer 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickFrame" + name: "QtQuick.Controls/Frame 2.0" + exports: ["QtQuick.Controls/Frame 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickGroupBox" + name: "QtQuick.Controls/GroupBox 2.0" + exports: ["QtQuick.Controls/GroupBox 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickItemDelegate" + name: "QtQuick.Controls/ItemDelegate 2.0" + exports: ["QtQuick.Controls/ItemDelegate 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickLabel" + name: "QtQuick.Controls/Label 2.0" + exports: ["QtQuick.Controls/Label 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickMenu" + name: "QtQuick.Controls/Menu 2.0" + exports: ["QtQuick.Controls/Menu 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickMenuItem" + name: "QtQuick.Controls/MenuItem 2.0" + exports: ["QtQuick.Controls/MenuItem 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickPage" + name: "QtQuick.Controls/Page 2.0" + exports: ["QtQuick.Controls/Page 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickPageIndicator" + name: "QtQuick.Controls/PageIndicator 2.0" + exports: ["QtQuick.Controls/PageIndicator 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickPane" + name: "QtQuick.Controls/Pane 2.0" + exports: ["QtQuick.Controls/Pane 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickPopup" + name: "QtQuick.Controls/Popup 2.0" + exports: ["QtQuick.Controls/Popup 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickProgressBar" + name: "QtQuick.Controls/ProgressBar 2.0" + exports: ["QtQuick.Controls/ProgressBar 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickRadioButton" + name: "QtQuick.Controls/RadioButton 2.0" + exports: ["QtQuick.Controls/RadioButton 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickRadioDelegate" + name: "QtQuick.Controls/RadioDelegate 2.0" + exports: ["QtQuick.Controls/RadioDelegate 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickItem" + name: "QtQuick.Controls.impl/RadioIndicator 2.0" + exports: ["QtQuick.Controls.impl/RadioIndicator 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "QQuickItem"; isPointer: true } + Property { name: "color"; type: "QColor" } + Property { name: "gradient"; type: "QQuickGradient"; isPointer: true } + Property { name: "border"; type: "QQuickPen"; isReadonly: true; isPointer: true } + Property { name: "radius"; type: "double" } + } + Component { + prototype: "QQuickRangeSlider" + name: "QtQuick.Controls/RangeSlider 2.0" + exports: ["QtQuick.Controls/RangeSlider 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickScrollBar" + name: "QtQuick.Controls/ScrollBar 2.0" + exports: ["QtQuick.Controls/ScrollBar 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickScrollIndicator" + name: "QtQuick.Controls/ScrollIndicator 2.0" + exports: ["QtQuick.Controls/ScrollIndicator 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickSlider" + name: "QtQuick.Controls/Slider 2.0" + exports: ["QtQuick.Controls/Slider 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickSpinBox" + name: "QtQuick.Controls/SpinBox 2.0" + exports: ["QtQuick.Controls/SpinBox 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickStackView" + name: "QtQuick.Controls/StackView 2.0" + exports: ["QtQuick.Controls/StackView 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickSwipeDelegate" + name: "QtQuick.Controls/SwipeDelegate 2.0" + exports: ["QtQuick.Controls/SwipeDelegate 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickSwipeView" + name: "QtQuick.Controls/SwipeView 2.0" + exports: ["QtQuick.Controls/SwipeView 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickSwitch" + name: "QtQuick.Controls/Switch 2.0" + exports: ["QtQuick.Controls/Switch 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickSwitchDelegate" + name: "QtQuick.Controls/SwitchDelegate 2.0" + exports: ["QtQuick.Controls/SwitchDelegate 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickItem" + name: "QtQuick.Controls.impl/SwitchIndicator 2.0" + exports: ["QtQuick.Controls.impl/SwitchIndicator 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "QQuickItem"; isPointer: true } + } + Component { + prototype: "QQuickTabBar" + name: "QtQuick.Controls/TabBar 2.0" + exports: ["QtQuick.Controls/TabBar 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickTabButton" + name: "QtQuick.Controls/TabButton 2.0" + exports: ["QtQuick.Controls/TabButton 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickTextArea" + name: "QtQuick.Controls/TextArea 2.0" + exports: ["QtQuick.Controls/TextArea 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickTextField" + name: "QtQuick.Controls/TextField 2.0" + exports: ["QtQuick.Controls/TextField 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickToolBar" + name: "QtQuick.Controls/ToolBar 2.0" + exports: ["QtQuick.Controls/ToolBar 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickToolButton" + name: "QtQuick.Controls/ToolButton 2.0" + exports: ["QtQuick.Controls/ToolButton 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickToolTip" + name: "QtQuick.Controls/ToolTip 2.0" + exports: ["QtQuick.Controls/ToolTip 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickTumbler" + name: "QtQuick.Controls/Tumbler 2.0" + exports: ["QtQuick.Controls/Tumbler 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + name: "QQuickAbstractButton" + defaultProperty: "data" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/AbstractButton 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "text"; type: "string" } + Property { name: "down"; type: "bool" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "checked"; type: "bool" } + Property { name: "autoExclusive"; type: "bool" } + Property { name: "indicator"; type: "QQuickItem"; isPointer: true } + Signal { name: "pressed" } + Signal { name: "released" } + Signal { name: "canceled" } + Signal { name: "clicked" } + Signal { name: "pressAndHold" } + Signal { name: "doubleClicked" } + Method { name: "toggle" } + } + Component { + name: "QQuickApplicationWindow" + defaultProperty: "data" + prototype: "QQuickWindowQmlImpl" + exports: ["QtQuick.Templates/ApplicationWindow 2.0"] + exportMetaObjectRevisions: [0] + attachedType: "QQuickApplicationWindowAttached" + Property { name: "background"; type: "QQuickItem"; isPointer: true } + Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "activeFocusControl"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "header"; type: "QQuickItem"; isPointer: true } + Property { name: "footer"; type: "QQuickItem"; isPointer: true } + Property { name: "overlay"; type: "QQuickOverlay"; isReadonly: true; isPointer: true } + Property { name: "font"; type: "QFont" } + Property { name: "locale"; type: "QLocale" } + } + Component { + name: "QQuickApplicationWindowAttached" + prototype: "QObject" + Property { name: "window"; type: "QQuickApplicationWindow"; isReadonly: true; isPointer: true } + Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "activeFocusControl"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "header"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "footer"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "overlay"; type: "QQuickOverlay"; isReadonly: true; isPointer: true } + } + Component { + name: "QQuickBusyIndicator" + defaultProperty: "data" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/BusyIndicator 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "running"; type: "bool" } + } + Component { + name: "QQuickButton" + defaultProperty: "data" + prototype: "QQuickAbstractButton" + exports: ["QtQuick.Templates/Button 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "checkable"; type: "bool" } + Property { name: "autoRepeat"; type: "bool" } + Property { name: "highlighted"; type: "bool" } + Property { name: "flat"; type: "bool" } + } + Component { + name: "QQuickCheckBox" + defaultProperty: "data" + prototype: "QQuickAbstractButton" + exports: ["QtQuick.Templates/CheckBox 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "tristate"; type: "bool" } + Property { name: "checkState"; type: "Qt::CheckState" } + } + Component { + name: "QQuickCheckDelegate" + defaultProperty: "data" + prototype: "QQuickItemDelegate" + exports: ["QtQuick.Templates/CheckDelegate 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "tristate"; type: "bool" } + Property { name: "checkState"; type: "Qt::CheckState" } + } + Component { + name: "QQuickComboBox" + defaultProperty: "data" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/ComboBox 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "model"; type: "QVariant" } + Property { name: "delegateModel"; type: "QQmlInstanceModel"; isReadonly: true; isPointer: true } + Property { name: "pressed"; type: "bool" } + Property { name: "highlightedIndex"; type: "int"; isReadonly: true } + Property { name: "currentIndex"; type: "int" } + Property { name: "currentText"; type: "string"; isReadonly: true } + Property { name: "displayText"; type: "string" } + Property { name: "textRole"; type: "string" } + Property { name: "delegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "indicator"; type: "QQuickItem"; isPointer: true } + Property { name: "popup"; type: "QQuickPopup"; isPointer: true } + Signal { + name: "activated" + Parameter { name: "index"; type: "int" } + } + Signal { + name: "highlighted" + Parameter { name: "index"; type: "int" } + } + Method { name: "incrementCurrentIndex" } + Method { name: "decrementCurrentIndex" } + Method { + name: "textAt" + type: "string" + Parameter { name: "index"; type: "int" } + } + Method { + name: "find" + type: "int" + Parameter { name: "text"; type: "string" } + Parameter { name: "flags"; type: "Qt::MatchFlags" } + } + Method { + name: "find" + type: "int" + Parameter { name: "text"; type: "string" } + } + } + Component { + name: "QQuickContainer" + defaultProperty: "contentData" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/Container 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "contentModel"; type: "QVariant"; isReadonly: true } + Property { name: "contentData"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "contentChildren"; type: "QQuickItem"; isList: true; isReadonly: true } + Property { name: "currentIndex"; type: "int" } + Property { name: "currentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Method { + name: "setCurrentIndex" + Parameter { name: "index"; type: "int" } + } + Method { + name: "itemAt" + type: "QQuickItem*" + Parameter { name: "index"; type: "int" } + } + Method { + name: "addItem" + Parameter { name: "item"; type: "QQuickItem"; isPointer: true } + } + Method { + name: "insertItem" + Parameter { name: "index"; type: "int" } + Parameter { name: "item"; type: "QQuickItem"; isPointer: true } + } + Method { + name: "moveItem" + Parameter { name: "from"; type: "int" } + Parameter { name: "to"; type: "int" } + } + Method { + name: "removeItem" + Parameter { name: "index"; type: "int" } + } + } + Component { + name: "QQuickControl" + defaultProperty: "data" + prototype: "QQuickItem" + exports: ["QtQuick.Templates/Control 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "font"; type: "QFont" } + Property { name: "availableWidth"; type: "double"; isReadonly: true } + Property { name: "availableHeight"; type: "double"; isReadonly: true } + Property { name: "padding"; type: "double" } + Property { name: "topPadding"; type: "double" } + Property { name: "leftPadding"; type: "double" } + Property { name: "rightPadding"; type: "double" } + Property { name: "bottomPadding"; type: "double" } + Property { name: "spacing"; type: "double" } + Property { name: "locale"; type: "QLocale" } + Property { name: "mirrored"; type: "bool"; isReadonly: true } + Property { name: "focusPolicy"; type: "Qt::FocusPolicy" } + Property { name: "focusReason"; type: "Qt::FocusReason" } + Property { name: "visualFocus"; type: "bool"; isReadonly: true } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Property { name: "hoverEnabled"; type: "bool" } + Property { name: "wheelEnabled"; type: "bool" } + Property { name: "background"; type: "QQuickItem"; isPointer: true } + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + } + Component { + name: "QQuickDial" + defaultProperty: "data" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/Dial 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "SnapMode" + values: { + "NoSnap": 0, + "SnapAlways": 1, + "SnapOnRelease": 2 + } + } + Property { name: "from"; type: "double" } + Property { name: "to"; type: "double" } + Property { name: "value"; type: "double" } + Property { name: "position"; type: "double"; isReadonly: true } + Property { name: "angle"; type: "double"; isReadonly: true } + Property { name: "stepSize"; type: "double" } + Property { name: "snapMode"; type: "SnapMode" } + Property { name: "wrap"; type: "bool" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "handle"; type: "QQuickItem"; isPointer: true } + Method { name: "increase" } + Method { name: "decrease" } + } + Component { + name: "QQuickDrawer" + defaultProperty: "contentData" + prototype: "QQuickPopup" + exports: ["QtQuick.Templates/Drawer 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "edge"; type: "Qt::Edge" } + Property { name: "position"; type: "double" } + Property { name: "dragMargin"; type: "double" } + } + Component { + name: "QQuickFrame" + defaultProperty: "contentData" + prototype: "QQuickPane" + exports: ["QtQuick.Templates/Frame 2.0"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickGroupBox" + defaultProperty: "contentData" + prototype: "QQuickFrame" + exports: ["QtQuick.Templates/GroupBox 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "title"; type: "string" } + Property { name: "label"; type: "QQuickItem"; isPointer: true } + } + Component { + name: "QQuickImplicitSizeItem" + defaultProperty: "data" + prototype: "QQuickItem" + Property { name: "implicitWidth"; type: "double"; isReadonly: true } + Property { name: "implicitHeight"; type: "double"; isReadonly: true } + Signal { name: "implicitWidthChanged2"; revision: 1 } + Signal { name: "implicitHeightChanged2"; revision: 1 } + } + Component { + name: "QQuickItemDelegate" + defaultProperty: "data" + prototype: "QQuickAbstractButton" + exports: ["QtQuick.Templates/ItemDelegate 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "highlighted"; type: "bool" } + } + Component { + name: "QQuickLabel" + defaultProperty: "data" + prototype: "QQuickText" + exports: ["QtQuick.Templates/Label 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "font"; type: "QFont" } + Property { name: "background"; type: "QQuickItem"; isPointer: true } + } + Component { + name: "QQuickMenu" + defaultProperty: "contentData" + prototype: "QQuickPopup" + exports: ["QtQuick.Templates/Menu 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "contentModel"; type: "QVariant"; isReadonly: true } + Property { name: "contentData"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "title"; type: "string" } + Method { + name: "itemAt" + type: "QQuickItem*" + Parameter { name: "index"; type: "int" } + } + Method { + name: "addItem" + Parameter { name: "item"; type: "QQuickItem"; isPointer: true } + } + Method { + name: "insertItem" + Parameter { name: "index"; type: "int" } + Parameter { name: "item"; type: "QQuickItem"; isPointer: true } + } + Method { + name: "moveItem" + Parameter { name: "from"; type: "int" } + Parameter { name: "to"; type: "int" } + } + Method { + name: "removeItem" + Parameter { name: "index"; type: "int" } + } + } + Component { + name: "QQuickMenuItem" + defaultProperty: "data" + prototype: "QQuickAbstractButton" + exports: ["QtQuick.Templates/MenuItem 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "checkable"; type: "bool" } + Property { name: "highlighted"; type: "bool" } + Signal { name: "triggered" } + } + Component { + name: "QQuickOverlay" + defaultProperty: "data" + prototype: "QQuickItem" + Property { name: "modal"; type: "QQuickItem"; isPointer: true } + Property { name: "modeless"; type: "QQuickItem"; isPointer: true } + Signal { name: "pressed" } + Signal { name: "released" } + } + Component { + name: "QQuickPage" + defaultProperty: "contentData" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/Page 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "title"; type: "string" } + Property { name: "header"; type: "QQuickItem"; isPointer: true } + Property { name: "footer"; type: "QQuickItem"; isPointer: true } + Property { name: "contentData"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "contentChildren"; type: "QQuickItem"; isList: true; isReadonly: true } + } + Component { + name: "QQuickPageIndicator" + defaultProperty: "data" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/PageIndicator 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "count"; type: "int" } + Property { name: "currentIndex"; type: "int" } + Property { name: "interactive"; type: "bool" } + Property { name: "delegate"; type: "QQmlComponent"; isPointer: true } + } + Component { + name: "QQuickPane" + defaultProperty: "contentData" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/Pane 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "contentWidth"; type: "double" } + Property { name: "contentHeight"; type: "double" } + Property { name: "contentData"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "contentChildren"; type: "QQuickItem"; isList: true; isReadonly: true } + } + Component { + name: "QQuickPopup" + defaultProperty: "contentData" + prototype: "QObject" + exports: ["QtQuick.Templates/Popup 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "ClosePolicy" + values: { + "NoAutoClose": 0, + "CloseOnPressOutside": 1, + "CloseOnPressOutsideParent": 2, + "CloseOnReleaseOutside": 4, + "CloseOnReleaseOutsideParent": 8, + "CloseOnEscape": 16 + } + } + Enum { + name: "TransformOrigin" + values: { + "TopLeft": 0, + "Top": 1, + "TopRight": 2, + "Left": 3, + "Center": 4, + "Right": 5, + "BottomLeft": 6, + "Bottom": 7, + "BottomRight": 8 + } + } + Property { name: "x"; type: "double" } + Property { name: "y"; type: "double" } + Property { name: "z"; type: "double" } + Property { name: "width"; type: "double" } + Property { name: "height"; type: "double" } + Property { name: "implicitWidth"; type: "double" } + Property { name: "implicitHeight"; type: "double" } + Property { name: "contentWidth"; type: "double" } + Property { name: "contentHeight"; type: "double" } + Property { name: "availableWidth"; type: "double"; isReadonly: true } + Property { name: "availableHeight"; type: "double"; isReadonly: true } + Property { name: "margins"; type: "double" } + Property { name: "topMargin"; type: "double" } + Property { name: "leftMargin"; type: "double" } + Property { name: "rightMargin"; type: "double" } + Property { name: "bottomMargin"; type: "double" } + Property { name: "padding"; type: "double" } + Property { name: "topPadding"; type: "double" } + Property { name: "leftPadding"; type: "double" } + Property { name: "rightPadding"; type: "double" } + Property { name: "bottomPadding"; type: "double" } + Property { name: "locale"; type: "QLocale" } + Property { name: "font"; type: "QFont" } + Property { name: "parent"; type: "QQuickItem"; isPointer: true } + Property { name: "background"; type: "QQuickItem"; isPointer: true } + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "contentData"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "contentChildren"; type: "QQuickItem"; isList: true; isReadonly: true } + Property { name: "clip"; type: "bool" } + Property { name: "focus"; type: "bool" } + Property { name: "activeFocus"; type: "bool"; isReadonly: true } + Property { name: "modal"; type: "bool" } + Property { name: "dim"; type: "bool" } + Property { name: "visible"; type: "bool" } + Property { name: "opacity"; type: "double" } + Property { name: "scale"; type: "double" } + Property { name: "closePolicy"; type: "ClosePolicy" } + Property { name: "transformOrigin"; type: "TransformOrigin" } + Property { name: "enter"; type: "QQuickTransition"; isPointer: true } + Property { name: "exit"; type: "QQuickTransition"; isPointer: true } + Signal { + name: "windowChanged" + Parameter { name: "window"; type: "QQuickWindow"; isPointer: true } + } + Signal { name: "aboutToShow" } + Signal { name: "aboutToHide" } + Signal { name: "opened" } + Signal { name: "closed" } + Method { name: "open" } + Method { name: "close" } + } + Component { + name: "QQuickProgressBar" + defaultProperty: "data" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/ProgressBar 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "from"; type: "double" } + Property { name: "to"; type: "double" } + Property { name: "value"; type: "double" } + Property { name: "position"; type: "double"; isReadonly: true } + Property { name: "visualPosition"; type: "double"; isReadonly: true } + Property { name: "indeterminate"; type: "bool" } + } + Component { + name: "QQuickRadioButton" + defaultProperty: "data" + prototype: "QQuickAbstractButton" + exports: ["QtQuick.Templates/RadioButton 2.0"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickRadioDelegate" + defaultProperty: "data" + prototype: "QQuickItemDelegate" + exports: ["QtQuick.Templates/RadioDelegate 2.0"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickRangeSlider" + defaultProperty: "data" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/RangeSlider 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "SnapMode" + values: { + "NoSnap": 0, + "SnapAlways": 1, + "SnapOnRelease": 2 + } + } + Property { name: "from"; type: "double" } + Property { name: "to"; type: "double" } + Property { name: "first"; type: "QQuickRangeSliderNode"; isReadonly: true; isPointer: true } + Property { name: "second"; type: "QQuickRangeSliderNode"; isReadonly: true; isPointer: true } + Property { name: "stepSize"; type: "double" } + Property { name: "snapMode"; type: "SnapMode" } + Property { name: "orientation"; type: "Qt::Orientation" } + Method { + name: "setValues" + Parameter { name: "firstValue"; type: "double" } + Parameter { name: "secondValue"; type: "double" } + } + } + Component { + name: "QQuickRangeSliderNode" + prototype: "QObject" + Property { name: "value"; type: "double" } + Property { name: "position"; type: "double"; isReadonly: true } + Property { name: "visualPosition"; type: "double"; isReadonly: true } + Property { name: "handle"; type: "QQuickItem"; isPointer: true } + Property { name: "pressed"; type: "bool" } + Method { name: "increase" } + Method { name: "decrease" } + } + Component { + name: "QQuickRootItem" + defaultProperty: "data" + prototype: "QQuickItem" + Method { + name: "setWidth" + Parameter { name: "w"; type: "int" } + } + Method { + name: "setHeight" + Parameter { name: "h"; type: "int" } + } + } + Component { + name: "QQuickScrollBar" + defaultProperty: "data" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/ScrollBar 2.0"] + exportMetaObjectRevisions: [0] + attachedType: "QQuickScrollBarAttached" + Property { name: "size"; type: "double" } + Property { name: "position"; type: "double" } + Property { name: "stepSize"; type: "double" } + Property { name: "active"; type: "bool" } + Property { name: "pressed"; type: "bool" } + Property { name: "orientation"; type: "Qt::Orientation" } + Method { name: "increase" } + Method { name: "decrease" } + Method { + name: "setSize" + Parameter { name: "size"; type: "double" } + } + Method { + name: "setPosition" + Parameter { name: "position"; type: "double" } + } + } + Component { + name: "QQuickScrollBarAttached" + prototype: "QObject" + Property { name: "horizontal"; type: "QQuickScrollBar"; isPointer: true } + Property { name: "vertical"; type: "QQuickScrollBar"; isPointer: true } + } + Component { + name: "QQuickScrollIndicator" + defaultProperty: "data" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/ScrollIndicator 2.0"] + exportMetaObjectRevisions: [0] + attachedType: "QQuickScrollIndicatorAttached" + Property { name: "size"; type: "double" } + Property { name: "position"; type: "double" } + Property { name: "active"; type: "bool" } + Property { name: "orientation"; type: "Qt::Orientation" } + Method { + name: "setSize" + Parameter { name: "size"; type: "double" } + } + Method { + name: "setPosition" + Parameter { name: "position"; type: "double" } + } + } + Component { + name: "QQuickScrollIndicatorAttached" + prototype: "QObject" + Property { name: "horizontal"; type: "QQuickScrollIndicator"; isPointer: true } + Property { name: "vertical"; type: "QQuickScrollIndicator"; isPointer: true } + } + Component { + name: "QQuickSlider" + defaultProperty: "data" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/Slider 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "SnapMode" + values: { + "NoSnap": 0, + "SnapAlways": 1, + "SnapOnRelease": 2 + } + } + Property { name: "from"; type: "double" } + Property { name: "to"; type: "double" } + Property { name: "value"; type: "double" } + Property { name: "position"; type: "double"; isReadonly: true } + Property { name: "visualPosition"; type: "double"; isReadonly: true } + Property { name: "stepSize"; type: "double" } + Property { name: "snapMode"; type: "SnapMode" } + Property { name: "pressed"; type: "bool" } + Property { name: "orientation"; type: "Qt::Orientation" } + Property { name: "handle"; type: "QQuickItem"; isPointer: true } + Method { name: "increase" } + Method { name: "decrease" } + } + Component { + name: "QQuickSpinBox" + defaultProperty: "data" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/SpinBox 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "from"; type: "int" } + Property { name: "to"; type: "int" } + Property { name: "value"; type: "int" } + Property { name: "stepSize"; type: "int" } + Property { name: "editable"; type: "bool" } + Property { name: "validator"; type: "QValidator"; isPointer: true } + Property { name: "textFromValue"; type: "QJSValue" } + Property { name: "valueFromText"; type: "QJSValue" } + Property { name: "up"; type: "QQuickSpinButton"; isReadonly: true; isPointer: true } + Property { name: "down"; type: "QQuickSpinButton"; isReadonly: true; isPointer: true } + Method { name: "increase" } + Method { name: "decrease" } + } + Component { + name: "QQuickSpinButton" + prototype: "QObject" + Property { name: "pressed"; type: "bool" } + Property { name: "indicator"; type: "QQuickItem"; isPointer: true } + } + Component { + name: "QQuickStackAttached" + prototype: "QObject" + Property { name: "index"; type: "int"; isReadonly: true } + Property { name: "view"; type: "QQuickStackView"; isReadonly: true; isPointer: true } + Property { name: "status"; type: "QQuickStackView::Status"; isReadonly: true } + } + Component { + name: "QQuickStackView" + defaultProperty: "data" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/StackView 2.0"] + exportMetaObjectRevisions: [0] + attachedType: "QQuickStackAttached" + Enum { + name: "Status" + values: { + "Inactive": 0, + "Deactivating": 1, + "Activating": 2, + "Active": 3 + } + } + Enum { + name: "LoadBehavior" + values: { + "DontLoad": 0, + "ForceLoad": 1 + } + } + Enum { + name: "Operation" + values: { + "Transition": 0, + "Immediate": 1 + } + } + Property { name: "busy"; type: "bool"; isReadonly: true } + Property { name: "depth"; type: "int"; isReadonly: true } + Property { name: "currentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "initialItem"; type: "QVariant" } + Property { name: "popEnter"; type: "QQuickTransition"; isPointer: true } + Property { name: "popExit"; type: "QQuickTransition"; isPointer: true } + Property { name: "pushEnter"; type: "QQuickTransition"; isPointer: true } + Property { name: "pushExit"; type: "QQuickTransition"; isPointer: true } + Property { name: "replaceEnter"; type: "QQuickTransition"; isPointer: true } + Property { name: "replaceExit"; type: "QQuickTransition"; isPointer: true } + Method { name: "clear" } + Method { + name: "get" + type: "QQuickItem*" + Parameter { name: "index"; type: "int" } + Parameter { name: "behavior"; type: "LoadBehavior" } + } + Method { + name: "get" + type: "QQuickItem*" + Parameter { name: "index"; type: "int" } + } + Method { + name: "find" + type: "QQuickItem*" + Parameter { name: "callback"; type: "QJSValue" } + Parameter { name: "behavior"; type: "LoadBehavior" } + } + Method { + name: "find" + type: "QQuickItem*" + Parameter { name: "callback"; type: "QJSValue" } + } + Method { + name: "push" + Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "pop" + Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "replace" + Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true } + } + } + Component { + name: "QQuickSwipe" + prototype: "QObject" + Property { name: "position"; type: "double"; isReadonly: true } + Property { name: "complete"; type: "bool"; isReadonly: true } + Property { name: "left"; type: "QQmlComponent"; isPointer: true } + Property { name: "behind"; type: "QQmlComponent"; isPointer: true } + Property { name: "right"; type: "QQmlComponent"; isPointer: true } + Property { name: "leftItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "behindItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "rightItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + } + Component { + name: "QQuickSwipeDelegate" + defaultProperty: "data" + prototype: "QQuickItemDelegate" + exports: ["QtQuick.Templates/SwipeDelegate 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "swipe"; type: "QQuickSwipe"; isReadonly: true; isPointer: true } + } + Component { + name: "QQuickSwipeView" + defaultProperty: "contentData" + prototype: "QQuickContainer" + exports: ["QtQuick.Templates/SwipeView 2.0"] + exportMetaObjectRevisions: [0] + attachedType: "QQuickSwipeViewAttached" + } + Component { + name: "QQuickSwipeViewAttached" + prototype: "QObject" + Property { name: "index"; type: "int"; isReadonly: true } + Property { name: "isCurrentItem"; type: "bool"; isReadonly: true } + Property { name: "view"; type: "QQuickSwipeView"; isReadonly: true; isPointer: true } + } + Component { + name: "QQuickSwitch" + defaultProperty: "data" + prototype: "QQuickAbstractButton" + exports: ["QtQuick.Templates/Switch 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "position"; type: "double" } + Property { name: "visualPosition"; type: "double"; isReadonly: true } + } + Component { + name: "QQuickSwitchDelegate" + defaultProperty: "data" + prototype: "QQuickItemDelegate" + exports: ["QtQuick.Templates/SwitchDelegate 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "position"; type: "double" } + Property { name: "visualPosition"; type: "double"; isReadonly: true } + } + Component { + name: "QQuickTabBar" + defaultProperty: "contentData" + prototype: "QQuickContainer" + exports: ["QtQuick.Templates/TabBar 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "Position" + values: { + "Header": 0, + "Footer": 1 + } + } + Property { name: "position"; type: "Position" } + } + Component { + name: "QQuickTabButton" + defaultProperty: "data" + prototype: "QQuickAbstractButton" + exports: ["QtQuick.Templates/TabButton 2.0"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickText" + defaultProperty: "data" + prototype: "QQuickImplicitSizeItem" + Enum { + name: "HAlignment" + values: { + "AlignLeft": 1, + "AlignRight": 2, + "AlignHCenter": 4, + "AlignJustify": 8 + } + } + Enum { + name: "VAlignment" + values: { + "AlignTop": 32, + "AlignBottom": 64, + "AlignVCenter": 128 + } + } + Enum { + name: "TextStyle" + values: { + "Normal": 0, + "Outline": 1, + "Raised": 2, + "Sunken": 3 + } + } + Enum { + name: "TextFormat" + values: { + "PlainText": 0, + "RichText": 1, + "AutoText": 2, + "StyledText": 4 + } + } + Enum { + name: "TextElideMode" + values: { + "ElideLeft": 0, + "ElideRight": 1, + "ElideMiddle": 2, + "ElideNone": 3 + } + } + Enum { + name: "WrapMode" + values: { + "NoWrap": 0, + "WordWrap": 1, + "WrapAnywhere": 3, + "WrapAtWordBoundaryOrAnywhere": 4, + "Wrap": 4 + } + } + Enum { + name: "RenderType" + values: { + "QtRendering": 0, + "NativeRendering": 1 + } + } + Enum { + name: "LineHeightMode" + values: { + "ProportionalHeight": 0, + "FixedHeight": 1 + } + } + Enum { + name: "FontSizeMode" + values: { + "FixedSize": 0, + "HorizontalFit": 1, + "VerticalFit": 2, + "Fit": 3 + } + } + Property { name: "text"; type: "string" } + Property { name: "font"; type: "QFont" } + Property { name: "color"; type: "QColor" } + Property { name: "linkColor"; type: "QColor" } + Property { name: "style"; type: "TextStyle" } + Property { name: "styleColor"; type: "QColor" } + Property { name: "horizontalAlignment"; type: "HAlignment" } + Property { name: "effectiveHorizontalAlignment"; type: "HAlignment"; isReadonly: true } + Property { name: "verticalAlignment"; type: "VAlignment" } + Property { name: "wrapMode"; type: "WrapMode" } + Property { name: "lineCount"; type: "int"; isReadonly: true } + Property { name: "truncated"; type: "bool"; isReadonly: true } + Property { name: "maximumLineCount"; type: "int" } + Property { name: "textFormat"; type: "TextFormat" } + Property { name: "elide"; type: "TextElideMode" } + Property { name: "contentWidth"; type: "double"; isReadonly: true } + Property { name: "contentHeight"; type: "double"; isReadonly: true } + Property { name: "paintedWidth"; type: "double"; isReadonly: true } + Property { name: "paintedHeight"; type: "double"; isReadonly: true } + Property { name: "lineHeight"; type: "double" } + Property { name: "lineHeightMode"; type: "LineHeightMode" } + Property { name: "baseUrl"; type: "QUrl" } + Property { name: "minimumPixelSize"; type: "int" } + Property { name: "minimumPointSize"; type: "int" } + Property { name: "fontSizeMode"; type: "FontSizeMode" } + Property { name: "renderType"; type: "RenderType" } + Property { name: "hoveredLink"; revision: 2; type: "string"; isReadonly: true } + Property { name: "padding"; revision: 6; type: "double" } + Property { name: "topPadding"; revision: 6; type: "double" } + Property { name: "leftPadding"; revision: 6; type: "double" } + Property { name: "rightPadding"; revision: 6; type: "double" } + Property { name: "bottomPadding"; revision: 6; type: "double" } + Signal { + name: "textChanged" + Parameter { name: "text"; type: "string" } + } + Signal { + name: "linkActivated" + Parameter { name: "link"; type: "string" } + } + Signal { + name: "linkHovered" + revision: 2 + Parameter { name: "link"; type: "string" } + } + Signal { + name: "fontChanged" + Parameter { name: "font"; type: "QFont" } + } + Signal { + name: "styleChanged" + Parameter { name: "style"; type: "QQuickText::TextStyle" } + } + Signal { + name: "horizontalAlignmentChanged" + Parameter { name: "alignment"; type: "QQuickText::HAlignment" } + } + Signal { + name: "verticalAlignmentChanged" + Parameter { name: "alignment"; type: "QQuickText::VAlignment" } + } + Signal { + name: "textFormatChanged" + Parameter { name: "textFormat"; type: "QQuickText::TextFormat" } + } + Signal { + name: "elideModeChanged" + Parameter { name: "mode"; type: "QQuickText::TextElideMode" } + } + Signal { name: "contentSizeChanged" } + Signal { + name: "lineHeightChanged" + Parameter { name: "lineHeight"; type: "double" } + } + Signal { + name: "lineHeightModeChanged" + Parameter { name: "mode"; type: "LineHeightMode" } + } + Signal { + name: "lineLaidOut" + Parameter { name: "line"; type: "QQuickTextLine"; isPointer: true } + } + Signal { name: "paddingChanged"; revision: 6 } + Signal { name: "topPaddingChanged"; revision: 6 } + Signal { name: "leftPaddingChanged"; revision: 6 } + Signal { name: "rightPaddingChanged"; revision: 6 } + Signal { name: "bottomPaddingChanged"; revision: 6 } + Method { name: "doLayout" } + Method { + name: "linkAt" + revision: 3 + type: "string" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + } + Component { + name: "QQuickTextArea" + defaultProperty: "data" + prototype: "QQuickTextEdit" + exports: ["QtQuick.Templates/TextArea 2.0"] + exportMetaObjectRevisions: [0] + attachedType: "QQuickTextAreaAttached" + Property { name: "font"; type: "QFont" } + Property { name: "implicitWidth"; type: "double" } + Property { name: "implicitHeight"; type: "double" } + Property { name: "background"; type: "QQuickItem"; isPointer: true } + Property { name: "placeholderText"; type: "string" } + Property { name: "focusReason"; type: "Qt::FocusReason" } + Signal { name: "implicitWidthChanged3" } + Signal { name: "implicitHeightChanged3" } + Signal { + name: "pressAndHold" + Parameter { name: "event"; type: "QQuickMouseEvent"; isPointer: true } + } + } + Component { + name: "QQuickTextAreaAttached" + prototype: "QObject" + Property { name: "flickable"; type: "QQuickTextArea"; isPointer: true } + } + Component { + name: "QQuickTextEdit" + defaultProperty: "data" + prototype: "QQuickImplicitSizeItem" + Enum { + name: "HAlignment" + values: { + "AlignLeft": 1, + "AlignRight": 2, + "AlignHCenter": 4, + "AlignJustify": 8 + } + } + Enum { + name: "VAlignment" + values: { + "AlignTop": 32, + "AlignBottom": 64, + "AlignVCenter": 128 + } + } + Enum { + name: "TextFormat" + values: { + "PlainText": 0, + "RichText": 1, + "AutoText": 2 + } + } + Enum { + name: "WrapMode" + values: { + "NoWrap": 0, + "WordWrap": 1, + "WrapAnywhere": 3, + "WrapAtWordBoundaryOrAnywhere": 4, + "Wrap": 4 + } + } + Enum { + name: "SelectionMode" + values: { + "SelectCharacters": 0, + "SelectWords": 1 + } + } + Enum { + name: "RenderType" + values: { + "QtRendering": 0, + "NativeRendering": 1 + } + } + Property { name: "text"; type: "string" } + Property { name: "color"; type: "QColor" } + Property { name: "selectionColor"; type: "QColor" } + Property { name: "selectedTextColor"; type: "QColor" } + Property { name: "font"; type: "QFont" } + Property { name: "horizontalAlignment"; type: "HAlignment" } + Property { name: "effectiveHorizontalAlignment"; type: "HAlignment"; isReadonly: true } + Property { name: "verticalAlignment"; type: "VAlignment" } + Property { name: "wrapMode"; type: "WrapMode" } + Property { name: "lineCount"; type: "int"; isReadonly: true } + Property { name: "length"; type: "int"; isReadonly: true } + Property { name: "contentWidth"; type: "double"; isReadonly: true } + Property { name: "contentHeight"; type: "double"; isReadonly: true } + Property { name: "paintedWidth"; type: "double"; isReadonly: true } + Property { name: "paintedHeight"; type: "double"; isReadonly: true } + Property { name: "textFormat"; type: "TextFormat" } + Property { name: "readOnly"; type: "bool" } + Property { name: "cursorVisible"; type: "bool" } + Property { name: "cursorPosition"; type: "int" } + Property { name: "cursorRectangle"; type: "QRectF"; isReadonly: true } + Property { name: "cursorDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "selectionStart"; type: "int"; isReadonly: true } + Property { name: "selectionEnd"; type: "int"; isReadonly: true } + Property { name: "selectedText"; type: "string"; isReadonly: true } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "persistentSelection"; type: "bool" } + Property { name: "textMargin"; type: "double" } + Property { name: "inputMethodHints"; type: "Qt::InputMethodHints" } + Property { name: "selectByKeyboard"; revision: 1; type: "bool" } + Property { name: "selectByMouse"; type: "bool" } + Property { name: "mouseSelectionMode"; type: "SelectionMode" } + Property { name: "canPaste"; type: "bool"; isReadonly: true } + Property { name: "canUndo"; type: "bool"; isReadonly: true } + Property { name: "canRedo"; type: "bool"; isReadonly: true } + Property { name: "inputMethodComposing"; type: "bool"; isReadonly: true } + Property { name: "baseUrl"; type: "QUrl" } + Property { name: "renderType"; type: "RenderType" } + Property { + name: "textDocument" + revision: 1 + type: "QQuickTextDocument" + isReadonly: true + isPointer: true + } + Property { name: "hoveredLink"; revision: 2; type: "string"; isReadonly: true } + Property { name: "padding"; revision: 6; type: "double" } + Property { name: "topPadding"; revision: 6; type: "double" } + Property { name: "leftPadding"; revision: 6; type: "double" } + Property { name: "rightPadding"; revision: 6; type: "double" } + Property { name: "bottomPadding"; revision: 6; type: "double" } + Property { name: "preeditText"; revision: 7; type: "string"; isReadonly: true } + Signal { name: "preeditTextChanged"; revision: 7 } + Signal { name: "contentSizeChanged" } + Signal { + name: "colorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "selectionColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "selectedTextColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "fontChanged" + Parameter { name: "font"; type: "QFont" } + } + Signal { + name: "horizontalAlignmentChanged" + Parameter { name: "alignment"; type: "QQuickTextEdit::HAlignment" } + } + Signal { + name: "verticalAlignmentChanged" + Parameter { name: "alignment"; type: "QQuickTextEdit::VAlignment" } + } + Signal { + name: "textFormatChanged" + Parameter { name: "textFormat"; type: "QQuickTextEdit::TextFormat" } + } + Signal { + name: "readOnlyChanged" + Parameter { name: "isReadOnly"; type: "bool" } + } + Signal { + name: "cursorVisibleChanged" + Parameter { name: "isCursorVisible"; type: "bool" } + } + Signal { + name: "activeFocusOnPressChanged" + Parameter { name: "activeFocusOnPressed"; type: "bool" } + } + Signal { + name: "persistentSelectionChanged" + Parameter { name: "isPersistentSelection"; type: "bool" } + } + Signal { + name: "textMarginChanged" + Parameter { name: "textMargin"; type: "double" } + } + Signal { + name: "selectByKeyboardChanged" + revision: 1 + Parameter { name: "selectByKeyboard"; type: "bool" } + } + Signal { + name: "selectByMouseChanged" + Parameter { name: "selectByMouse"; type: "bool" } + } + Signal { + name: "mouseSelectionModeChanged" + Parameter { name: "mode"; type: "QQuickTextEdit::SelectionMode" } + } + Signal { + name: "linkActivated" + Parameter { name: "link"; type: "string" } + } + Signal { + name: "linkHovered" + revision: 2 + Parameter { name: "link"; type: "string" } + } + Signal { name: "editingFinished"; revision: 6 } + Signal { name: "paddingChanged"; revision: 6 } + Signal { name: "topPaddingChanged"; revision: 6 } + Signal { name: "leftPaddingChanged"; revision: 6 } + Signal { name: "rightPaddingChanged"; revision: 6 } + Signal { name: "bottomPaddingChanged"; revision: 6 } + Method { name: "selectAll" } + Method { name: "selectWord" } + Method { + name: "select" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { name: "deselect" } + Method { + name: "isRightToLeft" + type: "bool" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { name: "cut" } + Method { name: "copy" } + Method { name: "paste" } + Method { name: "undo" } + Method { name: "redo" } + Method { + name: "insert" + Parameter { name: "position"; type: "int" } + Parameter { name: "text"; type: "string" } + } + Method { + name: "remove" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { + name: "append" + revision: 2 + Parameter { name: "text"; type: "string" } + } + Method { name: "clear"; revision: 7 } + Method { + name: "inputMethodQuery" + revision: 4 + type: "QVariant" + Parameter { name: "query"; type: "Qt::InputMethodQuery" } + Parameter { name: "argument"; type: "QVariant" } + } + Method { + name: "positionToRectangle" + type: "QRectF" + Parameter { type: "int" } + } + Method { + name: "positionAt" + type: "int" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + Method { + name: "moveCursorSelection" + Parameter { name: "pos"; type: "int" } + } + Method { + name: "moveCursorSelection" + Parameter { name: "pos"; type: "int" } + Parameter { name: "mode"; type: "SelectionMode" } + } + Method { + name: "getText" + type: "string" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { + name: "getFormattedText" + type: "string" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { + name: "linkAt" + revision: 3 + type: "string" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + } + Component { + name: "QQuickTextField" + defaultProperty: "data" + prototype: "QQuickTextInput" + exports: ["QtQuick.Templates/TextField 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "font"; type: "QFont" } + Property { name: "implicitWidth"; type: "double" } + Property { name: "implicitHeight"; type: "double" } + Property { name: "background"; type: "QQuickItem"; isPointer: true } + Property { name: "placeholderText"; type: "string" } + Property { name: "focusReason"; type: "Qt::FocusReason" } + Signal { name: "implicitWidthChanged3" } + Signal { name: "implicitHeightChanged3" } + Signal { + name: "pressAndHold" + Parameter { name: "mouse"; type: "QQuickMouseEvent"; isPointer: true } + } + } + Component { + name: "QQuickTextInput" + defaultProperty: "data" + prototype: "QQuickImplicitSizeItem" + Enum { + name: "EchoMode" + values: { + "Normal": 0, + "NoEcho": 1, + "Password": 2, + "PasswordEchoOnEdit": 3 + } + } + Enum { + name: "HAlignment" + values: { + "AlignLeft": 1, + "AlignRight": 2, + "AlignHCenter": 4 + } + } + Enum { + name: "VAlignment" + values: { + "AlignTop": 32, + "AlignBottom": 64, + "AlignVCenter": 128 + } + } + Enum { + name: "WrapMode" + values: { + "NoWrap": 0, + "WordWrap": 1, + "WrapAnywhere": 3, + "WrapAtWordBoundaryOrAnywhere": 4, + "Wrap": 4 + } + } + Enum { + name: "SelectionMode" + values: { + "SelectCharacters": 0, + "SelectWords": 1 + } + } + Enum { + name: "CursorPosition" + values: { + "CursorBetweenCharacters": 0, + "CursorOnCharacter": 1 + } + } + Enum { + name: "RenderType" + values: { + "QtRendering": 0, + "NativeRendering": 1 + } + } + Property { name: "text"; type: "string" } + Property { name: "length"; type: "int"; isReadonly: true } + Property { name: "color"; type: "QColor" } + Property { name: "selectionColor"; type: "QColor" } + Property { name: "selectedTextColor"; type: "QColor" } + Property { name: "font"; type: "QFont" } + Property { name: "horizontalAlignment"; type: "HAlignment" } + Property { name: "effectiveHorizontalAlignment"; type: "HAlignment"; isReadonly: true } + Property { name: "verticalAlignment"; type: "VAlignment" } + Property { name: "wrapMode"; type: "WrapMode" } + Property { name: "readOnly"; type: "bool" } + Property { name: "cursorVisible"; type: "bool" } + Property { name: "cursorPosition"; type: "int" } + Property { name: "cursorRectangle"; type: "QRectF"; isReadonly: true } + Property { name: "cursorDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "selectionStart"; type: "int"; isReadonly: true } + Property { name: "selectionEnd"; type: "int"; isReadonly: true } + Property { name: "selectedText"; type: "string"; isReadonly: true } + Property { name: "maximumLength"; type: "int" } + Property { name: "validator"; type: "QValidator"; isPointer: true } + Property { name: "inputMask"; type: "string" } + Property { name: "inputMethodHints"; type: "Qt::InputMethodHints" } + Property { name: "acceptableInput"; type: "bool"; isReadonly: true } + Property { name: "echoMode"; type: "EchoMode" } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "passwordCharacter"; type: "string" } + Property { name: "passwordMaskDelay"; revision: 3; type: "int" } + Property { name: "displayText"; type: "string"; isReadonly: true } + Property { name: "preeditText"; revision: 7; type: "string"; isReadonly: true } + Property { name: "autoScroll"; type: "bool" } + Property { name: "selectByMouse"; type: "bool" } + Property { name: "mouseSelectionMode"; type: "SelectionMode" } + Property { name: "persistentSelection"; type: "bool" } + Property { name: "canPaste"; type: "bool"; isReadonly: true } + Property { name: "canUndo"; type: "bool"; isReadonly: true } + Property { name: "canRedo"; type: "bool"; isReadonly: true } + Property { name: "inputMethodComposing"; type: "bool"; isReadonly: true } + Property { name: "contentWidth"; type: "double"; isReadonly: true } + Property { name: "contentHeight"; type: "double"; isReadonly: true } + Property { name: "renderType"; type: "RenderType" } + Property { name: "padding"; revision: 6; type: "double" } + Property { name: "topPadding"; revision: 6; type: "double" } + Property { name: "leftPadding"; revision: 6; type: "double" } + Property { name: "rightPadding"; revision: 6; type: "double" } + Property { name: "bottomPadding"; revision: 6; type: "double" } + Signal { name: "accepted" } + Signal { name: "editingFinished"; revision: 2 } + Signal { + name: "fontChanged" + Parameter { name: "font"; type: "QFont" } + } + Signal { + name: "horizontalAlignmentChanged" + Parameter { name: "alignment"; type: "QQuickTextInput::HAlignment" } + } + Signal { + name: "verticalAlignmentChanged" + Parameter { name: "alignment"; type: "QQuickTextInput::VAlignment" } + } + Signal { + name: "readOnlyChanged" + Parameter { name: "isReadOnly"; type: "bool" } + } + Signal { + name: "cursorVisibleChanged" + Parameter { name: "isCursorVisible"; type: "bool" } + } + Signal { + name: "maximumLengthChanged" + Parameter { name: "maximumLength"; type: "int" } + } + Signal { + name: "inputMaskChanged" + Parameter { name: "inputMask"; type: "string" } + } + Signal { + name: "echoModeChanged" + Parameter { name: "echoMode"; type: "QQuickTextInput::EchoMode" } + } + Signal { + name: "passwordMaskDelayChanged" + revision: 3 + Parameter { name: "delay"; type: "int" } + } + Signal { name: "preeditTextChanged"; revision: 7 } + Signal { + name: "activeFocusOnPressChanged" + Parameter { name: "activeFocusOnPress"; type: "bool" } + } + Signal { + name: "autoScrollChanged" + Parameter { name: "autoScroll"; type: "bool" } + } + Signal { + name: "selectByMouseChanged" + Parameter { name: "selectByMouse"; type: "bool" } + } + Signal { + name: "mouseSelectionModeChanged" + Parameter { name: "mode"; type: "QQuickTextInput::SelectionMode" } + } + Signal { name: "contentSizeChanged" } + Signal { name: "paddingChanged"; revision: 6 } + Signal { name: "topPaddingChanged"; revision: 6 } + Signal { name: "leftPaddingChanged"; revision: 6 } + Signal { name: "rightPaddingChanged"; revision: 6 } + Signal { name: "bottomPaddingChanged"; revision: 6 } + Method { name: "selectAll" } + Method { name: "selectWord" } + Method { + name: "select" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { name: "deselect" } + Method { + name: "isRightToLeft" + type: "bool" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { name: "cut" } + Method { name: "copy" } + Method { name: "paste" } + Method { name: "undo" } + Method { name: "redo" } + Method { + name: "insert" + Parameter { name: "position"; type: "int" } + Parameter { name: "text"; type: "string" } + } + Method { + name: "remove" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { + name: "ensureVisible" + revision: 3 + Parameter { name: "position"; type: "int" } + } + Method { name: "clear"; revision: 7 } + Method { + name: "positionAt" + Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "positionToRectangle" + type: "QRectF" + Parameter { name: "pos"; type: "int" } + } + Method { + name: "moveCursorSelection" + Parameter { name: "pos"; type: "int" } + } + Method { + name: "moveCursorSelection" + Parameter { name: "pos"; type: "int" } + Parameter { name: "mode"; type: "SelectionMode" } + } + Method { + name: "inputMethodQuery" + revision: 3 + type: "QVariant" + Parameter { name: "query"; type: "Qt::InputMethodQuery" } + Parameter { name: "argument"; type: "QVariant" } + } + Method { + name: "getText" + type: "string" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + } + Component { + name: "QQuickToolBar" + defaultProperty: "contentData" + prototype: "QQuickFrame" + exports: ["QtQuick.Templates/ToolBar 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "Position" + values: { + "Header": 0, + "Footer": 1 + } + } + Property { name: "position"; type: "Position" } + } + Component { + name: "QQuickToolButton" + defaultProperty: "data" + prototype: "QQuickButton" + exports: ["QtQuick.Templates/ToolButton 2.0"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickToolTip" + defaultProperty: "contentData" + prototype: "QQuickPopup" + exports: ["QtQuick.Templates/ToolTip 2.0"] + exportMetaObjectRevisions: [0] + attachedType: "QQuickToolTipAttached" + Property { name: "delay"; type: "int" } + Property { name: "timeout"; type: "int" } + Property { name: "text"; type: "string" } + Method { name: "open" } + Method { name: "close" } + } + Component { + name: "QQuickToolTipAttached" + prototype: "QObject" + Property { name: "text"; type: "string" } + Property { name: "delay"; type: "int" } + Property { name: "timeout"; type: "int" } + Property { name: "visible"; type: "bool" } + Property { name: "toolTip"; type: "QQuickToolTip"; isReadonly: true; isPointer: true } + Method { + name: "show" + Parameter { name: "text"; type: "string" } + Parameter { name: "ms"; type: "int" } + } + Method { + name: "show" + Parameter { name: "text"; type: "string" } + } + Method { name: "hide" } + } + Component { + name: "QQuickTumbler" + defaultProperty: "data" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/Tumbler 2.0"] + exportMetaObjectRevisions: [0] + attachedType: "QQuickTumblerAttached" + Property { name: "model"; type: "QVariant" } + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "currentIndex"; type: "int" } + Property { name: "currentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "delegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "visibleItemCount"; type: "int" } + } + Component { + name: "QQuickTumblerAttached" + prototype: "QObject" + Property { name: "tumbler"; type: "QQuickTumbler"; isReadonly: true; isPointer: true } + Property { name: "displacement"; type: "double"; isReadonly: true } + } +} diff --git a/bin/win64/QtQuick/Controls.2/qmldir b/bin/win64/QtQuick/Controls.2/qmldir new file mode 100644 index 0000000..50f786d --- /dev/null +++ b/bin/win64/QtQuick/Controls.2/qmldir @@ -0,0 +1,5 @@ +module QtQuick.Controls +plugin qtquickcontrols2plugin +classname QtQuickControls2Plugin +depends QtQuick.Templates 2.0 +designersupported diff --git a/bin/win64/QtQuick/Controls.2/qtquickcontrols2plugin.dll b/bin/win64/QtQuick/Controls.2/qtquickcontrols2plugin.dll new file mode 100644 index 0000000..febf3b6 Binary files /dev/null and b/bin/win64/QtQuick/Controls.2/qtquickcontrols2plugin.dll differ diff --git a/bin/win64/QtQuick/Controls/Styles/Flat/qmldir b/bin/win64/QtQuick/Controls/Styles/Flat/qmldir new file mode 100644 index 0000000..74a5a96 --- /dev/null +++ b/bin/win64/QtQuick/Controls/Styles/Flat/qmldir @@ -0,0 +1,3 @@ +module QtQuick.Controls.Styles.Flat +plugin qtquickextrasflatplugin +classname QtQuickExtrasStylesPlugin diff --git a/bin/win64/QtQuick/Controls/Styles/Flat/qtquickextrasflatplugin.dll b/bin/win64/QtQuick/Controls/Styles/Flat/qtquickextrasflatplugin.dll new file mode 100644 index 0000000..69d74f6 Binary files /dev/null and b/bin/win64/QtQuick/Controls/Styles/Flat/qtquickextrasflatplugin.dll differ diff --git a/bin/win64/QtQuick/Controls/Styles/qmldir b/bin/win64/QtQuick/Controls/Styles/qmldir new file mode 100644 index 0000000..4b2f984 --- /dev/null +++ b/bin/win64/QtQuick/Controls/Styles/qmldir @@ -0,0 +1,38 @@ +module QtQuick.Controls.Styles +ApplicationWindowStyle 1.3 Base/ApplicationWindowStyle.qml +ButtonStyle 1.0 Base/ButtonStyle.qml +BusyIndicatorStyle 1.1 Base/BusyIndicatorStyle.qml +CalendarStyle 1.1 Base/CalendarStyle.qml +CheckBoxStyle 1.0 Base/CheckBoxStyle.qml +ComboBoxStyle 1.0 Base/ComboBoxStyle.qml +MenuStyle 1.2 Base/MenuStyle.qml +MenuBarStyle 1.2 Base/MenuBarStyle.qml +ProgressBarStyle 1.0 Base/ProgressBarStyle.qml +RadioButtonStyle 1.0 Base/RadioButtonStyle.qml +ScrollViewStyle 1.0 Base/ScrollViewStyle.qml +SliderStyle 1.0 Base/SliderStyle.qml +SpinBoxStyle 1.1 Base/SpinBoxStyle.qml +SwitchStyle 1.1 Base/SwitchStyle.qml +TabViewStyle 1.0 Base/TabViewStyle.qml +TableViewStyle 1.0 Base/TableViewStyle.qml +TreeViewStyle 1.4 Base/TreeViewStyle.qml +TextAreaStyle 1.1 Base/TextAreaStyle.qml +TextFieldStyle 1.0 Base/TextFieldStyle.qml +ToolBarStyle 1.0 Base/ToolBarStyle.qml +StatusBarStyle 1.0 Base/StatusBarStyle.qml + +CircularGaugeStyle 1.0 Base/CircularGaugeStyle.qml +CircularButtonStyle 1.0 Base/CircularButtonStyle.qml +CircularTickmarkLabelStyle 1.0 Base/CircularTickmarkLabelStyle.qml +CommonStyleHelper 1.0 Base/CommonStyleHelper.qml +DelayButtonStyle 1.0 Base/DelayButtonStyle.qml +DialStyle 1.1 Base/DialStyle.qml +GaugeStyle 1.0 Base/GaugeStyle.qml +HandleStyle 1.0 Base/HandleStyle.qml +HandleStyleHelper 1.0 Base/HandleStyleHelper.qml +PieMenuStyle 1.3 Base/PieMenuStyle.qml +StatusIndicatorStyle 1.1 Base/StatusIndicatorStyle.qml +ToggleButtonStyle 1.0 Base/ToggleButtonStyle.qml +TumblerStyle 1.2 Base/TumblerStyle.qml + +designersupported diff --git a/bin/win64/QtQuick/Dialogs/Private/dialogsprivateplugin.dll b/bin/win64/QtQuick/Dialogs/Private/dialogsprivateplugin.dll new file mode 100644 index 0000000..f7badb4 Binary files /dev/null and b/bin/win64/QtQuick/Dialogs/Private/dialogsprivateplugin.dll differ diff --git a/bin/win64/QtQuick/Dialogs/Private/plugins.qmltypes b/bin/win64/QtQuick/Dialogs/Private/plugins.qmltypes new file mode 100644 index 0000000..6052cae --- /dev/null +++ b/bin/win64/QtQuick/Dialogs/Private/plugins.qmltypes @@ -0,0 +1,325 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by: +// 'qmlplugindump -nonrelocatable QtQuick.Dialogs.Private 1.1' + +Module { + dependencies: [] + Component { + name: "QAbstractItemModel" + prototype: "QObject" + Enum { + name: "LayoutChangeHint" + values: { + "NoLayoutChangeHint": 0, + "VerticalSortHint": 1, + "HorizontalSortHint": 2 + } + } + Signal { + name: "dataChanged" + Parameter { name: "topLeft"; type: "QModelIndex" } + Parameter { name: "bottomRight"; type: "QModelIndex" } + Parameter { name: "roles"; type: "QVector" } + } + Signal { + name: "dataChanged" + Parameter { name: "topLeft"; type: "QModelIndex" } + Parameter { name: "bottomRight"; type: "QModelIndex" } + } + Signal { + name: "headerDataChanged" + Parameter { name: "orientation"; type: "Qt::Orientation" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "layoutChanged" + Parameter { name: "parents"; type: "QList" } + Parameter { name: "hint"; type: "QAbstractItemModel::LayoutChangeHint" } + } + Signal { + name: "layoutChanged" + Parameter { name: "parents"; type: "QList" } + } + Signal { name: "layoutChanged" } + Signal { + name: "layoutAboutToBeChanged" + Parameter { name: "parents"; type: "QList" } + Parameter { name: "hint"; type: "QAbstractItemModel::LayoutChangeHint" } + } + Signal { + name: "layoutAboutToBeChanged" + Parameter { name: "parents"; type: "QList" } + } + Signal { name: "layoutAboutToBeChanged" } + Signal { + name: "rowsAboutToBeInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "rowsInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "rowsAboutToBeRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "rowsRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsAboutToBeInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsAboutToBeRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { name: "modelAboutToBeReset" } + Signal { name: "modelReset" } + Signal { + name: "rowsAboutToBeMoved" + Parameter { name: "sourceParent"; type: "QModelIndex" } + Parameter { name: "sourceStart"; type: "int" } + Parameter { name: "sourceEnd"; type: "int" } + Parameter { name: "destinationParent"; type: "QModelIndex" } + Parameter { name: "destinationRow"; type: "int" } + } + Signal { + name: "rowsMoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + Parameter { name: "destination"; type: "QModelIndex" } + Parameter { name: "row"; type: "int" } + } + Signal { + name: "columnsAboutToBeMoved" + Parameter { name: "sourceParent"; type: "QModelIndex" } + Parameter { name: "sourceStart"; type: "int" } + Parameter { name: "sourceEnd"; type: "int" } + Parameter { name: "destinationParent"; type: "QModelIndex" } + Parameter { name: "destinationColumn"; type: "int" } + } + Signal { + name: "columnsMoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + Parameter { name: "destination"; type: "QModelIndex" } + Parameter { name: "column"; type: "int" } + } + Method { name: "submit"; type: "bool" } + Method { name: "revert" } + Method { + name: "hasIndex" + type: "bool" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "hasIndex" + type: "bool" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + } + Method { + name: "index" + type: "QModelIndex" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "index" + type: "QModelIndex" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + } + Method { + name: "parent" + type: "QModelIndex" + Parameter { name: "child"; type: "QModelIndex" } + } + Method { + name: "sibling" + type: "QModelIndex" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + Parameter { name: "idx"; type: "QModelIndex" } + } + Method { + name: "rowCount" + type: "int" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { name: "rowCount"; type: "int" } + Method { + name: "columnCount" + type: "int" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { name: "columnCount"; type: "int" } + Method { + name: "hasChildren" + type: "bool" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { name: "hasChildren"; type: "bool" } + Method { + name: "data" + type: "QVariant" + Parameter { name: "index"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + } + Method { + name: "data" + type: "QVariant" + Parameter { name: "index"; type: "QModelIndex" } + } + Method { + name: "setData" + type: "bool" + Parameter { name: "index"; type: "QModelIndex" } + Parameter { name: "value"; type: "QVariant" } + Parameter { name: "role"; type: "int" } + } + Method { + name: "setData" + type: "bool" + Parameter { name: "index"; type: "QModelIndex" } + Parameter { name: "value"; type: "QVariant" } + } + Method { + name: "headerData" + type: "QVariant" + Parameter { name: "section"; type: "int" } + Parameter { name: "orientation"; type: "Qt::Orientation" } + Parameter { name: "role"; type: "int" } + } + Method { + name: "headerData" + type: "QVariant" + Parameter { name: "section"; type: "int" } + Parameter { name: "orientation"; type: "Qt::Orientation" } + } + Method { + name: "fetchMore" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "canFetchMore" + type: "bool" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "flags" + type: "Qt::ItemFlags" + Parameter { name: "index"; type: "QModelIndex" } + } + Method { + name: "match" + type: "QModelIndexList" + Parameter { name: "start"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + Parameter { name: "value"; type: "QVariant" } + Parameter { name: "hits"; type: "int" } + Parameter { name: "flags"; type: "Qt::MatchFlags" } + } + Method { + name: "match" + type: "QModelIndexList" + Parameter { name: "start"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + Parameter { name: "value"; type: "QVariant" } + Parameter { name: "hits"; type: "int" } + } + Method { + name: "match" + type: "QModelIndexList" + Parameter { name: "start"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + Parameter { name: "value"; type: "QVariant" } + } + } + Component { name: "QAbstractListModel"; prototype: "QAbstractItemModel" } + Component { + name: "QQuickFontListModel" + prototype: "QAbstractListModel" + exports: ["QtQuick.Dialogs.Private/FontListModel 1.1"] + exportMetaObjectRevisions: [0] + Property { name: "writingSystem"; type: "string" } + Property { name: "scalableFonts"; type: "bool" } + Property { name: "nonScalableFonts"; type: "bool" } + Property { name: "monospacedFonts"; type: "bool" } + Property { name: "proportionalFonts"; type: "bool" } + Property { name: "count"; type: "int"; isReadonly: true } + Signal { name: "rowCountChanged" } + Method { + name: "setScalableFonts" + Parameter { name: "arg"; type: "bool" } + } + Method { + name: "setNonScalableFonts" + Parameter { name: "arg"; type: "bool" } + } + Method { + name: "setMonospacedFonts" + Parameter { name: "arg"; type: "bool" } + } + Method { + name: "setProportionalFonts" + Parameter { name: "arg"; type: "bool" } + } + Method { + name: "get" + type: "QJSValue" + Parameter { name: "index"; type: "int" } + } + Method { name: "pointSizes"; type: "QJSValue" } + } + Component { + name: "QQuickWritingSystemListModel" + prototype: "QAbstractListModel" + exports: ["QtQuick.Dialogs.Private/WritingSystemListModel 1.1"] + exportMetaObjectRevisions: [0] + Property { name: "writingSystems"; type: "QStringList"; isReadonly: true } + Property { name: "count"; type: "int"; isReadonly: true } + Signal { name: "rowCountChanged" } + Method { + name: "get" + type: "QJSValue" + Parameter { name: "index"; type: "int" } + } + } +} diff --git a/bin/win64/QtQuick/Dialogs/Private/qmldir b/bin/win64/QtQuick/Dialogs/Private/qmldir new file mode 100644 index 0000000..562d59e --- /dev/null +++ b/bin/win64/QtQuick/Dialogs/Private/qmldir @@ -0,0 +1,4 @@ +module QtQuick.Dialogs.Private +plugin dialogsprivateplugin +classname QtQuick2DialogsPrivatePlugin +typeinfo plugins.qmltypes diff --git a/bin/win64/QtQuick/Dialogs/dialogplugin.dll b/bin/win64/QtQuick/Dialogs/dialogplugin.dll new file mode 100644 index 0000000..c17dff5 Binary files /dev/null and b/bin/win64/QtQuick/Dialogs/dialogplugin.dll differ diff --git a/bin/win64/QtQuick/Dialogs/plugins.qmltypes b/bin/win64/QtQuick/Dialogs/plugins.qmltypes new file mode 100644 index 0000000..6e21c16 --- /dev/null +++ b/bin/win64/QtQuick/Dialogs/plugins.qmltypes @@ -0,0 +1,2569 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by: +// 'qmlplugindump -nonrelocatable QtQuick.Dialogs 1.2' + +Module { + dependencies: [ + "Qt.labs.folderlistmodel 2.1", + "Qt.labs.settings 1.0", + "QtGraphicalEffects 1.0", + "QtGraphicalEffects.private 1.0", + "QtQml.Models 2.2", + "QtQuick 2.6", + "QtQuick.Controls 1.4", + "QtQuick.Controls.Styles 1.4", + "QtQuick.Extras 1.4", + "QtQuick.Extras.Private.CppUtils 1.1", + "QtQuick.Layouts 1.1", + "QtQuick.PrivateWidgets 1.1", + "QtQuick.Window 2.2" + ] + + Component { + name: "QQuickAbstractColorDialog" + prototype: "QQuickAbstractDialog" + Property { name: "showAlphaChannel"; type: "bool" } + Property { name: "color"; type: "QColor" } + Property { name: "currentColor"; type: "QColor" } + Property { name: "currentHue"; type: "double"; isReadonly: true } + Property { name: "currentSaturation"; type: "double"; isReadonly: true } + Property { name: "currentLightness"; type: "double"; isReadonly: true } + Property { name: "currentAlpha"; type: "double"; isReadonly: true } + Signal { name: "selectionAccepted" } + Method { + name: "setVisible" + Parameter { name: "v"; type: "bool" } + } + Method { + name: "setModality" + Parameter { name: "m"; type: "Qt::WindowModality" } + } + Method { + name: "setTitle" + Parameter { name: "t"; type: "string" } + } + Method { + name: "setColor" + Parameter { name: "arg"; type: "QColor" } + } + Method { + name: "setCurrentColor" + Parameter { name: "currentColor"; type: "QColor" } + } + Method { + name: "setShowAlphaChannel" + Parameter { name: "arg"; type: "bool" } + } + } + Component { + name: "QQuickAbstractDialog" + prototype: "QObject" + Enum { + name: "StandardButton" + values: { + "NoButton": 0, + "Ok": 1024, + "Save": 2048, + "SaveAll": 4096, + "Open": 8192, + "Yes": 16384, + "YesToAll": 32768, + "No": 65536, + "NoToAll": 131072, + "Abort": 262144, + "Retry": 524288, + "Ignore": 1048576, + "Close": 2097152, + "Cancel": 4194304, + "Discard": 8388608, + "Help": 16777216, + "Apply": 33554432, + "Reset": 67108864, + "RestoreDefaults": 134217728, + "NButtons": 134217729 + } + } + Enum { + name: "StandardButtons" + values: { + "NoButton": 0, + "Ok": 1024, + "Save": 2048, + "SaveAll": 4096, + "Open": 8192, + "Yes": 16384, + "YesToAll": 32768, + "No": 65536, + "NoToAll": 131072, + "Abort": 262144, + "Retry": 524288, + "Ignore": 1048576, + "Close": 2097152, + "Cancel": 4194304, + "Discard": 8388608, + "Help": 16777216, + "Apply": 33554432, + "Reset": 67108864, + "RestoreDefaults": 134217728, + "NButtons": 134217729 + } + } + Property { name: "visible"; type: "bool" } + Property { name: "modality"; type: "Qt::WindowModality" } + Property { name: "title"; type: "string" } + Property { name: "isWindow"; type: "bool"; isReadonly: true } + Property { name: "x"; type: "int" } + Property { name: "y"; type: "int" } + Property { name: "width"; type: "int" } + Property { name: "height"; type: "int" } + Property { name: "__maximumDimension"; type: "int"; isReadonly: true } + Signal { name: "visibilityChanged" } + Signal { name: "geometryChanged" } + Signal { name: "accepted" } + Signal { name: "rejected" } + Method { name: "open" } + Method { name: "close" } + Method { + name: "setX" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setY" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setWidth" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setHeight" + Parameter { name: "arg"; type: "int" } + } + } + Component { + name: "QQuickAbstractFileDialog" + prototype: "QQuickAbstractDialog" + Property { name: "selectExisting"; type: "bool" } + Property { name: "selectMultiple"; type: "bool" } + Property { name: "selectFolder"; type: "bool" } + Property { name: "folder"; type: "QUrl" } + Property { name: "nameFilters"; type: "QStringList" } + Property { name: "selectedNameFilter"; type: "string" } + Property { name: "selectedNameFilterExtensions"; type: "QStringList"; isReadonly: true } + Property { name: "selectedNameFilterIndex"; type: "int" } + Property { name: "fileUrl"; type: "QUrl"; isReadonly: true } + Property { name: "fileUrls"; type: "QList"; isReadonly: true } + Property { name: "sidebarVisible"; type: "bool" } + Signal { name: "filterSelected" } + Signal { name: "fileModeChanged" } + Signal { name: "selectionAccepted" } + Method { + name: "setVisible" + Parameter { name: "v"; type: "bool" } + } + Method { + name: "setTitle" + Parameter { name: "t"; type: "string" } + } + Method { + name: "setSelectExisting" + Parameter { name: "s"; type: "bool" } + } + Method { + name: "setSelectMultiple" + Parameter { name: "s"; type: "bool" } + } + Method { + name: "setSelectFolder" + Parameter { name: "s"; type: "bool" } + } + Method { + name: "setFolder" + Parameter { name: "f"; type: "QUrl" } + } + Method { + name: "setNameFilters" + Parameter { name: "f"; type: "QStringList" } + } + Method { + name: "selectNameFilter" + Parameter { name: "f"; type: "string" } + } + Method { + name: "setSelectedNameFilterIndex" + Parameter { name: "idx"; type: "int" } + } + Method { + name: "setSidebarVisible" + Parameter { name: "s"; type: "bool" } + } + } + Component { + name: "QQuickAbstractFontDialog" + prototype: "QQuickAbstractDialog" + Property { name: "scalableFonts"; type: "bool" } + Property { name: "nonScalableFonts"; type: "bool" } + Property { name: "monospacedFonts"; type: "bool" } + Property { name: "proportionalFonts"; type: "bool" } + Property { name: "font"; type: "QFont" } + Property { name: "currentFont"; type: "QFont" } + Signal { name: "selectionAccepted" } + Method { + name: "setVisible" + Parameter { name: "v"; type: "bool" } + } + Method { + name: "setModality" + Parameter { name: "m"; type: "Qt::WindowModality" } + } + Method { + name: "setTitle" + Parameter { name: "t"; type: "string" } + } + Method { + name: "setFont" + Parameter { name: "arg"; type: "QFont" } + } + Method { + name: "setCurrentFont" + Parameter { name: "arg"; type: "QFont" } + } + Method { + name: "setScalableFonts" + Parameter { name: "arg"; type: "bool" } + } + Method { + name: "setNonScalableFonts" + Parameter { name: "arg"; type: "bool" } + } + Method { + name: "setMonospacedFonts" + Parameter { name: "arg"; type: "bool" } + } + Method { + name: "setProportionalFonts" + Parameter { name: "arg"; type: "bool" } + } + } + Component { + name: "QQuickAbstractMessageDialog" + prototype: "QQuickAbstractDialog" + exports: ["QtQuick.PrivateWidgets/QtMessageDialog 1.1"] + exportMetaObjectRevisions: [0] + Enum { + name: "Icon" + values: { + "NoIcon": 0, + "Information": 1, + "Warning": 2, + "Critical": 3, + "Question": 4 + } + } + Property { name: "text"; type: "string" } + Property { name: "informativeText"; type: "string" } + Property { name: "detailedText"; type: "string" } + Property { name: "icon"; type: "Icon" } + Property { name: "standardIconSource"; type: "QUrl"; isReadonly: true } + Property { name: "standardButtons"; type: "QQuickAbstractDialog::StandardButtons" } + Property { + name: "clickedButton" + type: "QQuickAbstractDialog::StandardButton" + isReadonly: true + } + Signal { name: "buttonClicked" } + Signal { name: "discard" } + Signal { name: "help" } + Signal { name: "yes" } + Signal { name: "no" } + Signal { name: "apply" } + Signal { name: "reset" } + Method { + name: "setVisible" + Parameter { name: "v"; type: "bool" } + } + Method { + name: "setTitle" + Parameter { name: "arg"; type: "string" } + } + Method { + name: "setText" + Parameter { name: "arg"; type: "string" } + } + Method { + name: "setInformativeText" + Parameter { name: "arg"; type: "string" } + } + Method { + name: "setDetailedText" + Parameter { name: "arg"; type: "string" } + } + Method { + name: "setIcon" + Parameter { name: "icon"; type: "Icon" } + } + Method { + name: "setStandardButtons" + Parameter { name: "buttons"; type: "StandardButtons" } + } + Method { + name: "click" + Parameter { name: "button"; type: "QQuickAbstractDialog::StandardButton" } + } + } + + Component { + name: "QQuickColorDialog" + defaultProperty: "contentItem" + prototype: "QQuickAbstractColorDialog" + exports: ["QtQuick.Dialogs/AbstractColorDialog 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + } + Component { + name: "QQuickDialog" + defaultProperty: "contentItem" + prototype: "QQuickAbstractDialog" + exports: ["QtQuick.Dialogs/AbstractDialog 1.2"] + exportMetaObjectRevisions: [0] + Property { name: "title"; type: "string" } + Property { name: "standardButtons"; type: "QQuickAbstractDialog::StandardButtons" } + Property { + name: "clickedButton" + type: "QQuickAbstractDialog::StandardButton" + isReadonly: true + } + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + Signal { name: "buttonClicked" } + Signal { name: "discard" } + Signal { name: "help" } + Signal { name: "yes" } + Signal { name: "no" } + Signal { name: "apply" } + Signal { name: "reset" } + Method { + name: "setTitle" + Parameter { name: "arg"; type: "string" } + } + Method { + name: "setStandardButtons" + Parameter { name: "buttons"; type: "StandardButtons" } + } + Method { + name: "click" + Parameter { name: "button"; type: "QQuickAbstractDialog::StandardButton" } + } + Method { name: "__standardButtonsLeftModel"; type: "QJSValue" } + Method { name: "__standardButtonsRightModel"; type: "QJSValue" } + } + Component { + name: "QQuickFileDialog" + defaultProperty: "contentItem" + prototype: "QQuickAbstractFileDialog" + exports: ["QtQuick.Dialogs/AbstractFileDialog 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "shortcuts"; type: "QJSValue"; isReadonly: true } + Property { name: "__shortcuts"; type: "QJSValue"; isReadonly: true } + Method { name: "clearSelection" } + Method { + name: "addSelection" + type: "bool" + Parameter { name: "path"; type: "QUrl" } + } + } + Component { + name: "QQuickFontDialog" + defaultProperty: "contentItem" + prototype: "QQuickAbstractFontDialog" + exports: ["QtQuick.Dialogs/AbstractFontDialog 1.1"] + exportMetaObjectRevisions: [0] + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + } + Component { + name: "QQuickMessageDialog" + defaultProperty: "contentItem" + prototype: "QQuickAbstractMessageDialog" + exports: ["QtQuick.Dialogs/AbstractMessageDialog 1.1"] + exportMetaObjectRevisions: [0] + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + } + Component { + name: "QQuickStandardButton" + exports: ["QtQuick.Dialogs/StandardButton 1.1"] + isCreatable: false + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickStandardIcon" + exports: ["QtQuick.Dialogs/StandardIcon 1.1"] + isCreatable: false + exportMetaObjectRevisions: [0] + } + Component { + prototype: "QQuickWindowQmlImpl" + name: "QtQuick.Controls/ApplicationWindow 1.0" + exports: ["QtQuick.Controls/ApplicationWindow 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "menuBar"; type: "MenuBar_QMLTYPE_4"; isPointer: true } + Property { name: "toolBar"; type: "QQuickItem"; isPointer: true } + Property { name: "statusBar"; type: "QQuickItem"; isPointer: true } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__topBottomMargins"; type: "double" } + Property { name: "__qwindowsize_max"; type: "double"; isReadonly: true } + Property { name: "__width"; type: "double" } + Property { name: "__height"; type: "double" } + Property { + name: "contentItem" + type: "ContentItem_QMLTYPE_12" + isReadonly: true + isPointer: true + } + Property { name: "__style"; type: "QObject"; isReadonly: true; isPointer: true } + Property { name: "__panel"; type: "QObject"; isReadonly: true; isPointer: true } + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/BusyIndicator 1.1" + exports: ["QtQuick.Controls/BusyIndicator 1.1"] + exportMetaObjectRevisions: [1] + isComposite: true + defaultProperty: "data" + Property { name: "running"; type: "bool" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/Button 1.0" + exports: ["QtQuick.Controls/Button 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "isDefault"; type: "bool" } + Property { name: "menu"; type: "Menu_QMLTYPE_52"; isPointer: true } + Property { name: "checkable"; type: "bool" } + Property { name: "checked"; type: "bool" } + Property { name: "exclusiveGroup"; type: "QQuickExclusiveGroup"; isPointer: true } + Property { name: "action"; type: "QQuickAction"; isPointer: true } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "text"; type: "string" } + Property { name: "tooltip"; type: "string" } + Property { name: "iconSource"; type: "QUrl" } + Property { name: "iconName"; type: "string" } + Property { name: "__position"; type: "string" } + Property { name: "__iconOverriden"; type: "bool"; isReadonly: true } + Property { name: "__action"; type: "QQuickAction"; isPointer: true } + Property { name: "__iconAction"; type: "QQuickAction"; isReadonly: true; isPointer: true } + Property { name: "__behavior"; type: "QVariant" } + Property { name: "__effectivePressed"; type: "bool" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Signal { name: "clicked" } + Method { name: "accessiblePressAction"; type: "QVariant" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/Calendar 1.2" + exports: ["QtQuick.Controls/Calendar 1.2"] + exportMetaObjectRevisions: [2] + isComposite: true + defaultProperty: "data" + Property { name: "visibleMonth"; type: "int" } + Property { name: "visibleYear"; type: "int" } + Property { name: "frameVisible"; type: "bool" } + Property { name: "weekNumbersVisible"; type: "bool" } + Property { name: "navigationBarVisible"; type: "bool" } + Property { name: "dayOfWeekFormat"; type: "int" } + Property { name: "__locale"; type: "QVariant" } + Property { name: "__model"; type: "QQuickCalendarModel"; isPointer: true } + Property { name: "selectedDate"; type: "QDate" } + Property { name: "minimumDate"; type: "QDate" } + Property { name: "maximumDate"; type: "QDate" } + Signal { + name: "hovered" + Parameter { name: "date"; type: "QDateTime" } + } + Signal { + name: "pressed" + Parameter { name: "date"; type: "QDateTime" } + } + Signal { + name: "released" + Parameter { name: "date"; type: "QDateTime" } + } + Signal { + name: "clicked" + Parameter { name: "date"; type: "QDateTime" } + } + Signal { + name: "doubleClicked" + Parameter { name: "date"; type: "QDateTime" } + } + Signal { + name: "pressAndHold" + Parameter { name: "date"; type: "QDateTime" } + } + Method { name: "showPreviousMonth"; type: "QVariant" } + Method { name: "showNextMonth"; type: "QVariant" } + Method { name: "showPreviousYear"; type: "QVariant" } + Method { name: "showNextYear"; type: "QVariant" } + Method { name: "__selectPreviousMonth"; type: "QVariant" } + Method { name: "__selectNextMonth"; type: "QVariant" } + Method { name: "__selectPreviousWeek"; type: "QVariant" } + Method { name: "__selectNextWeek"; type: "QVariant" } + Method { name: "__selectFirstDayOfMonth"; type: "QVariant" } + Method { name: "__selectLastDayOfMonth"; type: "QVariant" } + Method { name: "__selectPreviousDay"; type: "QVariant" } + Method { name: "__selectNextDay"; type: "QVariant" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/CheckBox 1.0" + exports: ["QtQuick.Controls/CheckBox 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "checkedState"; type: "int" } + Property { name: "partiallyCheckedEnabled"; type: "bool" } + Property { name: "__ignoreChecked"; type: "bool" } + Property { name: "__ignoreCheckedState"; type: "bool" } + Method { name: "__cycleCheckBoxStates"; type: "QVariant" } + Property { name: "checked"; type: "bool" } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "exclusiveGroup"; type: "QQuickExclusiveGroup"; isPointer: true } + Property { name: "text"; type: "string" } + Property { name: "__cycleStatesHandler"; type: "QVariant" } + Property { name: "pressed"; type: "bool" } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Signal { name: "clicked" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras.Private/CircularButton 1.0" + exports: ["QtQuick.Extras.Private/CircularButton 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "isDefault"; type: "bool" } + Property { name: "menu"; type: "Menu_QMLTYPE_52"; isPointer: true } + Property { name: "checkable"; type: "bool" } + Property { name: "checked"; type: "bool" } + Property { name: "exclusiveGroup"; type: "QQuickExclusiveGroup"; isPointer: true } + Property { name: "action"; type: "QQuickAction"; isPointer: true } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "text"; type: "string" } + Property { name: "tooltip"; type: "string" } + Property { name: "iconSource"; type: "QUrl" } + Property { name: "iconName"; type: "string" } + Property { name: "__position"; type: "string" } + Property { name: "__iconOverriden"; type: "bool"; isReadonly: true } + Property { name: "__action"; type: "QQuickAction"; isPointer: true } + Property { name: "__iconAction"; type: "QQuickAction"; isReadonly: true; isPointer: true } + Property { name: "__behavior"; type: "QVariant" } + Property { name: "__effectivePressed"; type: "bool" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Signal { name: "clicked" } + Method { name: "accessiblePressAction"; type: "QVariant" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QObject" + name: "QtQuick.Extras.Private/CircularButtonStyleHelper 1.0" + exports: ["QtQuick.Extras.Private/CircularButtonStyleHelper 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + Property { name: "control"; type: "QQuickItem"; isPointer: true } + Property { name: "buttonColorUpTop"; type: "QColor" } + Property { name: "buttonColorUpBottom"; type: "QColor" } + Property { name: "buttonColorDownTop"; type: "QColor" } + Property { name: "buttonColorDownBottom"; type: "QColor" } + Property { name: "outerArcColorTop"; type: "QColor" } + Property { name: "outerArcColorBottom"; type: "QColor" } + Property { name: "innerArcColorTop"; type: "QColor" } + Property { name: "innerArcColorBottom"; type: "QColor" } + Property { name: "innerArcColorBottomStop"; type: "double" } + Property { name: "shineColor"; type: "QColor" } + Property { name: "smallestAxis"; type: "double" } + Property { name: "outerArcLineWidth"; type: "double" } + Property { name: "innerArcLineWidth"; type: "double" } + Property { name: "shineArcLineWidth"; type: "double" } + Property { name: "implicitWidth"; type: "double" } + Property { name: "implicitHeight"; type: "double" } + Property { name: "textColorUp"; type: "QColor" } + Property { name: "textColorDown"; type: "QColor" } + Property { name: "textRaisedColorUp"; type: "QColor" } + Property { name: "textRaisedColorDown"; type: "QColor" } + Property { name: "radius"; type: "double" } + Property { name: "halfRadius"; type: "double" } + Property { name: "outerArcRadius"; type: "double" } + Property { name: "innerArcRadius"; type: "double" } + Property { name: "shineArcRadius"; type: "double" } + Property { name: "zeroAngle"; type: "double" } + Property { name: "buttonColorTop"; type: "QColor" } + Property { name: "buttonColorBottom"; type: "QColor" } + Method { + name: "toPixels" + type: "QVariant" + Parameter { name: "percentageOfSmallestAxis"; type: "QVariant" } + } + Method { + name: "paintBackground" + type: "QVariant" + Parameter { name: "ctx"; type: "QVariant" } + } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/CircularGauge 1.0" + exports: ["QtQuick.Extras/CircularGauge 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "tickmarksVisible"; type: "bool" } + Property { name: "minimumValue"; type: "double" } + Property { name: "maximumValue"; type: "double" } + Property { name: "value"; type: "double" } + Property { name: "stepSize"; type: "double" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras.Private/CircularTickmarkLabel 1.0" + exports: ["QtQuick.Extras.Private/CircularTickmarkLabel 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "minimumValueAngle"; type: "double" } + Property { name: "maximumValueAngle"; type: "double" } + Property { name: "angleRange"; type: "double"; isReadonly: true } + Property { name: "tickmarkStepSize"; type: "double" } + Property { name: "tickmarkInset"; type: "double" } + Property { name: "tickmarkCount"; type: "int"; isReadonly: true } + Property { name: "minorTickmarkCount"; type: "int" } + Property { name: "minorTickmarkInset"; type: "double" } + Property { name: "labelInset"; type: "double" } + Property { name: "labelStepSize"; type: "double" } + Property { name: "labelCount"; type: "int"; isReadonly: true } + Property { name: "__tickmarkCount"; type: "double"; isReadonly: true } + Property { name: "tickmarksVisible"; type: "bool" } + Property { name: "minimumValue"; type: "double" } + Property { name: "maximumValue"; type: "double" } + Property { name: "stepSize"; type: "double" } + Method { + name: "valueToAngle" + type: "QVariant" + Parameter { name: "value"; type: "QVariant" } + } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickAbstractColorDialog" + name: "QtQuick.Dialogs/ColorDialog 1.0" + exports: ["QtQuick.Dialogs/ColorDialog 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentItem" + Property { name: "__valueSet"; type: "bool" } + Method { name: "__setControlsFromColor"; type: "QVariant" } + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/ComboBox 1.0" + exports: ["QtQuick.Controls/ComboBox 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "textRole"; type: "string" } + Property { name: "editable"; type: "bool" } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Property { name: "menu"; type: "QQmlComponent"; isPointer: true } + Property { name: "selectByMouse"; type: "bool" } + Property { name: "inputMethodComposing"; type: "bool"; isReadonly: true } + Property { name: "__popup"; type: "QVariant" } + Property { name: "model"; type: "QVariant" } + Property { name: "currentIndex"; type: "int" } + Property { name: "currentText"; type: "string"; isReadonly: true } + Property { name: "editText"; type: "string" } + Property { name: "inputMethodHints"; type: "int" } + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "validator"; type: "QValidator"; isPointer: true } + Property { name: "acceptableInput"; type: "bool"; isReadonly: true } + Signal { name: "accepted" } + Signal { + name: "activated" + Parameter { name: "index"; type: "int" } + } + Method { + name: "textAt" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "find" + type: "QVariant" + Parameter { name: "text"; type: "QVariant" } + } + Method { name: "selectAll"; type: "QVariant" } + Method { name: "__selectPrevItem"; type: "QVariant" } + Method { name: "__selectNextItem"; type: "QVariant" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/DelayButton 1.0" + exports: ["QtQuick.Extras/DelayButton 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "delay"; type: "int" } + Property { name: "__progress"; type: "double" } + Property { name: "progress"; type: "double"; isReadonly: true } + Signal { name: "activated" } + Property { name: "isDefault"; type: "bool" } + Property { name: "menu"; type: "Menu_QMLTYPE_52"; isPointer: true } + Property { name: "checkable"; type: "bool" } + Property { name: "checked"; type: "bool" } + Property { name: "exclusiveGroup"; type: "QQuickExclusiveGroup"; isPointer: true } + Property { name: "action"; type: "QQuickAction"; isPointer: true } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "text"; type: "string" } + Property { name: "tooltip"; type: "string" } + Property { name: "iconSource"; type: "QUrl" } + Property { name: "iconName"; type: "string" } + Property { name: "__position"; type: "string" } + Property { name: "__iconOverriden"; type: "bool"; isReadonly: true } + Property { name: "__action"; type: "QQuickAction"; isPointer: true } + Property { name: "__iconAction"; type: "QQuickAction"; isReadonly: true; isPointer: true } + Property { name: "__behavior"; type: "QVariant" } + Property { name: "__effectivePressed"; type: "bool" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Signal { name: "clicked" } + Method { name: "accessiblePressAction"; type: "QVariant" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/Dial 1.1" + exports: ["QtQuick.Extras/Dial 1.1"] + exportMetaObjectRevisions: [1] + isComposite: true + defaultProperty: "data" + Property { name: "__wrap"; type: "bool" } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "tickmarksVisible"; type: "bool" } + Property { name: "value"; type: "double" } + Property { name: "minimumValue"; type: "double" } + Property { name: "maximumValue"; type: "double" } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Property { name: "stepSize"; type: "double" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/Dial 1.0" + exports: ["QtQuick.Extras/Dial 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "__wrap"; type: "bool" } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "tickmarksVisible"; type: "bool" } + Property { name: "value"; type: "double" } + Property { name: "minimumValue"; type: "double" } + Property { name: "maximumValue"; type: "double" } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Property { name: "stepSize"; type: "double" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickAbstractDialog" + name: "QtQuick.Dialogs/Dialog 1.2" + exports: ["QtQuick.Dialogs/Dialog 1.2"] + exportMetaObjectRevisions: [2] + isComposite: true + defaultProperty: "data" + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + Method { name: "setupButtons"; type: "QVariant" } + Property { name: "title"; type: "string" } + Property { name: "standardButtons"; type: "QQuickAbstractDialog::StandardButtons" } + Property { + name: "clickedButton" + type: "QQuickAbstractDialog::StandardButton" + isReadonly: true + } + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + Signal { name: "buttonClicked" } + Signal { name: "discard" } + Signal { name: "help" } + Signal { name: "yes" } + Signal { name: "no" } + Signal { name: "apply" } + Signal { name: "reset" } + Method { + name: "setTitle" + Parameter { name: "arg"; type: "string" } + } + Method { + name: "setStandardButtons" + Parameter { name: "buttons"; type: "StandardButtons" } + } + Method { + name: "click" + Parameter { name: "button"; type: "QQuickAbstractDialog::StandardButton" } + } + Method { name: "__standardButtonsLeftModel"; type: "QJSValue" } + Method { name: "__standardButtonsRightModel"; type: "QJSValue" } + } + Component { + prototype: "QQuickAbstractFileDialog" + name: "QtQuick.Dialogs/FileDialog 1.0" + exports: ["QtQuick.Dialogs/FileDialog 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentItem" + Property { name: "settings"; type: "QQmlSettings"; isPointer: true } + Property { name: "showFocusHighlight"; type: "bool" } + Property { name: "palette"; type: "QQuickSystemPalette"; isPointer: true } + Property { name: "favoriteFolders"; type: "QVariant" } + Property { name: "dirUpAction"; type: "QQuickAction"; isPointer: true } + Method { + name: "dirDown" + type: "QVariant" + Parameter { name: "path"; type: "QVariant" } + } + Method { name: "dirUp"; type: "QVariant" } + Method { name: "acceptSelection"; type: "QVariant" } + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "shortcuts"; type: "QJSValue"; isReadonly: true } + Property { name: "__shortcuts"; type: "QJSValue"; isReadonly: true } + Method { name: "clearSelection" } + Method { + name: "addSelection" + type: "bool" + Parameter { name: "path"; type: "QUrl" } + } + } + Component { + prototype: "QQuickAbstractFontDialog" + name: "QtQuick.Dialogs/FontDialog 1.1" + exports: ["QtQuick.Dialogs/FontDialog 1.1"] + exportMetaObjectRevisions: [1] + isComposite: true + defaultProperty: "contentItem" + Property { name: "font"; type: "QFont" } + Property { name: "currentFont"; type: "QFont" } + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/Gauge 1.0" + exports: ["QtQuick.Extras/Gauge 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "orientation"; type: "int" } + Property { name: "tickmarkAlignment"; type: "int" } + Property { name: "__tickmarkAlignment"; type: "int" } + Property { name: "__tickmarksInside"; type: "bool" } + Property { name: "tickmarkStepSize"; type: "double" } + Property { name: "minorTickmarkCount"; type: "int" } + Property { name: "formatValue"; type: "QVariant" } + Property { name: "minimumValue"; type: "double" } + Property { name: "value"; type: "double" } + Property { name: "maximumValue"; type: "double" } + Property { name: "font"; type: "QFont" } + Property { name: "__hiddenText"; type: "QQuickText"; isReadonly: true; isPointer: true } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/GroupBox 1.0" + exports: ["QtQuick.Controls/GroupBox 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "__content" + Property { name: "title"; type: "string" } + Property { name: "flat"; type: "bool" } + Property { name: "checkable"; type: "bool" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "checked"; type: "bool" } + Property { name: "__content"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "__checkbox"; type: "CheckBox_QMLTYPE_76"; isReadonly: true; isPointer: true } + Property { name: "__style"; type: "QObject"; isReadonly: true; isPointer: true } + } + Component { + prototype: "QQuickText" + name: "QtQuick.Controls/Label 1.0" + exports: ["QtQuick.Controls/Label 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickMenu" + name: "QtQuick.Controls/Menu 1.0" + exports: ["QtQuick.Controls/Menu 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "items" + Property { name: "__selfComponent"; type: "QQmlComponent"; isPointer: true } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__usingDefaultStyle"; type: "bool" } + Property { name: "__parentContentItem"; type: "QVariant" } + Property { name: "__currentIndex"; type: "int" } + Method { + name: "addMenu" + type: "QVariant" + Parameter { name: "title"; type: "QVariant" } + } + Method { + name: "insertMenu" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + Parameter { name: "title"; type: "QVariant" } + } + } + Component { + prototype: "QQuickMenuBar" + name: "QtQuick.Controls/MenuBar 1.0" + exports: ["QtQuick.Controls/MenuBar 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "menus" + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__menuBarComponent"; type: "QQmlComponent"; isPointer: true } + } + Component { + prototype: "QQuickAbstractMessageDialog" + name: "QtQuick.Dialogs/MessageDialog 1.1" + exports: ["QtQuick.Dialogs/MessageDialog 1.1"] + exportMetaObjectRevisions: [1] + isComposite: true + defaultProperty: "contentItem" + Method { name: "calculateImplicitWidth"; type: "QVariant" } + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/PieMenu 1.0" + exports: ["QtQuick.Extras/PieMenu 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "menuItems" + Property { name: "selectionAngle"; type: "double"; isReadonly: true } + Property { name: "triggerMode"; type: "int" } + Property { name: "title"; type: "string" } + Property { name: "boundingItem"; type: "QQuickItem"; isPointer: true } + Property { name: "__protectedScope"; type: "QObject"; isPointer: true } + Property { name: "activationMode"; type: "int" } + Property { name: "menuItems"; type: "QQuickMenuItem"; isList: true; isReadonly: true } + Property { name: "currentIndex"; type: "int"; isReadonly: true } + Property { name: "currentItem"; type: "QQuickMenuItem"; isReadonly: true; isPointer: true } + Property { name: "__mouseThief"; type: "QQuickMouseThief"; isReadonly: true; isPointer: true } + Method { + name: "popup" + type: "QVariant" + Parameter { name: "x"; type: "QVariant" } + Parameter { name: "y"; type: "QVariant" } + } + Method { + name: "addItem" + type: "QVariant" + Parameter { name: "text"; type: "QVariant" } + } + Method { + name: "insertItem" + type: "QVariant" + Parameter { name: "before"; type: "QVariant" } + Parameter { name: "text"; type: "QVariant" } + } + Method { + name: "removeItem" + type: "QVariant" + Parameter { name: "item"; type: "QVariant" } + } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickLoader" + name: "QtQuick.Extras.Private/PieMenuIcon 1.0" + exports: ["QtQuick.Extras.Private/PieMenuIcon 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "PieMenu_QMLTYPE_250"; isPointer: true } + Property { name: "styleData"; type: "QObject"; isPointer: true } + Property { name: "iconSource"; type: "string"; isReadonly: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/ProgressBar 1.0" + exports: ["QtQuick.Controls/ProgressBar 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "value"; type: "double" } + Property { name: "minimumValue"; type: "double" } + Property { name: "maximumValue"; type: "double" } + Property { name: "indeterminate"; type: "bool" } + Property { name: "orientation"; type: "int" } + Property { name: "__initialized"; type: "bool" } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Method { + name: "setValue" + type: "QVariant" + Parameter { name: "v"; type: "QVariant" } + } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/RadioButton 1.0" + exports: ["QtQuick.Controls/RadioButton 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "checked"; type: "bool" } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "exclusiveGroup"; type: "QQuickExclusiveGroup"; isPointer: true } + Property { name: "text"; type: "string" } + Property { name: "__cycleStatesHandler"; type: "QVariant" } + Property { name: "pressed"; type: "bool" } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Signal { name: "clicked" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/ScrollView 1.0" + exports: ["QtQuick.Controls/ScrollView 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentItem" + Property { name: "frameVisible"; type: "bool" } + Property { name: "highlightOnFocus"; type: "bool" } + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "__scroller"; type: "QQuickItem"; isPointer: true } + Property { name: "__scrollBarTopMargin"; type: "int" } + Property { name: "__viewTopMargin"; type: "int" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "Style_QMLTYPE_3"; isPointer: true } + Property { name: "horizontalScrollBarPolicy"; type: "int" } + Property { name: "verticalScrollBarPolicy"; type: "int" } + Property { name: "viewport"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "flickableItem"; type: "QQuickFlickable"; isReadonly: true; isPointer: true } + Property { name: "__wheelAreaScrollSpeed"; type: "double" } + Property { + name: "__horizontalScrollBar" + type: "ScrollBar_QMLTYPE_27" + isReadonly: true + isPointer: true + } + Property { + name: "__verticalScrollBar" + type: "ScrollBar_QMLTYPE_27" + isReadonly: true + isPointer: true + } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/Slider 1.0" + exports: ["QtQuick.Controls/Slider 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "orientation"; type: "int" } + Property { name: "updateValueWhileDragging"; type: "bool" } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "tickmarksEnabled"; type: "bool" } + Property { name: "__horizontal"; type: "bool" } + Property { name: "__handlePos"; type: "double" } + Property { name: "minimumValue"; type: "double" } + Property { name: "maximumValue"; type: "double" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Property { name: "stepSize"; type: "double" } + Property { name: "value"; type: "double" } + Method { name: "accessibleIncreaseAction"; type: "QVariant" } + Method { name: "accessibleDecreaseAction"; type: "QVariant" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/SpinBox 1.0" + exports: ["QtQuick.Controls/SpinBox 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "horizontalAlignment"; type: "int" } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Property { name: "selectByMouse"; type: "bool" } + Property { name: "inputMethodComposing"; type: "bool"; isReadonly: true } + Property { name: "menu"; type: "QQmlComponent"; isPointer: true } + Property { name: "value"; type: "double" } + Property { name: "minimumValue"; type: "double" } + Property { name: "maximumValue"; type: "double" } + Property { name: "stepSize"; type: "double" } + Property { name: "suffix"; type: "string" } + Property { name: "prefix"; type: "string" } + Property { name: "decimals"; type: "int" } + Property { name: "font"; type: "QFont" } + Property { name: "cursorPosition"; type: "int" } + Property { name: "__text"; type: "string" } + Property { name: "__baselineOffset"; type: "double" } + Signal { name: "editingFinished" } + Method { name: "__increment"; type: "QVariant" } + Method { name: "__decrement"; type: "QVariant" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickItem" + name: "QtQuick.Controls/SplitView 1.0" + exports: ["QtQuick.Controls/SplitView 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "__contents" + Property { name: "orientation"; type: "int" } + Property { name: "handleDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "resizing"; type: "bool" } + Property { name: "__contents"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "__items"; type: "QQuickItem"; isList: true; isReadonly: true } + Property { name: "__handles"; type: "QQuickItem"; isList: true; isReadonly: true } + Method { + name: "addItem" + type: "QVariant" + Parameter { name: "item"; type: "QVariant" } + } + Method { + name: "removeItem" + type: "QVariant" + Parameter { name: "item"; type: "QVariant" } + } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/StackView 1.0" + exports: ["QtQuick.Controls/StackView 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "initialItem"; type: "QVariant" } + Property { name: "busy"; type: "bool"; isReadonly: true } + Property { name: "delegate"; type: "StackViewDelegate_QMLTYPE_293"; isPointer: true } + Property { name: "__currentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "__depth"; type: "int" } + Property { name: "__currentTransition"; type: "QVariant" } + Property { name: "__guard"; type: "bool" } + Property { name: "invalidItemReplacement"; type: "QQmlComponent"; isPointer: true } + Property { name: "depth"; type: "int"; isReadonly: true } + Property { name: "currentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Method { + name: "push" + type: "QVariant" + Parameter { name: "item"; type: "QVariant" } + } + Method { + name: "pop" + type: "QVariant" + Parameter { name: "item"; type: "QVariant" } + } + Method { name: "clear"; type: "QVariant" } + Method { + name: "find" + type: "QVariant" + Parameter { name: "func"; type: "QVariant" } + Parameter { name: "onlySearchLoadedItems"; type: "QVariant" } + } + Method { + name: "get" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + Parameter { name: "dontLoad"; type: "QVariant" } + } + Method { name: "completeTransition"; type: "QVariant" } + Method { + name: "replace" + type: "QVariant" + Parameter { name: "item"; type: "QVariant" } + Parameter { name: "properties"; type: "QVariant" } + Parameter { name: "immediate"; type: "QVariant" } + } + Method { + name: "__recursionGuard" + type: "QVariant" + Parameter { name: "use"; type: "QVariant" } + } + Method { + name: "__loadElement" + type: "QVariant" + Parameter { name: "element"; type: "QVariant" } + } + Method { + name: "__resolveComponent" + type: "QVariant" + Parameter { name: "unknownObjectType"; type: "QVariant" } + Parameter { name: "element"; type: "QVariant" } + } + Method { + name: "__cleanup" + type: "QVariant" + Parameter { name: "element"; type: "QVariant" } + } + Method { + name: "__setStatus" + type: "QVariant" + Parameter { name: "item"; type: "QVariant" } + Parameter { name: "status"; type: "QVariant" } + } + Method { + name: "__performTransition" + type: "QVariant" + Parameter { name: "transition"; type: "QVariant" } + } + Method { name: "animationFinished"; type: "QVariant" } + } + Component { + prototype: "QObject" + name: "QtQuick.Controls/StackViewDelegate 1.0" + exports: ["QtQuick.Controls/StackViewDelegate 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + Property { name: "pushTransition"; type: "QQmlComponent"; isPointer: true } + Property { name: "popTransition"; type: "QQmlComponent"; isPointer: true } + Property { name: "replaceTransition"; type: "QQmlComponent"; isPointer: true } + Method { + name: "getTransition" + type: "QVariant" + Parameter { name: "properties"; type: "QVariant" } + } + Method { + name: "transitionFinished" + type: "QVariant" + Parameter { name: "properties"; type: "QVariant" } + } + } + Component { + prototype: "QQuickParallelAnimation" + name: "QtQuick.Controls/StackViewTransition 1.0" + exports: ["QtQuick.Controls/StackViewTransition 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "animations" + Property { name: "name"; type: "string" } + Property { name: "enterItem"; type: "QQuickItem"; isPointer: true } + Property { name: "exitItem"; type: "QQuickItem"; isPointer: true } + Property { name: "immediate"; type: "bool" } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/StatusBar 1.0" + exports: ["QtQuick.Controls/StatusBar 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "__content" + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "__style"; type: "QObject"; isReadonly: true; isPointer: true } + Property { name: "__content"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/StatusIndicator 1.0" + exports: ["QtQuick.Extras/StatusIndicator 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "active"; type: "bool" } + Property { name: "color"; type: "QColor" } + Property { name: "on"; type: "bool" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/StatusIndicator 1.1" + exports: ["QtQuick.Extras/StatusIndicator 1.1"] + exportMetaObjectRevisions: [1] + isComposite: true + defaultProperty: "data" + Property { name: "active"; type: "bool" } + Property { name: "color"; type: "QColor" } + Property { name: "on"; type: "bool" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/Switch 1.1" + exports: ["QtQuick.Controls/Switch 1.1"] + exportMetaObjectRevisions: [1] + isComposite: true + defaultProperty: "data" + Property { name: "checked"; type: "bool" } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "exclusiveGroup"; type: "QQuickExclusiveGroup"; isPointer: true } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Signal { name: "clicked" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickLoader" + name: "QtQuick.Controls/Tab 1.0" + exports: ["QtQuick.Controls/Tab 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "component" + Property { name: "title"; type: "string" } + Property { name: "__inserted"; type: "bool" } + Property { name: "component"; type: "QQmlComponent"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/TabView 1.0" + exports: ["QtQuick.Controls/TabView 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "currentIndex"; type: "int" } + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "frameVisible"; type: "bool" } + Property { name: "tabsVisible"; type: "bool" } + Property { name: "tabPosition"; type: "int" } + Property { name: "__tabs"; type: "QQmlListModel"; isPointer: true } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__styleItem"; type: "QVariant" } + Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + Method { + name: "addTab" + type: "QVariant" + Parameter { name: "title"; type: "QVariant" } + Parameter { name: "component"; type: "QVariant" } + } + Method { + name: "insertTab" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + Parameter { name: "title"; type: "QVariant" } + Parameter { name: "component"; type: "QVariant" } + } + Method { + name: "removeTab" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "moveTab" + type: "QVariant" + Parameter { name: "from"; type: "QVariant" } + Parameter { name: "to"; type: "QVariant" } + } + Method { + name: "getTab" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "__willRemoveIndex" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "__didInsertIndex" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { name: "__setOpacities"; type: "QVariant" } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/TableView 1.0" + exports: ["QtQuick.Controls/TableView 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "__columns" + Property { name: "model"; type: "QVariant" } + Property { name: "rowCount"; type: "int"; isReadonly: true } + Property { name: "currentRow"; type: "int" } + Property { + name: "selection" + type: "TableViewSelection_QMLTYPE_175" + isReadonly: true + isPointer: true + } + Signal { + name: "activated" + Parameter { name: "row"; type: "int" } + } + Signal { + name: "clicked" + Parameter { name: "row"; type: "int" } + } + Signal { + name: "doubleClicked" + Parameter { name: "row"; type: "int" } + } + Signal { + name: "pressAndHold" + Parameter { name: "row"; type: "int" } + } + Method { + name: "positionViewAtRow" + type: "QVariant" + Parameter { name: "row"; type: "QVariant" } + Parameter { name: "mode"; type: "QVariant" } + } + Method { + name: "rowAt" + type: "QVariant" + Parameter { name: "x"; type: "QVariant" } + Parameter { name: "y"; type: "QVariant" } + } + Property { name: "alternatingRowColors"; type: "bool" } + Property { name: "headerVisible"; type: "bool" } + Property { name: "itemDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "rowDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "headerDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "sortIndicatorColumn"; type: "int" } + Property { name: "sortIndicatorVisible"; type: "bool" } + Property { name: "sortIndicatorOrder"; type: "int" } + Property { name: "selectionMode"; type: "int" } + Property { name: "__viewTypeName"; type: "string" } + Property { name: "__isTreeView"; type: "bool"; isReadonly: true } + Property { name: "__itemDelegateLoader"; type: "QQmlComponent"; isPointer: true } + Property { name: "__model"; type: "QVariant" } + Property { name: "__activateItemOnSingleClick"; type: "bool" } + Property { name: "__mouseArea"; type: "QQuickItem"; isPointer: true } + Property { name: "backgroundVisible"; type: "bool" } + Property { name: "contentHeader"; type: "QQmlComponent"; isPointer: true } + Property { name: "contentFooter"; type: "QQmlComponent"; isPointer: true } + Property { name: "columnCount"; type: "int"; isReadonly: true } + Property { name: "section"; type: "QQuickViewSection"; isReadonly: true; isPointer: true } + Property { name: "__columns"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "__currentRowItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "__currentRow"; type: "int" } + Property { name: "__listView"; type: "QQuickListView"; isReadonly: true; isPointer: true } + Method { + name: "addColumn" + type: "QVariant" + Parameter { name: "column"; type: "QVariant" } + } + Method { + name: "insertColumn" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + Parameter { name: "column"; type: "QVariant" } + } + Method { + name: "removeColumn" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "moveColumn" + type: "QVariant" + Parameter { name: "from"; type: "QVariant" } + Parameter { name: "to"; type: "QVariant" } + } + Method { + name: "getColumn" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { name: "resizeColumnsToContents"; type: "QVariant" } + Property { name: "frameVisible"; type: "bool" } + Property { name: "highlightOnFocus"; type: "bool" } + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "__scroller"; type: "QQuickItem"; isPointer: true } + Property { name: "__scrollBarTopMargin"; type: "int" } + Property { name: "__viewTopMargin"; type: "int" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "Style_QMLTYPE_3"; isPointer: true } + Property { name: "horizontalScrollBarPolicy"; type: "int" } + Property { name: "verticalScrollBarPolicy"; type: "int" } + Property { name: "viewport"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "flickableItem"; type: "QQuickFlickable"; isReadonly: true; isPointer: true } + Property { name: "__wheelAreaScrollSpeed"; type: "double" } + Property { + name: "__horizontalScrollBar" + type: "ScrollBar_QMLTYPE_27" + isReadonly: true + isPointer: true + } + Property { + name: "__verticalScrollBar" + type: "ScrollBar_QMLTYPE_27" + isReadonly: true + isPointer: true + } + } + Component { + prototype: "QObject" + name: "QtQuick.Controls/TableViewColumn 1.0" + exports: ["QtQuick.Controls/TableViewColumn 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + Property { name: "__view"; type: "QQuickItem"; isPointer: true } + Property { name: "__index"; type: "int" } + Property { name: "title"; type: "string" } + Property { name: "role"; type: "string" } + Property { name: "width"; type: "int" } + Property { name: "visible"; type: "bool" } + Property { name: "resizable"; type: "bool" } + Property { name: "movable"; type: "bool" } + Property { name: "elideMode"; type: "int" } + Property { name: "horizontalAlignment"; type: "int" } + Property { name: "delegate"; type: "QQmlComponent"; isPointer: true } + Method { name: "resizeToContents"; type: "QVariant" } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/TextArea 1.3" + exports: ["QtQuick.Controls/TextArea 1.3"] + exportMetaObjectRevisions: [3] + isComposite: true + defaultProperty: "data" + Property { name: "inputMethodComposing"; type: "bool"; isReadonly: true } + Property { name: "tabChangesFocus"; type: "bool" } + Property { name: "selectByMouse"; type: "bool" } + Property { name: "menu"; type: "QQmlComponent"; isPointer: true } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "baseUrl"; type: "QUrl" } + Property { name: "canPaste"; type: "bool"; isReadonly: true } + Property { name: "canRedo"; type: "bool"; isReadonly: true } + Property { name: "canUndo"; type: "bool"; isReadonly: true } + Property { name: "textColor"; type: "QColor" } + Property { name: "cursorPosition"; type: "int" } + Property { name: "cursorRectangle"; type: "QRectF"; isReadonly: true } + Property { name: "font"; type: "QFont" } + Property { name: "horizontalAlignment"; type: "int" } + Property { name: "effectiveHorizontalAlignment"; type: "int"; isReadonly: true } + Property { name: "verticalAlignment"; type: "int" } + Property { name: "inputMethodHints"; type: "int" } + Property { name: "length"; type: "int"; isReadonly: true } + Property { name: "lineCount"; type: "int"; isReadonly: true } + Property { name: "readOnly"; type: "bool" } + Property { name: "selectedText"; type: "string"; isReadonly: true } + Property { name: "selectionEnd"; type: "int"; isReadonly: true } + Property { name: "selectionStart"; type: "int"; isReadonly: true } + Property { name: "text"; type: "string" } + Property { name: "textFormat"; type: "int" } + Property { name: "wrapMode"; type: "int" } + Property { name: "selectByKeyboard"; type: "bool" } + Property { name: "hoveredLink"; type: "string"; isReadonly: true } + Property { name: "backgroundVisible"; type: "bool" } + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "textMargin"; type: "double" } + Property { name: "contentWidth"; type: "double"; isReadonly: true } + Property { name: "contentHeight"; type: "double"; isReadonly: true } + Property { name: "textDocument"; type: "QQuickTextDocument"; isReadonly: true; isPointer: true } + Signal { + name: "linkActivated" + Parameter { name: "link"; type: "string" } + } + Signal { + name: "linkHovered" + Parameter { name: "link"; type: "string" } + } + Signal { name: "editingFinished" } + Method { + name: "append" + type: "QVariant" + Parameter { name: "string"; type: "QVariant" } + } + Method { name: "copy"; type: "QVariant" } + Method { name: "cut"; type: "QVariant" } + Method { name: "deselect"; type: "QVariant" } + Method { + name: "getFormattedText" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "getText" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "insert" + type: "QVariant" + Parameter { name: "position"; type: "QVariant" } + Parameter { name: "text"; type: "QVariant" } + } + Method { + name: "isRightToLeft" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "moveCursorSelection" + type: "QVariant" + Parameter { name: "position"; type: "QVariant" } + Parameter { name: "mode"; type: "QVariant" } + } + Method { name: "paste"; type: "QVariant" } + Method { + name: "positionAt" + type: "QVariant" + Parameter { name: "x"; type: "QVariant" } + Parameter { name: "y"; type: "QVariant" } + } + Method { + name: "positionToRectangle" + type: "QVariant" + Parameter { name: "position"; type: "QVariant" } + } + Method { name: "redo"; type: "QVariant" } + Method { + name: "remove" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "select" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { name: "selectAll"; type: "QVariant" } + Method { name: "selectWord"; type: "QVariant" } + Method { name: "undo"; type: "QVariant" } + Property { name: "frameVisible"; type: "bool" } + Property { name: "highlightOnFocus"; type: "bool" } + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "__scroller"; type: "QQuickItem"; isPointer: true } + Property { name: "__scrollBarTopMargin"; type: "int" } + Property { name: "__viewTopMargin"; type: "int" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "Style_QMLTYPE_3"; isPointer: true } + Property { name: "horizontalScrollBarPolicy"; type: "int" } + Property { name: "verticalScrollBarPolicy"; type: "int" } + Property { name: "viewport"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "flickableItem"; type: "QQuickFlickable"; isReadonly: true; isPointer: true } + Property { name: "__wheelAreaScrollSpeed"; type: "double" } + Property { + name: "__horizontalScrollBar" + type: "ScrollBar_QMLTYPE_27" + isReadonly: true + isPointer: true + } + Property { + name: "__verticalScrollBar" + type: "ScrollBar_QMLTYPE_27" + isReadonly: true + isPointer: true + } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/TextArea 1.0" + exports: ["QtQuick.Controls/TextArea 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "inputMethodComposing"; type: "bool"; isReadonly: true } + Property { name: "tabChangesFocus"; type: "bool" } + Property { name: "selectByMouse"; type: "bool" } + Property { name: "menu"; type: "QQmlComponent"; isPointer: true } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "baseUrl"; type: "QUrl" } + Property { name: "canPaste"; type: "bool"; isReadonly: true } + Property { name: "canRedo"; type: "bool"; isReadonly: true } + Property { name: "canUndo"; type: "bool"; isReadonly: true } + Property { name: "textColor"; type: "QColor" } + Property { name: "cursorPosition"; type: "int" } + Property { name: "cursorRectangle"; type: "QRectF"; isReadonly: true } + Property { name: "font"; type: "QFont" } + Property { name: "horizontalAlignment"; type: "int" } + Property { name: "effectiveHorizontalAlignment"; type: "int"; isReadonly: true } + Property { name: "verticalAlignment"; type: "int" } + Property { name: "inputMethodHints"; type: "int" } + Property { name: "length"; type: "int"; isReadonly: true } + Property { name: "lineCount"; type: "int"; isReadonly: true } + Property { name: "readOnly"; type: "bool" } + Property { name: "selectedText"; type: "string"; isReadonly: true } + Property { name: "selectionEnd"; type: "int"; isReadonly: true } + Property { name: "selectionStart"; type: "int"; isReadonly: true } + Property { name: "text"; type: "string" } + Property { name: "textFormat"; type: "int" } + Property { name: "wrapMode"; type: "int" } + Property { name: "selectByKeyboard"; type: "bool" } + Property { name: "hoveredLink"; type: "string"; isReadonly: true } + Property { name: "backgroundVisible"; type: "bool" } + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "textMargin"; type: "double" } + Property { name: "contentWidth"; type: "double"; isReadonly: true } + Property { name: "contentHeight"; type: "double"; isReadonly: true } + Property { name: "textDocument"; type: "QQuickTextDocument"; isReadonly: true; isPointer: true } + Signal { + name: "linkActivated" + Parameter { name: "link"; type: "string" } + } + Signal { + name: "linkHovered" + Parameter { name: "link"; type: "string" } + } + Signal { name: "editingFinished" } + Method { + name: "append" + type: "QVariant" + Parameter { name: "string"; type: "QVariant" } + } + Method { name: "copy"; type: "QVariant" } + Method { name: "cut"; type: "QVariant" } + Method { name: "deselect"; type: "QVariant" } + Method { + name: "getFormattedText" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "getText" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "insert" + type: "QVariant" + Parameter { name: "position"; type: "QVariant" } + Parameter { name: "text"; type: "QVariant" } + } + Method { + name: "isRightToLeft" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "moveCursorSelection" + type: "QVariant" + Parameter { name: "position"; type: "QVariant" } + Parameter { name: "mode"; type: "QVariant" } + } + Method { name: "paste"; type: "QVariant" } + Method { + name: "positionAt" + type: "QVariant" + Parameter { name: "x"; type: "QVariant" } + Parameter { name: "y"; type: "QVariant" } + } + Method { + name: "positionToRectangle" + type: "QVariant" + Parameter { name: "position"; type: "QVariant" } + } + Method { name: "redo"; type: "QVariant" } + Method { + name: "remove" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "select" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { name: "selectAll"; type: "QVariant" } + Method { name: "selectWord"; type: "QVariant" } + Method { name: "undo"; type: "QVariant" } + Property { name: "frameVisible"; type: "bool" } + Property { name: "highlightOnFocus"; type: "bool" } + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "__scroller"; type: "QQuickItem"; isPointer: true } + Property { name: "__scrollBarTopMargin"; type: "int" } + Property { name: "__viewTopMargin"; type: "int" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "Style_QMLTYPE_3"; isPointer: true } + Property { name: "horizontalScrollBarPolicy"; type: "int" } + Property { name: "verticalScrollBarPolicy"; type: "int" } + Property { name: "viewport"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "flickableItem"; type: "QQuickFlickable"; isReadonly: true; isPointer: true } + Property { name: "__wheelAreaScrollSpeed"; type: "double" } + Property { + name: "__horizontalScrollBar" + type: "ScrollBar_QMLTYPE_27" + isReadonly: true + isPointer: true + } + Property { + name: "__verticalScrollBar" + type: "ScrollBar_QMLTYPE_27" + isReadonly: true + isPointer: true + } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/TextArea 1.5" + exports: ["QtQuick.Controls/TextArea 1.5"] + exportMetaObjectRevisions: [5] + isComposite: true + defaultProperty: "data" + Property { name: "inputMethodComposing"; type: "bool"; isReadonly: true } + Property { name: "tabChangesFocus"; type: "bool" } + Property { name: "selectByMouse"; type: "bool" } + Property { name: "menu"; type: "QQmlComponent"; isPointer: true } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "baseUrl"; type: "QUrl" } + Property { name: "canPaste"; type: "bool"; isReadonly: true } + Property { name: "canRedo"; type: "bool"; isReadonly: true } + Property { name: "canUndo"; type: "bool"; isReadonly: true } + Property { name: "textColor"; type: "QColor" } + Property { name: "cursorPosition"; type: "int" } + Property { name: "cursorRectangle"; type: "QRectF"; isReadonly: true } + Property { name: "font"; type: "QFont" } + Property { name: "horizontalAlignment"; type: "int" } + Property { name: "effectiveHorizontalAlignment"; type: "int"; isReadonly: true } + Property { name: "verticalAlignment"; type: "int" } + Property { name: "inputMethodHints"; type: "int" } + Property { name: "length"; type: "int"; isReadonly: true } + Property { name: "lineCount"; type: "int"; isReadonly: true } + Property { name: "readOnly"; type: "bool" } + Property { name: "selectedText"; type: "string"; isReadonly: true } + Property { name: "selectionEnd"; type: "int"; isReadonly: true } + Property { name: "selectionStart"; type: "int"; isReadonly: true } + Property { name: "text"; type: "string" } + Property { name: "textFormat"; type: "int" } + Property { name: "wrapMode"; type: "int" } + Property { name: "selectByKeyboard"; type: "bool" } + Property { name: "hoveredLink"; type: "string"; isReadonly: true } + Property { name: "backgroundVisible"; type: "bool" } + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "textMargin"; type: "double" } + Property { name: "contentWidth"; type: "double"; isReadonly: true } + Property { name: "contentHeight"; type: "double"; isReadonly: true } + Property { name: "textDocument"; type: "QQuickTextDocument"; isReadonly: true; isPointer: true } + Signal { + name: "linkActivated" + Parameter { name: "link"; type: "string" } + } + Signal { + name: "linkHovered" + Parameter { name: "link"; type: "string" } + } + Signal { name: "editingFinished" } + Method { + name: "append" + type: "QVariant" + Parameter { name: "string"; type: "QVariant" } + } + Method { name: "copy"; type: "QVariant" } + Method { name: "cut"; type: "QVariant" } + Method { name: "deselect"; type: "QVariant" } + Method { + name: "getFormattedText" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "getText" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "insert" + type: "QVariant" + Parameter { name: "position"; type: "QVariant" } + Parameter { name: "text"; type: "QVariant" } + } + Method { + name: "isRightToLeft" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "moveCursorSelection" + type: "QVariant" + Parameter { name: "position"; type: "QVariant" } + Parameter { name: "mode"; type: "QVariant" } + } + Method { name: "paste"; type: "QVariant" } + Method { + name: "positionAt" + type: "QVariant" + Parameter { name: "x"; type: "QVariant" } + Parameter { name: "y"; type: "QVariant" } + } + Method { + name: "positionToRectangle" + type: "QVariant" + Parameter { name: "position"; type: "QVariant" } + } + Method { name: "redo"; type: "QVariant" } + Method { + name: "remove" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "select" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { name: "selectAll"; type: "QVariant" } + Method { name: "selectWord"; type: "QVariant" } + Method { name: "undo"; type: "QVariant" } + Property { name: "frameVisible"; type: "bool" } + Property { name: "highlightOnFocus"; type: "bool" } + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "__scroller"; type: "QQuickItem"; isPointer: true } + Property { name: "__scrollBarTopMargin"; type: "int" } + Property { name: "__viewTopMargin"; type: "int" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "Style_QMLTYPE_3"; isPointer: true } + Property { name: "horizontalScrollBarPolicy"; type: "int" } + Property { name: "verticalScrollBarPolicy"; type: "int" } + Property { name: "viewport"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "flickableItem"; type: "QQuickFlickable"; isReadonly: true; isPointer: true } + Property { name: "__wheelAreaScrollSpeed"; type: "double" } + Property { + name: "__horizontalScrollBar" + type: "ScrollBar_QMLTYPE_27" + isReadonly: true + isPointer: true + } + Property { + name: "__verticalScrollBar" + type: "ScrollBar_QMLTYPE_27" + isReadonly: true + isPointer: true + } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/TextField 1.0" + exports: ["QtQuick.Controls/TextField 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "inputMethodComposing"; type: "bool"; isReadonly: true } + Property { name: "selectByMouse"; type: "bool" } + Property { name: "menu"; type: "QQmlComponent"; isPointer: true } + Property { name: "acceptableInput"; type: "bool"; isReadonly: true } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "canPaste"; type: "bool"; isReadonly: true } + Property { name: "canRedo"; type: "bool"; isReadonly: true } + Property { name: "canUndo"; type: "bool"; isReadonly: true } + Property { name: "textColor"; type: "QColor" } + Property { name: "cursorPosition"; type: "int" } + Property { name: "cursorRectangle"; type: "QRectF"; isReadonly: true } + Property { name: "displayText"; type: "string"; isReadonly: true } + Property { name: "echoMode"; type: "int" } + Property { name: "font"; type: "QFont" } + Property { name: "horizontalAlignment"; type: "int" } + Property { name: "effectiveHorizontalAlignment"; type: "int"; isReadonly: true } + Property { name: "verticalAlignment"; type: "int" } + Property { name: "inputMask"; type: "string" } + Property { name: "inputMethodHints"; type: "int" } + Property { name: "length"; type: "int"; isReadonly: true } + Property { name: "maximumLength"; type: "int" } + Property { name: "placeholderText"; type: "string" } + Property { name: "readOnly"; type: "bool" } + Property { name: "selectedText"; type: "string"; isReadonly: true } + Property { name: "selectionEnd"; type: "int"; isReadonly: true } + Property { name: "selectionStart"; type: "int"; isReadonly: true } + Property { name: "text"; type: "string" } + Property { name: "validator"; type: "QValidator"; isPointer: true } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Property { name: "__contentHeight"; type: "double"; isReadonly: true } + Property { name: "__contentWidth"; type: "double"; isReadonly: true } + Property { name: "__baselineOffset"; type: "double" } + Signal { name: "accepted" } + Signal { name: "editingFinished" } + Method { name: "copy"; type: "QVariant" } + Method { name: "cut"; type: "QVariant" } + Method { name: "deselect"; type: "QVariant" } + Method { + name: "getText" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "insert" + type: "QVariant" + Parameter { name: "position"; type: "QVariant" } + Parameter { name: "text"; type: "QVariant" } + } + Method { + name: "isRightToLeft" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { name: "paste"; type: "QVariant" } + Method { name: "redo"; type: "QVariant" } + Method { + name: "remove" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "select" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { name: "selectAll"; type: "QVariant" } + Method { name: "selectWord"; type: "QVariant" } + Method { name: "undo"; type: "QVariant" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickText" + name: "QtQuick.Extras.Private/TextSingleton 1.0" + exports: ["QtQuick.Extras.Private/TextSingleton 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + isCreatable: false + isSingleton: true + defaultProperty: "data" + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/ToggleButton 1.0" + exports: ["QtQuick.Extras/ToggleButton 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "isDefault"; type: "bool" } + Property { name: "menu"; type: "Menu_QMLTYPE_52"; isPointer: true } + Property { name: "checkable"; type: "bool" } + Property { name: "checked"; type: "bool" } + Property { name: "exclusiveGroup"; type: "QQuickExclusiveGroup"; isPointer: true } + Property { name: "action"; type: "QQuickAction"; isPointer: true } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "text"; type: "string" } + Property { name: "tooltip"; type: "string" } + Property { name: "iconSource"; type: "QUrl" } + Property { name: "iconName"; type: "string" } + Property { name: "__position"; type: "string" } + Property { name: "__iconOverriden"; type: "bool"; isReadonly: true } + Property { name: "__action"; type: "QQuickAction"; isPointer: true } + Property { name: "__iconAction"; type: "QQuickAction"; isReadonly: true; isPointer: true } + Property { name: "__behavior"; type: "QVariant" } + Property { name: "__effectivePressed"; type: "bool" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Signal { name: "clicked" } + Method { name: "accessiblePressAction"; type: "QVariant" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/ToolBar 1.0" + exports: ["QtQuick.Controls/ToolBar 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "__content" + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "__menu"; type: "QVariant" } + Property { name: "__style"; type: "QObject"; isReadonly: true; isPointer: true } + Property { name: "__content"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/ToolButton 1.0" + exports: ["QtQuick.Controls/ToolButton 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "isDefault"; type: "bool" } + Property { name: "menu"; type: "Menu_QMLTYPE_52"; isPointer: true } + Property { name: "checkable"; type: "bool" } + Property { name: "checked"; type: "bool" } + Property { name: "exclusiveGroup"; type: "QQuickExclusiveGroup"; isPointer: true } + Property { name: "action"; type: "QQuickAction"; isPointer: true } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "text"; type: "string" } + Property { name: "tooltip"; type: "string" } + Property { name: "iconSource"; type: "QUrl" } + Property { name: "iconName"; type: "string" } + Property { name: "__position"; type: "string" } + Property { name: "__iconOverriden"; type: "bool"; isReadonly: true } + Property { name: "__action"; type: "QQuickAction"; isPointer: true } + Property { name: "__iconAction"; type: "QQuickAction"; isReadonly: true; isPointer: true } + Property { name: "__behavior"; type: "QVariant" } + Property { name: "__effectivePressed"; type: "bool" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Signal { name: "clicked" } + Method { name: "accessiblePressAction"; type: "QVariant" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/TreeView 1.5" + exports: ["QtQuick.Controls/TreeView 1.5"] + exportMetaObjectRevisions: [5] + isComposite: true + defaultProperty: "__columns" + Property { name: "model"; type: "QVariant" } + Property { name: "currentIndex"; type: "QVariant"; isReadonly: true } + Property { name: "selection"; type: "QItemSelectionModel"; isPointer: true } + Property { name: "rootIndex"; type: "QModelIndex" } + Signal { + name: "activated" + Parameter { name: "index"; type: "QVariant" } + } + Signal { + name: "clicked" + Parameter { name: "index"; type: "QVariant" } + } + Signal { + name: "doubleClicked" + Parameter { name: "index"; type: "QVariant" } + } + Signal { + name: "pressAndHold" + Parameter { name: "index"; type: "QVariant" } + } + Signal { + name: "expanded" + Parameter { name: "index"; type: "QVariant" } + } + Signal { + name: "collapsed" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "isExpanded" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "collapse" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "expand" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "indexAt" + type: "QVariant" + Parameter { name: "x"; type: "QVariant" } + Parameter { name: "y"; type: "QVariant" } + } + Property { name: "alternatingRowColors"; type: "bool" } + Property { name: "headerVisible"; type: "bool" } + Property { name: "itemDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "rowDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "headerDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "sortIndicatorColumn"; type: "int" } + Property { name: "sortIndicatorVisible"; type: "bool" } + Property { name: "sortIndicatorOrder"; type: "int" } + Property { name: "selectionMode"; type: "int" } + Property { name: "__viewTypeName"; type: "string" } + Property { name: "__isTreeView"; type: "bool"; isReadonly: true } + Property { name: "__itemDelegateLoader"; type: "QQmlComponent"; isPointer: true } + Property { name: "__model"; type: "QVariant" } + Property { name: "__activateItemOnSingleClick"; type: "bool" } + Property { name: "__mouseArea"; type: "QQuickItem"; isPointer: true } + Property { name: "backgroundVisible"; type: "bool" } + Property { name: "contentHeader"; type: "QQmlComponent"; isPointer: true } + Property { name: "contentFooter"; type: "QQmlComponent"; isPointer: true } + Property { name: "columnCount"; type: "int"; isReadonly: true } + Property { name: "section"; type: "QQuickViewSection"; isReadonly: true; isPointer: true } + Property { name: "__columns"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "__currentRowItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "__currentRow"; type: "int" } + Property { name: "__listView"; type: "QQuickListView"; isReadonly: true; isPointer: true } + Method { + name: "addColumn" + type: "QVariant" + Parameter { name: "column"; type: "QVariant" } + } + Method { + name: "insertColumn" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + Parameter { name: "column"; type: "QVariant" } + } + Method { + name: "removeColumn" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "moveColumn" + type: "QVariant" + Parameter { name: "from"; type: "QVariant" } + Parameter { name: "to"; type: "QVariant" } + } + Method { + name: "getColumn" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { name: "resizeColumnsToContents"; type: "QVariant" } + Property { name: "frameVisible"; type: "bool" } + Property { name: "highlightOnFocus"; type: "bool" } + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "__scroller"; type: "QQuickItem"; isPointer: true } + Property { name: "__scrollBarTopMargin"; type: "int" } + Property { name: "__viewTopMargin"; type: "int" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "Style_QMLTYPE_3"; isPointer: true } + Property { name: "horizontalScrollBarPolicy"; type: "int" } + Property { name: "verticalScrollBarPolicy"; type: "int" } + Property { name: "viewport"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "flickableItem"; type: "QQuickFlickable"; isReadonly: true; isPointer: true } + Property { name: "__wheelAreaScrollSpeed"; type: "double" } + Property { + name: "__horizontalScrollBar" + type: "ScrollBar_QMLTYPE_27" + isReadonly: true + isPointer: true + } + Property { + name: "__verticalScrollBar" + type: "ScrollBar_QMLTYPE_27" + isReadonly: true + isPointer: true + } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/TreeView 1.4" + exports: ["QtQuick.Controls/TreeView 1.4"] + exportMetaObjectRevisions: [4] + isComposite: true + defaultProperty: "__columns" + Property { name: "model"; type: "QVariant" } + Property { name: "currentIndex"; type: "QVariant"; isReadonly: true } + Property { name: "selection"; type: "QItemSelectionModel"; isPointer: true } + Property { name: "rootIndex"; type: "QModelIndex" } + Signal { + name: "activated" + Parameter { name: "index"; type: "QVariant" } + } + Signal { + name: "clicked" + Parameter { name: "index"; type: "QVariant" } + } + Signal { + name: "doubleClicked" + Parameter { name: "index"; type: "QVariant" } + } + Signal { + name: "pressAndHold" + Parameter { name: "index"; type: "QVariant" } + } + Signal { + name: "expanded" + Parameter { name: "index"; type: "QVariant" } + } + Signal { + name: "collapsed" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "isExpanded" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "collapse" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "expand" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "indexAt" + type: "QVariant" + Parameter { name: "x"; type: "QVariant" } + Parameter { name: "y"; type: "QVariant" } + } + Property { name: "alternatingRowColors"; type: "bool" } + Property { name: "headerVisible"; type: "bool" } + Property { name: "itemDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "rowDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "headerDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "sortIndicatorColumn"; type: "int" } + Property { name: "sortIndicatorVisible"; type: "bool" } + Property { name: "sortIndicatorOrder"; type: "int" } + Property { name: "selectionMode"; type: "int" } + Property { name: "__viewTypeName"; type: "string" } + Property { name: "__isTreeView"; type: "bool"; isReadonly: true } + Property { name: "__itemDelegateLoader"; type: "QQmlComponent"; isPointer: true } + Property { name: "__model"; type: "QVariant" } + Property { name: "__activateItemOnSingleClick"; type: "bool" } + Property { name: "__mouseArea"; type: "QQuickItem"; isPointer: true } + Property { name: "backgroundVisible"; type: "bool" } + Property { name: "contentHeader"; type: "QQmlComponent"; isPointer: true } + Property { name: "contentFooter"; type: "QQmlComponent"; isPointer: true } + Property { name: "columnCount"; type: "int"; isReadonly: true } + Property { name: "section"; type: "QQuickViewSection"; isReadonly: true; isPointer: true } + Property { name: "__columns"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "__currentRowItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "__currentRow"; type: "int" } + Property { name: "__listView"; type: "QQuickListView"; isReadonly: true; isPointer: true } + Method { + name: "addColumn" + type: "QVariant" + Parameter { name: "column"; type: "QVariant" } + } + Method { + name: "insertColumn" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + Parameter { name: "column"; type: "QVariant" } + } + Method { + name: "removeColumn" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "moveColumn" + type: "QVariant" + Parameter { name: "from"; type: "QVariant" } + Parameter { name: "to"; type: "QVariant" } + } + Method { + name: "getColumn" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { name: "resizeColumnsToContents"; type: "QVariant" } + Property { name: "frameVisible"; type: "bool" } + Property { name: "highlightOnFocus"; type: "bool" } + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "__scroller"; type: "QQuickItem"; isPointer: true } + Property { name: "__scrollBarTopMargin"; type: "int" } + Property { name: "__viewTopMargin"; type: "int" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "Style_QMLTYPE_3"; isPointer: true } + Property { name: "horizontalScrollBarPolicy"; type: "int" } + Property { name: "verticalScrollBarPolicy"; type: "int" } + Property { name: "viewport"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "flickableItem"; type: "QQuickFlickable"; isReadonly: true; isPointer: true } + Property { name: "__wheelAreaScrollSpeed"; type: "double" } + Property { + name: "__horizontalScrollBar" + type: "ScrollBar_QMLTYPE_27" + isReadonly: true + isPointer: true + } + Property { + name: "__verticalScrollBar" + type: "ScrollBar_QMLTYPE_27" + isReadonly: true + isPointer: true + } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/Tumbler 1.2" + exports: ["QtQuick.Extras/Tumbler 1.2"] + exportMetaObjectRevisions: [2] + isComposite: true + defaultProperty: "data" + Property { name: "__highlightMoveDuration"; type: "int" } + Property { name: "columnCount"; type: "int"; isReadonly: true } + Property { name: "__columnRow"; type: "QQuickRow"; isReadonly: true; isPointer: true } + Property { name: "__movementDelayTimer"; type: "QQmlTimer"; isReadonly: true; isPointer: true } + Method { + name: "__isValidColumnIndex" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "__isValidColumnAndItemIndex" + type: "QVariant" + Parameter { name: "columnIndex"; type: "QVariant" } + Parameter { name: "itemIndex"; type: "QVariant" } + } + Method { + name: "currentIndexAt" + type: "QVariant" + Parameter { name: "columnIndex"; type: "QVariant" } + } + Method { + name: "setCurrentIndexAt" + type: "QVariant" + Parameter { name: "columnIndex"; type: "QVariant" } + Parameter { name: "itemIndex"; type: "QVariant" } + } + Method { + name: "getColumn" + type: "QVariant" + Parameter { name: "columnIndex"; type: "QVariant" } + } + Method { + name: "addColumn" + type: "QVariant" + Parameter { name: "column"; type: "QVariant" } + } + Method { + name: "insertColumn" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + Parameter { name: "column"; type: "QVariant" } + } + Method { + name: "__viewAt" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QObject" + name: "QtQuick.Extras/TumblerColumn 1.2" + exports: ["QtQuick.Extras/TumblerColumn 1.2"] + exportMetaObjectRevisions: [2] + isComposite: true + Property { name: "__tumbler"; type: "QQuickItem"; isPointer: true } + Property { name: "__index"; type: "int" } + Property { name: "__currentIndex"; type: "int" } + Property { name: "model"; type: "QVariant" } + Property { name: "role"; type: "string" } + Property { name: "delegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "highlight"; type: "QQmlComponent"; isPointer: true } + Property { name: "columnForeground"; type: "QQmlComponent"; isPointer: true } + Property { name: "visible"; type: "bool" } + Property { name: "activeFocus"; type: "bool"; isReadonly: true } + Property { name: "width"; type: "double" } + Property { name: "currentIndex"; type: "int"; isReadonly: true } + } +} diff --git a/bin/win64/QtQuick/Dialogs/qmldir b/bin/win64/QtQuick/Dialogs/qmldir new file mode 100644 index 0000000..e94f11d --- /dev/null +++ b/bin/win64/QtQuick/Dialogs/qmldir @@ -0,0 +1,9 @@ +module QtQuick.Dialogs +plugin dialogplugin +classname QtQuick2DialogsPlugin +typeinfo plugins.qmltypes +depends Qt.labs.folderlistmodel 1.0 +depends Qt.labs.settings 1.0 +depends QtQuick.Dialogs.Private 1.0 +depends QtQuick.Controls 1.3 +depends QtQuick.PrivateWidgets 1.1 diff --git a/bin/win64/QtQuick/Extras/Private/CircularButton.qml b/bin/win64/QtQuick/Extras/Private/CircularButton.qml new file mode 100644 index 0000000..6a147eb --- /dev/null +++ b/bin/win64/QtQuick/Extras/Private/CircularButton.qml @@ -0,0 +1,51 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Extras module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 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.LGPL3 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-3.0.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 (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Controls.Private 1.0 + +/*! + \internal +*/ +Button { + id: button + style: Settings.styleComponent(Settings.style, "CircularButtonStyle.qml", button) +} diff --git a/bin/win64/QtQuick/Extras/Private/CircularButtonStyleHelper.qml b/bin/win64/QtQuick/Extras/Private/CircularButtonStyleHelper.qml new file mode 100644 index 0000000..55154ae --- /dev/null +++ b/bin/win64/QtQuick/Extras/Private/CircularButtonStyleHelper.qml @@ -0,0 +1,136 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Extras module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 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.LGPL3 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-3.0.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 (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Extras 1.4 +import QtQuick.Extras.Private 1.0 + +QtObject { + id: circularButtonStyleHelper + + property Item control + + property color buttonColorUpTop: "#e3e3e3" + property color buttonColorUpBottom: "#b3b3b3" + property color buttonColorDownTop: "#d3d3d3" + property color buttonColorDownBottom: "#939393" + property color outerArcColorTop: "#9c9c9c" + property color outerArcColorBottom: Qt.rgba(0.941, 0.941, 0.941, 0.29) + property color innerArcColorTop: "#e3e3e3" + property color innerArcColorBottom: "#acacac" + property real innerArcColorBottomStop: 0.4 + property color shineColor: Qt.rgba(1, 1, 1, 0.29) + property real smallestAxis: control ? Math.min(control.width, control.height) : 0 + property real outerArcLineWidth: smallestAxis * 0.04 + property real innerArcLineWidth: Math.max(1, outerArcLineWidth * 0.1) + property real shineArcLineWidth: Math.max(1, outerArcLineWidth * 0.1) + property real implicitWidth: Math.round(TextSingleton.implicitHeight * 8) + property real implicitHeight: Math.round(TextSingleton.implicitHeight * 8) + + property color textColorUp: "#4e4e4e" + property color textColorDown: "#303030" + property color textRaisedColorUp: "#ffffff" + property color textRaisedColorDown: "#e3e3e3" + + property real radius: (smallestAxis * 0.5) - outerArcLineWidth - innerArcLineWidth + property real halfRadius: radius / 2 + property real outerArcRadius: innerArcRadius + outerArcLineWidth / 2 + property real innerArcRadius: radius + innerArcLineWidth / 2 + property real shineArcRadius: outerArcRadius + outerArcLineWidth / 2 - shineArcLineWidth / 2 + property real zeroAngle: Math.PI * 0.5 + + property color buttonColorTop: control && control.pressed ? buttonColorDownTop : buttonColorUpTop + property color buttonColorBottom: control && control.pressed ? buttonColorDownBottom : buttonColorUpBottom + + function toPixels(percentageOfSmallestAxis) { + return percentageOfSmallestAxis * smallestAxis; + } + + function paintBackground(ctx) { + ctx.reset(); + + if (outerArcRadius < 0 || radius < 0) + return; + + var xCenter = ctx.canvas.width / 2; + var yCenter = ctx.canvas.height / 2; + + /* Draw outer arc */ + ctx.beginPath(); + ctx.lineWidth = outerArcLineWidth; + ctx.arc(xCenter, yCenter, outerArcRadius, 0, Math.PI * 2, false); + var gradient = ctx.createRadialGradient(xCenter, yCenter - halfRadius, + halfRadius, xCenter, yCenter - halfRadius, radius); + gradient.addColorStop(0, outerArcColorTop); + gradient.addColorStop(1, outerArcColorBottom); + ctx.strokeStyle = gradient; + ctx.stroke(); + + /* Draw the shine along the bottom */ + ctx.beginPath(); + ctx.lineWidth = shineArcLineWidth; + ctx.arc(xCenter, yCenter, shineArcRadius, 0, Math.PI, false); + gradient = ctx.createLinearGradient(xCenter, yCenter + radius, xCenter, yCenter); + gradient.addColorStop(0, shineColor); + gradient.addColorStop(0.5, "rgba(255, 255, 255, 0)"); + ctx.strokeStyle = gradient; + ctx.stroke(); + + /* Draw inner arc */ + ctx.beginPath(); + ctx.lineWidth = innerArcLineWidth + 1; + ctx.arc(xCenter, yCenter, innerArcRadius, 0, Math.PI * 2, false); + gradient = ctx.createLinearGradient(xCenter, yCenter - halfRadius, + xCenter, yCenter + halfRadius); + gradient.addColorStop(0, innerArcColorTop); + gradient.addColorStop(innerArcColorBottomStop, innerArcColorBottom); + ctx.strokeStyle = gradient; + ctx.stroke(); + + /* Draw the button's body */ + ctx.beginPath(); + ctx.ellipse(xCenter - radius, yCenter - radius, radius * 2, radius * 2); + gradient = ctx.createRadialGradient(xCenter, yCenter + radius * 0.85, radius, + xCenter, yCenter + radius * 0.85, radius * 0.85); + gradient.addColorStop(1, buttonColorTop); + gradient.addColorStop(0, buttonColorBottom); + ctx.fillStyle = gradient; + ctx.fill(); + } +} diff --git a/bin/win64/QtQuick/Extras/Private/CircularTickmarkLabel.qml b/bin/win64/QtQuick/Extras/Private/CircularTickmarkLabel.qml new file mode 100644 index 0000000..997a784 --- /dev/null +++ b/bin/win64/QtQuick/Extras/Private/CircularTickmarkLabel.qml @@ -0,0 +1,145 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Extras module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 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.LGPL3 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-3.0.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 (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +// Workaround for QTBUG-37751; we need this import for RangeModel, although we shouldn't. +import QtQuick.Controls 1.1 +import QtQuick.Controls.Private 1.0 +import QtQuick.Extras 1.4 +import QtQuick.Extras.Private 1.0 + +Control { + id: label + style: Settings.styleComponent(Settings.style, "CircularTickmarkLabelStyle.qml", label) + + property alias minimumValue: range.minimumValue + + property alias maximumValue: range.maximumValue + + property alias stepSize: range.stepSize + + RangeModel { + id: range + minimumValue: 0 + maximumValue: 100 + stepSize: 0 + // Not used. + value: minimumValue + } + + /*! + This property determines the angle at which the first tickmark is drawn. + */ + property real minimumValueAngle: -145 + + /*! + This property determines the angle at which the last tickmark is drawn. + */ + property real maximumValueAngle: 145 + + /*! + The range between \l minimumValueAngle and \l maximumValueAngle, in + degrees. + */ + readonly property real angleRange: maximumValueAngle - minimumValueAngle + + /*! + The interval at which tickmarks are displayed. + */ + property real tickmarkStepSize: 10 + + /*! + The distance in pixels from the outside of the control (outerRadius) at + which the outermost point of the tickmark line is drawn. + */ + property real tickmarkInset: 0.0 + + /*! + The amount of tickmarks displayed. + */ + readonly property int tickmarkCount: __tickmarkCount + + /*! + The amount of minor tickmarks between each tickmark. + */ + property int minorTickmarkCount: 4 + + /*! + The distance in pixels from the outside of the control (outerRadius) at + which the outermost point of the minor tickmark line is drawn. + */ + property real minorTickmarkInset: 0.0 + + /*! + The distance in pixels from the outside of the control (outerRadius) at + which the center of the value marker text is drawn. + */ + property real labelInset: __style.__protectedScope.toPixels(0.19) + + /*! + The interval at which tickmark labels are displayed. + */ + property real labelStepSize: tickmarkStepSize + + /*! + The amount of tickmark labels displayed. + */ + readonly property int labelCount: (maximumValue - minimumValue) / labelStepSize + 1 + + /*! \internal */ + readonly property real __tickmarkCount: tickmarkStepSize > 0 ? (maximumValue - minimumValue) / tickmarkStepSize + 1 : 0 + + /*! + This property determines whether or not the control displays tickmarks, + minor tickmarks, and labels. + */ + property bool tickmarksVisible: true + + /*! + Returns \a value as an angle in degrees. + + For example, if minimumValueAngle is set to \c 270 and maximumValueAngle + is set to \c 90, this function will return \c 270 when passed + minimumValue and \c 90 when passed maximumValue. + */ + function valueToAngle(value) { + var normalised = (value - minimumValue) / (maximumValue - minimumValue); + return (maximumValueAngle - minimumValueAngle) * normalised + minimumValueAngle; + } +} diff --git a/bin/win64/QtQuick/Extras/Private/Handle.qml b/bin/win64/QtQuick/Extras/Private/Handle.qml new file mode 100644 index 0000000..6c3fdaa --- /dev/null +++ b/bin/win64/QtQuick/Extras/Private/Handle.qml @@ -0,0 +1,123 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Extras module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 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.LGPL3 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-3.0.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 (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtGraphicalEffects 1.0 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Controls.Private 1.0 +import QtQuick.Extras.Private 1.1 +import QtQuick.Extras.Private.CppUtils 1.0 + +Control { + id: root + x: handleArea.centerOfHandle.x - width / 2 + y: handleArea.centerOfHandle.y - height / 2 + + style: Settings.styleComponent(Settings.style, "HandleStyle.qml", root) + + /*! + The angle of the handle along the circumference of \l rotationRadius in + radians, scaled to be in the range of 0.0 to 1.0. + */ + property alias value: range.value + + RangeModel { + id: range + minimumValue: 0.0 + maximumValue: 1.0 + stepSize: 0 + value: minimumValue + } + + /*! + The angle in radians where the dial starts. + */ + property real zeroAngle: 0 + + /*! + The radius of the rotation of this handle. + */ + property real rotationRadius: 50 + + /*! + The center of the dial. This is the origin point for the handle's + rotation. + */ + property real dialXCenter: 0 + property real dialYCenter: 0 + + /*! + This property holds the amount of extra room added to each side of + the handle to make it easier to drag on touch devices. + */ + property real allowance: Math.max(width, height) * 1.5 + + /* + The function used to determine the handle's value from the position of + the mouse. + + Can be set to provide custom value calculation. It expects these + parameters: \c mouseX, \c mouseY, \c xCenter, \c yCenter, \c zeroAngle + */ + property var valueFromMouse: handleArea.valueFromMouse + + property alias handleArea: handleArea + + MouseArea { + id: handleArea + // Respond to value changes by calculating the new center of the handle. + property point centerOfHandle: MathUtils.centerAlongCircle(dialXCenter, dialYCenter, + 0, 0, MathUtils.valueToAngle(value, 1, zeroAngle), rotationRadius); + + anchors.fill: parent + anchors.margins: -allowance + + onPositionChanged: { + // Whenever the handle is moved with the mouse, update the value. + value = root.valueFromMouse(mouse.x + centerOfHandle.x - allowance, + mouse.y + centerOfHandle.y - allowance, dialXCenter, dialYCenter, zeroAngle); + } + + // A helper function for onPositionChanged. + function valueFromMouse(mouseX, mouseY, xCenter, yCenter, zeroAngle) { + return MathUtils.angleToValue( + MathUtils.halfPi - Math.atan2(mouseX - xCenter, mouseY - yCenter), 1, zeroAngle); + } + } +} diff --git a/bin/win64/QtQuick/Extras/Private/PieMenuIcon.qml b/bin/win64/QtQuick/Extras/Private/PieMenuIcon.qml new file mode 100644 index 0000000..7cb57e0 --- /dev/null +++ b/bin/win64/QtQuick/Extras/Private/PieMenuIcon.qml @@ -0,0 +1,102 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Extras module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 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.LGPL3 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-3.0.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 (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.3 +import QtQuick.Extras 1.4 +import QtQuick.Extras.Private 1.0 +import QtQuick.Extras.Private.CppUtils 1.0 + +Loader { + id: iconLoader + active: iconSource != "" + + property PieMenu control: null + property QtObject styleData: null + + readonly property string iconSource: styleData && styleData.index < control.__protectedScope.visibleItems.length + ? control.__protectedScope.visibleItems[styleData.index].iconSource + : "" + + sourceComponent: Image { + id: iconImage + source: iconSource + x: pos.x + y: pos.y + scale: scaleFactor + + readonly property point pos: MathUtils.centerAlongCircle( + iconLoader.parent.width / 2, iconLoader.parent.height / 2, width, height, + MathUtils.degToRadOffset(sectionCenterAngle(styleData.index)), control.__style.__iconOffset) + + /* + The icons should scale with the menu at some point, so that they + stay within the bounds of each section. We down-scale the image by + whichever of the following amounts are larger: + + a) The amount by which the largest dimension's diagonal size exceeds + the "selectable" radius. The selectable radius is the distance in pixels + between lines A and B in the incredibly visually appealing image below: + + __________ + - B - + / \ + / ____ \ + | / A \ | + --------| |-------- + + b) The amount by which the diagonal exceeds the circumference of + one section. + */ + readonly property real scaleFactor: { + var largestDimension = Math.max(iconImage.sourceSize.width, iconImage.sourceSize.height) * Math.sqrt(2); + // TODO: add padding + var radiusDifference = largestDimension - control.__style.__selectableRadius; + var circumferenceDifference = largestDimension - Math.abs(control.__protectedScope.circumferenceOfSection); + if (circumferenceDifference > 0 || radiusDifference > 0) { + // We need to down-scale. + if (radiusDifference > circumferenceDifference) { + return control.__style.__selectableRadius / largestDimension; + } else { + return Math.abs(control.__protectedScope.circumferenceOfSection) / largestDimension; + } + } + return 1; + } + } +} diff --git a/bin/win64/QtQuick/Extras/Private/TextSingleton.qml b/bin/win64/QtQuick/Extras/Private/TextSingleton.qml new file mode 100644 index 0000000..78e9003 --- /dev/null +++ b/bin/win64/QtQuick/Extras/Private/TextSingleton.qml @@ -0,0 +1,44 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Extras module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 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.LGPL3 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-3.0.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 (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +pragma Singleton +import QtQuick 2.1 + +Text { +} diff --git a/bin/win64/QtQuick/Extras/Private/qmldir b/bin/win64/QtQuick/Extras/Private/qmldir new file mode 100644 index 0000000..3b115bb --- /dev/null +++ b/bin/win64/QtQuick/Extras/Private/qmldir @@ -0,0 +1 @@ +module QtQuick.Extras.Private diff --git a/bin/win64/QtQuick/Extras/plugins.qmltypes b/bin/win64/QtQuick/Extras/plugins.qmltypes new file mode 100644 index 0000000..b8ee60e --- /dev/null +++ b/bin/win64/QtQuick/Extras/plugins.qmltypes @@ -0,0 +1,652 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by: +// 'qmlplugindump -nonrelocatable QtQuick.Extras 1.4' + +Module { + dependencies: [ + "QtGraphicalEffects 1.0", + "QtGraphicalEffects.private 1.0", + "QtQuick 2.0", + "QtQuick.Window 2.1" + ] + Component { + name: "QQuickActivationMode" + exports: ["QtQuick.Extras/ActivationMode 1.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "ActivationMode" + values: { + "ActivateOnPress": 0, + "ActivateOnRelease": 1, + "ActivateOnClick": 2 + } + } + } + Component { + name: "QQuickCircularProgressBar" + defaultProperty: "data" + prototype: "QQuickPaintedItem" + exports: ["QtQuick.Extras.Private.CppUtils/CircularProgressBar 1.1"] + exportMetaObjectRevisions: [0] + Property { name: "progress"; type: "double" } + Property { name: "barWidth"; type: "double" } + Property { name: "inset"; type: "double" } + Property { name: "minimumValueAngle"; type: "double" } + Property { name: "maximumValueAngle"; type: "double" } + Property { name: "backgroundColor"; type: "QColor" } + Signal { + name: "progressChanged" + Parameter { name: "progress"; type: "double" } + } + Signal { + name: "barWidthChanged" + Parameter { name: "barWidth"; type: "double" } + } + Signal { + name: "insetChanged" + Parameter { name: "inset"; type: "double" } + } + Signal { + name: "minimumValueAngleChanged" + Parameter { name: "minimumValueAngle"; type: "double" } + } + Signal { + name: "maximumValueAngleChanged" + Parameter { name: "maximumValueAngle"; type: "double" } + } + Signal { + name: "backgroundColorChanged" + Parameter { name: "backgroundColor"; type: "QColor" } + } + Method { name: "clearStops" } + Method { + name: "addStop" + Parameter { name: "position"; type: "double" } + Parameter { name: "color"; type: "QColor" } + } + Method { name: "redraw" } + } + Component { + name: "QQuickFlatProgressBar" + defaultProperty: "data" + prototype: "QQuickPaintedItem" + exports: ["QtQuick.Extras.Private.CppUtils/FlatProgressBar 1.1"] + exportMetaObjectRevisions: [0] + Property { name: "stripeOffset"; type: "double" } + Property { name: "progress"; type: "double" } + Property { name: "indeterminate"; type: "bool" } + Signal { + name: "stripeOffsetChanged" + Parameter { name: "stripeOffset"; type: "double" } + } + Signal { + name: "progressChanged" + Parameter { name: "progress"; type: "double" } + } + Signal { + name: "indeterminateChanged" + Parameter { name: "indeterminate"; type: "bool" } + } + Method { name: "repaint" } + Method { name: "restartAnimation" } + Method { name: "onVisibleChanged" } + Method { name: "onWidthChanged" } + Method { name: "onHeightChanged" } + } + Component { + name: "QQuickMathUtils" + prototype: "QObject" + exports: ["QtQuick.Extras.Private.CppUtils/MathUtils 1.0"] + isCreatable: false + isSingleton: true + exportMetaObjectRevisions: [0] + Property { name: "pi2"; type: "double"; isReadonly: true } + Method { + name: "degToRad" + type: "double" + Parameter { name: "degrees"; type: "double" } + } + Method { + name: "degToRadOffset" + type: "double" + Parameter { name: "degrees"; type: "double" } + } + Method { + name: "radToDeg" + type: "double" + Parameter { name: "radians"; type: "double" } + } + Method { + name: "radToDegOffset" + type: "double" + Parameter { name: "radians"; type: "double" } + } + Method { + name: "centerAlongCircle" + type: "QPointF" + Parameter { name: "xCenter"; type: "double" } + Parameter { name: "yCenter"; type: "double" } + Parameter { name: "width"; type: "double" } + Parameter { name: "height"; type: "double" } + Parameter { name: "angleOnCircle"; type: "double" } + Parameter { name: "distanceAlongRadius"; type: "double" } + } + Method { + name: "roundEven" + type: "double" + Parameter { name: "number"; type: "double" } + } + } + Component { + name: "QQuickMouseThief" + prototype: "QObject" + exports: ["QtQuick.Extras.Private.CppUtils/MouseThief 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "receivedPressEvent"; type: "bool" } + Signal { + name: "pressed" + Parameter { name: "mouseX"; type: "int" } + Parameter { name: "mouseY"; type: "int" } + } + Signal { + name: "released" + Parameter { name: "mouseX"; type: "int" } + Parameter { name: "mouseY"; type: "int" } + } + Signal { + name: "clicked" + Parameter { name: "mouseX"; type: "int" } + Parameter { name: "mouseY"; type: "int" } + } + Signal { + name: "touchUpdate" + Parameter { name: "mouseX"; type: "int" } + Parameter { name: "mouseY"; type: "int" } + } + Signal { name: "handledEventChanged" } + Method { + name: "grabMouse" + Parameter { name: "item"; type: "QQuickItem"; isPointer: true } + } + Method { name: "ungrabMouse" } + Method { name: "acceptCurrentEvent" } + } + Component { + name: "QQuickPicture" + defaultProperty: "data" + prototype: "QQuickPaintedItem" + exports: ["QtQuick.Extras/Picture 1.4"] + exportMetaObjectRevisions: [0] + Property { name: "source"; type: "QUrl" } + Property { name: "color"; type: "QColor" } + } + Component { + name: "QQuickTriggerMode" + exports: ["QtQuick.Extras/TriggerMode 1.3"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "TriggerMode" + values: { + "TriggerOnPress": 0, + "TriggerOnRelease": 1, + "TriggerOnClick": 2 + } + } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras.Private/CircularButton 1.0" + exports: ["QtQuick.Extras.Private/CircularButton 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "isDefault"; type: "bool" } + Property { name: "menu"; type: "Menu_QMLTYPE_28"; isPointer: true } + Property { name: "checkable"; type: "bool" } + Property { name: "checked"; type: "bool" } + Property { name: "exclusiveGroup"; type: "QQuickExclusiveGroup"; isPointer: true } + Property { name: "action"; type: "QQuickAction"; isPointer: true } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "text"; type: "string" } + Property { name: "tooltip"; type: "string" } + Property { name: "iconSource"; type: "QUrl" } + Property { name: "iconName"; type: "string" } + Property { name: "__position"; type: "string" } + Property { name: "__iconOverriden"; type: "bool"; isReadonly: true } + Property { name: "__action"; type: "QQuickAction"; isPointer: true } + Property { name: "__iconAction"; type: "QQuickAction"; isReadonly: true; isPointer: true } + Property { name: "__behavior"; type: "QVariant" } + Property { name: "__effectivePressed"; type: "bool" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Signal { name: "clicked" } + Method { name: "accessiblePressAction"; type: "QVariant" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QObject" + name: "QtQuick.Extras.Private/CircularButtonStyleHelper 1.0" + exports: ["QtQuick.Extras.Private/CircularButtonStyleHelper 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + Property { name: "control"; type: "QQuickItem"; isPointer: true } + Property { name: "buttonColorUpTop"; type: "QColor" } + Property { name: "buttonColorUpBottom"; type: "QColor" } + Property { name: "buttonColorDownTop"; type: "QColor" } + Property { name: "buttonColorDownBottom"; type: "QColor" } + Property { name: "outerArcColorTop"; type: "QColor" } + Property { name: "outerArcColorBottom"; type: "QColor" } + Property { name: "innerArcColorTop"; type: "QColor" } + Property { name: "innerArcColorBottom"; type: "QColor" } + Property { name: "innerArcColorBottomStop"; type: "double" } + Property { name: "shineColor"; type: "QColor" } + Property { name: "smallestAxis"; type: "double" } + Property { name: "outerArcLineWidth"; type: "double" } + Property { name: "innerArcLineWidth"; type: "double" } + Property { name: "shineArcLineWidth"; type: "double" } + Property { name: "implicitWidth"; type: "double" } + Property { name: "implicitHeight"; type: "double" } + Property { name: "textColorUp"; type: "QColor" } + Property { name: "textColorDown"; type: "QColor" } + Property { name: "textRaisedColorUp"; type: "QColor" } + Property { name: "textRaisedColorDown"; type: "QColor" } + Property { name: "radius"; type: "double" } + Property { name: "halfRadius"; type: "double" } + Property { name: "outerArcRadius"; type: "double" } + Property { name: "innerArcRadius"; type: "double" } + Property { name: "shineArcRadius"; type: "double" } + Property { name: "zeroAngle"; type: "double" } + Property { name: "buttonColorTop"; type: "QColor" } + Property { name: "buttonColorBottom"; type: "QColor" } + Method { + name: "toPixels" + type: "QVariant" + Parameter { name: "percentageOfSmallestAxis"; type: "QVariant" } + } + Method { + name: "paintBackground" + type: "QVariant" + Parameter { name: "ctx"; type: "QVariant" } + } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/CircularGauge 1.0" + exports: ["QtQuick.Extras/CircularGauge 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "tickmarksVisible"; type: "bool" } + Property { name: "minimumValue"; type: "double" } + Property { name: "maximumValue"; type: "double" } + Property { name: "value"; type: "double" } + Property { name: "stepSize"; type: "double" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras.Private/CircularTickmarkLabel 1.0" + exports: ["QtQuick.Extras.Private/CircularTickmarkLabel 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "minimumValueAngle"; type: "double" } + Property { name: "maximumValueAngle"; type: "double" } + Property { name: "angleRange"; type: "double"; isReadonly: true } + Property { name: "tickmarkStepSize"; type: "double" } + Property { name: "tickmarkInset"; type: "double" } + Property { name: "tickmarkCount"; type: "int"; isReadonly: true } + Property { name: "minorTickmarkCount"; type: "int" } + Property { name: "minorTickmarkInset"; type: "double" } + Property { name: "labelInset"; type: "double" } + Property { name: "labelStepSize"; type: "double" } + Property { name: "labelCount"; type: "int"; isReadonly: true } + Property { name: "__tickmarkCount"; type: "double"; isReadonly: true } + Property { name: "tickmarksVisible"; type: "bool" } + Property { name: "minimumValue"; type: "double" } + Property { name: "maximumValue"; type: "double" } + Property { name: "stepSize"; type: "double" } + Method { + name: "valueToAngle" + type: "QVariant" + Parameter { name: "value"; type: "QVariant" } + } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/DelayButton 1.0" + exports: ["QtQuick.Extras/DelayButton 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "delay"; type: "int" } + Property { name: "__progress"; type: "double" } + Property { name: "progress"; type: "double"; isReadonly: true } + Signal { name: "activated" } + Property { name: "isDefault"; type: "bool" } + Property { name: "menu"; type: "Menu_QMLTYPE_28"; isPointer: true } + Property { name: "checkable"; type: "bool" } + Property { name: "checked"; type: "bool" } + Property { name: "exclusiveGroup"; type: "QQuickExclusiveGroup"; isPointer: true } + Property { name: "action"; type: "QQuickAction"; isPointer: true } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "text"; type: "string" } + Property { name: "tooltip"; type: "string" } + Property { name: "iconSource"; type: "QUrl" } + Property { name: "iconName"; type: "string" } + Property { name: "__position"; type: "string" } + Property { name: "__iconOverriden"; type: "bool"; isReadonly: true } + Property { name: "__action"; type: "QQuickAction"; isPointer: true } + Property { name: "__iconAction"; type: "QQuickAction"; isReadonly: true; isPointer: true } + Property { name: "__behavior"; type: "QVariant" } + Property { name: "__effectivePressed"; type: "bool" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Signal { name: "clicked" } + Method { name: "accessiblePressAction"; type: "QVariant" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/Dial 1.0" + exports: ["QtQuick.Extras/Dial 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "__wrap"; type: "bool" } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "tickmarksVisible"; type: "bool" } + Property { name: "value"; type: "double" } + Property { name: "minimumValue"; type: "double" } + Property { name: "maximumValue"; type: "double" } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Property { name: "stepSize"; type: "double" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/Dial 1.1" + exports: ["QtQuick.Extras/Dial 1.1"] + exportMetaObjectRevisions: [1] + isComposite: true + defaultProperty: "data" + Property { name: "__wrap"; type: "bool" } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "tickmarksVisible"; type: "bool" } + Property { name: "value"; type: "double" } + Property { name: "minimumValue"; type: "double" } + Property { name: "maximumValue"; type: "double" } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Property { name: "stepSize"; type: "double" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/Gauge 1.0" + exports: ["QtQuick.Extras/Gauge 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "orientation"; type: "int" } + Property { name: "tickmarkAlignment"; type: "int" } + Property { name: "__tickmarkAlignment"; type: "int" } + Property { name: "__tickmarksInside"; type: "bool" } + Property { name: "tickmarkStepSize"; type: "double" } + Property { name: "minorTickmarkCount"; type: "int" } + Property { name: "formatValue"; type: "QVariant" } + Property { name: "minimumValue"; type: "double" } + Property { name: "value"; type: "double" } + Property { name: "maximumValue"; type: "double" } + Property { name: "font"; type: "QFont" } + Property { name: "__hiddenText"; type: "QQuickText"; isReadonly: true; isPointer: true } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/PieMenu 1.0" + exports: ["QtQuick.Extras/PieMenu 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "menuItems" + Property { name: "selectionAngle"; type: "double"; isReadonly: true } + Property { name: "triggerMode"; type: "int" } + Property { name: "title"; type: "string" } + Property { name: "boundingItem"; type: "QQuickItem"; isPointer: true } + Property { name: "__protectedScope"; type: "QObject"; isPointer: true } + Property { name: "activationMode"; type: "int" } + Property { name: "menuItems"; type: "QQuickMenuItem"; isList: true; isReadonly: true } + Property { name: "currentIndex"; type: "int"; isReadonly: true } + Property { name: "currentItem"; type: "QQuickMenuItem"; isReadonly: true; isPointer: true } + Property { name: "__mouseThief"; type: "QQuickMouseThief"; isReadonly: true; isPointer: true } + Method { + name: "popup" + type: "QVariant" + Parameter { name: "x"; type: "QVariant" } + Parameter { name: "y"; type: "QVariant" } + } + Method { + name: "addItem" + type: "QVariant" + Parameter { name: "text"; type: "QVariant" } + } + Method { + name: "insertItem" + type: "QVariant" + Parameter { name: "before"; type: "QVariant" } + Parameter { name: "text"; type: "QVariant" } + } + Method { + name: "removeItem" + type: "QVariant" + Parameter { name: "item"; type: "QVariant" } + } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickLoader" + name: "QtQuick.Extras.Private/PieMenuIcon 1.0" + exports: ["QtQuick.Extras.Private/PieMenuIcon 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "PieMenu_QMLTYPE_84"; isPointer: true } + Property { name: "styleData"; type: "QObject"; isPointer: true } + Property { name: "iconSource"; type: "string"; isReadonly: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/StatusIndicator 1.1" + exports: ["QtQuick.Extras/StatusIndicator 1.1"] + exportMetaObjectRevisions: [1] + isComposite: true + defaultProperty: "data" + Property { name: "active"; type: "bool" } + Property { name: "color"; type: "QColor" } + Property { name: "on"; type: "bool" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/StatusIndicator 1.0" + exports: ["QtQuick.Extras/StatusIndicator 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "active"; type: "bool" } + Property { name: "color"; type: "QColor" } + Property { name: "on"; type: "bool" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickText" + name: "QtQuick.Extras.Private/TextSingleton 1.0" + exports: ["QtQuick.Extras.Private/TextSingleton 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + isCreatable: false + isSingleton: true + defaultProperty: "data" + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/ToggleButton 1.0" + exports: ["QtQuick.Extras/ToggleButton 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "isDefault"; type: "bool" } + Property { name: "menu"; type: "Menu_QMLTYPE_28"; isPointer: true } + Property { name: "checkable"; type: "bool" } + Property { name: "checked"; type: "bool" } + Property { name: "exclusiveGroup"; type: "QQuickExclusiveGroup"; isPointer: true } + Property { name: "action"; type: "QQuickAction"; isPointer: true } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "text"; type: "string" } + Property { name: "tooltip"; type: "string" } + Property { name: "iconSource"; type: "QUrl" } + Property { name: "iconName"; type: "string" } + Property { name: "__position"; type: "string" } + Property { name: "__iconOverriden"; type: "bool"; isReadonly: true } + Property { name: "__action"; type: "QQuickAction"; isPointer: true } + Property { name: "__iconAction"; type: "QQuickAction"; isReadonly: true; isPointer: true } + Property { name: "__behavior"; type: "QVariant" } + Property { name: "__effectivePressed"; type: "bool" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Signal { name: "clicked" } + Method { name: "accessiblePressAction"; type: "QVariant" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/Tumbler 1.2" + exports: ["QtQuick.Extras/Tumbler 1.2"] + exportMetaObjectRevisions: [2] + isComposite: true + defaultProperty: "data" + Property { name: "__highlightMoveDuration"; type: "int" } + Property { name: "columnCount"; type: "int"; isReadonly: true } + Property { name: "__columnRow"; type: "QQuickRow"; isReadonly: true; isPointer: true } + Property { name: "__movementDelayTimer"; type: "QQmlTimer"; isReadonly: true; isPointer: true } + Method { + name: "__isValidColumnIndex" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "__isValidColumnAndItemIndex" + type: "QVariant" + Parameter { name: "columnIndex"; type: "QVariant" } + Parameter { name: "itemIndex"; type: "QVariant" } + } + Method { + name: "currentIndexAt" + type: "QVariant" + Parameter { name: "columnIndex"; type: "QVariant" } + } + Method { + name: "setCurrentIndexAt" + type: "QVariant" + Parameter { name: "columnIndex"; type: "QVariant" } + Parameter { name: "itemIndex"; type: "QVariant" } + } + Method { + name: "getColumn" + type: "QVariant" + Parameter { name: "columnIndex"; type: "QVariant" } + } + Method { + name: "addColumn" + type: "QVariant" + Parameter { name: "column"; type: "QVariant" } + } + Method { + name: "insertColumn" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + Parameter { name: "column"; type: "QVariant" } + } + Method { + name: "__viewAt" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QObject" + name: "QtQuick.Extras/TumblerColumn 1.2" + exports: ["QtQuick.Extras/TumblerColumn 1.2"] + exportMetaObjectRevisions: [2] + isComposite: true + Property { name: "__tumbler"; type: "QQuickItem"; isPointer: true } + Property { name: "__index"; type: "int" } + Property { name: "__currentIndex"; type: "int" } + Property { name: "model"; type: "QVariant" } + Property { name: "role"; type: "string" } + Property { name: "delegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "highlight"; type: "QQmlComponent"; isPointer: true } + Property { name: "columnForeground"; type: "QQmlComponent"; isPointer: true } + Property { name: "visible"; type: "bool" } + Property { name: "activeFocus"; type: "bool"; isReadonly: true } + Property { name: "width"; type: "double" } + Property { name: "currentIndex"; type: "int"; isReadonly: true } + } +} diff --git a/bin/win64/QtQuick/Extras/qmldir b/bin/win64/QtQuick/Extras/qmldir new file mode 100644 index 0000000..030a7c2 --- /dev/null +++ b/bin/win64/QtQuick/Extras/qmldir @@ -0,0 +1,6 @@ +module QtQuick.Extras +plugin qtquickextrasplugin +classname QtQuickExtrasPlugin +#typeinfo plugins.qmltypes + +depends QtGraphicalEffects 1.0 diff --git a/bin/win64/QtQuick/Extras/qtquickextrasplugin.dll b/bin/win64/QtQuick/Extras/qtquickextrasplugin.dll new file mode 100644 index 0000000..c92eb83 Binary files /dev/null and b/bin/win64/QtQuick/Extras/qtquickextrasplugin.dll differ diff --git a/bin/win64/QtQuick/Layouts/plugins.qmltypes b/bin/win64/QtQuick/Layouts/plugins.qmltypes new file mode 100644 index 0000000..b130215 --- /dev/null +++ b/bin/win64/QtQuick/Layouts/plugins.qmltypes @@ -0,0 +1,102 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by: +// 'qmlplugindump -nonrelocatable QtQuick.Layouts 1.2' + +Module { + dependencies: [] + Component { + name: "QQuickColumnLayout" + defaultProperty: "data" + prototype: "QQuickLinearLayout" + exports: ["QtQuick.Layouts/ColumnLayout 1.0"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickGridLayout" + defaultProperty: "data" + prototype: "QQuickGridLayoutBase" + exports: ["QtQuick.Layouts/GridLayout 1.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "Flow" + values: { + "LeftToRight": 0, + "TopToBottom": 1 + } + } + Property { name: "columnSpacing"; type: "double" } + Property { name: "rowSpacing"; type: "double" } + Property { name: "columns"; type: "int" } + Property { name: "rows"; type: "int" } + Property { name: "flow"; type: "Flow" } + } + Component { + name: "QQuickGridLayoutBase" + defaultProperty: "data" + prototype: "QQuickLayout" + Property { name: "layoutDirection"; revision: 1; type: "Qt::LayoutDirection" } + Signal { name: "layoutDirectionChanged"; revision: 1 } + } + Component { + name: "QQuickLayout" + defaultProperty: "data" + prototype: "QQuickItem" + exports: ["QtQuick.Layouts/Layout 1.0", "QtQuick.Layouts/Layout 1.2"] + isCreatable: false + exportMetaObjectRevisions: [0, 0] + attachedType: "QQuickLayoutAttached" + } + Component { + name: "QQuickLayoutAttached" + prototype: "QObject" + Property { name: "minimumWidth"; type: "double" } + Property { name: "minimumHeight"; type: "double" } + Property { name: "preferredWidth"; type: "double" } + Property { name: "preferredHeight"; type: "double" } + Property { name: "maximumWidth"; type: "double" } + Property { name: "maximumHeight"; type: "double" } + Property { name: "fillHeight"; type: "bool" } + Property { name: "fillWidth"; type: "bool" } + Property { name: "row"; type: "int" } + Property { name: "column"; type: "int" } + Property { name: "rowSpan"; type: "int" } + Property { name: "columnSpan"; type: "int" } + Property { name: "alignment"; type: "Qt::Alignment" } + Property { name: "margins"; type: "double" } + Property { name: "leftMargin"; type: "double" } + Property { name: "topMargin"; type: "double" } + Property { name: "rightMargin"; type: "double" } + Property { name: "bottomMargin"; type: "double" } + } + Component { + name: "QQuickLinearLayout" + defaultProperty: "data" + prototype: "QQuickGridLayoutBase" + Property { name: "spacing"; type: "double" } + } + Component { + name: "QQuickRowLayout" + defaultProperty: "data" + prototype: "QQuickLinearLayout" + exports: ["QtQuick.Layouts/RowLayout 1.0"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickStackLayout" + defaultProperty: "data" + prototype: "QQuickLayout" + exports: ["QtQuick.Layouts/StackLayout 1.3"] + exportMetaObjectRevisions: [0] + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "currentIndex"; type: "int" } + Method { + name: "itemAt" + type: "QQuickItem*" + Parameter { name: "index"; type: "int" } + } + } +} diff --git a/bin/win64/QtQuick/Layouts/qmldir b/bin/win64/QtQuick/Layouts/qmldir new file mode 100644 index 0000000..00f85f7 --- /dev/null +++ b/bin/win64/QtQuick/Layouts/qmldir @@ -0,0 +1,5 @@ +module QtQuick.Layouts +plugin qquicklayoutsplugin +classname QtQuickLayoutsPlugin +typeinfo plugins.qmltypes +designersupported diff --git a/bin/win64/QtQuick/Layouts/qquicklayoutsplugin.dll b/bin/win64/QtQuick/Layouts/qquicklayoutsplugin.dll new file mode 100644 index 0000000..9e6edf8 Binary files /dev/null and b/bin/win64/QtQuick/Layouts/qquicklayoutsplugin.dll differ diff --git a/bin/win64/QtQuick/PrivateWidgets/plugins.qmltypes b/bin/win64/QtQuick/PrivateWidgets/plugins.qmltypes new file mode 100644 index 0000000..a449428 --- /dev/null +++ b/bin/win64/QtQuick/PrivateWidgets/plugins.qmltypes @@ -0,0 +1,321 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by: +// 'qmlplugindump -nonrelocatable QtQuick.PrivateWidgets 1.1' + +Module { + dependencies: [] + Component { + name: "QQuickAbstractColorDialog" + prototype: "QQuickAbstractDialog" + Property { name: "showAlphaChannel"; type: "bool" } + Property { name: "color"; type: "QColor" } + Property { name: "currentColor"; type: "QColor" } + Property { name: "currentHue"; type: "double"; isReadonly: true } + Property { name: "currentSaturation"; type: "double"; isReadonly: true } + Property { name: "currentLightness"; type: "double"; isReadonly: true } + Property { name: "currentAlpha"; type: "double"; isReadonly: true } + Signal { name: "selectionAccepted" } + Method { + name: "setVisible" + Parameter { name: "v"; type: "bool" } + } + Method { + name: "setModality" + Parameter { name: "m"; type: "Qt::WindowModality" } + } + Method { + name: "setTitle" + Parameter { name: "t"; type: "string" } + } + Method { + name: "setColor" + Parameter { name: "arg"; type: "QColor" } + } + Method { + name: "setCurrentColor" + Parameter { name: "currentColor"; type: "QColor" } + } + Method { + name: "setShowAlphaChannel" + Parameter { name: "arg"; type: "bool" } + } + } + Component { + name: "QQuickAbstractDialog" + prototype: "QObject" + Enum { + name: "StandardButton" + values: { + "NoButton": 0, + "Ok": 1024, + "Save": 2048, + "SaveAll": 4096, + "Open": 8192, + "Yes": 16384, + "YesToAll": 32768, + "No": 65536, + "NoToAll": 131072, + "Abort": 262144, + "Retry": 524288, + "Ignore": 1048576, + "Close": 2097152, + "Cancel": 4194304, + "Discard": 8388608, + "Help": 16777216, + "Apply": 33554432, + "Reset": 67108864, + "RestoreDefaults": 134217728, + "NButtons": 134217729 + } + } + Enum { + name: "StandardButtons" + values: { + "NoButton": 0, + "Ok": 1024, + "Save": 2048, + "SaveAll": 4096, + "Open": 8192, + "Yes": 16384, + "YesToAll": 32768, + "No": 65536, + "NoToAll": 131072, + "Abort": 262144, + "Retry": 524288, + "Ignore": 1048576, + "Close": 2097152, + "Cancel": 4194304, + "Discard": 8388608, + "Help": 16777216, + "Apply": 33554432, + "Reset": 67108864, + "RestoreDefaults": 134217728, + "NButtons": 134217729 + } + } + Property { name: "visible"; type: "bool" } + Property { name: "modality"; type: "Qt::WindowModality" } + Property { name: "title"; type: "string" } + Property { name: "isWindow"; type: "bool"; isReadonly: true } + Property { name: "x"; type: "int" } + Property { name: "y"; type: "int" } + Property { name: "width"; type: "int" } + Property { name: "height"; type: "int" } + Property { name: "__maximumDimension"; type: "int"; isReadonly: true } + Signal { name: "visibilityChanged" } + Signal { name: "geometryChanged" } + Signal { name: "accepted" } + Signal { name: "rejected" } + Method { name: "open" } + Method { name: "close" } + Method { + name: "setX" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setY" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setWidth" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setHeight" + Parameter { name: "arg"; type: "int" } + } + } + Component { + name: "QQuickAbstractFileDialog" + prototype: "QQuickAbstractDialog" + Property { name: "selectExisting"; type: "bool" } + Property { name: "selectMultiple"; type: "bool" } + Property { name: "selectFolder"; type: "bool" } + Property { name: "folder"; type: "QUrl" } + Property { name: "nameFilters"; type: "QStringList" } + Property { name: "selectedNameFilter"; type: "string" } + Property { name: "selectedNameFilterExtensions"; type: "QStringList"; isReadonly: true } + Property { name: "selectedNameFilterIndex"; type: "int" } + Property { name: "fileUrl"; type: "QUrl"; isReadonly: true } + Property { name: "fileUrls"; type: "QList"; isReadonly: true } + Property { name: "sidebarVisible"; type: "bool" } + Signal { name: "filterSelected" } + Signal { name: "fileModeChanged" } + Signal { name: "selectionAccepted" } + Method { + name: "setVisible" + Parameter { name: "v"; type: "bool" } + } + Method { + name: "setTitle" + Parameter { name: "t"; type: "string" } + } + Method { + name: "setSelectExisting" + Parameter { name: "s"; type: "bool" } + } + Method { + name: "setSelectMultiple" + Parameter { name: "s"; type: "bool" } + } + Method { + name: "setSelectFolder" + Parameter { name: "s"; type: "bool" } + } + Method { + name: "setFolder" + Parameter { name: "f"; type: "QUrl" } + } + Method { + name: "setNameFilters" + Parameter { name: "f"; type: "QStringList" } + } + Method { + name: "selectNameFilter" + Parameter { name: "f"; type: "string" } + } + Method { + name: "setSelectedNameFilterIndex" + Parameter { name: "idx"; type: "int" } + } + Method { + name: "setSidebarVisible" + Parameter { name: "s"; type: "bool" } + } + } + Component { + name: "QQuickAbstractFontDialog" + prototype: "QQuickAbstractDialog" + Property { name: "scalableFonts"; type: "bool" } + Property { name: "nonScalableFonts"; type: "bool" } + Property { name: "monospacedFonts"; type: "bool" } + Property { name: "proportionalFonts"; type: "bool" } + Property { name: "font"; type: "QFont" } + Property { name: "currentFont"; type: "QFont" } + Signal { name: "selectionAccepted" } + Method { + name: "setVisible" + Parameter { name: "v"; type: "bool" } + } + Method { + name: "setModality" + Parameter { name: "m"; type: "Qt::WindowModality" } + } + Method { + name: "setTitle" + Parameter { name: "t"; type: "string" } + } + Method { + name: "setFont" + Parameter { name: "arg"; type: "QFont" } + } + Method { + name: "setCurrentFont" + Parameter { name: "arg"; type: "QFont" } + } + Method { + name: "setScalableFonts" + Parameter { name: "arg"; type: "bool" } + } + Method { + name: "setNonScalableFonts" + Parameter { name: "arg"; type: "bool" } + } + Method { + name: "setMonospacedFonts" + Parameter { name: "arg"; type: "bool" } + } + Method { + name: "setProportionalFonts" + Parameter { name: "arg"; type: "bool" } + } + } + Component { + name: "QQuickAbstractMessageDialog" + prototype: "QQuickAbstractDialog" + exports: ["QtQuick.PrivateWidgets/QtMessageDialog 1.1"] + exportMetaObjectRevisions: [0] + Enum { + name: "Icon" + values: { + "NoIcon": 0, + "Information": 1, + "Warning": 2, + "Critical": 3, + "Question": 4 + } + } + Property { name: "text"; type: "string" } + Property { name: "informativeText"; type: "string" } + Property { name: "detailedText"; type: "string" } + Property { name: "icon"; type: "Icon" } + Property { name: "standardIconSource"; type: "QUrl"; isReadonly: true } + Property { name: "standardButtons"; type: "QQuickAbstractDialog::StandardButtons" } + Property { + name: "clickedButton" + type: "QQuickAbstractDialog::StandardButton" + isReadonly: true + } + Signal { name: "buttonClicked" } + Signal { name: "discard" } + Signal { name: "help" } + Signal { name: "yes" } + Signal { name: "no" } + Signal { name: "apply" } + Signal { name: "reset" } + Method { + name: "setVisible" + Parameter { name: "v"; type: "bool" } + } + Method { + name: "setTitle" + Parameter { name: "arg"; type: "string" } + } + Method { + name: "setText" + Parameter { name: "arg"; type: "string" } + } + Method { + name: "setInformativeText" + Parameter { name: "arg"; type: "string" } + } + Method { + name: "setDetailedText" + Parameter { name: "arg"; type: "string" } + } + Method { + name: "setIcon" + Parameter { name: "icon"; type: "Icon" } + } + Method { + name: "setStandardButtons" + Parameter { name: "buttons"; type: "StandardButtons" } + } + Method { + name: "click" + Parameter { name: "button"; type: "QQuickAbstractDialog::StandardButton" } + } + } + Component { + name: "QQuickQColorDialog" + prototype: "QQuickAbstractColorDialog" + exports: ["QtQuick.PrivateWidgets/QtColorDialog 1.0"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickQFileDialog" + prototype: "QQuickAbstractFileDialog" + exports: ["QtQuick.PrivateWidgets/QtFileDialog 1.0"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickQFontDialog" + prototype: "QQuickAbstractFontDialog" + exports: ["QtQuick.PrivateWidgets/QtFontDialog 1.1"] + exportMetaObjectRevisions: [0] + } +} diff --git a/bin/win64/QtQuick/PrivateWidgets/qmldir b/bin/win64/QtQuick/PrivateWidgets/qmldir new file mode 100644 index 0000000..da63c98 --- /dev/null +++ b/bin/win64/QtQuick/PrivateWidgets/qmldir @@ -0,0 +1,4 @@ +module QtQuick.PrivateWidgets +plugin widgetsplugin +classname QtQuick2PrivateWidgetsPlugin +typeinfo plugins.qmltypes diff --git a/bin/win64/QtQuick/PrivateWidgets/widgetsplugin.dll b/bin/win64/QtQuick/PrivateWidgets/widgetsplugin.dll new file mode 100644 index 0000000..c2ed892 Binary files /dev/null and b/bin/win64/QtQuick/PrivateWidgets/widgetsplugin.dll differ diff --git a/bin/win64/QtQuick/Templates.2/plugins.qmltypes b/bin/win64/QtQuick/Templates.2/plugins.qmltypes new file mode 100644 index 0000000..75a11a6 --- /dev/null +++ b/bin/win64/QtQuick/Templates.2/plugins.qmltypes @@ -0,0 +1,1756 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by: +// 'qmlplugindump -nonrelocatable QtQuick.Templates 2.0' + +Module { + dependencies: ["QtQuick.Window 2.2"] + Component { + name: "QQuickAbstractButton" + defaultProperty: "data" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/AbstractButton 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "text"; type: "string" } + Property { name: "down"; type: "bool" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "checked"; type: "bool" } + Property { name: "autoExclusive"; type: "bool" } + Property { name: "indicator"; type: "QQuickItem"; isPointer: true } + Signal { name: "pressed" } + Signal { name: "released" } + Signal { name: "canceled" } + Signal { name: "clicked" } + Signal { name: "pressAndHold" } + Signal { name: "doubleClicked" } + Method { name: "toggle" } + } + Component { + name: "QQuickApplicationWindow" + defaultProperty: "data" + prototype: "QQuickWindowQmlImpl" + exports: ["QtQuick.Templates/ApplicationWindow 2.0"] + exportMetaObjectRevisions: [0] + attachedType: "QQuickApplicationWindowAttached" + Property { name: "background"; type: "QQuickItem"; isPointer: true } + Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "activeFocusControl"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "header"; type: "QQuickItem"; isPointer: true } + Property { name: "footer"; type: "QQuickItem"; isPointer: true } + Property { name: "overlay"; type: "QQuickOverlay"; isReadonly: true; isPointer: true } + Property { name: "font"; type: "QFont" } + Property { name: "locale"; type: "QLocale" } + } + Component { + name: "QQuickApplicationWindowAttached" + prototype: "QObject" + Property { name: "window"; type: "QQuickApplicationWindow"; isReadonly: true; isPointer: true } + Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "activeFocusControl"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "header"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "footer"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "overlay"; type: "QQuickOverlay"; isReadonly: true; isPointer: true } + } + Component { + name: "QQuickBusyIndicator" + defaultProperty: "data" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/BusyIndicator 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "running"; type: "bool" } + } + Component { + name: "QQuickButton" + defaultProperty: "data" + prototype: "QQuickAbstractButton" + exports: ["QtQuick.Templates/Button 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "checkable"; type: "bool" } + Property { name: "autoRepeat"; type: "bool" } + Property { name: "highlighted"; type: "bool" } + Property { name: "flat"; type: "bool" } + } + Component { + name: "QQuickCheckBox" + defaultProperty: "data" + prototype: "QQuickAbstractButton" + exports: ["QtQuick.Templates/CheckBox 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "tristate"; type: "bool" } + Property { name: "checkState"; type: "Qt::CheckState" } + } + Component { + name: "QQuickCheckDelegate" + defaultProperty: "data" + prototype: "QQuickItemDelegate" + exports: ["QtQuick.Templates/CheckDelegate 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "tristate"; type: "bool" } + Property { name: "checkState"; type: "Qt::CheckState" } + } + Component { + name: "QQuickComboBox" + defaultProperty: "data" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/ComboBox 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "model"; type: "QVariant" } + Property { name: "delegateModel"; type: "QQmlInstanceModel"; isReadonly: true; isPointer: true } + Property { name: "pressed"; type: "bool" } + Property { name: "highlightedIndex"; type: "int"; isReadonly: true } + Property { name: "currentIndex"; type: "int" } + Property { name: "currentText"; type: "string"; isReadonly: true } + Property { name: "displayText"; type: "string" } + Property { name: "textRole"; type: "string" } + Property { name: "delegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "indicator"; type: "QQuickItem"; isPointer: true } + Property { name: "popup"; type: "QQuickPopup"; isPointer: true } + Signal { + name: "activated" + Parameter { name: "index"; type: "int" } + } + Signal { + name: "highlighted" + Parameter { name: "index"; type: "int" } + } + Method { name: "incrementCurrentIndex" } + Method { name: "decrementCurrentIndex" } + Method { + name: "textAt" + type: "string" + Parameter { name: "index"; type: "int" } + } + Method { + name: "find" + type: "int" + Parameter { name: "text"; type: "string" } + Parameter { name: "flags"; type: "Qt::MatchFlags" } + } + Method { + name: "find" + type: "int" + Parameter { name: "text"; type: "string" } + } + } + Component { + name: "QQuickContainer" + defaultProperty: "contentData" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/Container 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "contentModel"; type: "QVariant"; isReadonly: true } + Property { name: "contentData"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "contentChildren"; type: "QQuickItem"; isList: true; isReadonly: true } + Property { name: "currentIndex"; type: "int" } + Property { name: "currentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Method { + name: "setCurrentIndex" + Parameter { name: "index"; type: "int" } + } + Method { + name: "itemAt" + type: "QQuickItem*" + Parameter { name: "index"; type: "int" } + } + Method { + name: "addItem" + Parameter { name: "item"; type: "QQuickItem"; isPointer: true } + } + Method { + name: "insertItem" + Parameter { name: "index"; type: "int" } + Parameter { name: "item"; type: "QQuickItem"; isPointer: true } + } + Method { + name: "moveItem" + Parameter { name: "from"; type: "int" } + Parameter { name: "to"; type: "int" } + } + Method { + name: "removeItem" + Parameter { name: "index"; type: "int" } + } + } + Component { + name: "QQuickControl" + defaultProperty: "data" + prototype: "QQuickItem" + exports: ["QtQuick.Templates/Control 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "font"; type: "QFont" } + Property { name: "availableWidth"; type: "double"; isReadonly: true } + Property { name: "availableHeight"; type: "double"; isReadonly: true } + Property { name: "padding"; type: "double" } + Property { name: "topPadding"; type: "double" } + Property { name: "leftPadding"; type: "double" } + Property { name: "rightPadding"; type: "double" } + Property { name: "bottomPadding"; type: "double" } + Property { name: "spacing"; type: "double" } + Property { name: "locale"; type: "QLocale" } + Property { name: "mirrored"; type: "bool"; isReadonly: true } + Property { name: "focusPolicy"; type: "Qt::FocusPolicy" } + Property { name: "focusReason"; type: "Qt::FocusReason" } + Property { name: "visualFocus"; type: "bool"; isReadonly: true } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Property { name: "hoverEnabled"; type: "bool" } + Property { name: "wheelEnabled"; type: "bool" } + Property { name: "background"; type: "QQuickItem"; isPointer: true } + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + } + Component { + name: "QQuickDial" + defaultProperty: "data" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/Dial 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "SnapMode" + values: { + "NoSnap": 0, + "SnapAlways": 1, + "SnapOnRelease": 2 + } + } + Property { name: "from"; type: "double" } + Property { name: "to"; type: "double" } + Property { name: "value"; type: "double" } + Property { name: "position"; type: "double"; isReadonly: true } + Property { name: "angle"; type: "double"; isReadonly: true } + Property { name: "stepSize"; type: "double" } + Property { name: "snapMode"; type: "SnapMode" } + Property { name: "wrap"; type: "bool" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "handle"; type: "QQuickItem"; isPointer: true } + Method { name: "increase" } + Method { name: "decrease" } + } + Component { + name: "QQuickDrawer" + defaultProperty: "contentData" + prototype: "QQuickPopup" + exports: ["QtQuick.Templates/Drawer 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "edge"; type: "Qt::Edge" } + Property { name: "position"; type: "double" } + Property { name: "dragMargin"; type: "double" } + } + Component { + name: "QQuickFrame" + defaultProperty: "contentData" + prototype: "QQuickPane" + exports: ["QtQuick.Templates/Frame 2.0"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickGroupBox" + defaultProperty: "contentData" + prototype: "QQuickFrame" + exports: ["QtQuick.Templates/GroupBox 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "title"; type: "string" } + Property { name: "label"; type: "QQuickItem"; isPointer: true } + } + Component { + name: "QQuickImplicitSizeItem" + defaultProperty: "data" + prototype: "QQuickItem" + Property { name: "implicitWidth"; type: "double"; isReadonly: true } + Property { name: "implicitHeight"; type: "double"; isReadonly: true } + Signal { name: "implicitWidthChanged2"; revision: 1 } + Signal { name: "implicitHeightChanged2"; revision: 1 } + } + Component { + name: "QQuickItem" + defaultProperty: "data" + prototype: "QObject" + Enum { + name: "TransformOrigin" + values: { + "TopLeft": 0, + "Top": 1, + "TopRight": 2, + "Left": 3, + "Center": 4, + "Right": 5, + "BottomLeft": 6, + "Bottom": 7, + "BottomRight": 8 + } + } + Property { name: "parent"; type: "QQuickItem"; isPointer: true } + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "resources"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "children"; type: "QQuickItem"; isList: true; isReadonly: true } + Property { name: "x"; type: "double" } + Property { name: "y"; type: "double" } + Property { name: "z"; type: "double" } + Property { name: "width"; type: "double" } + Property { name: "height"; type: "double" } + Property { name: "opacity"; type: "double" } + Property { name: "enabled"; type: "bool" } + Property { name: "visible"; type: "bool" } + Property { name: "visibleChildren"; type: "QQuickItem"; isList: true; isReadonly: true } + Property { name: "states"; type: "QQuickState"; isList: true; isReadonly: true } + Property { name: "transitions"; type: "QQuickTransition"; isList: true; isReadonly: true } + Property { name: "state"; type: "string" } + Property { name: "childrenRect"; type: "QRectF"; isReadonly: true } + Property { name: "anchors"; type: "QQuickAnchors"; isReadonly: true; isPointer: true } + Property { name: "left"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "right"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "horizontalCenter"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "top"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "bottom"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "verticalCenter"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "baseline"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "baselineOffset"; type: "double" } + Property { name: "clip"; type: "bool" } + Property { name: "focus"; type: "bool" } + Property { name: "activeFocus"; type: "bool"; isReadonly: true } + Property { name: "activeFocusOnTab"; revision: 1; type: "bool" } + Property { name: "rotation"; type: "double" } + Property { name: "scale"; type: "double" } + Property { name: "transformOrigin"; type: "TransformOrigin" } + Property { name: "transformOriginPoint"; type: "QPointF"; isReadonly: true } + Property { name: "transform"; type: "QQuickTransform"; isList: true; isReadonly: true } + Property { name: "smooth"; type: "bool" } + Property { name: "antialiasing"; type: "bool" } + Property { name: "implicitWidth"; type: "double" } + Property { name: "implicitHeight"; type: "double" } + Property { name: "layer"; type: "QQuickItemLayer"; isReadonly: true; isPointer: true } + Signal { + name: "childrenRectChanged" + Parameter { type: "QRectF" } + } + Signal { + name: "baselineOffsetChanged" + Parameter { type: "double" } + } + Signal { + name: "stateChanged" + Parameter { type: "string" } + } + Signal { + name: "focusChanged" + Parameter { type: "bool" } + } + Signal { + name: "activeFocusChanged" + Parameter { type: "bool" } + } + Signal { + name: "activeFocusOnTabChanged" + revision: 1 + Parameter { type: "bool" } + } + Signal { + name: "parentChanged" + Parameter { type: "QQuickItem"; isPointer: true } + } + Signal { + name: "transformOriginChanged" + Parameter { type: "TransformOrigin" } + } + Signal { + name: "smoothChanged" + Parameter { type: "bool" } + } + Signal { + name: "antialiasingChanged" + Parameter { type: "bool" } + } + Signal { + name: "clipChanged" + Parameter { type: "bool" } + } + Signal { + name: "windowChanged" + revision: 1 + Parameter { name: "window"; type: "QQuickWindow"; isPointer: true } + } + Method { name: "update" } + Method { + name: "grabToImage" + revision: 2 + type: "bool" + Parameter { name: "callback"; type: "QJSValue" } + Parameter { name: "targetSize"; type: "QSize" } + } + Method { + name: "grabToImage" + revision: 2 + type: "bool" + Parameter { name: "callback"; type: "QJSValue" } + } + Method { + name: "contains" + type: "bool" + Parameter { name: "point"; type: "QPointF" } + } + Method { + name: "mapToGlobal" + revision: 7 + type: "QPointF" + Parameter { name: "point"; type: "QPointF" } + } + Method { + name: "mapFromGlobal" + revision: 7 + type: "QPointF" + Parameter { name: "point"; type: "QPointF" } + } + Method { + name: "mapFromItem" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "mapToItem" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { name: "forceActiveFocus" } + Method { + name: "forceActiveFocus" + Parameter { name: "reason"; type: "Qt::FocusReason" } + } + Method { + name: "nextItemInFocusChain" + revision: 1 + type: "QQuickItem*" + Parameter { name: "forward"; type: "bool" } + } + Method { name: "nextItemInFocusChain"; revision: 1; type: "QQuickItem*" } + Method { + name: "childAt" + type: "QQuickItem*" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + } + Component { + name: "QQuickItemDelegate" + defaultProperty: "data" + prototype: "QQuickAbstractButton" + exports: ["QtQuick.Templates/ItemDelegate 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "highlighted"; type: "bool" } + } + Component { + name: "QQuickLabel" + defaultProperty: "data" + prototype: "QQuickText" + exports: ["QtQuick.Templates/Label 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "font"; type: "QFont" } + Property { name: "background"; type: "QQuickItem"; isPointer: true } + } + Component { + name: "QQuickMenu" + defaultProperty: "contentData" + prototype: "QQuickPopup" + exports: ["QtQuick.Templates/Menu 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "contentModel"; type: "QVariant"; isReadonly: true } + Property { name: "contentData"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "title"; type: "string" } + Method { + name: "itemAt" + type: "QQuickItem*" + Parameter { name: "index"; type: "int" } + } + Method { + name: "addItem" + Parameter { name: "item"; type: "QQuickItem"; isPointer: true } + } + Method { + name: "insertItem" + Parameter { name: "index"; type: "int" } + Parameter { name: "item"; type: "QQuickItem"; isPointer: true } + } + Method { + name: "moveItem" + Parameter { name: "from"; type: "int" } + Parameter { name: "to"; type: "int" } + } + Method { + name: "removeItem" + Parameter { name: "index"; type: "int" } + } + } + Component { + name: "QQuickMenuItem" + defaultProperty: "data" + prototype: "QQuickAbstractButton" + exports: ["QtQuick.Templates/MenuItem 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "checkable"; type: "bool" } + Property { name: "highlighted"; type: "bool" } + Signal { name: "triggered" } + } + Component { + name: "QQuickOverlay" + defaultProperty: "data" + prototype: "QQuickItem" + Property { name: "modal"; type: "QQuickItem"; isPointer: true } + Property { name: "modeless"; type: "QQuickItem"; isPointer: true } + Signal { name: "pressed" } + Signal { name: "released" } + } + Component { + name: "QQuickPage" + defaultProperty: "contentData" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/Page 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "title"; type: "string" } + Property { name: "header"; type: "QQuickItem"; isPointer: true } + Property { name: "footer"; type: "QQuickItem"; isPointer: true } + Property { name: "contentData"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "contentChildren"; type: "QQuickItem"; isList: true; isReadonly: true } + } + Component { + name: "QQuickPageIndicator" + defaultProperty: "data" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/PageIndicator 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "count"; type: "int" } + Property { name: "currentIndex"; type: "int" } + Property { name: "interactive"; type: "bool" } + Property { name: "delegate"; type: "QQmlComponent"; isPointer: true } + } + Component { + name: "QQuickPane" + defaultProperty: "contentData" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/Pane 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "contentWidth"; type: "double" } + Property { name: "contentHeight"; type: "double" } + Property { name: "contentData"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "contentChildren"; type: "QQuickItem"; isList: true; isReadonly: true } + } + Component { + name: "QQuickPopup" + defaultProperty: "contentData" + prototype: "QObject" + exports: ["QtQuick.Templates/Popup 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "ClosePolicy" + values: { + "NoAutoClose": 0, + "CloseOnPressOutside": 1, + "CloseOnPressOutsideParent": 2, + "CloseOnReleaseOutside": 4, + "CloseOnReleaseOutsideParent": 8, + "CloseOnEscape": 16 + } + } + Enum { + name: "TransformOrigin" + values: { + "TopLeft": 0, + "Top": 1, + "TopRight": 2, + "Left": 3, + "Center": 4, + "Right": 5, + "BottomLeft": 6, + "Bottom": 7, + "BottomRight": 8 + } + } + Property { name: "x"; type: "double" } + Property { name: "y"; type: "double" } + Property { name: "z"; type: "double" } + Property { name: "width"; type: "double" } + Property { name: "height"; type: "double" } + Property { name: "implicitWidth"; type: "double" } + Property { name: "implicitHeight"; type: "double" } + Property { name: "contentWidth"; type: "double" } + Property { name: "contentHeight"; type: "double" } + Property { name: "availableWidth"; type: "double"; isReadonly: true } + Property { name: "availableHeight"; type: "double"; isReadonly: true } + Property { name: "margins"; type: "double" } + Property { name: "topMargin"; type: "double" } + Property { name: "leftMargin"; type: "double" } + Property { name: "rightMargin"; type: "double" } + Property { name: "bottomMargin"; type: "double" } + Property { name: "padding"; type: "double" } + Property { name: "topPadding"; type: "double" } + Property { name: "leftPadding"; type: "double" } + Property { name: "rightPadding"; type: "double" } + Property { name: "bottomPadding"; type: "double" } + Property { name: "locale"; type: "QLocale" } + Property { name: "font"; type: "QFont" } + Property { name: "parent"; type: "QQuickItem"; isPointer: true } + Property { name: "background"; type: "QQuickItem"; isPointer: true } + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "contentData"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "contentChildren"; type: "QQuickItem"; isList: true; isReadonly: true } + Property { name: "clip"; type: "bool" } + Property { name: "focus"; type: "bool" } + Property { name: "activeFocus"; type: "bool"; isReadonly: true } + Property { name: "modal"; type: "bool" } + Property { name: "dim"; type: "bool" } + Property { name: "visible"; type: "bool" } + Property { name: "opacity"; type: "double" } + Property { name: "scale"; type: "double" } + Property { name: "closePolicy"; type: "ClosePolicy" } + Property { name: "transformOrigin"; type: "TransformOrigin" } + Property { name: "enter"; type: "QQuickTransition"; isPointer: true } + Property { name: "exit"; type: "QQuickTransition"; isPointer: true } + Signal { + name: "windowChanged" + Parameter { name: "window"; type: "QQuickWindow"; isPointer: true } + } + Signal { name: "aboutToShow" } + Signal { name: "aboutToHide" } + Signal { name: "opened" } + Signal { name: "closed" } + Method { name: "open" } + Method { name: "close" } + } + Component { + name: "QQuickProgressBar" + defaultProperty: "data" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/ProgressBar 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "from"; type: "double" } + Property { name: "to"; type: "double" } + Property { name: "value"; type: "double" } + Property { name: "position"; type: "double"; isReadonly: true } + Property { name: "visualPosition"; type: "double"; isReadonly: true } + Property { name: "indeterminate"; type: "bool" } + } + Component { + name: "QQuickRadioButton" + defaultProperty: "data" + prototype: "QQuickAbstractButton" + exports: ["QtQuick.Templates/RadioButton 2.0"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickRadioDelegate" + defaultProperty: "data" + prototype: "QQuickItemDelegate" + exports: ["QtQuick.Templates/RadioDelegate 2.0"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickRangeSlider" + defaultProperty: "data" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/RangeSlider 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "SnapMode" + values: { + "NoSnap": 0, + "SnapAlways": 1, + "SnapOnRelease": 2 + } + } + Property { name: "from"; type: "double" } + Property { name: "to"; type: "double" } + Property { name: "first"; type: "QQuickRangeSliderNode"; isReadonly: true; isPointer: true } + Property { name: "second"; type: "QQuickRangeSliderNode"; isReadonly: true; isPointer: true } + Property { name: "stepSize"; type: "double" } + Property { name: "snapMode"; type: "SnapMode" } + Property { name: "orientation"; type: "Qt::Orientation" } + Method { + name: "setValues" + Parameter { name: "firstValue"; type: "double" } + Parameter { name: "secondValue"; type: "double" } + } + } + Component { + name: "QQuickRangeSliderNode" + prototype: "QObject" + Property { name: "value"; type: "double" } + Property { name: "position"; type: "double"; isReadonly: true } + Property { name: "visualPosition"; type: "double"; isReadonly: true } + Property { name: "handle"; type: "QQuickItem"; isPointer: true } + Property { name: "pressed"; type: "bool" } + Method { name: "increase" } + Method { name: "decrease" } + } + Component { + name: "QQuickRootItem" + defaultProperty: "data" + prototype: "QQuickItem" + Method { + name: "setWidth" + Parameter { name: "w"; type: "int" } + } + Method { + name: "setHeight" + Parameter { name: "h"; type: "int" } + } + } + Component { + name: "QQuickScrollBar" + defaultProperty: "data" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/ScrollBar 2.0"] + exportMetaObjectRevisions: [0] + attachedType: "QQuickScrollBarAttached" + Property { name: "size"; type: "double" } + Property { name: "position"; type: "double" } + Property { name: "stepSize"; type: "double" } + Property { name: "active"; type: "bool" } + Property { name: "pressed"; type: "bool" } + Property { name: "orientation"; type: "Qt::Orientation" } + Method { name: "increase" } + Method { name: "decrease" } + Method { + name: "setSize" + Parameter { name: "size"; type: "double" } + } + Method { + name: "setPosition" + Parameter { name: "position"; type: "double" } + } + } + Component { + name: "QQuickScrollBarAttached" + prototype: "QObject" + Property { name: "horizontal"; type: "QQuickScrollBar"; isPointer: true } + Property { name: "vertical"; type: "QQuickScrollBar"; isPointer: true } + } + Component { + name: "QQuickScrollIndicator" + defaultProperty: "data" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/ScrollIndicator 2.0"] + exportMetaObjectRevisions: [0] + attachedType: "QQuickScrollIndicatorAttached" + Property { name: "size"; type: "double" } + Property { name: "position"; type: "double" } + Property { name: "active"; type: "bool" } + Property { name: "orientation"; type: "Qt::Orientation" } + Method { + name: "setSize" + Parameter { name: "size"; type: "double" } + } + Method { + name: "setPosition" + Parameter { name: "position"; type: "double" } + } + } + Component { + name: "QQuickScrollIndicatorAttached" + prototype: "QObject" + Property { name: "horizontal"; type: "QQuickScrollIndicator"; isPointer: true } + Property { name: "vertical"; type: "QQuickScrollIndicator"; isPointer: true } + } + Component { + name: "QQuickSlider" + defaultProperty: "data" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/Slider 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "SnapMode" + values: { + "NoSnap": 0, + "SnapAlways": 1, + "SnapOnRelease": 2 + } + } + Property { name: "from"; type: "double" } + Property { name: "to"; type: "double" } + Property { name: "value"; type: "double" } + Property { name: "position"; type: "double"; isReadonly: true } + Property { name: "visualPosition"; type: "double"; isReadonly: true } + Property { name: "stepSize"; type: "double" } + Property { name: "snapMode"; type: "SnapMode" } + Property { name: "pressed"; type: "bool" } + Property { name: "orientation"; type: "Qt::Orientation" } + Property { name: "handle"; type: "QQuickItem"; isPointer: true } + Method { name: "increase" } + Method { name: "decrease" } + } + Component { + name: "QQuickSpinBox" + defaultProperty: "data" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/SpinBox 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "from"; type: "int" } + Property { name: "to"; type: "int" } + Property { name: "value"; type: "int" } + Property { name: "stepSize"; type: "int" } + Property { name: "editable"; type: "bool" } + Property { name: "validator"; type: "QValidator"; isPointer: true } + Property { name: "textFromValue"; type: "QJSValue" } + Property { name: "valueFromText"; type: "QJSValue" } + Property { name: "up"; type: "QQuickSpinButton"; isReadonly: true; isPointer: true } + Property { name: "down"; type: "QQuickSpinButton"; isReadonly: true; isPointer: true } + Method { name: "increase" } + Method { name: "decrease" } + } + Component { + name: "QQuickSpinButton" + prototype: "QObject" + Property { name: "pressed"; type: "bool" } + Property { name: "indicator"; type: "QQuickItem"; isPointer: true } + } + Component { + name: "QQuickStackAttached" + prototype: "QObject" + Property { name: "index"; type: "int"; isReadonly: true } + Property { name: "view"; type: "QQuickStackView"; isReadonly: true; isPointer: true } + Property { name: "status"; type: "QQuickStackView::Status"; isReadonly: true } + } + Component { + name: "QQuickStackView" + defaultProperty: "data" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/StackView 2.0"] + exportMetaObjectRevisions: [0] + attachedType: "QQuickStackAttached" + Enum { + name: "Status" + values: { + "Inactive": 0, + "Deactivating": 1, + "Activating": 2, + "Active": 3 + } + } + Enum { + name: "LoadBehavior" + values: { + "DontLoad": 0, + "ForceLoad": 1 + } + } + Enum { + name: "Operation" + values: { + "Transition": 0, + "Immediate": 1 + } + } + Property { name: "busy"; type: "bool"; isReadonly: true } + Property { name: "depth"; type: "int"; isReadonly: true } + Property { name: "currentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "initialItem"; type: "QVariant" } + Property { name: "popEnter"; type: "QQuickTransition"; isPointer: true } + Property { name: "popExit"; type: "QQuickTransition"; isPointer: true } + Property { name: "pushEnter"; type: "QQuickTransition"; isPointer: true } + Property { name: "pushExit"; type: "QQuickTransition"; isPointer: true } + Property { name: "replaceEnter"; type: "QQuickTransition"; isPointer: true } + Property { name: "replaceExit"; type: "QQuickTransition"; isPointer: true } + Method { name: "clear" } + Method { + name: "get" + type: "QQuickItem*" + Parameter { name: "index"; type: "int" } + Parameter { name: "behavior"; type: "LoadBehavior" } + } + Method { + name: "get" + type: "QQuickItem*" + Parameter { name: "index"; type: "int" } + } + Method { + name: "find" + type: "QQuickItem*" + Parameter { name: "callback"; type: "QJSValue" } + Parameter { name: "behavior"; type: "LoadBehavior" } + } + Method { + name: "find" + type: "QQuickItem*" + Parameter { name: "callback"; type: "QJSValue" } + } + Method { + name: "push" + Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "pop" + Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "replace" + Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true } + } + } + Component { + name: "QQuickSwipe" + prototype: "QObject" + Property { name: "position"; type: "double"; isReadonly: true } + Property { name: "complete"; type: "bool"; isReadonly: true } + Property { name: "left"; type: "QQmlComponent"; isPointer: true } + Property { name: "behind"; type: "QQmlComponent"; isPointer: true } + Property { name: "right"; type: "QQmlComponent"; isPointer: true } + Property { name: "leftItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "behindItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "rightItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + } + Component { + name: "QQuickSwipeDelegate" + defaultProperty: "data" + prototype: "QQuickItemDelegate" + exports: ["QtQuick.Templates/SwipeDelegate 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "swipe"; type: "QQuickSwipe"; isReadonly: true; isPointer: true } + } + Component { + name: "QQuickSwipeView" + defaultProperty: "contentData" + prototype: "QQuickContainer" + exports: ["QtQuick.Templates/SwipeView 2.0"] + exportMetaObjectRevisions: [0] + attachedType: "QQuickSwipeViewAttached" + } + Component { + name: "QQuickSwipeViewAttached" + prototype: "QObject" + Property { name: "index"; type: "int"; isReadonly: true } + Property { name: "isCurrentItem"; type: "bool"; isReadonly: true } + Property { name: "view"; type: "QQuickSwipeView"; isReadonly: true; isPointer: true } + } + Component { + name: "QQuickSwitch" + defaultProperty: "data" + prototype: "QQuickAbstractButton" + exports: ["QtQuick.Templates/Switch 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "position"; type: "double" } + Property { name: "visualPosition"; type: "double"; isReadonly: true } + } + Component { + name: "QQuickSwitchDelegate" + defaultProperty: "data" + prototype: "QQuickItemDelegate" + exports: ["QtQuick.Templates/SwitchDelegate 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "position"; type: "double" } + Property { name: "visualPosition"; type: "double"; isReadonly: true } + } + Component { + name: "QQuickTabBar" + defaultProperty: "contentData" + prototype: "QQuickContainer" + exports: ["QtQuick.Templates/TabBar 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "Position" + values: { + "Header": 0, + "Footer": 1 + } + } + Property { name: "position"; type: "Position" } + } + Component { + name: "QQuickTabButton" + defaultProperty: "data" + prototype: "QQuickAbstractButton" + exports: ["QtQuick.Templates/TabButton 2.0"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickText" + defaultProperty: "data" + prototype: "QQuickImplicitSizeItem" + Enum { + name: "HAlignment" + values: { + "AlignLeft": 1, + "AlignRight": 2, + "AlignHCenter": 4, + "AlignJustify": 8 + } + } + Enum { + name: "VAlignment" + values: { + "AlignTop": 32, + "AlignBottom": 64, + "AlignVCenter": 128 + } + } + Enum { + name: "TextStyle" + values: { + "Normal": 0, + "Outline": 1, + "Raised": 2, + "Sunken": 3 + } + } + Enum { + name: "TextFormat" + values: { + "PlainText": 0, + "RichText": 1, + "AutoText": 2, + "StyledText": 4 + } + } + Enum { + name: "TextElideMode" + values: { + "ElideLeft": 0, + "ElideRight": 1, + "ElideMiddle": 2, + "ElideNone": 3 + } + } + Enum { + name: "WrapMode" + values: { + "NoWrap": 0, + "WordWrap": 1, + "WrapAnywhere": 3, + "WrapAtWordBoundaryOrAnywhere": 4, + "Wrap": 4 + } + } + Enum { + name: "RenderType" + values: { + "QtRendering": 0, + "NativeRendering": 1 + } + } + Enum { + name: "LineHeightMode" + values: { + "ProportionalHeight": 0, + "FixedHeight": 1 + } + } + Enum { + name: "FontSizeMode" + values: { + "FixedSize": 0, + "HorizontalFit": 1, + "VerticalFit": 2, + "Fit": 3 + } + } + Property { name: "text"; type: "string" } + Property { name: "font"; type: "QFont" } + Property { name: "color"; type: "QColor" } + Property { name: "linkColor"; type: "QColor" } + Property { name: "style"; type: "TextStyle" } + Property { name: "styleColor"; type: "QColor" } + Property { name: "horizontalAlignment"; type: "HAlignment" } + Property { name: "effectiveHorizontalAlignment"; type: "HAlignment"; isReadonly: true } + Property { name: "verticalAlignment"; type: "VAlignment" } + Property { name: "wrapMode"; type: "WrapMode" } + Property { name: "lineCount"; type: "int"; isReadonly: true } + Property { name: "truncated"; type: "bool"; isReadonly: true } + Property { name: "maximumLineCount"; type: "int" } + Property { name: "textFormat"; type: "TextFormat" } + Property { name: "elide"; type: "TextElideMode" } + Property { name: "contentWidth"; type: "double"; isReadonly: true } + Property { name: "contentHeight"; type: "double"; isReadonly: true } + Property { name: "paintedWidth"; type: "double"; isReadonly: true } + Property { name: "paintedHeight"; type: "double"; isReadonly: true } + Property { name: "lineHeight"; type: "double" } + Property { name: "lineHeightMode"; type: "LineHeightMode" } + Property { name: "baseUrl"; type: "QUrl" } + Property { name: "minimumPixelSize"; type: "int" } + Property { name: "minimumPointSize"; type: "int" } + Property { name: "fontSizeMode"; type: "FontSizeMode" } + Property { name: "renderType"; type: "RenderType" } + Property { name: "hoveredLink"; revision: 2; type: "string"; isReadonly: true } + Property { name: "padding"; revision: 6; type: "double" } + Property { name: "topPadding"; revision: 6; type: "double" } + Property { name: "leftPadding"; revision: 6; type: "double" } + Property { name: "rightPadding"; revision: 6; type: "double" } + Property { name: "bottomPadding"; revision: 6; type: "double" } + Signal { + name: "textChanged" + Parameter { name: "text"; type: "string" } + } + Signal { + name: "linkActivated" + Parameter { name: "link"; type: "string" } + } + Signal { + name: "linkHovered" + revision: 2 + Parameter { name: "link"; type: "string" } + } + Signal { + name: "fontChanged" + Parameter { name: "font"; type: "QFont" } + } + Signal { + name: "styleChanged" + Parameter { name: "style"; type: "QQuickText::TextStyle" } + } + Signal { + name: "horizontalAlignmentChanged" + Parameter { name: "alignment"; type: "QQuickText::HAlignment" } + } + Signal { + name: "verticalAlignmentChanged" + Parameter { name: "alignment"; type: "QQuickText::VAlignment" } + } + Signal { + name: "textFormatChanged" + Parameter { name: "textFormat"; type: "QQuickText::TextFormat" } + } + Signal { + name: "elideModeChanged" + Parameter { name: "mode"; type: "QQuickText::TextElideMode" } + } + Signal { name: "contentSizeChanged" } + Signal { + name: "lineHeightChanged" + Parameter { name: "lineHeight"; type: "double" } + } + Signal { + name: "lineHeightModeChanged" + Parameter { name: "mode"; type: "LineHeightMode" } + } + Signal { + name: "lineLaidOut" + Parameter { name: "line"; type: "QQuickTextLine"; isPointer: true } + } + Signal { name: "paddingChanged"; revision: 6 } + Signal { name: "topPaddingChanged"; revision: 6 } + Signal { name: "leftPaddingChanged"; revision: 6 } + Signal { name: "rightPaddingChanged"; revision: 6 } + Signal { name: "bottomPaddingChanged"; revision: 6 } + Method { name: "doLayout" } + Method { + name: "linkAt" + revision: 3 + type: "string" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + } + Component { + name: "QQuickTextArea" + defaultProperty: "data" + prototype: "QQuickTextEdit" + exports: ["QtQuick.Templates/TextArea 2.0"] + exportMetaObjectRevisions: [0] + attachedType: "QQuickTextAreaAttached" + Property { name: "font"; type: "QFont" } + Property { name: "implicitWidth"; type: "double" } + Property { name: "implicitHeight"; type: "double" } + Property { name: "background"; type: "QQuickItem"; isPointer: true } + Property { name: "placeholderText"; type: "string" } + Property { name: "focusReason"; type: "Qt::FocusReason" } + Signal { name: "implicitWidthChanged3" } + Signal { name: "implicitHeightChanged3" } + Signal { + name: "pressAndHold" + Parameter { name: "event"; type: "QQuickMouseEvent"; isPointer: true } + } + } + Component { + name: "QQuickTextAreaAttached" + prototype: "QObject" + Property { name: "flickable"; type: "QQuickTextArea"; isPointer: true } + } + Component { + name: "QQuickTextEdit" + defaultProperty: "data" + prototype: "QQuickImplicitSizeItem" + Enum { + name: "HAlignment" + values: { + "AlignLeft": 1, + "AlignRight": 2, + "AlignHCenter": 4, + "AlignJustify": 8 + } + } + Enum { + name: "VAlignment" + values: { + "AlignTop": 32, + "AlignBottom": 64, + "AlignVCenter": 128 + } + } + Enum { + name: "TextFormat" + values: { + "PlainText": 0, + "RichText": 1, + "AutoText": 2 + } + } + Enum { + name: "WrapMode" + values: { + "NoWrap": 0, + "WordWrap": 1, + "WrapAnywhere": 3, + "WrapAtWordBoundaryOrAnywhere": 4, + "Wrap": 4 + } + } + Enum { + name: "SelectionMode" + values: { + "SelectCharacters": 0, + "SelectWords": 1 + } + } + Enum { + name: "RenderType" + values: { + "QtRendering": 0, + "NativeRendering": 1 + } + } + Property { name: "text"; type: "string" } + Property { name: "color"; type: "QColor" } + Property { name: "selectionColor"; type: "QColor" } + Property { name: "selectedTextColor"; type: "QColor" } + Property { name: "font"; type: "QFont" } + Property { name: "horizontalAlignment"; type: "HAlignment" } + Property { name: "effectiveHorizontalAlignment"; type: "HAlignment"; isReadonly: true } + Property { name: "verticalAlignment"; type: "VAlignment" } + Property { name: "wrapMode"; type: "WrapMode" } + Property { name: "lineCount"; type: "int"; isReadonly: true } + Property { name: "length"; type: "int"; isReadonly: true } + Property { name: "contentWidth"; type: "double"; isReadonly: true } + Property { name: "contentHeight"; type: "double"; isReadonly: true } + Property { name: "paintedWidth"; type: "double"; isReadonly: true } + Property { name: "paintedHeight"; type: "double"; isReadonly: true } + Property { name: "textFormat"; type: "TextFormat" } + Property { name: "readOnly"; type: "bool" } + Property { name: "cursorVisible"; type: "bool" } + Property { name: "cursorPosition"; type: "int" } + Property { name: "cursorRectangle"; type: "QRectF"; isReadonly: true } + Property { name: "cursorDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "selectionStart"; type: "int"; isReadonly: true } + Property { name: "selectionEnd"; type: "int"; isReadonly: true } + Property { name: "selectedText"; type: "string"; isReadonly: true } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "persistentSelection"; type: "bool" } + Property { name: "textMargin"; type: "double" } + Property { name: "inputMethodHints"; type: "Qt::InputMethodHints" } + Property { name: "selectByKeyboard"; revision: 1; type: "bool" } + Property { name: "selectByMouse"; type: "bool" } + Property { name: "mouseSelectionMode"; type: "SelectionMode" } + Property { name: "canPaste"; type: "bool"; isReadonly: true } + Property { name: "canUndo"; type: "bool"; isReadonly: true } + Property { name: "canRedo"; type: "bool"; isReadonly: true } + Property { name: "inputMethodComposing"; type: "bool"; isReadonly: true } + Property { name: "baseUrl"; type: "QUrl" } + Property { name: "renderType"; type: "RenderType" } + Property { + name: "textDocument" + revision: 1 + type: "QQuickTextDocument" + isReadonly: true + isPointer: true + } + Property { name: "hoveredLink"; revision: 2; type: "string"; isReadonly: true } + Property { name: "padding"; revision: 6; type: "double" } + Property { name: "topPadding"; revision: 6; type: "double" } + Property { name: "leftPadding"; revision: 6; type: "double" } + Property { name: "rightPadding"; revision: 6; type: "double" } + Property { name: "bottomPadding"; revision: 6; type: "double" } + Property { name: "preeditText"; revision: 7; type: "string"; isReadonly: true } + Signal { name: "preeditTextChanged"; revision: 7 } + Signal { name: "contentSizeChanged" } + Signal { + name: "colorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "selectionColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "selectedTextColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "fontChanged" + Parameter { name: "font"; type: "QFont" } + } + Signal { + name: "horizontalAlignmentChanged" + Parameter { name: "alignment"; type: "QQuickTextEdit::HAlignment" } + } + Signal { + name: "verticalAlignmentChanged" + Parameter { name: "alignment"; type: "QQuickTextEdit::VAlignment" } + } + Signal { + name: "textFormatChanged" + Parameter { name: "textFormat"; type: "QQuickTextEdit::TextFormat" } + } + Signal { + name: "readOnlyChanged" + Parameter { name: "isReadOnly"; type: "bool" } + } + Signal { + name: "cursorVisibleChanged" + Parameter { name: "isCursorVisible"; type: "bool" } + } + Signal { + name: "activeFocusOnPressChanged" + Parameter { name: "activeFocusOnPressed"; type: "bool" } + } + Signal { + name: "persistentSelectionChanged" + Parameter { name: "isPersistentSelection"; type: "bool" } + } + Signal { + name: "textMarginChanged" + Parameter { name: "textMargin"; type: "double" } + } + Signal { + name: "selectByKeyboardChanged" + revision: 1 + Parameter { name: "selectByKeyboard"; type: "bool" } + } + Signal { + name: "selectByMouseChanged" + Parameter { name: "selectByMouse"; type: "bool" } + } + Signal { + name: "mouseSelectionModeChanged" + Parameter { name: "mode"; type: "QQuickTextEdit::SelectionMode" } + } + Signal { + name: "linkActivated" + Parameter { name: "link"; type: "string" } + } + Signal { + name: "linkHovered" + revision: 2 + Parameter { name: "link"; type: "string" } + } + Signal { name: "editingFinished"; revision: 6 } + Signal { name: "paddingChanged"; revision: 6 } + Signal { name: "topPaddingChanged"; revision: 6 } + Signal { name: "leftPaddingChanged"; revision: 6 } + Signal { name: "rightPaddingChanged"; revision: 6 } + Signal { name: "bottomPaddingChanged"; revision: 6 } + Method { name: "selectAll" } + Method { name: "selectWord" } + Method { + name: "select" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { name: "deselect" } + Method { + name: "isRightToLeft" + type: "bool" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { name: "cut" } + Method { name: "copy" } + Method { name: "paste" } + Method { name: "undo" } + Method { name: "redo" } + Method { + name: "insert" + Parameter { name: "position"; type: "int" } + Parameter { name: "text"; type: "string" } + } + Method { + name: "remove" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { + name: "append" + revision: 2 + Parameter { name: "text"; type: "string" } + } + Method { name: "clear"; revision: 7 } + Method { + name: "inputMethodQuery" + revision: 4 + type: "QVariant" + Parameter { name: "query"; type: "Qt::InputMethodQuery" } + Parameter { name: "argument"; type: "QVariant" } + } + Method { + name: "positionToRectangle" + type: "QRectF" + Parameter { type: "int" } + } + Method { + name: "positionAt" + type: "int" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + Method { + name: "moveCursorSelection" + Parameter { name: "pos"; type: "int" } + } + Method { + name: "moveCursorSelection" + Parameter { name: "pos"; type: "int" } + Parameter { name: "mode"; type: "SelectionMode" } + } + Method { + name: "getText" + type: "string" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { + name: "getFormattedText" + type: "string" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { + name: "linkAt" + revision: 3 + type: "string" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + } + Component { + name: "QQuickTextField" + defaultProperty: "data" + prototype: "QQuickTextInput" + exports: ["QtQuick.Templates/TextField 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "font"; type: "QFont" } + Property { name: "implicitWidth"; type: "double" } + Property { name: "implicitHeight"; type: "double" } + Property { name: "background"; type: "QQuickItem"; isPointer: true } + Property { name: "placeholderText"; type: "string" } + Property { name: "focusReason"; type: "Qt::FocusReason" } + Signal { name: "implicitWidthChanged3" } + Signal { name: "implicitHeightChanged3" } + Signal { + name: "pressAndHold" + Parameter { name: "mouse"; type: "QQuickMouseEvent"; isPointer: true } + } + } + Component { + name: "QQuickTextInput" + defaultProperty: "data" + prototype: "QQuickImplicitSizeItem" + Enum { + name: "EchoMode" + values: { + "Normal": 0, + "NoEcho": 1, + "Password": 2, + "PasswordEchoOnEdit": 3 + } + } + Enum { + name: "HAlignment" + values: { + "AlignLeft": 1, + "AlignRight": 2, + "AlignHCenter": 4 + } + } + Enum { + name: "VAlignment" + values: { + "AlignTop": 32, + "AlignBottom": 64, + "AlignVCenter": 128 + } + } + Enum { + name: "WrapMode" + values: { + "NoWrap": 0, + "WordWrap": 1, + "WrapAnywhere": 3, + "WrapAtWordBoundaryOrAnywhere": 4, + "Wrap": 4 + } + } + Enum { + name: "SelectionMode" + values: { + "SelectCharacters": 0, + "SelectWords": 1 + } + } + Enum { + name: "CursorPosition" + values: { + "CursorBetweenCharacters": 0, + "CursorOnCharacter": 1 + } + } + Enum { + name: "RenderType" + values: { + "QtRendering": 0, + "NativeRendering": 1 + } + } + Property { name: "text"; type: "string" } + Property { name: "length"; type: "int"; isReadonly: true } + Property { name: "color"; type: "QColor" } + Property { name: "selectionColor"; type: "QColor" } + Property { name: "selectedTextColor"; type: "QColor" } + Property { name: "font"; type: "QFont" } + Property { name: "horizontalAlignment"; type: "HAlignment" } + Property { name: "effectiveHorizontalAlignment"; type: "HAlignment"; isReadonly: true } + Property { name: "verticalAlignment"; type: "VAlignment" } + Property { name: "wrapMode"; type: "WrapMode" } + Property { name: "readOnly"; type: "bool" } + Property { name: "cursorVisible"; type: "bool" } + Property { name: "cursorPosition"; type: "int" } + Property { name: "cursorRectangle"; type: "QRectF"; isReadonly: true } + Property { name: "cursorDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "selectionStart"; type: "int"; isReadonly: true } + Property { name: "selectionEnd"; type: "int"; isReadonly: true } + Property { name: "selectedText"; type: "string"; isReadonly: true } + Property { name: "maximumLength"; type: "int" } + Property { name: "validator"; type: "QValidator"; isPointer: true } + Property { name: "inputMask"; type: "string" } + Property { name: "inputMethodHints"; type: "Qt::InputMethodHints" } + Property { name: "acceptableInput"; type: "bool"; isReadonly: true } + Property { name: "echoMode"; type: "EchoMode" } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "passwordCharacter"; type: "string" } + Property { name: "passwordMaskDelay"; revision: 3; type: "int" } + Property { name: "displayText"; type: "string"; isReadonly: true } + Property { name: "preeditText"; revision: 7; type: "string"; isReadonly: true } + Property { name: "autoScroll"; type: "bool" } + Property { name: "selectByMouse"; type: "bool" } + Property { name: "mouseSelectionMode"; type: "SelectionMode" } + Property { name: "persistentSelection"; type: "bool" } + Property { name: "canPaste"; type: "bool"; isReadonly: true } + Property { name: "canUndo"; type: "bool"; isReadonly: true } + Property { name: "canRedo"; type: "bool"; isReadonly: true } + Property { name: "inputMethodComposing"; type: "bool"; isReadonly: true } + Property { name: "contentWidth"; type: "double"; isReadonly: true } + Property { name: "contentHeight"; type: "double"; isReadonly: true } + Property { name: "renderType"; type: "RenderType" } + Property { name: "padding"; revision: 6; type: "double" } + Property { name: "topPadding"; revision: 6; type: "double" } + Property { name: "leftPadding"; revision: 6; type: "double" } + Property { name: "rightPadding"; revision: 6; type: "double" } + Property { name: "bottomPadding"; revision: 6; type: "double" } + Signal { name: "accepted" } + Signal { name: "editingFinished"; revision: 2 } + Signal { + name: "fontChanged" + Parameter { name: "font"; type: "QFont" } + } + Signal { + name: "horizontalAlignmentChanged" + Parameter { name: "alignment"; type: "QQuickTextInput::HAlignment" } + } + Signal { + name: "verticalAlignmentChanged" + Parameter { name: "alignment"; type: "QQuickTextInput::VAlignment" } + } + Signal { + name: "readOnlyChanged" + Parameter { name: "isReadOnly"; type: "bool" } + } + Signal { + name: "cursorVisibleChanged" + Parameter { name: "isCursorVisible"; type: "bool" } + } + Signal { + name: "maximumLengthChanged" + Parameter { name: "maximumLength"; type: "int" } + } + Signal { + name: "inputMaskChanged" + Parameter { name: "inputMask"; type: "string" } + } + Signal { + name: "echoModeChanged" + Parameter { name: "echoMode"; type: "QQuickTextInput::EchoMode" } + } + Signal { + name: "passwordMaskDelayChanged" + revision: 3 + Parameter { name: "delay"; type: "int" } + } + Signal { name: "preeditTextChanged"; revision: 7 } + Signal { + name: "activeFocusOnPressChanged" + Parameter { name: "activeFocusOnPress"; type: "bool" } + } + Signal { + name: "autoScrollChanged" + Parameter { name: "autoScroll"; type: "bool" } + } + Signal { + name: "selectByMouseChanged" + Parameter { name: "selectByMouse"; type: "bool" } + } + Signal { + name: "mouseSelectionModeChanged" + Parameter { name: "mode"; type: "QQuickTextInput::SelectionMode" } + } + Signal { name: "contentSizeChanged" } + Signal { name: "paddingChanged"; revision: 6 } + Signal { name: "topPaddingChanged"; revision: 6 } + Signal { name: "leftPaddingChanged"; revision: 6 } + Signal { name: "rightPaddingChanged"; revision: 6 } + Signal { name: "bottomPaddingChanged"; revision: 6 } + Method { name: "selectAll" } + Method { name: "selectWord" } + Method { + name: "select" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { name: "deselect" } + Method { + name: "isRightToLeft" + type: "bool" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { name: "cut" } + Method { name: "copy" } + Method { name: "paste" } + Method { name: "undo" } + Method { name: "redo" } + Method { + name: "insert" + Parameter { name: "position"; type: "int" } + Parameter { name: "text"; type: "string" } + } + Method { + name: "remove" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { + name: "ensureVisible" + revision: 3 + Parameter { name: "position"; type: "int" } + } + Method { name: "clear"; revision: 7 } + Method { + name: "positionAt" + Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "positionToRectangle" + type: "QRectF" + Parameter { name: "pos"; type: "int" } + } + Method { + name: "moveCursorSelection" + Parameter { name: "pos"; type: "int" } + } + Method { + name: "moveCursorSelection" + Parameter { name: "pos"; type: "int" } + Parameter { name: "mode"; type: "SelectionMode" } + } + Method { + name: "inputMethodQuery" + revision: 3 + type: "QVariant" + Parameter { name: "query"; type: "Qt::InputMethodQuery" } + Parameter { name: "argument"; type: "QVariant" } + } + Method { + name: "getText" + type: "string" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + } + Component { + name: "QQuickToolBar" + defaultProperty: "contentData" + prototype: "QQuickFrame" + exports: ["QtQuick.Templates/ToolBar 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "Position" + values: { + "Header": 0, + "Footer": 1 + } + } + Property { name: "position"; type: "Position" } + } + Component { + name: "QQuickToolButton" + defaultProperty: "data" + prototype: "QQuickButton" + exports: ["QtQuick.Templates/ToolButton 2.0"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickToolTip" + defaultProperty: "contentData" + prototype: "QQuickPopup" + exports: ["QtQuick.Templates/ToolTip 2.0"] + exportMetaObjectRevisions: [0] + attachedType: "QQuickToolTipAttached" + Property { name: "delay"; type: "int" } + Property { name: "timeout"; type: "int" } + Property { name: "text"; type: "string" } + Method { name: "open" } + Method { name: "close" } + } + Component { + name: "QQuickToolTipAttached" + prototype: "QObject" + Property { name: "text"; type: "string" } + Property { name: "delay"; type: "int" } + Property { name: "timeout"; type: "int" } + Property { name: "visible"; type: "bool" } + Property { name: "toolTip"; type: "QQuickToolTip"; isReadonly: true; isPointer: true } + Method { + name: "show" + Parameter { name: "text"; type: "string" } + Parameter { name: "ms"; type: "int" } + } + Method { + name: "show" + Parameter { name: "text"; type: "string" } + } + Method { name: "hide" } + } + Component { + name: "QQuickTumbler" + defaultProperty: "data" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/Tumbler 2.0"] + exportMetaObjectRevisions: [0] + attachedType: "QQuickTumblerAttached" + Property { name: "model"; type: "QVariant" } + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "currentIndex"; type: "int" } + Property { name: "currentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "delegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "visibleItemCount"; type: "int" } + } + Component { + name: "QQuickTumblerAttached" + prototype: "QObject" + Property { name: "tumbler"; type: "QQuickTumbler"; isReadonly: true; isPointer: true } + Property { name: "displacement"; type: "double"; isReadonly: true } + } +} diff --git a/bin/win64/QtQuick/Templates.2/qmldir b/bin/win64/QtQuick/Templates.2/qmldir new file mode 100644 index 0000000..afb9481 --- /dev/null +++ b/bin/win64/QtQuick/Templates.2/qmldir @@ -0,0 +1,4 @@ +module QtQuick.Templates +plugin qtquicktemplates2plugin +classname QtQuickTemplates2Plugin +depends QtQuick.Window 2.2 diff --git a/bin/win64/QtQuick/Templates.2/qtquicktemplates2plugin.dll b/bin/win64/QtQuick/Templates.2/qtquicktemplates2plugin.dll new file mode 100644 index 0000000..f5f6f61 Binary files /dev/null and b/bin/win64/QtQuick/Templates.2/qtquicktemplates2plugin.dll differ diff --git a/bin/win64/QtQuick/Window.2/plugins.qmltypes b/bin/win64/QtQuick/Window.2/plugins.qmltypes new file mode 100644 index 0000000..8c21271 --- /dev/null +++ b/bin/win64/QtQuick/Window.2/plugins.qmltypes @@ -0,0 +1,283 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by: +// 'qmlplugindump -nonrelocatable QtQuick.Window 2.2' + +Module { + dependencies: [] + Component { + name: "QQuickScreen" + prototype: "QObject" + exports: ["QtQuick.Window/Screen 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + attachedType: "QQuickScreenAttached" + } + Component { + name: "QQuickScreenAttached" + prototype: "QObject" + Property { name: "name"; type: "string"; isReadonly: true } + Property { name: "width"; type: "int"; isReadonly: true } + Property { name: "height"; type: "int"; isReadonly: true } + Property { name: "desktopAvailableWidth"; type: "int"; isReadonly: true } + Property { name: "desktopAvailableHeight"; type: "int"; isReadonly: true } + Property { name: "logicalPixelDensity"; type: "double"; isReadonly: true } + Property { name: "pixelDensity"; type: "double"; isReadonly: true } + Property { name: "devicePixelRatio"; type: "double"; isReadonly: true } + Property { name: "primaryOrientation"; type: "Qt::ScreenOrientation"; isReadonly: true } + Property { name: "orientation"; type: "Qt::ScreenOrientation"; isReadonly: true } + Property { name: "orientationUpdateMask"; type: "Qt::ScreenOrientations" } + Signal { name: "desktopGeometryChanged" } + Method { + name: "angleBetween" + type: "int" + Parameter { name: "a"; type: "int" } + Parameter { name: "b"; type: "int" } + } + } + Component { + name: "QQuickWindow" + defaultProperty: "data" + prototype: "QWindow" + exports: ["QtQuick.Window/Window 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "SceneGraphError" + values: { + "ContextNotAvailable": 1 + } + } + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "color"; type: "QColor" } + Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { + name: "activeFocusItem" + revision: 1 + type: "QQuickItem" + isReadonly: true + isPointer: true + } + Signal { name: "frameSwapped" } + Signal { + name: "openglContextCreated" + revision: 2 + Parameter { name: "context"; type: "QOpenGLContext"; isPointer: true } + } + Signal { name: "sceneGraphInitialized" } + Signal { name: "sceneGraphInvalidated" } + Signal { name: "beforeSynchronizing" } + Signal { name: "afterSynchronizing"; revision: 2 } + Signal { name: "beforeRendering" } + Signal { name: "afterRendering" } + Signal { name: "afterAnimating"; revision: 2 } + Signal { name: "sceneGraphAboutToStop"; revision: 2 } + Signal { + name: "closing" + revision: 1 + Parameter { name: "close"; type: "QQuickCloseEvent"; isPointer: true } + } + Signal { + name: "colorChanged" + Parameter { type: "QColor" } + } + Signal { name: "activeFocusItemChanged"; revision: 1 } + Signal { + name: "sceneGraphError" + revision: 2 + Parameter { name: "error"; type: "QQuickWindow::SceneGraphError" } + Parameter { name: "message"; type: "string" } + } + Method { name: "update" } + Method { name: "releaseResources" } + } + Component { + name: "QQuickWindowAttached" + prototype: "QObject" + Property { name: "visibility"; type: "QWindow::Visibility"; isReadonly: true } + Property { name: "active"; type: "bool"; isReadonly: true } + Property { name: "activeFocusItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "width"; type: "int"; isReadonly: true } + Property { name: "height"; type: "int"; isReadonly: true } + } + Component { + name: "QQuickWindowQmlImpl" + defaultProperty: "data" + prototype: "QQuickWindow" + exports: ["QtQuick.Window/Window 2.1", "QtQuick.Window/Window 2.2"] + exportMetaObjectRevisions: [0, 1] + attachedType: "QQuickWindowAttached" + Property { name: "visible"; type: "bool" } + Property { name: "visibility"; type: "Visibility" } + Signal { + name: "visibleChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "visibilityChanged" + Parameter { name: "visibility"; type: "QWindow::Visibility" } + } + } + Component { + name: "QWindow" + prototype: "QObject" + Enum { + name: "Visibility" + values: { + "Hidden": 0, + "AutomaticVisibility": 1, + "Windowed": 2, + "Minimized": 3, + "Maximized": 4, + "FullScreen": 5 + } + } + Property { name: "title"; type: "string" } + Property { name: "modality"; type: "Qt::WindowModality" } + Property { name: "flags"; type: "Qt::WindowFlags" } + Property { name: "x"; type: "int" } + Property { name: "y"; type: "int" } + Property { name: "width"; type: "int" } + Property { name: "height"; type: "int" } + Property { name: "minimumWidth"; type: "int" } + Property { name: "minimumHeight"; type: "int" } + Property { name: "maximumWidth"; type: "int" } + Property { name: "maximumHeight"; type: "int" } + Property { name: "visible"; type: "bool" } + Property { name: "active"; revision: 1; type: "bool"; isReadonly: true } + Property { name: "visibility"; revision: 1; type: "Visibility" } + Property { name: "contentOrientation"; type: "Qt::ScreenOrientation" } + Property { name: "opacity"; revision: 1; type: "double" } + Signal { + name: "screenChanged" + Parameter { name: "screen"; type: "QScreen"; isPointer: true } + } + Signal { + name: "modalityChanged" + Parameter { name: "modality"; type: "Qt::WindowModality" } + } + Signal { + name: "windowStateChanged" + Parameter { name: "windowState"; type: "Qt::WindowState" } + } + Signal { + name: "windowTitleChanged" + revision: 2 + Parameter { name: "title"; type: "string" } + } + Signal { + name: "xChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "yChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "widthChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "heightChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "minimumWidthChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "minimumHeightChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "maximumWidthChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "maximumHeightChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "visibleChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "visibilityChanged" + revision: 1 + Parameter { name: "visibility"; type: "QWindow::Visibility" } + } + Signal { name: "activeChanged"; revision: 1 } + Signal { + name: "contentOrientationChanged" + Parameter { name: "orientation"; type: "Qt::ScreenOrientation" } + } + Signal { + name: "focusObjectChanged" + Parameter { name: "object"; type: "QObject"; isPointer: true } + } + Signal { + name: "opacityChanged" + revision: 1 + Parameter { name: "opacity"; type: "double" } + } + Method { name: "requestActivate"; revision: 1 } + Method { + name: "setVisible" + Parameter { name: "visible"; type: "bool" } + } + Method { name: "show" } + Method { name: "hide" } + Method { name: "showMinimized" } + Method { name: "showMaximized" } + Method { name: "showFullScreen" } + Method { name: "showNormal" } + Method { name: "close"; type: "bool" } + Method { name: "raise" } + Method { name: "lower" } + Method { + name: "setTitle" + Parameter { type: "string" } + } + Method { + name: "setX" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setY" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setWidth" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setHeight" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setMinimumWidth" + Parameter { name: "w"; type: "int" } + } + Method { + name: "setMinimumHeight" + Parameter { name: "h"; type: "int" } + } + Method { + name: "setMaximumWidth" + Parameter { name: "w"; type: "int" } + } + Method { + name: "setMaximumHeight" + Parameter { name: "h"; type: "int" } + } + Method { + name: "alert" + revision: 1 + Parameter { name: "msec"; type: "int" } + } + Method { name: "requestUpdate"; revision: 3 } + } +} diff --git a/bin/win64/QtQuick/Window.2/qmldir b/bin/win64/QtQuick/Window.2/qmldir new file mode 100644 index 0000000..fb6202b --- /dev/null +++ b/bin/win64/QtQuick/Window.2/qmldir @@ -0,0 +1,5 @@ +module QtQuick.Window +plugin windowplugin +classname QtQuick2WindowPlugin +typeinfo plugins.qmltypes +designersupported diff --git a/bin/win64/QtQuick/Window.2/windowplugin.dll b/bin/win64/QtQuick/Window.2/windowplugin.dll new file mode 100644 index 0000000..14d9d7d Binary files /dev/null and b/bin/win64/QtQuick/Window.2/windowplugin.dll differ diff --git a/bin/win64/Universal/ApplicationWindow.qml b/bin/win64/Universal/ApplicationWindow.qml new file mode 100644 index 0000000..70bd403 --- /dev/null +++ b/bin/win64/Universal/ApplicationWindow.qml @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 +import QtQuick.Controls.Universal.impl 2.0 + +T.ApplicationWindow { + id: window + + color: Universal.background + + overlay.modal: Rectangle { + color: window.Universal.baseLowColor + } + + overlay.modeless: Rectangle { + color: window.Universal.baseLowColor + } + + FocusRectangle { + parent: window.activeFocusControl + width: parent ? parent.width : 0 + height: parent ? parent.height : 0 + visible: parent && !!parent.useSystemFocusVisuals && !!parent.visualFocus + } +} diff --git a/bin/win64/Universal/BusyIndicator.qml b/bin/win64/Universal/BusyIndicator.qml new file mode 100644 index 0000000..ef66641 --- /dev/null +++ b/bin/win64/Universal/BusyIndicator.qml @@ -0,0 +1,66 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 +import QtQuick.Controls.Universal.impl 2.0 + +T.BusyIndicator { + id: control + + implicitWidth: contentItem.implicitWidth + leftPadding + rightPadding + implicitHeight: contentItem.implicitHeight + topPadding + bottomPadding + + //! [contentItem] + contentItem: ProgressRing { + id: ring + + implicitWidth: 20 + implicitHeight: 20 + + readonly property real size: Math.min(control.availableWidth, control.availableHeight) + + count: size < 60 ? 5 : 6 // "Small" vs. "Large" + color: control.Universal.accent + + ProgressRingAnimator { + target: ring + running: control.visible && control.running + } + } + //! [contentItem] +} diff --git a/bin/win64/Universal/Button.qml b/bin/win64/Universal/Button.qml new file mode 100644 index 0000000..60a2ac5 --- /dev/null +++ b/bin/win64/Universal/Button.qml @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.Button { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 8 + topPadding: padding - 4 + bottomPadding: padding - 4 + + property bool useSystemFocusVisuals: true + + //! [contentItem] + contentItem: Text { + text: control.text + font: control.font + elide: Text.ElideRight + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + + opacity: enabled ? 1.0 : 0.2 + color: control.Universal.foreground + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitWidth: 32 + implicitHeight: 32 + + visible: !control.flat || control.down || control.checked || control.highlighted + color: control.down ? control.Universal.baseMediumLowColor : + control.enabled && (control.highlighted || control.checked) ? control.Universal.accent : + control.Universal.baseLowColor + } + //! [background] +} diff --git a/bin/win64/Universal/CheckBox.qml b/bin/win64/Universal/CheckBox.qml new file mode 100644 index 0000000..262f16b --- /dev/null +++ b/bin/win64/Universal/CheckBox.qml @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 +import QtQuick.Controls.Universal.impl 2.0 + +T.CheckBox { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 6 + spacing: 8 + + property bool useSystemFocusVisuals: true + + //! [indicator] + indicator: CheckIndicator { + x: text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + //! [indicator] + + //! [contentItem] + contentItem: Text { + leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + + opacity: enabled ? 1.0 : 0.2 + color: control.Universal.foreground + } + //! [contentItem] +} diff --git a/bin/win64/Universal/CheckDelegate.qml b/bin/win64/Universal/CheckDelegate.qml new file mode 100644 index 0000000..9441c7b --- /dev/null +++ b/bin/win64/Universal/CheckDelegate.qml @@ -0,0 +1,96 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.CheckDelegate { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + spacing: 12 + + padding: 12 + topPadding: padding - 1 + bottomPadding: padding + 1 + + //! [indicator] + indicator: CheckIndicator { + x: text ? (control.mirrored ? control.leftPadding : control.width - width - control.rightPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + //! [indicator] + + //! [contentItem] + contentItem: Text { + leftPadding: !control.mirrored ? 0 : control.indicator.width + control.spacing + rightPadding: control.mirrored ? 0 : control.indicator.width + control.spacing + + text: control.text + font: control.font + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + + opacity: enabled ? 1.0 : 0.2 + color: control.Universal.foreground + } + //! [contentItem] + + //! [background] + background: Rectangle { + visible: control.down || control.highlighted || control.visualFocus + color: control.down ? control.Universal.listMediumColor : control.Universal.altMediumLowColor + Rectangle { + width: parent.width + height: parent.height + visible: control.visualFocus || control.highlighted + color: control.Universal.accent + opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6 + } + + } + //! [background] +} diff --git a/bin/win64/Universal/CheckIndicator.qml b/bin/win64/Universal/CheckIndicator.qml new file mode 100644 index 0000000..eeecf26 --- /dev/null +++ b/bin/win64/Universal/CheckIndicator.qml @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +Rectangle { + implicitWidth: 20 + implicitHeight: 20 + + color: !control.enabled ? "transparent" : + control.down && control.checkState !== Qt.PartiallyChecked ? control.Universal.baseMediumColor : + control.checkState === Qt.Checked ? control.Universal.accent : "transparent" + border.color: !control.enabled ? control.Universal.baseLowColor : + control.down ? control.Universal.baseMediumColor : + control.checked ? control.Universal.accent : control.Universal.baseMediumHighColor + border.width: 2 // CheckBoxBorderThemeThickness + + property Item control + + Image { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + + visible: control.checkState === Qt.Checked + source: "image://universal/checkmark/" + (!control.enabled ? control.Universal.baseLowColor : control.Universal.chromeWhiteColor) + sourceSize.width: width + sourceSize.height: height + } + + Rectangle { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: parent.width / 2 + height: parent.height / 2 + + visible: control.checkState === Qt.PartiallyChecked + color: !control.enabled ? control.Universal.baseLowColor : + control.down ? control.Universal.baseMediumColor : control.Universal.baseMediumHighColor + } +} diff --git a/bin/win64/Universal/ComboBox.qml b/bin/win64/Universal/ComboBox.qml new file mode 100644 index 0000000..6d550aa --- /dev/null +++ b/bin/win64/Universal/ComboBox.qml @@ -0,0 +1,143 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Window 2.2 +import QtQuick.Controls 2.0 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.ComboBox { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + spacing: 10 + padding: 12 + topPadding: padding - 7 + rightPadding: padding - 2 + bottomPadding: padding - 5 + + //! [delegate] + delegate: ItemDelegate { + width: control.width + text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] : model[control.textRole]) : modelData + highlighted: control.highlightedIndex === index + } + //! [delegate] + + //! [indicator] + indicator: Image { + x: control.mirrored ? control.leftPadding : control.width - width - control.rightPadding + y: control.topPadding + (control.availableHeight - height) / 2 + source: "image://universal/downarrow/" + (!control.enabled ? control.Universal.baseLowColor : control.Universal.baseMediumHighColor) + sourceSize.width: width + sourceSize.height: height + } + //! [indicator] + + //! [contentItem] + contentItem: Text { + leftPadding: control.mirrored && control.indicator ? control.indicator.width + control.spacing : 0 + rightPadding: !control.mirrored && control.indicator ? control.indicator.width + control.spacing : 0 + + text: control.displayText + font: control.font + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + elide: Text.ElideRight + + opacity: enabled ? 1.0 : 0.2 + color: control.Universal.foreground + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitWidth: 120 + implicitHeight: 32 + + border.width: 2 // ComboBoxBorderThemeThickness + border.color: !control.enabled ? control.Universal.baseLowColor : + control.pressed || popup.visible ? control.Universal.baseMediumLowColor : control.Universal.baseMediumLowColor + color: !control.enabled ? control.Universal.baseLowColor : + control.pressed || popup.visible ? control.Universal.listMediumColor : control.Universal.altMediumLowColor + + Rectangle { + x: 2 + y: 2 + width: parent.width - 4 + height: parent.height - 4 + + visible: control.visualFocus + color: control.Universal.accent + opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6 + } + } + //! [background] + + //! [popup] + popup: T.Popup { + width: control.width + implicitHeight: Math.min(396, listview.contentHeight) + topMargin: 8 + bottomMargin: 8 + + Universal.theme: control.Universal.theme + Universal.accent: control.Universal.accent + + contentItem: ListView { + id: listview + clip: true + model: control.popup.visible ? control.delegateModel : null + currentIndex: control.highlightedIndex + + T.ScrollIndicator.vertical: ScrollIndicator { } + } + + background: Rectangle { + color: control.Universal.chromeMediumLowColor + border.color: control.Universal.chromeHighColor + border.width: 1 // FlyoutBorderThemeThickness + } + } + //! [popup] +} diff --git a/bin/win64/Universal/Dial.qml b/bin/win64/Universal/Dial.qml new file mode 100644 index 0000000..466c602 --- /dev/null +++ b/bin/win64/Universal/Dial.qml @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.Dial { + id: control + + implicitWidth: 100 + implicitHeight: 100 + + //! [background] + background: Rectangle { + x: control.width / 2 - width / 2 + y: control.height / 2 - height / 2 + width: Math.max(64, Math.min(control.width, control.height)) + height: width + radius: width / 2 + color: "transparent" + border.color: !control.enabled ? control.Universal.baseLowColor : control.Universal.baseMediumColor + border.width: 2 + } + //! [background] + + //! [handle] + handle: Rectangle { + implicitWidth: 20 + implicitHeight: 20 + + x: background.x + background.width / 2 - handle.width / 2 + y: background.y + background.height / 2 - handle.height / 2 + + radius: width / 2 + color: !control.enabled ? control.Universal.baseLowColor : + control.down ? control.Universal.baseMediumColor : control.Universal.baseMediumHighColor + + transform: [ + Translate { + y: -background.height * 0.4 + handle.height / 2 + }, + Rotation { + angle: control.angle + origin.x: handle.width / 2 + origin.y: handle.height / 2 + } + ] + } + //! [handle] +} diff --git a/bin/win64/Universal/Drawer.qml b/bin/win64/Universal/Drawer.qml new file mode 100644 index 0000000..e23403a --- /dev/null +++ b/bin/win64/Universal/Drawer.qml @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.Drawer { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) + + contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) + contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) + + topPadding: control.edge === Qt.BottomEdge + leftPadding: control.edge === Qt.RightEdge + rightPadding: control.edge === Qt.LeftEdge + bottomPadding: control.edge === Qt.TopEdge + + //! [enter] + enter: Transition { SmoothedAnimation { velocity: 5 } } + //! [enter] + + //! [exit] + exit: Transition { SmoothedAnimation { velocity: 5 } } + //! [exit] + + //! [contentItem] + contentItem: Item { } + //! [contentItem] + + //! [background] + background: Rectangle { + color: control.Universal.chromeMediumLowColor + Rectangle { + readonly property bool horizontal: control.edge === Qt.LeftEdge || control.edge === Qt.RightEdge + width: horizontal ? 1 : parent.width + height: horizontal ? parent.height : 1 + color: control.Universal.chromeHighColor + x: control.edge === Qt.LeftEdge ? parent.width - 1 : 0 + y: control.edge === Qt.TopEdge ? parent.height - 1 : 0 + } + } + //! [background] +} diff --git a/bin/win64/Universal/Frame.qml b/bin/win64/Universal/Frame.qml new file mode 100644 index 0000000..8d8b9d7 --- /dev/null +++ b/bin/win64/Universal/Frame.qml @@ -0,0 +1,62 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.Frame { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) + + contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) + contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) + + padding: 12 + + //! [contentItem] + contentItem: Item { } + //! [contentItem] + + //! [background] + background: Rectangle { + color: "transparent" + border.color: control.Universal.chromeDisabledLowColor + } + //! [background] +} diff --git a/bin/win64/Universal/GroupBox.qml b/bin/win64/Universal/GroupBox.qml new file mode 100644 index 0000000..a163fb1 --- /dev/null +++ b/bin/win64/Universal/GroupBox.qml @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.GroupBox { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + label ? label.implicitWidth + leftPadding + rightPadding : 0, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) + + contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) + contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) + + spacing: 12 + padding: 12 + topPadding: padding + (label && label.implicitWidth > 0 ? label.implicitHeight + spacing : 0) + + //! [contentItem] + contentItem: Item { } + //! [contentItem] + + //! [label] + label: Text { + x: control.leftPadding + width: control.availableWidth + + text: control.title + font: control.font + elide: Text.ElideRight + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + + opacity: enabled ? 1.0 : 0.2 + color: control.Universal.foreground + } + //! [label] + + //! [background] + background: Rectangle { + y: control.topPadding - control.padding + width: parent.width + height: parent.height - control.topPadding + control.padding + + color: "transparent" + border.color: control.Universal.chromeDisabledLowColor + } + //! [background] +} diff --git a/bin/win64/Universal/ItemDelegate.qml b/bin/win64/Universal/ItemDelegate.qml new file mode 100644 index 0000000..af239e4 --- /dev/null +++ b/bin/win64/Universal/ItemDelegate.qml @@ -0,0 +1,88 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.ItemDelegate { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + spacing: 12 + + padding: 12 + topPadding: padding - 1 + bottomPadding: padding + 1 + + //! [contentItem] + contentItem: Text { + leftPadding: !control.mirrored ? (control.indicator ? control.indicator.width : 0) + control.spacing : 0 + rightPadding: control.mirrored ? (control.indicator ? control.indicator.width : 0) + control.spacing : 0 + + text: control.text + font: control.font + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + + opacity: enabled ? 1.0 : 0.2 + color: control.Universal.foreground + } + //! [contentItem] + + //! [background] + background: Rectangle { + visible: control.down || control.highlighted || control.visualFocus + color: control.down ? control.Universal.listMediumColor : control.Universal.altMediumLowColor + Rectangle { + width: parent.width + height: parent.height + visible: control.visualFocus || control.highlighted + color: control.Universal.accent + opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6 + } + + } + //! [background] +} diff --git a/bin/win64/Universal/Label.qml b/bin/win64/Universal/Label.qml new file mode 100644 index 0000000..9b50f4f --- /dev/null +++ b/bin/win64/Universal/Label.qml @@ -0,0 +1,47 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.Label { + id: control + + opacity: enabled ? 1.0 : 0.2 + color: control.Universal.foreground + linkColor: Universal.accent +} diff --git a/bin/win64/Universal/Menu.qml b/bin/win64/Universal/Menu.qml new file mode 100644 index 0000000..d506fea --- /dev/null +++ b/bin/win64/Universal/Menu.qml @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Controls 2.0 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.Menu { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem ? contentItem.implicitWidth + leftPadding + rightPadding : 0) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem ? contentItem.implicitHeight : 0) + topPadding + bottomPadding + + margins: 0 + + //! [contentItem] + contentItem: ListView { + implicitHeight: contentHeight + model: control.contentModel + // TODO: improve this? + interactive: ApplicationWindow.window ? contentHeight > ApplicationWindow.window.height : false + clip: true + keyNavigationWraps: false + currentIndex: -1 + + ScrollIndicator.vertical: ScrollIndicator {} + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitWidth: 200 + implicitHeight: 40 + color: control.Universal.chromeMediumLowColor + border.color: control.Universal.chromeHighColor + border.width: 1 // FlyoutBorderThemeThickness + } + //! [background] +} diff --git a/bin/win64/Universal/MenuItem.qml b/bin/win64/Universal/MenuItem.qml new file mode 100644 index 0000000..342c0d7 --- /dev/null +++ b/bin/win64/Universal/MenuItem.qml @@ -0,0 +1,102 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.MenuItem { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 12 + topPadding: padding - 1 + bottomPadding: padding + 1 + spacing: 12 + + //! [contentItem] + contentItem: Text { + leftPadding: !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + color: !control.enabled ? control.Universal.baseLowColor : control.Universal.baseHighColor + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + } + //! [contentItem] + + //! [indicator] + indicator: Image { + x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + + visible: control.checked + source: !control.checkable ? "" : "image://universal/checkmark/" + (!control.enabled ? control.Universal.baseLowColor : control.down ? control.Universal.baseHighColor : control.Universal.baseMediumHighColor) + sourceSize.width: width + sourceSize.height: height + } + //! [indicator] + + //! [background] + background: Rectangle { + implicitWidth: 200 + implicitHeight: 40 + + color: !control.enabled ? control.Universal.baseLowColor : + control.down ? control.Universal.listMediumColor : control.Universal.altMediumLowColor + + Rectangle { + x: 1; y: 1 + width: parent.width - 2 + height: parent.height - 2 + + visible: control.visualFocus + color: control.Universal.accent + opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6 + } + } + //! [background] +} diff --git a/bin/win64/Universal/Page.qml b/bin/win64/Universal/Page.qml new file mode 100644 index 0000000..f4509b4 --- /dev/null +++ b/bin/win64/Universal/Page.qml @@ -0,0 +1,53 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.Page { + id: control + + //! [contentItem] + contentItem: Item { } + //! [contentItem] + + //! [background] + background: Rectangle { + color: control.Universal.background + } + //! [background] +} diff --git a/bin/win64/Universal/PageIndicator.qml b/bin/win64/Universal/PageIndicator.qml new file mode 100644 index 0000000..636f029 --- /dev/null +++ b/bin/win64/Universal/PageIndicator.qml @@ -0,0 +1,73 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.PageIndicator { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + + padding: 6 + spacing: 7 + + //! [delegate] + delegate: Rectangle { + implicitWidth: 5 + implicitHeight: 5 + + radius: width / 2 + color: index === control.currentIndex ? control.Universal.baseMediumHighColor : + pressed ? control.Universal.baseMediumLowColor : control.Universal.baseLowColor + } + //! [delegate] + + //! [contentItem] + contentItem: Row { + spacing: control.spacing + + Repeater { + model: control.count + delegate: control.delegate + } + } + //! [contentItem] +} diff --git a/bin/win64/Universal/Pane.qml b/bin/win64/Universal/Pane.qml new file mode 100644 index 0000000..7a97da5 --- /dev/null +++ b/bin/win64/Universal/Pane.qml @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.Pane { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) + + contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) + contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) + + padding: 12 + + //! [contentItem] + contentItem: Item { } + //! [contentItem] + + //! [background] + background: Rectangle { + color: control.Universal.background + } + //! [background] +} diff --git a/bin/win64/Universal/Popup.qml b/bin/win64/Universal/Popup.qml new file mode 100644 index 0000000..892db08 --- /dev/null +++ b/bin/win64/Universal/Popup.qml @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.Popup { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentWidth > 0 ? contentWidth + leftPadding + rightPadding : 0) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentWidth > 0 ? contentHeight + topPadding + bottomPadding : 0) + + contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) + contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) + + padding: 12 + + contentItem: Item { } + + background: Rectangle { + color: control.Universal.chromeMediumLowColor + border.color: control.Universal.chromeHighColor + border.width: 1 // FlyoutBorderThemeThickness + } +} diff --git a/bin/win64/Universal/ProgressBar.qml b/bin/win64/Universal/ProgressBar.qml new file mode 100644 index 0000000..b8df774 --- /dev/null +++ b/bin/win64/Universal/ProgressBar.qml @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 +import QtQuick.Controls.Universal.impl 2.0 + +T.ProgressBar { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + + //! [contentItem] + contentItem: ProgressStrip { + id: strip + implicitHeight: 10 + + scale: control.mirrored ? -1 : 1 + indeterminate: control.indeterminate + color: control.Universal.accent + progress: control.position + clip: control.indeterminate + + ProgressStripAnimator { + target: strip + running: control.visible && control.indeterminate + } + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitWidth: 100 + implicitHeight: 10 + + x: control.leftPadding + y: control.topPadding + (control.availableHeight - height) / 2 + width: control.availableWidth + height: 10 + + visible: !control.indeterminate + color: control.Universal.baseLowColor + } + //! [background] +} diff --git a/bin/win64/Universal/RadioButton.qml b/bin/win64/Universal/RadioButton.qml new file mode 100644 index 0000000..b2f2966 --- /dev/null +++ b/bin/win64/Universal/RadioButton.qml @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 +import QtQuick.Controls.Universal.impl 2.0 + +T.RadioButton { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 6 + spacing: 8 + + property bool useSystemFocusVisuals: true + + //! [indicator] + indicator: RadioIndicator { + x: text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + //! [indicator] + + //! [contentItem] + contentItem: Text { + leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + + opacity: enabled ? 1.0 : 0.2 + color: control.Universal.foreground + } + //! [contentItem] +} diff --git a/bin/win64/Universal/RadioDelegate.qml b/bin/win64/Universal/RadioDelegate.qml new file mode 100644 index 0000000..8bf05d2 --- /dev/null +++ b/bin/win64/Universal/RadioDelegate.qml @@ -0,0 +1,98 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.RadioDelegate { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + spacing: 12 + + padding: 12 + topPadding: padding - 1 + bottomPadding: padding + 1 + + property Item control + + //! [indicator] + indicator: RadioIndicator { + x: text ? (control.mirrored ? control.leftPadding : control.width - width - control.rightPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + //! [indicator] + + //! [contentItem] + contentItem: Text { + leftPadding: !control.mirrored ? 0 : control.indicator.width + control.spacing + rightPadding: control.mirrored ? 0 : control.indicator.width + control.spacing + + text: control.text + font: control.font + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + + opacity: enabled ? 1.0 : 0.2 + color: control.Universal.foreground + } + //! [contentItem] + + //! [background] + background: Rectangle { + visible: control.down || control.highlighted || control.visualFocus + color: control.down ? control.Universal.listMediumColor : control.Universal.altMediumLowColor + Rectangle { + width: parent.width + height: parent.height + visible: control.visualFocus || control.highlighted + color: control.Universal.accent + opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6 + } + + } + //! [background] +} diff --git a/bin/win64/Universal/RadioIndicator.qml b/bin/win64/Universal/RadioIndicator.qml new file mode 100644 index 0000000..65790e6 --- /dev/null +++ b/bin/win64/Universal/RadioIndicator.qml @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Controls.Universal 2.0 + +Rectangle { + implicitWidth: 20 + implicitHeight: 20 + radius: width / 2 + color: "transparent" + border.width: 2 // RadioButtonBorderThemeThickness + border.color: control.checked ? "transparent" : + !control.enabled ? control.Universal.baseLowColor : + control.down ? control.Universal.baseMediumColor : control.Universal.baseMediumHighColor + + property var control + + Rectangle { + id: checkOuterEllipse + width: parent.width + height: parent.height + + radius: width / 2 + opacity: control.checked ? 1 : 0 + color: "transparent" + border.width: 2 // RadioButtonBorderThemeThickness + border.color: !control.enabled ? control.Universal.baseLowColor : + control.down ? control.Universal.baseMediumColor : control.Universal.accent + } + + Rectangle { + id: checkGlyph + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: parent.width / 2 + height: parent.height / 2 + + radius: width / 2 + opacity: control.checked ? 1 : 0 + color: !control.enabled ? control.Universal.baseLowColor : + control.down ? control.Universal.baseMediumColor : control.Universal.baseMediumHighColor + } +} diff --git a/bin/win64/Universal/RangeSlider.qml b/bin/win64/Universal/RangeSlider.qml new file mode 100644 index 0000000..061f95d --- /dev/null +++ b/bin/win64/Universal/RangeSlider.qml @@ -0,0 +1,118 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.RangeSlider { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + Math.max(background ? background.implicitWidth : 0, + first.handle ? first.handle.implicitWidth : 0, + second.handle ? second.handle.implicitWidth : 0) + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(background ? background.implicitHeight : 0, + first.handle ? first.handle.implicitHeight : 0, + second.handle ? second.handle.implicitHeight : 0) + topPadding + bottomPadding) + + padding: 6 + + //! [firstHandle] + first.handle: Rectangle { + implicitWidth: horizontal ? 8 : 24 + implicitHeight: horizontal ? 24 : 8 + + readonly property bool horizontal: control.orientation === Qt.Horizontal + + x: control.leftPadding + (horizontal ? control.first.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) + y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : control.first.visualPosition * (control.availableHeight - height)) + + radius: 4 + color: control.first.pressed ? control.Universal.chromeHighColor : control.enabled ? control.Universal.accent : control.Universal.chromeDisabledHighColor + } + //! [firstHandle] + + //! [secondHandle] + second.handle: Rectangle { + implicitWidth: horizontal ? 8 : 24 + implicitHeight: horizontal ? 24 : 8 + + readonly property bool horizontal: control.orientation === Qt.Horizontal + + x: control.leftPadding + (horizontal ? control.second.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) + y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : control.second.visualPosition * (control.availableHeight - height)) + + radius: 4 + color: control.second.pressed ? control.Universal.chromeHighColor : control.enabled ? control.Universal.accent : control.Universal.chromeDisabledHighColor + } + //! [secondHandle] + + //! [background] + background: Item { + implicitWidth: horizontal ? 200 : 18 + implicitHeight: horizontal ? 18 : 200 + + readonly property bool horizontal: control.orientation === Qt.Horizontal + + x: control.leftPadding + (horizontal ? 0 : (control.availableWidth - width) / 2) + y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : 0) + width: horizontal ? control.availableWidth : implicitWidth + height: horizontal ? implicitHeight : control.availableHeight + + scale: horizontal && control.mirrored ? -1 : 1 + + Rectangle { + x: parent.horizontal ? 0 : (parent.width - width) / 2 + y: parent.horizontal ? (parent.height - height) / 2 : 0 + width: parent.horizontal ? parent.width : 2 // SliderBackgroundThemeHeight + height: !parent.horizontal ? parent.height : 2 // SliderBackgroundThemeHeight + + color: control.enabled ? control.Universal.baseMediumLowColor : control.Universal.chromeDisabledHighColor + } + + Rectangle { + x: parent.horizontal ? control.first.position * parent.width : (parent.width - width) / 2 + y: parent.horizontal ? (parent.height - height) / 2 : control.second.visualPosition * parent.height + width: parent.horizontal ? control.second.position * parent.width - control.first.position * parent.width : 2 // SliderBackgroundThemeHeight + height: !parent.horizontal ? control.second.position * parent.height - control.first.position * parent.height : 2 // SliderBackgroundThemeHeight + + color: control.enabled ? control.Universal.accent : control.Universal.chromeDisabledHighColor + } + } + //! [background] +} diff --git a/bin/win64/Universal/ScrollBar.qml b/bin/win64/Universal/ScrollBar.qml new file mode 100644 index 0000000..1908738 --- /dev/null +++ b/bin/win64/Universal/ScrollBar.qml @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.ScrollBar { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + + // TODO: arrows + + //! [contentItem] + contentItem: Rectangle { + implicitWidth: 12 + implicitHeight: 12 + + color: control.pressed ? control.Universal.baseMediumColor : control.Universal.chromeHighColor + visible: control.size < 1.0 + opacity: 0.0 + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitWidth: 12 + implicitHeight: 12 + + color: control.Universal.chromeLowColor + visible: control.size < 1.0 + opacity: 0.0 + } + //! [background] + + states: [ + State { + name: "active" + when: control.active + } + ] + + transitions: [ + Transition { + to: "active" + NumberAnimation { targets: [contentItem, background]; property: "opacity"; to: 1.0 } + }, + Transition { + from: "active" + SequentialAnimation { + PauseAnimation { duration: 3000 } + NumberAnimation { targets: [contentItem, background]; property: "opacity"; to: 0.0 } + } + } + ] +} diff --git a/bin/win64/Universal/ScrollIndicator.qml b/bin/win64/Universal/ScrollIndicator.qml new file mode 100644 index 0000000..9f9f3fc --- /dev/null +++ b/bin/win64/Universal/ScrollIndicator.qml @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.ScrollIndicator { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + + //! [contentItem] + contentItem: Rectangle { + id: indicator + + implicitWidth: 6 + implicitHeight: 6 + + color: control.Universal.baseMediumLowColor + visible: control.size < 1.0 + opacity: 0.0 + + states: [ + State { + name: "active" + when: control.active + } + ] + + transitions: [ + Transition { + to: "active" + NumberAnimation { target: indicator; property: "opacity"; to: 1.0 } + }, + Transition { + from: "active" + SequentialAnimation { + PauseAnimation { duration: 5000 } + NumberAnimation { target: indicator; property: "opacity"; to: 0.0 } + } + } + ] + } + //! [contentItem] +} diff --git a/bin/win64/Universal/Slider.qml b/bin/win64/Universal/Slider.qml new file mode 100644 index 0000000..9662acd --- /dev/null +++ b/bin/win64/Universal/Slider.qml @@ -0,0 +1,103 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.Slider { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + Math.max(background ? background.implicitWidth : 0, + handle ? handle.implicitWidth : 0) + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(background ? background.implicitHeight : 0, + handle ? handle.implicitHeight : 0) + topPadding + bottomPadding) + + padding: 6 + + property bool useSystemFocusVisuals: true + + //! [handle] + handle: Rectangle { + implicitWidth: horizontal ? 8 : 24 + implicitHeight: horizontal ? 24 : 8 + + readonly property bool horizontal: control.orientation === Qt.Horizontal + + x: control.leftPadding + (horizontal ? control.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) + y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : control.visualPosition * (control.availableHeight - height)) + + radius: 4 + color: control.pressed ? control.Universal.chromeHighColor : control.enabled ? control.Universal.accent : control.Universal.chromeDisabledHighColor + } + //! [handle] + + //! [background] + background: Item { + implicitWidth: horizontal ? 200 : 18 + implicitHeight: horizontal ? 18 : 200 + + readonly property bool horizontal: control.orientation === Qt.Horizontal + + x: control.leftPadding + (horizontal ? 0 : (control.availableWidth - width) / 2) + y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : 0) + width: horizontal ? control.availableWidth : implicitWidth + height: horizontal ? implicitHeight : control.availableHeight + + scale: horizontal && control.mirrored ? -1 : 1 + + Rectangle { + x: parent.horizontal ? 0 : (parent.width - width) / 2 + y: parent.horizontal ? (parent.height - height) / 2 : 0 + width: parent.horizontal ? parent.width : 2 // SliderTrackThemeHeight + height: !parent.horizontal ? parent.height : 2 // SliderTrackThemeHeight + + color: control.enabled ? control.Universal.baseMediumLowColor : control.Universal.chromeDisabledHighColor + } + + Rectangle { + x: parent.horizontal ? 0 : (parent.width - width) / 2 + y: parent.horizontal ? (parent.height - height) / 2 : control.visualPosition * parent.height + width: parent.horizontal ? control.position * parent.width : 2 // SliderTrackThemeHeight + height: !parent.horizontal ? control.position * parent.height : 2 // SliderTrackThemeHeight + + color: control.enabled ? control.Universal.accent : control.Universal.chromeDisabledHighColor + } + } + //! [background] +} diff --git a/bin/win64/Universal/SpinBox.qml b/bin/win64/Universal/SpinBox.qml new file mode 100644 index 0000000..4654aa0 --- /dev/null +++ b/bin/win64/Universal/SpinBox.qml @@ -0,0 +1,156 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.SpinBox { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + 16 + + (up.indicator ? up.indicator.implicitWidth : 0) + + (down.indicator ? down.indicator.implicitWidth : 0)) + implicitHeight: Math.max(contentItem.implicitHeight + topPadding + bottomPadding, + background ? background.implicitHeight : 0, + up.indicator ? up.indicator.implicitHeight : 0, + down.indicator ? down.indicator.implicitHeight : 0) + baselineOffset: contentItem.y + contentItem.baselineOffset + + // TextControlThemePadding + 2 (border) + padding: 12 + topPadding: padding - 7 + leftPadding: padding + (control.mirrored ? (up.indicator ? up.indicator.width : 0) : (down.indicator ? down.indicator.width : 0)) + rightPadding: padding - 4 + (control.mirrored ? (down.indicator ? down.indicator.width : 0) : (up.indicator ? up.indicator.width : 0)) + bottomPadding: padding - 5 + + Universal.theme: activeFocus ? Universal.Light : undefined + + //! [validator] + validator: IntValidator { + locale: control.locale.name + bottom: Math.min(control.from, control.to) + top: Math.max(control.from, control.to) + } + //! [validator] + + //! [contentItem] + contentItem: TextInput { + text: control.textFromValue(control.value, control.locale) + + font: control.font + color: !enabled ? control.Universal.chromeDisabledLowColor : + activeFocus ? control.Universal.chromeBlackHighColor : control.Universal.foreground + selectionColor: control.Universal.accent + selectedTextColor: control.Universal.chromeWhiteColor + horizontalAlignment: Qt.AlignHCenter + verticalAlignment: TextInput.AlignVCenter + + readOnly: !control.editable + validator: control.validator + inputMethodHints: Qt.ImhFormattedNumbersOnly + } + //! [contentItem] + + //! [up.indicator] + up.indicator: Item { + implicitWidth: 28 + height: parent.height + 4 + y: -2 + x: control.mirrored ? 0 : parent.width - width + + Rectangle { + x: 2; y: 4 + width: parent.width - 4 + height: parent.height - 8 + color: !control.up.pressed ? "transparent" : + control.activeFocus ? control.Universal.accent + : control.Universal.chromeDisabledLowColor + } + + Image { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + source: "image://universal/" + (control.mirrored ? "left" : "right") + "arrow/" + + (!enabled ? control.Universal.chromeDisabledLowColor : + control.activeFocus ? control.Universal.chromeBlackHighColor : control.Universal.baseHighColor) + sourceSize.width: width + sourceSize.height: height + } + } + //! [up.indicator] + + //! [down.indicator] + down.indicator: Item { + implicitWidth: 28 + height: parent.height + 4 + y: -2 + x: control.mirrored ? parent.width - width : 0 + + Rectangle { + x: 2; y: 4 + width: parent.width - 4 + height: parent.height - 8 + color: !control.down.pressed ? "transparent" : + control.activeFocus ? control.Universal.accent + : control.Universal.chromeDisabledLowColor + } + + Image { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + source: "image://universal/" + (control.mirrored ? "right" : "left") + "arrow/" + + (!enabled ? control.Universal.chromeDisabledLowColor : + control.activeFocus ? control.Universal.chromeBlackHighColor : control.Universal.baseHighColor) + sourceSize.width: width + sourceSize.height: height + } + } + //! [down.indicator] + + //! [background] + background: Rectangle { + implicitWidth: 60 + 28 // TextControlThemeMinWidth - 4 (border) + implicitHeight: 28 // TextControlThemeMinHeight - 4 (border) + + border.width: 2 // TextControlBorderThemeThickness + border.color: !control.enabled ? control.Universal.baseLowColor : + control.activeFocus ? control.Universal.accent : control.Universal.chromeDisabledLowColor + color: control.enabled ? control.Universal.background : control.Universal.baseLowColor + } + //! [background] +} diff --git a/bin/win64/Universal/StackView.qml b/bin/win64/Universal/StackView.qml new file mode 100644 index 0000000..6023942 --- /dev/null +++ b/bin/win64/Universal/StackView.qml @@ -0,0 +1,88 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.StackView { + id: control + + //! [popEnter] + popEnter: Transition { + ParallelAnimation { + NumberAnimation { property: "opacity"; from: 0; to: 1; duration: 200; easing.type: Easing.InQuint } + NumberAnimation { property: "x"; from: (control.mirrored ? -0.3 : 0.3) * -control.width; to: 0; duration: 400; easing.type: Easing.OutCubic } + } + } + //! [popEnter] + + //! [popExit] + popExit: Transition { + NumberAnimation { property: "opacity"; from: 1; to: 0; duration: 200; easing.type: Easing.OutQuint } + } + //! [popExit] + + //! [pushEnter] + pushEnter: Transition { + ParallelAnimation { + NumberAnimation { property: "opacity"; from: 0; to: 1; duration: 200; easing.type: Easing.InQuint } + NumberAnimation { property: "x"; from: (control.mirrored ? -0.3 : 0.3) * control.width; to: 0; duration: 400; easing.type: Easing.OutCubic } + } + } + //! [pushEnter] + + //! [pushExit] + pushExit: Transition { + NumberAnimation { property: "opacity"; from: 1; to: 0; duration: 200; easing.type: Easing.OutQuint } + } + //! [pushExit] + + //! [replaceEnter] + replaceEnter: Transition { + ParallelAnimation { + NumberAnimation { property: "opacity"; from: 0; to: 1; duration: 200; easing.type: Easing.InQuint } + NumberAnimation { property: "x"; from: (control.mirrored ? -0.3 : 0.3) * control.width; to: 0; duration: 400; easing.type: Easing.OutCubic } + } + } + //! [replaceEnter] + + //! [replaceExit] + replaceExit: Transition { + NumberAnimation { property: "opacity"; from: 1; to: 0; duration: 200; easing.type: Easing.OutQuint } + } + //! [replaceExit] +} diff --git a/bin/win64/Universal/SwipeDelegate.qml b/bin/win64/Universal/SwipeDelegate.qml new file mode 100644 index 0000000..d11983e --- /dev/null +++ b/bin/win64/Universal/SwipeDelegate.qml @@ -0,0 +1,109 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.SwipeDelegate { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + spacing: 12 + + padding: 12 + topPadding: padding - 1 + bottomPadding: padding + 1 + + //! [contentItem] + contentItem: Text { + leftPadding: !control.mirrored ? (control.indicator ? control.indicator.width : 0) + control.spacing : 0 + rightPadding: control.mirrored ? (control.indicator ? control.indicator.width : 0) + control.spacing : 0 + + text: control.text + font: control.font + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering + + opacity: enabled ? 1.0 : 0.2 + color: control.Universal.foreground + + Behavior on x { + enabled: !control.down + NumberAnimation { + easing.type: Easing.InOutCubic + duration: 400 + } + } + } + //! [contentItem] + + //! [background] + background: Rectangle { + color: control.Universal.background + + Rectangle { + width: parent.width + height: parent.height + color: control.down ? control.Universal.listMediumColor : control.Universal.altMediumLowColor + Rectangle { + width: parent.width + height: parent.height + visible: control.visualFocus || control.highlighted + color: control.Universal.accent + opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6 + } + } + + Behavior on x { + enabled: !control.down + NumberAnimation { + easing.type: Easing.InOutCubic + duration: 400 + } + } + } + //! [background] +} diff --git a/bin/win64/Universal/Switch.qml b/bin/win64/Universal/Switch.qml new file mode 100644 index 0000000..988b328 --- /dev/null +++ b/bin/win64/Universal/Switch.qml @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.Switch { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 5 + spacing: 8 + + property bool useSystemFocusVisuals: true + + //! [indicator] + indicator: SwitchIndicator { + x: text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + //! [indicator] + + //! [contentItem] + contentItem: Text { + leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + + opacity: enabled ? 1.0 : 0.2 + color: control.Universal.foreground + } + //! [contentItem] +} diff --git a/bin/win64/Universal/SwitchDelegate.qml b/bin/win64/Universal/SwitchDelegate.qml new file mode 100644 index 0000000..43a1c4e --- /dev/null +++ b/bin/win64/Universal/SwitchDelegate.qml @@ -0,0 +1,96 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.SwitchDelegate { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + Math.max(contentItem.implicitHeight, + indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + spacing: 12 + + padding: 12 + topPadding: padding - 1 + bottomPadding: padding + 1 + + //! [indicator] + indicator: SwitchIndicator { + x: text ? (control.mirrored ? control.leftPadding : control.width - width - control.rightPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + //! [indicator] + + //! [contentItem] + contentItem: Text { + leftPadding: !control.mirrored ? 0 : control.indicator.width + control.spacing + rightPadding: control.mirrored ? 0 : control.indicator.width + control.spacing + + text: control.text + font: control.font + elide: Text.ElideRight + visible: control.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + + opacity: enabled ? 1.0 : 0.2 + color: control.Universal.foreground + } + //! [contentItem] + + //! [background] + background: Rectangle { + visible: control.down || control.highlighted || control.visualFocus + color: control.down ? control.Universal.listMediumColor : control.Universal.altMediumLowColor + Rectangle { + width: parent.width + height: parent.height + visible: control.visualFocus || control.highlighted + color: control.Universal.accent + opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6 + } + + } + //! [background] +} diff --git a/bin/win64/Universal/SwitchIndicator.qml b/bin/win64/Universal/SwitchIndicator.qml new file mode 100644 index 0000000..b3d44d9 --- /dev/null +++ b/bin/win64/Universal/SwitchIndicator.qml @@ -0,0 +1,72 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +Rectangle { + implicitWidth: 44 + implicitHeight: 20 + + radius: 10 + color: !control.enabled ? "transparent" : + control.pressed ? control.Universal.baseMediumColor : + control.checked ? control.Universal.accent : "transparent" + border.color: !control.enabled ? control.Universal.baseLowColor : + control.checked && !control.pressed ? control.Universal.accent : control.Universal.baseMediumColor + border.width: 2 + + property Item control + + Rectangle { + width: 10 + height: 10 + radius: 5 + + color: !control.enabled ? control.Universal.baseLowColor : + control.pressed || control.checked ? control.Universal.chromeWhiteColor : control.Universal.baseMediumHighColor + + x: Math.max(5, Math.min(parent.width - width - 5, + control.visualPosition * parent.width - (width / 2))) + y: (parent.height - height) / 2 + + Behavior on x { + enabled: !control.pressed + SmoothedAnimation { velocity: 200 } + } + } +} diff --git a/bin/win64/Universal/TabBar.qml b/bin/win64/Universal/TabBar.qml new file mode 100644 index 0000000..b25137c --- /dev/null +++ b/bin/win64/Universal/TabBar.qml @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.7 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.TabBar { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + + //! [contentItem] + contentItem: PathView { + implicitWidth: 200 + implicitHeight: 48 + + model: control.contentModel + currentIndex: control.currentIndex + + interactive: false + snapMode: PathView.SnapToItem + movementDirection: PathView.Positive + highlightMoveDuration: 100 + + path: Path { + startX: control.count ? control.availableWidth / control.count / 2 : 0 + startY: control.availableHeight / 2 + PathLine { + x: control.count ? control.availableWidth + (control.availableWidth / control.count / 2) : 0 + y: control.availableHeight / 2 + } + } + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitWidth: 200 + implicitHeight: 48 + color: control.Universal.background + } + //! [background] +} diff --git a/bin/win64/Universal/TabButton.qml b/bin/win64/Universal/TabButton.qml new file mode 100644 index 0000000..3a1845a --- /dev/null +++ b/bin/win64/Universal/TabButton.qml @@ -0,0 +1,64 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.TabButton { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 12 // PivotItemMargin + + //! [contentItem] + contentItem: Text { + text: control.text + font: control.font + elide: Text.ElideRight + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + + opacity: control.checked || control.down ? 1.0 : 0.2 + color: control.Universal.foreground + } + //! [contentItem] +} diff --git a/bin/win64/Universal/TextArea.qml b/bin/win64/Universal/TextArea.qml new file mode 100644 index 0000000..b4c3813 --- /dev/null +++ b/bin/win64/Universal/TextArea.qml @@ -0,0 +1,92 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.TextArea { + id: control + + implicitWidth: Math.max(contentWidth + leftPadding + rightPadding, + background ? background.implicitWidth : 0, + placeholder.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(contentHeight + topPadding + bottomPadding, + background ? background.implicitHeight : 0, + placeholder.implicitHeight + topPadding + bottomPadding) + + // TextControlThemePadding + 2 (border) + padding: 12 + topPadding: padding - 7 + rightPadding: padding - 4 + bottomPadding: padding - 5 + + Universal.theme: activeFocus ? Universal.Light : undefined + + color: !enabled ? Universal.chromeDisabledLowColor : + activeFocus ? Universal.chromeBlackHighColor : Universal.foreground + selectionColor: Universal.accent + selectedTextColor: Universal.chromeWhiteColor + + Text { + id: placeholder + x: control.leftPadding + y: control.topPadding + width: control.width - (control.leftPadding + control.rightPadding) + height: control.height - (control.topPadding + control.bottomPadding) + + text: control.placeholderText + font: control.font + color: !control.enabled ? control.Universal.chromeDisabledLowColor : + control.activeFocus ? control.Universal.chromeBlackMediumLowColor : control.Universal.baseMediumColor + visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) + horizontalAlignment: control.horizontalAlignment + verticalAlignment: control.verticalAlignment + elide: Text.ElideRight + } + + //! [background] + background: Rectangle { + implicitWidth: 60 // TextControlThemeMinWidth - 4 (border) + implicitHeight: 28 // TextControlThemeMinHeight - 4 (border) + + border.width: 2 // TextControlBorderThemeThickness + border.color: !control.enabled ? control.Universal.baseLowColor : + control.activeFocus ? control.Universal.accent : control.Universal.chromeDisabledLowColor + color: control.enabled ? control.Universal.background : control.Universal.baseLowColor + } + //! [background] +} diff --git a/bin/win64/Universal/TextField.qml b/bin/win64/Universal/TextField.qml new file mode 100644 index 0000000..041cf0e --- /dev/null +++ b/bin/win64/Universal/TextField.qml @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.TextField { + id: control + + implicitWidth: Math.max(contentWidth + leftPadding + rightPadding, + background ? background.implicitWidth : 0, + placeholder.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(contentHeight + topPadding + bottomPadding, + background ? background.implicitHeight : 0, + placeholder.implicitHeight + topPadding + bottomPadding) + + // TextControlThemePadding + 2 (border) + padding: 12 + topPadding: padding - 7 + rightPadding: padding - 4 + bottomPadding: padding - 5 + + Universal.theme: activeFocus ? Universal.Light : undefined + + color: !enabled ? Universal.chromeDisabledLowColor : + activeFocus ? Universal.chromeBlackHighColor : Universal.foreground + selectionColor: Universal.accent + selectedTextColor: Universal.chromeWhiteColor + verticalAlignment: TextInput.AlignVCenter + + Text { + id: placeholder + x: control.leftPadding + y: control.topPadding + width: control.width - (control.leftPadding + control.rightPadding) + height: control.height - (control.topPadding + control.bottomPadding) + + text: control.placeholderText + font: control.font + color: !control.enabled ? control.Universal.chromeDisabledLowColor : + control.activeFocus ? control.Universal.chromeBlackMediumLowColor : control.Universal.baseMediumColor + visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) + horizontalAlignment: control.horizontalAlignment + verticalAlignment: control.verticalAlignment + elide: Text.ElideRight + } + + //! [background] + background: Rectangle { + implicitWidth: 60 // TextControlThemeMinWidth - 4 (border) + implicitHeight: 28 // TextControlThemeMinHeight - 4 (border) + + border.width: 2 // TextControlBorderThemeThickness + border.color: !control.enabled ? control.Universal.baseLowColor : + control.activeFocus ? control.Universal.accent : control.Universal.chromeDisabledLowColor + color: control.enabled ? control.Universal.background : control.Universal.baseLowColor + } + //! [background] +} diff --git a/bin/win64/Universal/ToolBar.qml b/bin/win64/Universal/ToolBar.qml new file mode 100644 index 0000000..721d817 --- /dev/null +++ b/bin/win64/Universal/ToolBar.qml @@ -0,0 +1,60 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.ToolBar { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) + + contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) + contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) + + //! [contentItem] + contentItem: Item { } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitHeight: 48 // AppBarThemeCompactHeight + color: control.Universal.chromeMediumColor + } + //! [background] +} diff --git a/bin/win64/Universal/ToolButton.qml b/bin/win64/Universal/ToolButton.qml new file mode 100644 index 0000000..525623b --- /dev/null +++ b/bin/win64/Universal/ToolButton.qml @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.ToolButton { + id: control + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + baselineOffset: contentItem.y + contentItem.baselineOffset + + padding: 6 + + property bool useSystemFocusVisuals: true + + //! [contentItem] + contentItem: Text { + text: control.text + font: control.font + elide: Text.ElideRight + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + + opacity: enabled ? 1.0 : 0.2 + color: control.Universal.foreground + } + //! [contentItem] + + //! [background] + background: Rectangle { + implicitWidth: 68 + implicitHeight: 48 // AppBarThemeCompactHeight + + color: control.down ? control.Universal.listMediumColor : + control.enabled && (control.highlighted || control.checked) ? control.Universal.accent : "transparent" + } + //! [background] +} diff --git a/bin/win64/Universal/ToolTip.qml b/bin/win64/Universal/ToolTip.qml new file mode 100644 index 0000000..1657681 --- /dev/null +++ b/bin/win64/Universal/ToolTip.qml @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 + +T.ToolTip { + id: control + + x: parent ? (parent.width - implicitWidth) / 2 : 0 + y: -implicitHeight - 16 + + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentItem.implicitHeight + topPadding + bottomPadding) + + margins: 8 + padding: 8 + topPadding: padding - 3 + bottomPadding: padding - 1 + + closePolicy: T.Popup.CloseOnEscape | T.Popup.CloseOnPressOutsideParent | T.Popup.CloseOnReleaseOutsideParent + + //! [contentItem] + contentItem: Text { + text: control.text + font: control.font + // TODO: wrapMode: Label.Wrap + opacity: enabled ? 1.0 : 0.2 + color: control.Universal.foreground + } + //! [contentItem] + + //! [background] + background: Rectangle { + color: control.Universal.chromeMediumLowColor + border.color: control.Universal.chromeHighColor + border.width: 1 // ToolTipBorderThemeThickness + } + //! [background] +} diff --git a/bin/win64/Universal/Tumbler.qml b/bin/win64/Universal/Tumbler.qml new file mode 100644 index 0000000..6869f1e --- /dev/null +++ b/bin/win64/Universal/Tumbler.qml @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module 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$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Templates 2.0 as T +import QtQuick.Controls.Universal 2.0 +import QtQuick.Controls 2.0 + +T.Tumbler { + id: control + + implicitWidth: 60 + implicitHeight: 200 + + //! [delegate] + delegate: Text { + text: modelData + font: control.font + color: control.Universal.foreground + opacity: (1.0 - Math.abs(Tumbler.displacement) / (visibleItemCount / 2)) * (control.enabled ? 1 : 0.6) + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + } + //! [delegate] + + //! [contentItem] + contentItem: PathView { + id: pathView + model: control.model + delegate: control.delegate + clip: true + pathItemCount: control.visibleItemCount + 1 + preferredHighlightBegin: 0.5 + preferredHighlightEnd: 0.5 + dragMargin: width / 2 + + path: Path { + startX: pathView.width / 2 + startY: -pathView.delegateHeight / 2 + PathLine { + x: pathView.width / 2 + y: pathView.pathItemCount * pathView.delegateHeight - pathView.delegateHeight / 2 + } + } + + property real delegateHeight: control.availableHeight / control.visibleItemCount + } + //! [contentItem] +} diff --git a/bin/win64/Universal/plugins.qmltypes b/bin/win64/Universal/plugins.qmltypes new file mode 100644 index 0000000..165e658 --- /dev/null +++ b/bin/win64/Universal/plugins.qmltypes @@ -0,0 +1,61 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by: +// 'qmlplugindump -nonrelocatable QtQuick.Controls.Universal 2.0' + +Module { + dependencies: [] + Component { name: "QQuickStyle"; prototype: "QObject" } + Component { + name: "QQuickUniversalStyle" + prototype: "QQuickStyle" + exports: ["QtQuick.Controls.Universal/Universal 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "Theme" + values: { + "Light": 0, + "Dark": 1 + } + } + Enum { + name: "Color" + values: { + "Lime": 0, + "Green": 1, + "Emerald": 2, + "Teal": 3, + "Cyan": 4, + "Cobalt": 5, + "Indigo": 6, + "Violet": 7, + "Pink": 8, + "Magenta": 9, + "Crimson": 10, + "Red": 11, + "Orange": 12, + "Amber": 13, + "Yellow": 14, + "Brown": 15, + "Olive": 16, + "Steel": 17, + "Mauve": 18, + "Taupe": 19 + } + } + Property { name: "theme"; type: "Theme" } + Property { name: "accent"; type: "QVariant" } + Property { name: "foreground"; type: "QVariant" } + Property { name: "background"; type: "QVariant" } + Signal { name: "paletteChanged" } + Method { + name: "color" + type: "QColor" + Parameter { name: "color"; type: "Color" } + } + } +} diff --git a/bin/win64/Universal/qmldir b/bin/win64/Universal/qmldir new file mode 100644 index 0000000..e4b804a --- /dev/null +++ b/bin/win64/Universal/qmldir @@ -0,0 +1,4 @@ +module QtQuick.Controls.Universal +plugin qtquickcontrols2universalstyleplugin +classname QtQuickControls2UniversalStylePlugin +depends QtQuick.Controls 2.0 diff --git a/bin/win64/Universal/qtquickcontrols2universalstyleplugin.dll b/bin/win64/Universal/qtquickcontrols2universalstyleplugin.dll new file mode 100644 index 0000000..47b10dc Binary files /dev/null and b/bin/win64/Universal/qtquickcontrols2universalstyleplugin.dll differ diff --git a/bin/win64/audio/qtaudio_windows.dll b/bin/win64/audio/qtaudio_windows.dll new file mode 100644 index 0000000..8d17cb9 Binary files /dev/null and b/bin/win64/audio/qtaudio_windows.dll differ diff --git a/bin/win64/bearer/qgenericbearer.dll b/bin/win64/bearer/qgenericbearer.dll new file mode 100644 index 0000000..e3cd2e9 Binary files /dev/null and b/bin/win64/bearer/qgenericbearer.dll differ diff --git a/bin/win64/bearer/qnativewifibearer.dll b/bin/win64/bearer/qnativewifibearer.dll new file mode 100644 index 0000000..c001669 Binary files /dev/null and b/bin/win64/bearer/qnativewifibearer.dll differ diff --git a/bin/win64/iconengines/qsvgicon.dll b/bin/win64/iconengines/qsvgicon.dll new file mode 100644 index 0000000..71be48d Binary files /dev/null and b/bin/win64/iconengines/qsvgicon.dll differ diff --git a/bin/win64/imageformats/qdds.dll b/bin/win64/imageformats/qdds.dll new file mode 100644 index 0000000..8f31b04 Binary files /dev/null and b/bin/win64/imageformats/qdds.dll differ diff --git a/bin/win64/imageformats/qgif.dll b/bin/win64/imageformats/qgif.dll new file mode 100644 index 0000000..63e1dc8 Binary files /dev/null and b/bin/win64/imageformats/qgif.dll differ diff --git a/bin/win64/imageformats/qicns.dll b/bin/win64/imageformats/qicns.dll new file mode 100644 index 0000000..7aa86e7 Binary files /dev/null and b/bin/win64/imageformats/qicns.dll differ diff --git a/bin/win64/imageformats/qico.dll b/bin/win64/imageformats/qico.dll new file mode 100644 index 0000000..0fd3f0d Binary files /dev/null and b/bin/win64/imageformats/qico.dll differ diff --git a/bin/win64/imageformats/qjpeg.dll b/bin/win64/imageformats/qjpeg.dll new file mode 100644 index 0000000..3969acb Binary files /dev/null and b/bin/win64/imageformats/qjpeg.dll differ diff --git a/bin/win64/imageformats/qsvg.dll b/bin/win64/imageformats/qsvg.dll new file mode 100644 index 0000000..dc99c47 Binary files /dev/null and b/bin/win64/imageformats/qsvg.dll differ diff --git a/bin/win64/imageformats/qtga.dll b/bin/win64/imageformats/qtga.dll new file mode 100644 index 0000000..e1435d6 Binary files /dev/null and b/bin/win64/imageformats/qtga.dll differ diff --git a/bin/win64/imageformats/qtiff.dll b/bin/win64/imageformats/qtiff.dll new file mode 100644 index 0000000..d029009 Binary files /dev/null and b/bin/win64/imageformats/qtiff.dll differ diff --git a/bin/win64/imageformats/qwbmp.dll b/bin/win64/imageformats/qwbmp.dll new file mode 100644 index 0000000..f8168f1 Binary files /dev/null and b/bin/win64/imageformats/qwbmp.dll differ diff --git a/bin/win64/imageformats/qwebp.dll b/bin/win64/imageformats/qwebp.dll new file mode 100644 index 0000000..ef353ed Binary files /dev/null and b/bin/win64/imageformats/qwebp.dll differ diff --git a/bin/win64/libEGL.dll b/bin/win64/libEGL.dll new file mode 100644 index 0000000..7c0f78d Binary files /dev/null and b/bin/win64/libEGL.dll differ diff --git a/bin/win64/libGLESV2.dll b/bin/win64/libGLESV2.dll new file mode 100644 index 0000000..18c3a0e Binary files /dev/null and b/bin/win64/libGLESV2.dll differ diff --git a/bin/win64/mediaservice/dsengine.dll b/bin/win64/mediaservice/dsengine.dll new file mode 100644 index 0000000..b45b138 Binary files /dev/null and b/bin/win64/mediaservice/dsengine.dll differ diff --git a/bin/win64/mediaservice/qtmedia_audioengine.dll b/bin/win64/mediaservice/qtmedia_audioengine.dll new file mode 100644 index 0000000..152aabd Binary files /dev/null and b/bin/win64/mediaservice/qtmedia_audioengine.dll differ diff --git a/bin/win64/opengl32sw.dll b/bin/win64/opengl32sw.dll new file mode 100644 index 0000000..e813c68 Binary files /dev/null and b/bin/win64/opengl32sw.dll differ diff --git a/bin/win64/openvr_api.dll b/bin/win64/openvr_api.dll index dbf1531..9ae4922 100644 Binary files a/bin/win64/openvr_api.dll and b/bin/win64/openvr_api.dll differ diff --git a/bin/win64/platforminputcontexts/qtvirtualkeyboardplugin.dll b/bin/win64/platforminputcontexts/qtvirtualkeyboardplugin.dll new file mode 100644 index 0000000..b2ac9e8 Binary files /dev/null and b/bin/win64/platforminputcontexts/qtvirtualkeyboardplugin.dll differ diff --git a/bin/win64/playlistformats/qtmultimedia_m3u.dll b/bin/win64/playlistformats/qtmultimedia_m3u.dll new file mode 100644 index 0000000..124afa0 Binary files /dev/null and b/bin/win64/playlistformats/qtmultimedia_m3u.dll differ diff --git a/bin/win64/private/DropShadowBase.qml b/bin/win64/private/DropShadowBase.qml new file mode 100644 index 0000000..3660619 --- /dev/null +++ b/bin/win64/private/DropShadowBase.qml @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Copyright (C) 2015 Jolla Ltd, author: +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 +import QtGraphicalEffects 1.0 + +Item { + id: root + + property variant source + property real radius: Math.floor(samples / 2) + property int samples: 9 + property color color: "black" + property real horizontalOffset: 0 + property real verticalOffset: 0 + property real spread: 0.0 + property bool cached: false + property bool transparentBorder: true + + GaussianBlur { + id: blur + width: parent.width + height: parent.height + x: Math.round(horizontalOffset) + y: Math.round(verticalOffset) + source: root.source + radius: root.radius + samples: root.samples + _thickness: root.spread + transparentBorder: root.transparentBorder + + + _color: root.color; + _alphaOnly: true + // ignoreDevicePixelRatio: root.ignoreDevicePixelRatio + + ShaderEffect { + x: blur._outputRect.x - parent.x + y: blur._outputRect.y - parent.y + width: transparentBorder ? blur._outputRect.width : blur.width + height: transparentBorder ? blur._outputRect.height : blur.height + property variant source: blur._output; + } + + } + + ShaderEffectSource { + id: cacheItem + x: -blur._kernelRadius + horizontalOffset + y: -blur._kernelRadius + verticalOffset + width: blur.width + 2 * blur._kernelRadius + height: blur.height + 2 * blur._kernelRadius + visible: root.cached + smooth: true + sourceRect: Qt.rect(-blur._kernelRadius, -blur._kernelRadius, width, height); + sourceItem: blur + hideSource: visible + } + + +} diff --git a/bin/win64/private/FastGlow.qml b/bin/win64/private/FastGlow.qml new file mode 100644 index 0000000..c723619 --- /dev/null +++ b/bin/win64/private/FastGlow.qml @@ -0,0 +1,394 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +Item { + id: rootItem + property variant source + property real spread: 0.0 + property real blur: 0.0 + property color color: "white" + property bool transparentBorder: false + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: shaderItem + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + property string __internalBlurVertexShader: " + attribute highp vec4 qt_Vertex; + attribute highp vec2 qt_MultiTexCoord0; + uniform highp mat4 qt_Matrix; + uniform highp float yStep; + uniform highp float xStep; + varying highp vec2 qt_TexCoord0; + varying highp vec2 qt_TexCoord1; + varying highp vec2 qt_TexCoord2; + varying highp vec2 qt_TexCoord3; + + void main() { + qt_TexCoord0 = vec2(qt_MultiTexCoord0.x + xStep, qt_MultiTexCoord0.y + yStep * 0.36); + qt_TexCoord1 = vec2(qt_MultiTexCoord0.x + xStep * 0.36, qt_MultiTexCoord0.y - yStep); + qt_TexCoord2 = vec2(qt_MultiTexCoord0.x - xStep * 0.36, qt_MultiTexCoord0.y + yStep); + qt_TexCoord3 = vec2(qt_MultiTexCoord0.x - xStep, qt_MultiTexCoord0.y - yStep * 0.36); + gl_Position = qt_Matrix * qt_Vertex; + } + " + + property string __internalBlurFragmentShader: " + uniform lowp sampler2D source; + uniform lowp float qt_Opacity; + varying highp vec2 qt_TexCoord0; + varying highp vec2 qt_TexCoord1; + varying highp vec2 qt_TexCoord2; + varying highp vec2 qt_TexCoord3; + + void main() { + highp vec4 sourceColor = (texture2D(source, qt_TexCoord0) + + texture2D(source, qt_TexCoord1) + + texture2D(source, qt_TexCoord2) + + texture2D(source, qt_TexCoord3)) * 0.25; + gl_FragColor = sourceColor * qt_Opacity; + } + " + + ShaderEffect { + id: level0 + property variant source: sourceProxy.output + anchors.fill: parent + visible: false + smooth: true + } + + ShaderEffectSource { + id: level1 + width: Math.ceil(shaderItem.width / 32) * 32 + height: Math.ceil(shaderItem.height / 32) * 32 + sourceItem: level0 + hideSource: rootItem.visible + sourceRect: transparentBorder ? Qt.rect(-64, -64, shaderItem.width, shaderItem.height) : Qt.rect(0,0,0,0) + smooth: true + visible: false + } + + ShaderEffect { + id: effect1 + property variant source: level1 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level2 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level2 + width: level1.width / 2 + height: level1.height / 2 + sourceItem: effect1 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect2 + property variant source: level2 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level3 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level3 + width: level2.width / 2 + height: level2.height / 2 + sourceItem: effect2 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect3 + property variant source: level3 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level4 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level4 + width: level3.width / 2 + height: level3.height / 2 + sourceItem: effect3 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect4 + property variant source: level4 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level5 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level5 + width: level4.width / 2 + height: level4.height / 2 + sourceItem: effect4 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect5 + property variant source: level5 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level6 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level6 + width: level5.width / 2 + height: level5.height / 2 + sourceItem: effect5 + hideSource: rootItem.visible + visible: false + smooth: true + } + + Item { + id: dummysource + width: 1 + height: 1 + visible: false + } + + ShaderEffectSource { + id: dummy + width: 1 + height: 1 + sourceItem: dummysource + visible: false + smooth: false + live: false + } + + ShaderEffect { + id: shaderItem + x: transparentBorder ? -64 : 0 + y: transparentBorder ? -64 : 0 + width: transparentBorder ? parent.width + 128 : parent.width + height: transparentBorder ? parent.height + 128 : parent.height + + property variant source1: level1 + property variant source2: level2 + property variant source3: level3 + property variant source4: level4 + property variant source5: level5 + property variant source6: level6 + property real lod: rootItem.blur + + property real weight1; + property real weight2; + property real weight3; + property real weight4; + property real weight5; + property real weight6; + + property real spread: 1.0 - (rootItem.spread * 0.98) + property alias color: rootItem.color + + function weight(v) { + if (v <= 0.0) + return 1 + if (v >= 0.5) + return 0 + + return 1.0 - v / 0.5 + } + + function calculateWeights() { + + var w1 = weight(Math.abs(lod - 0.100)) + var w2 = weight(Math.abs(lod - 0.300)) + var w3 = weight(Math.abs(lod - 0.500)) + var w4 = weight(Math.abs(lod - 0.700)) + var w5 = weight(Math.abs(lod - 0.900)) + var w6 = weight(Math.abs(lod - 1.100)) + + var sum = w1 + w2 + w3 + w4 + w5 + w6; + weight1 = w1 / sum; + weight2 = w2 / sum; + weight3 = w3 / sum; + weight4 = w4 / sum; + weight5 = w5 / sum; + weight6 = w6 / sum; + + upateSources() + } + + function upateSources() { + var sources = new Array(); + var weights = new Array(); + + if (weight1 > 0) { + sources.push(level1) + weights.push(weight1) + } + + if (weight2 > 0) { + sources.push(level2) + weights.push(weight2) + } + + if (weight3 > 0) { + sources.push(level3) + weights.push(weight3) + } + + if (weight4 > 0) { + sources.push(level4) + weights.push(weight4) + } + + if (weight5 > 0) { + sources.push(level5) + weights.push(weight5) + } + + if (weight6 > 0) { + sources.push(level6) + weights.push(weight6) + } + + for (var j = sources.length; j < 6; j++) { + sources.push(dummy) + weights.push(0.0) + } + + source1 = sources[0] + source2 = sources[1] + source3 = sources[2] + source4 = sources[3] + source5 = sources[4] + source6 = sources[5] + + weight1 = weights[0] + weight2 = weights[1] + weight3 = weights[2] + weight4 = weights[3] + weight5 = weights[4] + weight6 = weights[5] + } + + Component.onCompleted: calculateWeights() + + onLodChanged: calculateWeights() + + fragmentShader: " + uniform lowp sampler2D source1; + uniform lowp sampler2D source2; + uniform lowp sampler2D source3; + uniform lowp sampler2D source4; + uniform lowp sampler2D source5; + uniform mediump float weight1; + uniform mediump float weight2; + uniform mediump float weight3; + uniform mediump float weight4; + uniform mediump float weight5; + uniform highp vec4 color; + uniform highp float spread; + uniform lowp float qt_Opacity; + varying mediump vec2 qt_TexCoord0; + + highp float linearstep(highp float e0, highp float e1, highp float x) { + return clamp((x - e0) / (e1 - e0), 0.0, 1.0); + } + + void main() { + lowp vec4 sourceColor = texture2D(source1, qt_TexCoord0) * weight1; + sourceColor += texture2D(source2, qt_TexCoord0) * weight2; + sourceColor += texture2D(source3, qt_TexCoord0) * weight3; + sourceColor += texture2D(source4, qt_TexCoord0) * weight4; + sourceColor += texture2D(source5, qt_TexCoord0) * weight5; + sourceColor = mix(vec4(0), color, linearstep(0.0, spread, sourceColor.a)); + gl_FragColor = sourceColor * qt_Opacity; + } + " + } +} diff --git a/bin/win64/private/FastInnerShadow.qml b/bin/win64/private/FastInnerShadow.qml new file mode 100644 index 0000000..ca25053 --- /dev/null +++ b/bin/win64/private/FastInnerShadow.qml @@ -0,0 +1,414 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +Item { + id: rootItem + property variant source + property real blur: 0.0 + property real horizontalOffset: 0 + property real verticalOffset: 0 + property real spread: 0.0 + property color color: "black" + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: shaderItem + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + property string __internalBlurVertexShader: " + attribute highp vec4 qt_Vertex; + attribute highp vec2 qt_MultiTexCoord0; + uniform highp mat4 qt_Matrix; + uniform highp float yStep; + uniform highp float xStep; + varying highp vec2 qt_TexCoord0; + varying highp vec2 qt_TexCoord1; + varying highp vec2 qt_TexCoord2; + varying highp vec2 qt_TexCoord3; + + void main() { + qt_TexCoord0 = vec2(qt_MultiTexCoord0.x + xStep, qt_MultiTexCoord0.y + yStep * 0.36); + qt_TexCoord1 = vec2(qt_MultiTexCoord0.x + xStep * 0.36, qt_MultiTexCoord0.y - yStep); + qt_TexCoord2 = vec2(qt_MultiTexCoord0.x - xStep * 0.36, qt_MultiTexCoord0.y + yStep); + qt_TexCoord3 = vec2(qt_MultiTexCoord0.x - xStep, qt_MultiTexCoord0.y - yStep * 0.36); + gl_Position = qt_Matrix * qt_Vertex; + } + " + + property string __internalBlurFragmentShader: " + uniform lowp sampler2D source; + uniform lowp float qt_Opacity; + varying highp vec2 qt_TexCoord0; + varying highp vec2 qt_TexCoord1; + varying highp vec2 qt_TexCoord2; + varying highp vec2 qt_TexCoord3; + + void main() { + highp vec4 sourceColor = (texture2D(source, qt_TexCoord0) + + texture2D(source, qt_TexCoord1) + + texture2D(source, qt_TexCoord2) + + texture2D(source, qt_TexCoord3)) * 0.25; + gl_FragColor = sourceColor * qt_Opacity; + } + " + + ShaderEffect { + id: level0 + property variant source: sourceProxy.output + property real horizontalOffset: rootItem.horizontalOffset / rootItem.width + property real verticalOffset: rootItem.verticalOffset / rootItem.width + property color color: rootItem.color + + anchors.fill: parent + visible: false + smooth: true + fragmentShader: " + varying highp vec2 qt_TexCoord0; + uniform lowp float qt_Opacity; + uniform highp sampler2D source; + uniform lowp vec4 color; + uniform highp float horizontalOffset; + uniform highp float verticalOffset; + + void main(void) { + highp vec2 pos = qt_TexCoord0 - vec2(horizontalOffset, verticalOffset); + lowp float ea = step(0.0, pos.x) * step(0.0, pos.y) * step(pos.x, 1.0) * step(pos.y, 1.0); + lowp float eb = 1.0 - ea; + gl_FragColor = (eb * color + ea * color * (1.0 - texture2D(source, pos).a)) * qt_Opacity; + } + " + } + + ShaderEffectSource { + id: level1 + width: Math.ceil(shaderItem.width / 32) * 32 + height: Math.ceil(shaderItem.height / 32) * 32 + sourceItem: level0 + hideSource: rootItem.visible + smooth: true + visible: false + } + + ShaderEffect { + id: effect1 + property variant source: level1 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level2 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level2 + width: level1.width / 2 + height: level1.height / 2 + sourceItem: effect1 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect2 + property variant source: level2 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level3 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level3 + width: level2.width / 2 + height: level2.height / 2 + sourceItem: effect2 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect3 + property variant source: level3 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level4 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level4 + width: level3.width / 2 + height: level3.height / 2 + sourceItem: effect3 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect4 + property variant source: level4 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level5 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level5 + width: level4.width / 2 + height: level4.height / 2 + sourceItem: effect4 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect5 + property variant source: level5 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level6 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level6 + width: level5.width / 2 + height: level5.height / 2 + sourceItem: effect5 + hideSource: rootItem.visible + visible: false + smooth: true + } + + Item { + id: dummysource + width: 1 + height: 1 + visible: false + } + + ShaderEffectSource { + id: dummy + width: 1 + height: 1 + sourceItem: dummysource + visible: false + smooth: false + live: false + } + + ShaderEffect { + id: shaderItem + width: parent.width + height: parent.height + + property variant original: sourceProxy.output + property variant source1: level1 + property variant source2: level2 + property variant source3: level3 + property variant source4: level4 + property variant source5: level5 + property variant source6: level6 + property real lod: rootItem.blur + + property real weight1; + property real weight2; + property real weight3; + property real weight4; + property real weight5; + property real weight6; + + property real spread: 1.0 - (rootItem.spread * 0.98) + property color color: rootItem.color + + function weight(v) { + if (v <= 0.0) + return 1 + if (v >= 0.5) + return 0 + + return 1.0 - v / 0.5 + } + + function calculateWeights() { + + var w1 = weight(Math.abs(lod - 0.100)) + var w2 = weight(Math.abs(lod - 0.300)) + var w3 = weight(Math.abs(lod - 0.500)) + var w4 = weight(Math.abs(lod - 0.700)) + var w5 = weight(Math.abs(lod - 0.900)) + var w6 = weight(Math.abs(lod - 1.100)) + + var sum = w1 + w2 + w3 + w4 + w5 + w6; + weight1 = w1 / sum; + weight2 = w2 / sum; + weight3 = w3 / sum; + weight4 = w4 / sum; + weight5 = w5 / sum; + weight6 = w6 / sum; + + upateSources() + } + + function upateSources() { + var sources = new Array(); + var weights = new Array(); + + if (weight1 > 0) { + sources.push(level1) + weights.push(weight1) + } + + if (weight2 > 0) { + sources.push(level2) + weights.push(weight2) + } + + if (weight3 > 0) { + sources.push(level3) + weights.push(weight3) + } + + if (weight4 > 0) { + sources.push(level4) + weights.push(weight4) + } + + if (weight5 > 0) { + sources.push(level5) + weights.push(weight5) + } + + if (weight6 > 0) { + sources.push(level6) + weights.push(weight6) + } + + for (var j = sources.length; j < 6; j++) { + sources.push(dummy) + weights.push(0.0) + } + + source1 = sources[0] + source2 = sources[1] + source3 = sources[2] + source4 = sources[3] + source5 = sources[4] + source6 = sources[5] + + weight1 = weights[0] + weight2 = weights[1] + weight3 = weights[2] + weight4 = weights[3] + weight5 = weights[4] + weight6 = weights[5] + } + + Component.onCompleted: calculateWeights() + + onLodChanged: calculateWeights() + + fragmentShader: " + uniform lowp sampler2D original; + uniform lowp sampler2D source1; + uniform lowp sampler2D source2; + uniform lowp sampler2D source3; + uniform lowp sampler2D source4; + uniform lowp sampler2D source5; + uniform mediump float weight1; + uniform mediump float weight2; + uniform mediump float weight3; + uniform mediump float weight4; + uniform mediump float weight5; + uniform highp vec4 color; + uniform highp float spread; + uniform lowp float qt_Opacity; + varying mediump vec2 qt_TexCoord0; + + highp float linearstep(highp float e0, highp float e1, highp float x) { + return clamp((x - e0) / (e1 - e0), 0.0, 1.0); + } + + void main() { + lowp vec4 shadowColor = texture2D(source1, qt_TexCoord0) * weight1; + shadowColor += texture2D(source2, qt_TexCoord0) * weight2; + shadowColor += texture2D(source3, qt_TexCoord0) * weight3; + shadowColor += texture2D(source4, qt_TexCoord0) * weight4; + shadowColor += texture2D(source5, qt_TexCoord0) * weight5; + lowp vec4 originalColor = texture2D(original, qt_TexCoord0); + shadowColor.rgb = mix(originalColor.rgb, color.rgb * originalColor.a, linearstep(0.0, spread, shadowColor.a)); + gl_FragColor = vec4(shadowColor.rgb, originalColor.a) * originalColor.a * qt_Opacity; + } + " + } +} diff --git a/bin/win64/private/FastMaskedBlur.qml b/bin/win64/private/FastMaskedBlur.qml new file mode 100644 index 0000000..e44ee4b --- /dev/null +++ b/bin/win64/private/FastMaskedBlur.qml @@ -0,0 +1,333 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +Item { + id: rootItem + property variant source + property variant maskSource + property real blur: 0.0 + property bool transparentBorder: false + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + } + + SourceProxy { + id: maskSourceProxy + input: rootItem.maskSource + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: shaderItem + visible: rootItem.cached + sourceItem: shaderItem + live: true + hideSource: visible + smooth: rootItem.blur > 0 + } + + property string __internalBlurVertexShader: " + attribute highp vec4 qt_Vertex; + attribute highp vec2 qt_MultiTexCoord0; + uniform highp mat4 qt_Matrix; + uniform highp float yStep; + uniform highp float xStep; + varying highp vec2 qt_TexCoord0; + varying highp vec2 qt_TexCoord1; + varying highp vec2 qt_TexCoord2; + varying highp vec2 qt_TexCoord3; + + void main() { + qt_TexCoord0 = vec2(qt_MultiTexCoord0.x + xStep, qt_MultiTexCoord0.y + yStep * 0.36); + qt_TexCoord1 = vec2(qt_MultiTexCoord0.x + xStep * 0.36, qt_MultiTexCoord0.y - yStep); + qt_TexCoord2 = vec2(qt_MultiTexCoord0.x - xStep * 0.36, qt_MultiTexCoord0.y + yStep); + qt_TexCoord3 = vec2(qt_MultiTexCoord0.x - xStep, qt_MultiTexCoord0.y - yStep * 0.36); + gl_Position = qt_Matrix * qt_Vertex; + } + " + + property string __internalBlurFragmentShader: " + uniform lowp sampler2D source; + uniform lowp float qt_Opacity; + varying highp vec2 qt_TexCoord0; + varying highp vec2 qt_TexCoord1; + varying highp vec2 qt_TexCoord2; + varying highp vec2 qt_TexCoord3; + + void main() { + highp vec4 sourceColor = (texture2D(source, qt_TexCoord0) + + texture2D(source, qt_TexCoord1) + + texture2D(source, qt_TexCoord2) + + texture2D(source, qt_TexCoord3)) * 0.25; + gl_FragColor = sourceColor * qt_Opacity; + } + " + + ShaderEffect { + id: mask0 + property variant source: maskSourceProxy.output + anchors.fill: parent + visible: false + smooth: true + } + + ShaderEffectSource { + id: masklevel1 + width: Math.ceil(shaderItem.width / 32) * 32 + height: Math.ceil(shaderItem.height / 32) * 32 + sourceItem: mask0 + hideSource: rootItem.visible + sourceRect: transparentBorder ? Qt.rect(-64, -64, shaderItem.width, shaderItem.height) : Qt.rect(0, 0, 0, 0) + visible: false + smooth: rootItem.blur > 0 + } + + ShaderEffect { + id: level0 + property variant source: sourceProxy.output + anchors.fill: parent + visible: false + smooth: true + } + + ShaderEffectSource { + id: level1 + width: Math.ceil(shaderItem.width / 32) * 32 + height: Math.ceil(shaderItem.height / 32) * 32 + sourceItem: level0 + hideSource: rootItem.visible + sourceRect: transparentBorder ? Qt.rect(-64, -64, shaderItem.width, shaderItem.height) : Qt.rect(0, 0, 0, 0) + visible: false + smooth: rootItem.blur > 0 + } + + ShaderEffect { + id: effect1 + property variant source: level1 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level2 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level2 + width: level1.width / 2 + height: level1.height / 2 + sourceItem: effect1 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect2 + property variant source: level2 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level3 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level3 + width: level2.width / 2 + height: level2.height / 2 + sourceItem: effect2 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect3 + property variant source: level3 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level4 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level4 + width: level3.width / 2 + height: level3.height / 2 + sourceItem: effect3 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect4 + property variant source: level4 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level5 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level5 + width: level4.width / 2 + height: level4.height / 2 + sourceItem: effect4 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect5 + property variant source: level5 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level6 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level6 + width: level5.width / 2 + height: level5.height / 2 + sourceItem: effect5 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: shaderItem + property variant mask: masklevel1 + property variant source1: level1 + property variant source2: level2 + property variant source3: level3 + property variant source4: level4 + property variant source5: level5 + property variant source6: level6 + property real lod: Math.sqrt(rootItem.blur) * 1.2 - 0.2 + property real weight1 + property real weight2 + property real weight3 + property real weight4 + property real weight5 + property real weight6 + + x: transparentBorder ? -64 : 0 + y: transparentBorder ? -64 : 0 + width: transparentBorder ? parent.width + 128 : parent.width + height: transparentBorder ? parent.height + 128 : parent.height + + fragmentShader: " + uniform lowp sampler2D mask; + uniform lowp sampler2D source1; + uniform lowp sampler2D source2; + uniform lowp sampler2D source3; + uniform lowp sampler2D source4; + uniform lowp sampler2D source5; + uniform lowp sampler2D source6; + uniform lowp float lod; + uniform lowp float qt_Opacity; + varying mediump vec2 qt_TexCoord0; + + mediump float weight(mediump float v) { + if (v <= 0.0) + return 1.0; + + if (v >= 0.5) + return 0.0; + + return 1.0 - v * 2.0; + } + + void main() { + + lowp vec4 maskColor = texture2D(mask, qt_TexCoord0); + mediump float l = lod * maskColor.a; + + mediump float w1 = weight(abs(l - 0.100)); + mediump float w2 = weight(abs(l - 0.300)); + mediump float w3 = weight(abs(l - 0.500)); + mediump float w4 = weight(abs(l - 0.700)); + mediump float w5 = weight(abs(l - 0.900)); + mediump float w6 = weight(abs(l - 1.100)); + + mediump float sum = w1 + w2 + w3 + w4 + w5 + w6; + mediump float weight1 = w1 / sum; + mediump float weight2 = w2 / sum; + mediump float weight3 = w3 / sum; + mediump float weight4 = w4 / sum; + mediump float weight5 = w5 / sum; + mediump float weight6 = w6 / sum; + + lowp vec4 sourceColor = texture2D(source1, qt_TexCoord0) * weight1; + sourceColor += texture2D(source2, qt_TexCoord0) * weight2; + sourceColor += texture2D(source3, qt_TexCoord0) * weight3; + sourceColor += texture2D(source4, qt_TexCoord0) * weight4; + sourceColor += texture2D(source5, qt_TexCoord0) * weight5; + sourceColor += texture2D(source6, qt_TexCoord0) * weight6; + + gl_FragColor = sourceColor * qt_Opacity; + + } + " + } +} diff --git a/bin/win64/private/GaussianDirectionalBlur.qml b/bin/win64/private/GaussianDirectionalBlur.qml new file mode 100644 index 0000000..28dc52c --- /dev/null +++ b/bin/win64/private/GaussianDirectionalBlur.qml @@ -0,0 +1,287 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +Item { + id: rootItem + property variant source + property real deviation: (radius + 1) / 3.3333 + property real radius: 0.0 + property int maximumRadius: 0 + property real horizontalStep: 0.0 + property real verticalStep: 0.0 + property bool transparentBorder: false + property bool cached: false + + property bool enableColor: false + property color color: "white" + property real spread: 0.0 + + property bool enableMask: false + property variant maskSource + + SourceProxy { + id: sourceProxy + input: rootItem.source + } + + SourceProxy { + id: maskSourceProxy + input: rootItem.maskSource + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: rootItem + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + property variant source: sourceProxy.output + property real deviation: Math.max(0.1, rootItem.deviation) + property real radius: rootItem.radius + property int maxRadius: rootItem.maximumRadius + property bool transparentBorder: rootItem.transparentBorder + property real gaussianSum: 0.0 + property real startIndex: 0.0 + property real deltaFactor: (2 * radius - 1) / (maxRadius * 2 - 1) + property real expandX: transparentBorder && rootItem.horizontalStep > 0 ? maxRadius / width : 0.0 + property real expandY: transparentBorder && rootItem.verticalStep > 0 ? maxRadius / height : 0.0 + property variant gwts: [] + property variant delta: Qt.vector3d(rootItem.horizontalStep * deltaFactor, rootItem.verticalStep * deltaFactor, startIndex); + property variant factor_0_2: Qt.vector3d(gwts[0], gwts[1], gwts[2]); + property variant factor_3_5: Qt.vector3d(gwts[3], gwts[4], gwts[5]); + property variant factor_6_8: Qt.vector3d(gwts[6], gwts[7], gwts[8]); + property variant factor_9_11: Qt.vector3d(gwts[9], gwts[10], gwts[11]); + property variant factor_12_14: Qt.vector3d(gwts[12], gwts[13], gwts[14]); + property variant factor_15_17: Qt.vector3d(gwts[15], gwts[16], gwts[17]); + property variant factor_18_20: Qt.vector3d(gwts[18], gwts[19], gwts[20]); + property variant factor_21_23: Qt.vector3d(gwts[21], gwts[22], gwts[23]); + property variant factor_24_26: Qt.vector3d(gwts[24], gwts[25], gwts[26]); + property variant factor_27_29: Qt.vector3d(gwts[27], gwts[28], gwts[29]); + property variant factor_30_31: Qt.point(gwts[30], gwts[31]); + + property color color: rootItem.color + property real spread: 1.0 - (rootItem.spread * 0.98) + property variant maskSource: maskSourceProxy.output + + anchors.fill: rootItem + + function gausFunc(x){ + //Gaussian function = h(x):=(1/sqrt(2*3.14159*(D^2))) * %e^(-(x^2)/(2*(D^2))); + return (1.0 / Math.sqrt(2 * Math.PI * (Math.pow(shaderItem.deviation, 2)))) * Math.pow(Math.E, -((Math.pow(x, 2)) / (2 * (Math.pow(shaderItem.deviation, 2))))); + } + + function updateGaussianWeights() { + gaussianSum = 0.0; + startIndex = -maxRadius + 0.5 + + var n = new Array(32); + for (var j = 0; j < 32; j++) + n[j] = 0; + + var max = maxRadius * 2 + var delta = (2 * radius - 1) / (max - 1); + for (var i = 0; i < max; i++) { + n[i] = gausFunc(-radius + 0.5 + i * delta); + gaussianSum += n[i]; + } + + gwts = n; + } + + function buildFragmentShader() { + + var shaderSteps = [ + "gl_FragColor += texture2D(source, texCoord) * factor_0_2.x; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_0_2.y; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_0_2.z; texCoord += shift;", + + "gl_FragColor += texture2D(source, texCoord) * factor_3_5.x; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_3_5.y; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_3_5.z; texCoord += shift;", + + "gl_FragColor += texture2D(source, texCoord) * factor_6_8.x; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_6_8.y; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_6_8.z; texCoord += shift;", + + "gl_FragColor += texture2D(source, texCoord) * factor_9_11.x; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_9_11.y; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_9_11.z; texCoord += shift;", + + "gl_FragColor += texture2D(source, texCoord) * factor_12_14.x; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_12_14.y; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_12_14.z; texCoord += shift;", + + "gl_FragColor += texture2D(source, texCoord) * factor_15_17.x; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_15_17.y; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_15_17.z; texCoord += shift;", + + "gl_FragColor += texture2D(source, texCoord) * factor_18_20.x; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_18_20.y; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_18_20.z; texCoord += shift;", + + "gl_FragColor += texture2D(source, texCoord) * factor_21_23.x; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_21_23.y; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_21_23.z; texCoord += shift;", + + "gl_FragColor += texture2D(source, texCoord) * factor_24_26.x; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_24_26.y; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_24_26.z; texCoord += shift;", + + "gl_FragColor += texture2D(source, texCoord) * factor_27_29.x; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_27_29.y; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_27_29.z; texCoord += shift;", + + "gl_FragColor += texture2D(source, texCoord) * factor_30_31.x; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_30_31.y; texCoord += shift;" + ] + + var shader = fragmentShaderBegin + var samples = maxRadius * 2 + if (samples > 32) { + console.log("DirectionalGaussianBlur.qml WARNING: Maximum of blur radius (16) exceeded!") + samples = 32 + } + + for (var i = 0; i < samples; i++) { + shader += shaderSteps[i] + } + + shader += fragmentShaderEnd + + var colorizeSteps = "" + var colorizeUniforms = "" + + var maskSteps = "" + var maskUniforms = "" + + if (enableColor) { + colorizeSteps += "gl_FragColor = mix(vec4(0), color, clamp((gl_FragColor.a - 0.0) / (spread - 0.0), 0.0, 1.0));\n" + colorizeUniforms += "uniform highp vec4 color;\n" + colorizeUniforms += "uniform highp float spread;\n" + } + + if (enableMask) { + maskSteps += "shift *= texture2D(maskSource, qt_TexCoord0).a;\n" + maskUniforms += "uniform sampler2D maskSource;\n" + } + + shader = shader.replace("PLACEHOLDER_COLORIZE_STEPS", colorizeSteps) + shader = shader.replace("PLACEHOLDER_COLORIZE_UNIFORMS", colorizeUniforms) + shader = shader.replace("PLACEHOLDER_MASK_STEPS", maskSteps) + shader = shader.replace("PLACEHOLDER_MASK_UNIFORMS", maskUniforms) + + fragmentShader = shader + } + + onDeviationChanged: updateGaussianWeights() + + onRadiusChanged: updateGaussianWeights() + + onTransparentBorderChanged: { + buildFragmentShader() + updateGaussianWeights() + } + + onMaxRadiusChanged: { + buildFragmentShader() + updateGaussianWeights() + } + + Component.onCompleted: { + buildFragmentShader() + updateGaussianWeights() + } + + property string fragmentShaderBegin: " + varying mediump vec2 qt_TexCoord0; + uniform highp float qt_Opacity; + uniform lowp sampler2D source; + uniform highp vec3 delta; + uniform highp vec3 factor_0_2; + uniform highp vec3 factor_3_5; + uniform highp vec3 factor_6_8; + uniform highp vec3 factor_9_11; + uniform highp vec3 factor_12_14; + uniform highp vec3 factor_15_17; + uniform highp vec3 factor_18_20; + uniform highp vec3 factor_21_23; + uniform highp vec3 factor_24_26; + uniform highp vec3 factor_27_29; + uniform highp vec3 factor_30_31; + uniform highp float gaussianSum; + uniform highp float expandX; + uniform highp float expandY; + PLACEHOLDER_MASK_UNIFORMS + PLACEHOLDER_COLORIZE_UNIFORMS + + void main() { + highp vec2 shift = vec2(delta.x, delta.y); + + PLACEHOLDER_MASK_STEPS + + highp float index = delta.z; + mediump vec2 texCoord = qt_TexCoord0; + texCoord.s = (texCoord.s - expandX) / (1.0 - 2.0 * expandX); + texCoord.t = (texCoord.t - expandY) / (1.0 - 2.0 * expandY); + texCoord += (shift * index); + + gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); + " + + property string fragmentShaderEnd: " + + gl_FragColor /= gaussianSum; + + PLACEHOLDER_COLORIZE_STEPS + + gl_FragColor *= qt_Opacity; + } + " + } +} diff --git a/bin/win64/private/GaussianGlow.qml b/bin/win64/private/GaussianGlow.qml new file mode 100644 index 0000000..7de29a1 --- /dev/null +++ b/bin/win64/private/GaussianGlow.qml @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +Item { + id: rootItem + property variant source + property real radius: 0.0 + property int maximumRadius: 0 + property real spread: 0.0 + property color color: "white" + property bool cached: false + property bool transparentBorder: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + sourceRect: rootItem.transparentBorder ? Qt.rect(-1, -1, parent.width + 2.0, parent.height + 2.0) : Qt.rect(0, 0, 0, 0) + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: shaderItem + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + GaussianDirectionalBlur { + id: shaderItem + x: transparentBorder ? -maximumRadius - 1 : 0 + y: transparentBorder ? -maximumRadius - 1 : 0 + width: horizontalBlur.width + height: horizontalBlur.height + horizontalStep: 0.0 + verticalStep: 1.0 / parent.height + source: horizontalBlur + radius: rootItem.radius + maximumRadius: rootItem.maximumRadius + transparentBorder: rootItem.transparentBorder + enableColor: true + color: rootItem.color + spread: rootItem.spread + } + + GaussianDirectionalBlur { + id: horizontalBlur + width: transparentBorder ? parent.width + 2 * maximumRadius + 2 : parent.width + height: transparentBorder ? parent.height + 2 * maximumRadius + 2 : parent.height + horizontalStep: 1.0 / parent.width + verticalStep: 0.0 + source: sourceProxy.output + radius: rootItem.radius + maximumRadius: rootItem.maximumRadius + transparentBorder: rootItem.transparentBorder + visible: false + } +} diff --git a/bin/win64/private/GaussianInnerShadow.qml b/bin/win64/private/GaussianInnerShadow.qml new file mode 100644 index 0000000..74c98de --- /dev/null +++ b/bin/win64/private/GaussianInnerShadow.qml @@ -0,0 +1,156 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +Item { + id: rootItem + property variant source + property real radius: 0.0 + property int maximumRadius: 0 + property real horizontalOffset: 0 + property real verticalOffset: 0 + property real spread: 0 + property color color: "black" + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: shaderItem + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect{ + id: shadowItem + anchors.fill: parent + + property variant original: sourceProxy.output + property color color: rootItem.color + property real horizontalOffset: rootItem.horizontalOffset / rootItem.width + property real verticalOffset: rootItem.verticalOffset / rootItem.height + + visible: false + fragmentShader: " + uniform highp sampler2D original; + uniform lowp float qt_Opacity; + uniform lowp vec4 color; + uniform highp float horizontalOffset; + uniform highp float verticalOffset; + varying highp vec2 qt_TexCoord0; + + void main(void) { + highp vec2 pos = qt_TexCoord0 - vec2(horizontalOffset, verticalOffset); + lowp float ea = step(0.0, pos.x) * step(0.0, pos.y) * step(pos.x, 1.0) * step(pos.y, 1.0); + lowp float eb = 1.0 - ea; + gl_FragColor = eb * color + ea * color * (1.0 - texture2D(original, pos).a) * qt_Opacity; + } + " + } + + GaussianDirectionalBlur { + id: blurItem + anchors.fill: parent + horizontalStep: 0.0 + verticalStep: 1.0 / parent.height + source: horizontalBlur + radius: rootItem.radius + maximumRadius: rootItem.maximumRadius + visible: false + } + + GaussianDirectionalBlur { + id: horizontalBlur + width: transparentBorder ? parent.width + 2 * maximumRadius : parent.width + height: parent.height + horizontalStep: 1.0 / parent.width + verticalStep: 0.0 + source: shadowItem + radius: rootItem.radius + maximumRadius: rootItem.maximumRadius + visible: false + } + + ShaderEffectSource { + id: blurredSource + sourceItem: blurItem + live: true + smooth: true + } + + ShaderEffect { + id: shaderItem + anchors.fill: parent + + property variant original: sourceProxy.output + property variant shadow: blurredSource + property real spread: 1.0 - (rootItem.spread * 0.98) + property color color: rootItem.color + + fragmentShader: " + uniform highp sampler2D original; + uniform highp sampler2D shadow; + uniform lowp float qt_Opacity; + uniform highp float spread; + uniform lowp vec4 color; + varying highp vec2 qt_TexCoord0; + + highp float linearstep(highp float e0, highp float e1, highp float x) { + return clamp((x - e0) / (e1 - e0), 0.0, 1.0); + } + + void main(void) { + lowp vec4 originalColor = texture2D(original, qt_TexCoord0); + lowp vec4 shadowColor = texture2D(shadow, qt_TexCoord0); + shadowColor.rgb = mix(originalColor.rgb, color.rgb * originalColor.a, linearstep(0.0, spread, shadowColor.a)); + gl_FragColor = vec4(shadowColor.rgb, originalColor.a) * originalColor.a * qt_Opacity; + } + " + } +} diff --git a/bin/win64/private/GaussianMaskedBlur.qml b/bin/win64/private/GaussianMaskedBlur.qml new file mode 100644 index 0000000..0ca2c5e --- /dev/null +++ b/bin/win64/private/GaussianMaskedBlur.qml @@ -0,0 +1,105 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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.0 +import QtGraphicalEffects.private 1.0 + +Item { + id: rootItem + property variant source + property variant maskSource + property real radius: 0.0 + property int maximumRadius: 0 + property bool cached: false + property bool transparentBorder: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + sourceRect: rootItem.transparentBorder ? Qt.rect(-1, -1, parent.width + 2.0, parent.height + 2.0) : Qt.rect(0, 0, 0, 0) + } + + SourceProxy { + id: maskSourceProxy + input: rootItem.maskSource + sourceRect: rootItem.transparentBorder ? Qt.rect(-1, -1, parent.width + 2.0, parent.height + 2.0) : Qt.rect(0, 0, 0, 0) + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: blur + visible: rootItem.cached + smooth: true + sourceItem: blur + live: true + hideSource: visible + } + + GaussianDirectionalBlur { + id: blur + x: transparentBorder ? -maximumRadius - 1: 0 + y: transparentBorder ? -maximumRadius - 1: 0 + width: horizontalBlur.width + height: horizontalBlur.height + horizontalStep: 0.0 + verticalStep: 1.0 / parent.height + source: horizontalBlur + enableMask: true + maskSource: maskSourceProxy.output + radius: rootItem.radius + maximumRadius: rootItem.maximumRadius + transparentBorder: rootItem.transparentBorder + } + + GaussianDirectionalBlur { + id: horizontalBlur + width: transparentBorder ? parent.width + 2 * maximumRadius + 2 : parent.width + height: transparentBorder ? parent.height + 2 * maximumRadius + 2 : parent.height + horizontalStep: 1.0 / parent.width + verticalStep: 0.0 + source: sourceProxy.output + enableMask: true + maskSource: maskSourceProxy.output + radius: rootItem.radius + maximumRadius: rootItem.maximumRadius + transparentBorder: rootItem.transparentBorder + visible: false + } +} diff --git a/bin/win64/private/qmldir b/bin/win64/private/qmldir new file mode 100644 index 0000000..2d4bdac --- /dev/null +++ b/bin/win64/private/qmldir @@ -0,0 +1,11 @@ +module QtGraphicalEffects.private +plugin qtgraphicaleffectsprivate +classname QtGraphicalEffectsPrivatePlugin +FastGlow 1.0 FastGlow.qml +FastInnerShadow 1.0 FastInnerShadow.qml +FastMaskedBlur 1.0 FastMaskedBlur.qml +GaussianDirectionalBlur 1.0 GaussianDirectionalBlur.qml +GaussianGlow 1.0 GaussianGlow.qml +GaussianInnerShadow 1.0 GaussianInnerShadow.qml +GaussianMaskedBlur 1.0 GaussianMaskedBlur.qml +DropShadowBase 1.0 DropShadowBase.qml diff --git a/bin/win64/private/qtgraphicaleffectsprivate.dll b/bin/win64/private/qtgraphicaleffectsprivate.dll new file mode 100644 index 0000000..df364bd Binary files /dev/null and b/bin/win64/private/qtgraphicaleffectsprivate.dll differ diff --git a/bin/win64/qmltooling/qmldbg_debugger.dll b/bin/win64/qmltooling/qmldbg_debugger.dll new file mode 100644 index 0000000..3421f4a Binary files /dev/null and b/bin/win64/qmltooling/qmldbg_debugger.dll differ diff --git a/bin/win64/qmltooling/qmldbg_inspector.dll b/bin/win64/qmltooling/qmldbg_inspector.dll new file mode 100644 index 0000000..d1954d9 Binary files /dev/null and b/bin/win64/qmltooling/qmldbg_inspector.dll differ diff --git a/bin/win64/qmltooling/qmldbg_local.dll b/bin/win64/qmltooling/qmldbg_local.dll new file mode 100644 index 0000000..b6269f3 Binary files /dev/null and b/bin/win64/qmltooling/qmldbg_local.dll differ diff --git a/bin/win64/qmltooling/qmldbg_native.dll b/bin/win64/qmltooling/qmldbg_native.dll new file mode 100644 index 0000000..14cecd4 Binary files /dev/null and b/bin/win64/qmltooling/qmldbg_native.dll differ diff --git a/bin/win64/qmltooling/qmldbg_profiler.dll b/bin/win64/qmltooling/qmldbg_profiler.dll new file mode 100644 index 0000000..32c9630 Binary files /dev/null and b/bin/win64/qmltooling/qmldbg_profiler.dll differ diff --git a/bin/win64/qmltooling/qmldbg_quickprofiler.dll b/bin/win64/qmltooling/qmldbg_quickprofiler.dll new file mode 100644 index 0000000..b28eacb Binary files /dev/null and b/bin/win64/qmltooling/qmldbg_quickprofiler.dll differ diff --git a/bin/win64/qmltooling/qmldbg_server.dll b/bin/win64/qmltooling/qmldbg_server.dll new file mode 100644 index 0000000..cc5b68f Binary files /dev/null and b/bin/win64/qmltooling/qmldbg_server.dll differ diff --git a/bin/win64/qmltooling/qmldbg_tcp.dll b/bin/win64/qmltooling/qmldbg_tcp.dll new file mode 100644 index 0000000..4cae8ea Binary files /dev/null and b/bin/win64/qmltooling/qmldbg_tcp.dll differ diff --git a/bin/win64/res/qml/AudioPage.qml b/bin/win64/res/qml/AudioPage.qml new file mode 100644 index 0000000..7335043 --- /dev/null +++ b/bin/win64/res/qml/AudioPage.qml @@ -0,0 +1,611 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import QtQuick.Layouts 1.3 +import matzman666.advsettings 1.0 + + +MyStackViewPage { + width: 1200 + headerText: "Audio Settings" + + + MyDialogOkPopup { + id: audioMessageDialog + function showMessage(title, text) { + dialogTitle = title + dialogText = text + open() + } + } + + MyDialogOkCancelPopup { + id: pttDeleteProfileDialog + property int profileIndex: -1 + dialogTitle: "Delete Profile" + dialogText: "Do you really want to delete this profile?" + onClosed: { + if (okClicked) { + AudioTabController.deletePttProfile(profileIndex) + } + } + } + + MyDialogOkCancelPopup { + id: pttControllerConfigDialog + property int controllerIndex: -1 + dialogTitle: "Controller Configuration" + dialogWidth: 600 + dialogHeight: 620 + dialogContentItem: ColumnLayout { + MyText { + text: "Buttons" + } + Rectangle { + color: "#cccccc" + height: 1 + Layout.fillWidth: true + } + MyToggleButton { + id: pttControllerConfigGripButtonToggle + text: "Grip" + } + MyToggleButton { + id: pttControllerConfigMenuButtonToggle + text: "Menu" + } + MyToggleButton { + id: pttControllerConfigTriggerButtonToggle + text: "Trigger" + } + + MyText { + Layout.topMargin: 32 + text: "Touchpad" + } + Rectangle { + color: "#cccccc" + height: 1 + Layout.fillWidth: true + } + RowLayout { + spacing: 64 + MyToggleButton { + id: pttControllerConfigPadLeftToggle + text: "Left" + } + MyToggleButton { + id: pttControllerConfigPadRightToggle + text: "Right" + } + } + RowLayout { + spacing: 64 + MyToggleButton { + id: pttControllerConfigPadTopToggle + text: "Top" + } + MyToggleButton { + id: pttControllerConfigPadBottomToggle + text: "Bottom" + } + } + RowLayout { + MyText { + text: "Mode:" + } + MyComboBox { + id: pttControllerConfigPadModeCombo + Layout.preferredWidth: 250 + model: ["Disabled", "Touched", "Pressed"] + } + } + } + onClosed: { + if (okClicked) { + var buttons = [] + if (pttControllerConfigGripButtonToggle.checked) { + buttons.push(2) + } + if (pttControllerConfigMenuButtonToggle.checked) { + buttons.push(1) + } + var triggerMode = 0 + if (pttControllerConfigTriggerButtonToggle.checked) { + triggerMode = 1 + } + var padAreas = 0 + if (pttControllerConfigPadLeftToggle.checked) { + padAreas |= (1 << 0) + } + if (pttControllerConfigPadTopToggle.checked) { + padAreas |= (1 << 1) + } + if (pttControllerConfigPadRightToggle.checked) { + padAreas |= (1 << 2) + } + if (pttControllerConfigPadBottomToggle.checked) { + padAreas |= (1 << 3) + } + AudioTabController.setPttControllerConfig(controllerIndex, buttons, triggerMode, pttControllerConfigPadModeCombo.currentIndex, padAreas); + } + } + function openPopup(controller) { + if (controller === 0) { + dialogTitle = "Left Controller Configuration" + controllerIndex = 0 + } else { + dialogTitle = "Right Controller Configuration" + controllerIndex = 1 + } + pttControllerConfigGripButtonToggle.checked = false + pttControllerConfigMenuButtonToggle.checked = false + pttControllerConfigTriggerButtonToggle.checked = false + pttControllerConfigPadLeftToggle.checked = false + pttControllerConfigPadTopToggle.checked = false + pttControllerConfigPadRightToggle.checked = false + pttControllerConfigPadBottomToggle.checked = false + pttControllerConfigPadModeCombo.currentIndex = AudioTabController.pttTouchpadMode(controllerIndex) + var buttons = AudioTabController.pttDigitalButtons(controllerIndex) + for (var i = 0; i < buttons.length; i++) { + if (buttons[i] == 1) { + pttControllerConfigMenuButtonToggle.checked = true + } else if (buttons[i] == 2) { + pttControllerConfigGripButtonToggle.checked = true + } + } + if (AudioTabController.pttTriggerMode(controllerIndex) > 0) { + pttControllerConfigTriggerButtonToggle.checked = true + } + var padAreas = AudioTabController.pttTouchpadArea(controllerIndex) + if (padAreas & (1 << 0)) { + pttControllerConfigPadLeftToggle.checked = true + } + if (padAreas & (1 << 1)) { + pttControllerConfigPadTopToggle.checked = true + } + if (padAreas & (1 << 2)) { + pttControllerConfigPadRightToggle.checked = true + } + if (padAreas & (1 << 3)) { + pttControllerConfigPadBottomToggle.checked = true + } + open() + } + } + + MyDialogOkCancelPopup { + id: pttNewProfileDialog + dialogTitle: "Create New Profile" + dialogWidth: 600 + dialogHeight: 220 + dialogContentItem: ColumnLayout { + RowLayout { + Layout.topMargin: 16 + Layout.leftMargin: 16 + Layout.rightMargin: 16 + MyText { + text: "Name: " + } + TextField { + id: pttNewProfileName + color: "#cccccc" + text: "" + Layout.fillWidth: true + font.pointSize: 20 + onActiveFocusChanged: { + if (activeFocus) { + OverlayController.showKeyboard(text, 101) + } + } + Connections { + target: OverlayController + onKeyBoardInputSignal: { + if (userValue == 101) { + pttNewProfileName.text = input + } + } + } + } + } + } + onClosed: { + if (okClicked) { + if (pttNewProfileName.text != "") { + AudioTabController.addPttProfile(pttNewProfileName.text) + } else { + audioMessageDialog.showMessage("Create New Profile", "ERROR: No name given.") + } + } + } + function openPopup() { + pttNewProfileName.text = "" + open() + } + } + + content: ColumnLayout { + spacing: 92 + + ColumnLayout { + spacing: 18 + RowLayout { + MyText { + text: "Mirror Device: " + } + MyText { + id: audioMirrorNameText + text: "" + } + } + RowLayout { + MyText { + text: "Volume:" + Layout.preferredWidth: 120 + } + + MyPushButton2 { + id: audioMirrorVolumeMinusButton + text: "-" + Layout.preferredWidth: 40 + onClicked: { + audioMirrorVolumeSlider.value -= 0.1 + } + } + + MySlider { + id: audioMirrorVolumeSlider + from: 0.0 + to: 1.0 + stepSize: 0.01 + value: 1.0 + Layout.fillWidth: true + onPositionChanged: { + var val = this.position * 100 + audioMirrorVolumeText.text = Math.round(val) + "%" + } + onValueChanged: { + AudioTabController.setMirrorVolume(this.value.toFixed(2), false) + } + } + + MyPushButton2 { + id: audioMirrorVolumePlusButton + text: "+" + Layout.preferredWidth: 40 + onClicked: { + audioMirrorVolumeSlider.value += 0.1 + } + } + + MyText { + id: audioMirrorVolumeText + text: "100%" + Layout.preferredWidth: 85 + horizontalAlignment: Text.AlignRight + } + + MyPushButton2 { + id: audioMirrorMuteToggle + Layout.leftMargin: 12 + checkable: true + contentItem: Image { + source: parent.checked ? "speaker_off.svg" : "speaker_on.svg" + sourceSize.width: 32 + sourceSize.height: 32 + anchors.fill: parent + } + onCheckedChanged: { + AudioTabController.setMirrorMuted(checked, false) + } + } + } + } + + ColumnLayout { + spacing: 18 + RowLayout { + MyText { + text: "Microphone: " + } + MyText { + id: audioMicNameText + text: "" + } + } + RowLayout { + MyText { + text: "Volume:" + Layout.preferredWidth: 120 + } + + MyPushButton2 { + id: audioMicVolumeMinusButton + text: "-" + Layout.preferredWidth: 40 + onClicked: { + audioMicVolumeSlider.value -= 0.1 + } + } + + MySlider { + id: audioMicVolumeSlider + from: 0.0 + to: 1.0 + stepSize: 0.01 + value: 1.0 + Layout.fillWidth: true + onPositionChanged: { + var val = this.position * 100 + audioMicVolumeText.text = Math.round(val) + "%" + } + onValueChanged: { + AudioTabController.setMicVolume(this.value.toFixed(2)) + } + } + + MyPushButton2 { + id: audioMicVolumePlusButton + text: "+" + Layout.preferredWidth: 40 + onClicked: { + audioMicVolumeSlider.value += 0.1 + } + } + + MyText { + id: audioMicVolumeText + text: "100%" + Layout.preferredWidth: 85 + horizontalAlignment: Text.AlignRight + } + + MyPushButton2 { + id: audioMicMuteToggle + Layout.leftMargin: 12 + checkable: true + contentItem: Image { + source: parent.checked ? "mic_off.svg" : "mic_on.svg" + sourceSize.width: 32 + sourceSize.height: 32 + anchors.fill: parent + } + onCheckedChanged: { + AudioTabController.setMicMuted(checked) + } + } + } + RowLayout { + MyToggleButton { + id: audioPttEnabledToggle + Layout.preferredWidth: 260 + text: "Push-to-Talk:" + onClicked: { + AudioTabController.pttEnabled = checked + } + } + MyToggleButton { + id: audioPttLeftControllerToggle + text: "Left Controller" + onClicked: { + AudioTabController.setPttLeftControllerEnabled(checked, false) + } + } + MyPushButton { + text: "Configure" + onClicked: { + pttControllerConfigDialog.openPopup(0) + } + } + Item { + Layout.fillWidth: true + } + MyToggleButton { + id: audioPttRightControllerToggle + text: "Right Controller" + onClicked: { + AudioTabController.setPttRightControllerEnabled(checked, false) + } + } + MyPushButton { + text: "Configure" + onClicked: { + pttControllerConfigDialog.openPopup(1) + } + } + } + MyToggleButton { + id: audioPttShowNotificationToggle + Layout.leftMargin: 265 + text: "Show notification in HMD." + onCheckedChanged: { + AudioTabController.setPttShowNotification(checked, false) + } + } + RowLayout { + spacing: 18 + + MyText { + Layout.leftMargin: 270 + text: "Profile:" + } + + MyComboBox { + id: pttProfileComboBox + Layout.fillWidth: true + model: [""] + onCurrentIndexChanged: { + if (currentIndex > 0) { + pttApplyProfileButton.enabled = true + pttDeleteProfileButton.enabled = true + } else { + pttApplyProfileButton.enabled = false + pttDeleteProfileButton.enabled = false + } + } + } + + MyPushButton { + id: pttApplyProfileButton + enabled: true + Layout.preferredWidth: 200 + text: "Apply" + onClicked: { + if (pttProfileComboBox.currentIndex > 0) { + AudioTabController.applyPttProfile(pttProfileComboBox.currentIndex - 1) + pttProfileComboBox.currentIndex = 0 + } + } + } + } + RowLayout { + spacing: 18 + Item { + Layout.fillWidth: true + } + MyPushButton { + id: pttDeleteProfileButton + enabled: true + Layout.preferredWidth: 200 + text: "Delete Profile" + onClicked: { + if (pttProfileComboBox.currentIndex > 0) { + pttDeleteProfileDialog.profileIndex = pttProfileComboBox.currentIndex - 1 + pttDeleteProfileDialog.open() + } + } + } + MyPushButton { + Layout.preferredWidth: 200 + text: "New Profile" + onClicked: { + pttNewProfileDialog.openPopup() + } + } + } + } + + Component.onCompleted: { + reloadPttProfiles() + if (AudioTabController.mirrorPresent) { + audioMirrorVolumeMinusButton.enabled = true + audioMirrorVolumeSlider.enabled = true + audioMirrorVolumePlusButton.enabled = true + audioMirrorMuteToggle.enabled = true + audioMirrorNameText.text = AudioTabController.mirrorDevName + audioMirrorVolumeSlider.value = AudioTabController.mirrorVolume + audioMirrorMuteToggle.checked = AudioTabController.mirrorMuted + } else { + audioMirrorVolumeMinusButton.enabled = false + audioMirrorVolumeSlider.enabled = false + audioMirrorVolumePlusButton.enabled = false + audioMirrorMuteToggle.enabled = false + audioMirrorNameText.text = "" + } + if (AudioTabController.micPresent) { + audioMicVolumeMinusButton.enabled = true + audioMicVolumeSlider.enabled = true + audioMicVolumePlusButton.enabled = true + audioMicMuteToggle.enabled = true + audioMicNameText.text = AudioTabController.micDevName + audioMicVolumeSlider.value = AudioTabController.micVolume + audioMicMuteToggle.checked = AudioTabController.micMuted + } else { + audioMicVolumeMinusButton.enabled = false + audioMicVolumeSlider.enabled = false + audioMicVolumePlusButton.enabled = false + audioMicMuteToggle.enabled = false + audioMicNameText.text = "" + } + audioPttEnabledToggle.checked = AudioTabController.pttEnabled + audioPttLeftControllerToggle.checked = AudioTabController.pttLeftControllerEnabled + audioPttRightControllerToggle.checked = AudioTabController.pttRightControllerEnabled + audioPttShowNotificationToggle.checked = AudioTabController.pttShowNotification + } + + Connections { + target: AudioTabController + onMirrorPresentChanged: { + if (value) { + audioMirrorVolumeMinusButton.enabled = true + audioMirrorVolumeSlider.enabled = true + audioMirrorVolumePlusButton.enabled = true + audioMirrorMuteToggle.enabled = true + } else { + audioMirrorVolumeMinusButton.enabled = false + audioMirrorVolumeSlider.enabled = false + audioMirrorVolumePlusButton.enabled = false + audioMirrorMuteToggle.enabled = false + audioMirrorNameText.text = "" + } + } + onMirrorDevNameChanged: { + if (AudioTabController.mirrorPresent) { + audioMirrorNameText.text = AudioTabController.mirrorDevName + } else { + audioMirrorNameText.text = "" + } + } + onMirrorVolumeChanged: { + audioMirrorVolumeSlider.value = AudioTabController.mirrorVolume + } + onMirrorMutedChanged: { + audioMirrorMuteToggle.checked = AudioTabController.mirrorMuted + } + onMicPresentChanged: { + if (value) { + audioMicVolumeMinusButton.enabled = true + audioMicVolumeSlider.enabled = true + audioMicVolumePlusButton.enabled = true + audioMicMuteToggle.enabled = true + } else { + audioMicVolumeMinusButton.enabled = false + audioMicVolumeSlider.enabled = false + audioMicVolumePlusButton.enabled = false + audioMicMuteToggle.enabled = false + audioMicNameText.text = "" + } + } + onMicDevNameChanged: { + if (AudioTabController.micPresent) { + audioMicNameText.text = AudioTabController.micDevName + } else { + audioMicNameText.text = "" + } + } + onMicVolumeChanged: { + audioMicVolumeSlider.value = AudioTabController.micVolume + } + onMicMutedChanged: { + audioMicMuteToggle.checked = AudioTabController.micMuted + } + onPttEnabledChanged: { + audioPttEnabledToggle.checked = AudioTabController.pttEnabled + } + onPttActiveChanged: { + + } + onPttShowNotificationChanged: { + audioPttShowNotificationToggle.checked = AudioTabController.pttShowNotification + } + onPttLeftControllerEnabledChanged: { + audioPttLeftControllerToggle.checked = AudioTabController.pttLeftControllerEnabled + } + onPttRightControllerEnabledChanged: { + audioPttRightControllerToggle.checked = AudioTabController.pttRightControllerEnabled + } + onPttProfilesUpdated: { + reloadPttProfiles() + } + } + } + + function reloadPttProfiles() { + var profiles = [""] + var profileCount = AudioTabController.getPttProfileCount() + for (var i = 0; i < profileCount; i++) { + profiles.push(AudioTabController.getPttProfileName(i)) + } + pttProfileComboBox.currentIndex = 0 + pttProfileComboBox.model = profiles + } +} diff --git a/bin/win64/res/qml/ChaperonePage.qml b/bin/win64/res/qml/ChaperonePage.qml new file mode 100644 index 0000000..123a70f --- /dev/null +++ b/bin/win64/res/qml/ChaperonePage.qml @@ -0,0 +1,437 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import QtQuick.Layouts 1.3 +import QtQuick.Dialogs 1.2 +import matzman666.advsettings 1.0 + +MyStackViewPage { + headerText: "Chaperone Settings" + + MyDialogOkPopup { + id: chaperoneMessageDialog + function showMessage(title, text) { + dialogTitle = title + dialogText = text + open() + } + } + + MyDialogOkCancelPopup { + id: chaperoneDeleteProfileDialog + property int profileIndex: -1 + dialogTitle: "Delete Profile" + dialogText: "Do you really want to delete this profile?" + onClosed: { + if (okClicked) { + ChaperoneTabController.deleteChaperoneProfile(profileIndex) + } + } + } + + MyDialogOkCancelPopup { + id: chaperoneNewProfileDialog + dialogTitle: "Create New Profile" + dialogWidth: 800 + dialogHeight: 780 + dialogContentItem: ColumnLayout { + RowLayout { + Layout.topMargin: 16 + Layout.leftMargin: 16 + Layout.rightMargin: 16 + MyText { + text: "Name: " + } + TextField { + id: chaperoneNewProfileName + color: "#cccccc" + text: "" + Layout.fillWidth: true + font.pointSize: 20 + onActiveFocusChanged: { + if (activeFocus) { + OverlayController.showKeyboard(text, 101) + } + } + Connections { + target: OverlayController + onKeyBoardInputSignal: { + if (userValue == 101) { + chaperoneNewProfileName.text = input + } + } + } + } + } + MyText { + Layout.topMargin: 24 + text: "What to include:" + } + MyToggleButton { + id: chaperoneNewProfileIncludeGeometry + Layout.leftMargin: 32 + text: "Chaperone Geometry" + } + MyToggleButton { + id: chaperoneNewProfileIncludeStyle + Layout.leftMargin: 32 + text: "Chaperone Style" + } + MyToggleButton { + id: chaperoneNewProfileIncludeBoundsColor + Layout.leftMargin: 32 + text: "Chaperone Color" + } + MyToggleButton { + id: chaperoneNewProfileIncludeVisibility + Layout.leftMargin: 32 + text: "Visibility Setting" + } + MyToggleButton { + id: chaperoneNewProfileIncludeFadeDistance + Layout.leftMargin: 32 + text: "Fade Distance Setting" + } + MyToggleButton { + id: chaperoneNewProfileIncludeCenterMarker + Layout.leftMargin: 32 + text: "Center Marker Setting" + } + MyToggleButton { + id: chaperoneNewProfileIncludePlaySpaceMarker + Layout.leftMargin: 32 + text: "Play Space Marker Setting" + } + MyToggleButton { + id: chaperoneNewProfileIncludeFloorBoundsMarker + Layout.leftMargin: 32 + text: "Floor Bounds Always On Setting" + } + MyToggleButton { + id: chaperoneNewProfileIncludeForceBounds + Layout.leftMargin: 32 + text: "Force Bounds Setting" + } + } + onClosed: { + if (okClicked) { + if (chaperoneNewProfileName.text == "") { + chaperoneMessageDialog.showMessage("Create New Profile", "ERROR: Empty profile name.") + } else if (!chaperoneNewProfileIncludeGeometry.checked + && !chaperoneNewProfileIncludeVisibility.checked + && !chaperoneNewProfileIncludeFadeDistance.checked + && !chaperoneNewProfileIncludeCenterMarker.checked + && !chaperoneNewProfileIncludePlaySpaceMarker.checked + && !chaperoneNewProfileIncludeFloorBoundsMarker.checked + && !chaperoneNewProfileIncludeBoundsColor.checked + && !chaperoneNewProfileIncludeStyle.checked + && !chaperoneNewProfileIncludeForceBounds.checked) { + chaperoneMessageDialog.showMessage("Create New Profile", "ERROR: Nothing included.") + } else { + ChaperoneTabController.addChaperoneProfile(chaperoneNewProfileName.text, + chaperoneNewProfileIncludeGeometry.checked, + chaperoneNewProfileIncludeVisibility.checked, + chaperoneNewProfileIncludeFadeDistance.checked, + chaperoneNewProfileIncludeCenterMarker.checked, + chaperoneNewProfileIncludePlaySpaceMarker.checked, + chaperoneNewProfileIncludeFloorBoundsMarker.checked, + chaperoneNewProfileIncludeBoundsColor.checked, + chaperoneNewProfileIncludeStyle.checked, + chaperoneNewProfileIncludeForceBounds.checked) + } + + } + } + function openPopup() { + chaperoneNewProfileName.text = "" + chaperoneNewProfileIncludeGeometry.checked = false + chaperoneNewProfileIncludeVisibility.checked = false + chaperoneNewProfileIncludeFadeDistance.checked = false + chaperoneNewProfileIncludeCenterMarker.checked = false + chaperoneNewProfileIncludePlaySpaceMarker.checked = false + chaperoneNewProfileIncludeFloorBoundsMarker.checked = false + chaperoneNewProfileIncludeBoundsColor.checked = false + chaperoneNewProfileIncludeStyle.checked = false + chaperoneNewProfileIncludeForceBounds.checked = false + open() + } + } + + + content: ColumnLayout { + spacing: 18 + + ColumnLayout { + Layout.bottomMargin: 32 + spacing: 18 + RowLayout { + spacing: 18 + + MyText { + text: "Profile:" + } + + MyComboBox { + id: chaperoneProfileComboBox + Layout.maximumWidth: 799 + Layout.minimumWidth: 799 + Layout.preferredWidth: 799 + Layout.fillWidth: true + model: [""] + onCurrentIndexChanged: { + if (currentIndex > 0) { + chaperoneApplyProfileButton.enabled = true + chaperoneDeleteProfileButton.enabled = true + } else { + chaperoneApplyProfileButton.enabled = false + chaperoneDeleteProfileButton.enabled = false + } + } + } + + MyPushButton { + id: chaperoneApplyProfileButton + enabled: false + Layout.preferredWidth: 200 + text: "Apply" + onClicked: { + if (chaperoneProfileComboBox.currentIndex > 0) { + ChaperoneTabController.applyChaperoneProfile(chaperoneProfileComboBox.currentIndex - 1) + chaperoneProfileComboBox.currentIndex = 0 + } + } + } + } + RowLayout { + spacing: 18 + Item { + Layout.fillWidth: true + } + MyPushButton { + id: chaperoneDeleteProfileButton + enabled: false + Layout.preferredWidth: 200 + text: "Delete Profile" + onClicked: { + if (chaperoneProfileComboBox.currentIndex > 0) { + chaperoneDeleteProfileDialog.profileIndex = chaperoneProfileComboBox.currentIndex - 1 + chaperoneDeleteProfileDialog.open() + } + } + } + MyPushButton { + Layout.preferredWidth: 200 + text: "New Profile" + onClicked: { + chaperoneNewProfileDialog.openPopup() + } + } + } + } + + GridLayout { + columns: 5 + + MyText { + text: "Visibility:" + Layout.rightMargin: 12 + } + + MyPushButton2 { + text: "-" + Layout.preferredWidth: 40 + onClicked: { + chaperoneVisibilitySlider.value -= 0.1 + } + } + + MySlider { + id: chaperoneVisibilitySlider + from: 0.0 + to: 1.0 + stepSize: 0.01 + value: 0.6 + Layout.fillWidth: true + onPositionChanged: { + var val = this.position * 100 + chaperoneVisibilityText.text = Math.round(val) + "%" + } + onValueChanged: { + ChaperoneTabController.setBoundsVisibility(this.value.toFixed(2), false) + } + } + + MyPushButton2 { + text: "+" + Layout.preferredWidth: 40 + onClicked: { + chaperoneVisibilitySlider.value += 0.1 + } + } + + MyText { + id: chaperoneVisibilityText + text: "100%" + horizontalAlignment: Text.AlignRight + Layout.minimumWidth: 85 + } + + MyText { + text: "Fade Distance:" + Layout.rightMargin: 12 + } + + MyPushButton2 { + text: "-" + Layout.preferredWidth: 40 + onClicked: { + chaperoneFadeDistanceSlider.decrease() + } + } + + MySlider { + id: chaperoneFadeDistanceSlider + from: 0.0 + to: 2.0 + stepSize: 0.1 + value: 0.7 + Layout.fillWidth: true + onPositionChanged: { + var val = this.from + ( this.position * (this.to - this.from)) + chaperoneFadeDistanceText.text = val.toFixed(1) + } + onValueChanged: { + ChaperoneTabController.setFadeDistance(this.value.toFixed(1), false); + } + } + + MyPushButton2 { + text: "+" + Layout.preferredWidth: 40 + onClicked: { + chaperoneFadeDistanceSlider.increase() + } + } + + MyText { + id: chaperoneFadeDistanceText + text: "9.9" + horizontalAlignment: Text.AlignRight + Layout.minimumWidth: 85 + } + } + + RowLayout { + Layout.fillWidth: true + spacing: 32 + + MyToggleButton { + id: chaperoneCenterMarkerToggle + text: "Center Marker" + Layout.fillWidth: false + onCheckedChanged: { + ChaperoneTabController.setCenterMarker(this.checked, false) + } + } + + MyToggleButton { + id: chaperonePlaySpaceToggle + text: "Play Space" + onCheckedChanged: { + ChaperoneTabController.setPlaySpaceMarker(this.checked, false) + } + } + + MyToggleButton { + id: chaperoneForceBoundsToggle + text: "Force Bounds" + onCheckedChanged: { + ChaperoneTabController.setForceBounds(this.checked, false) + } + } + } + + MyPushButton { + id: chaperoneFlipOrientationButton + text: "Flip Orientation" + Layout.preferredWidth: 250 + onClicked: { + ChaperoneTabController.flipOrientation() + } + } + + Item { Layout.fillHeight: true; Layout.fillWidth: true} + + RowLayout { + Layout.fillWidth: true + + MyPushButton { + id: chaperoneResetButton + text: "Reset" + Layout.preferredWidth: 250 + onClicked: { + chaperoneVisibilitySlider.value = 0.6 + chaperoneFadeDistanceSlider.value = 0.7 + chaperoneCenterMarkerToggle.checked = false + chaperonePlaySpaceToggle.checked = false + chaperoneForceBoundsToggle.checked = false + } + } + + Item { Layout.fillWidth: true} + + MyPushButton { + id: chaperoneReloadFromDiskButton + text: "Reload from Disk" + Layout.preferredWidth: 250 + onClicked: { + ChaperoneTabController.reloadFromDisk() + } + } + } + + Component.onCompleted: { + chaperoneVisibilitySlider.value = ChaperoneTabController.boundsVisibility + chaperoneFadeDistanceSlider.value = ChaperoneTabController.fadeDistance + chaperoneCenterMarkerToggle.checked = ChaperoneTabController.centerMarker + chaperonePlaySpaceToggle.checked = ChaperoneTabController.playSpaceMarker + chaperoneForceBoundsToggle.checked = ChaperoneTabController.forceBounds + reloadChaperoneProfiles() + } + + Connections { + target: ChaperoneTabController + onBoundsVisibilityChanged: { + if (Math.abs(chaperoneVisibilitySlider.value - ChaperoneTabController.boundsVisibility) > 0.008) { + chaperoneVisibilitySlider.value = ChaperoneTabController.boundsVisibility + } + } + onFadeDistanceChanged: { + if (Math.abs(chaperoneFadeDistanceSlider.value - ChaperoneTabController.fadeDistance) > 0.08) { + chaperoneFadeDistanceSlider.value = ChaperoneTabController.fadeDistance + } + } + onCenterMarkerChanged: { + chaperoneCenterMarkerToggle.checked = ChaperoneTabController.centerMarker + } + onPlaySpaceMarkerChanged: { + chaperonePlaySpaceToggle.checked = ChaperoneTabController.playSpaceMarker + } + onForceBoundsChanged: { + chaperoneForceBoundsToggle.checked = ChaperoneTabController.forceBounds + } + onChaperoneProfilesUpdated: { + reloadChaperoneProfiles() + } + } + } + + function reloadChaperoneProfiles() { + var profiles = [""] + var profileCount = ChaperoneTabController.getChaperoneProfileCount() + for (var i = 0; i < profileCount; i++) { + profiles.push(ChaperoneTabController.getChaperoneProfileName(i)) + } + chaperoneProfileComboBox.currentIndex = 0 + chaperoneProfileComboBox.model = profiles + } +} diff --git a/bin/win64/res/qml/FixFloorPage.qml b/bin/win64/res/qml/FixFloorPage.qml new file mode 100644 index 0000000..da16b1e --- /dev/null +++ b/bin/win64/res/qml/FixFloorPage.qml @@ -0,0 +1,110 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import QtQuick.Layouts 1.3 +import matzman666.advsettings 1.0 + + + +MyStackViewPage { + headerText: "Floor Fix" + + content: ColumnLayout { + spacing: 18 + + Item { + Layout.fillHeight: true + Layout.fillWidth: true + } + + MyText { + text: "Place one controller on the ground and ensure good visibility to the base stations." + wrapMode: Text.WordWrap + font.pointSize: 28 + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + Layout.fillWidth: true + } + + Item { + Layout.fillHeight: true + Layout.fillWidth: true + } + + MyText { + id: statusMessageText + enabled: false + text: "Status Text" + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + Layout.fillWidth: true + } + + Item { + Layout.fillHeight: true + Layout.fillWidth: true + } + + MyPushButton { + id: fixButton + Layout.fillWidth: true + text: "Fix Floor" + Layout.preferredHeight: 100 + onClicked: { + FixFloorTabController.fixFloorClicked() + } + } + + MyPushButton { + id: undoFixButton + enabled: false + Layout.fillWidth: true + text: "Undo Fix" + onClicked: { + FixFloorTabController.undoFixFloorClicked() + } + } + + Item { + Layout.preferredHeight: 32 + } + + Component.onCompleted: { + statusMessageText.text = "" + undoFixButton.enabled = FixFloorTabController.canUndo + fixButton.enabled = true + } + + Timer { + id: statusMessageTimer + repeat: false + onTriggered: { + statusMessageText.text = "" + } + } + + Connections { + target: FixFloorTabController + onStatusMessageSignal: { + if (statusMessageTimer.running) { + statusMessageTimer.stop() + } + statusMessageText.text = FixFloorTabController.currentStatusMessage() + statusMessageTimer.interval = FixFloorTabController.currentStatusMessageTimeout() * 1000 + statusMessageTimer.start() + } + onMeasureStartSignal: { + fixButton.enabled = false + undoFixButton.enabled = false + } + onMeasureEndSignal: { + fixButton.enabled = true + undoFixButton.enabled = FixFloorTabController.canUndo + } + onCanUndoChanged: { + undoFixButton.enabled = FixFloorTabController.canUndo + } + } + + } + +} diff --git a/bin/win64/res/qml/MyComboBox.qml b/bin/win64/res/qml/MyComboBox.qml new file mode 100644 index 0000000..30cf6c5 --- /dev/null +++ b/bin/win64/res/qml/MyComboBox.qml @@ -0,0 +1,74 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import "." // QTBUG-34418, singletons require explicit import to load qmldir file + + +ComboBox { + id: myComboBox + hoverEnabled: true + + background: Rectangle { + color: parent.pressed ? "#406288" : (parent.activeFocus ? "#365473" : "#2c435d") + } + + contentItem: MyText { + leftPadding: 0 + rightPadding: parent.indicator.width + parent.spacing + text: parent.displayText + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + elide: Text.ElideRight + } + + delegate: ItemDelegate { + width: myComboBox.width + text: modelData + hoverEnabled: true + contentItem: MyText { + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + text: parent.text + color: parent.enabled ? "#ffffff" : "#909090" + } + background: Rectangle { + color: parent.pressed ? "#406288" : (parent.hovered ? "#365473" : "#2c435d") + } + } + + indicator: Canvas { + x: parent.width - width - parent.rightPadding + y: parent.topPadding + (parent.availableHeight - height) / 2 + width: 13 + height: 7 + contextType: "2d" + + onPaint: { + if (!context) { + getContext("2d") + } + context.reset(); + context.lineWidth = 2 + context.moveTo(1, 1); + context.lineTo(Math.ceil(width / 2), height - 1); + context.lineTo(width - 1, 1); + context.strokeStyle = "#ffffff" + context.stroke() + } + } + + onHoveredChanged: { + if (hovered) { + forceActiveFocus() + } + } + + onActivated: { + if (activeFocus) { + MyResources.activationSound.play() + } + } + + Component.onCompleted: { + popup.background.color = "#2c435d" + } +} diff --git a/bin/win64/res/qml/MyDialogOkCancelPopup.qml b/bin/win64/res/qml/MyDialogOkCancelPopup.qml new file mode 100644 index 0000000..84dcf9d --- /dev/null +++ b/bin/win64/res/qml/MyDialogOkCancelPopup.qml @@ -0,0 +1,97 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import QtQuick.Layouts 1.3 + +Popup { + id: myDialogPopup + + implicitHeight: parent.height + implicitWidth: parent.width + + property string dialogTitle: "" + property string dialogText: "" + property int dialogWidth: 600 + property int dialogHeight: 300 + + property Item dialogContentItem: MyText { + text: dialogText + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + Layout.fillWidth: true + } + + property bool okClicked: false + + closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent + + background: Rectangle { + color: "black" + opacity: 0.8 + } + + contentItem: Item { + Rectangle { + implicitWidth: dialogWidth + implicitHeight: dialogHeight + anchors.centerIn: parent + radius: 24 + color: "#1b2939" + border.color: "#cccccc" + border.width: 2 + ColumnLayout { + anchors.fill: parent + anchors.margins: 12 + MyText { + Layout.leftMargin: 16 + Layout.rightMargin: 16 + text: dialogTitle + } + Rectangle { + color: "#cccccc" + height: 1 + Layout.fillWidth: true + } + Item { + Layout.fillHeight: true + Layout.fillWidth: true + } + ColumnLayout { + id: dialogContent + } + Item { + Layout.fillHeight: true + Layout.fillWidth: true + } + RowLayout { + Layout.fillWidth: true + Layout.leftMargin: 24 + Layout.rightMargin: 24 + Layout.bottomMargin: 12 + MyPushButton { + implicitWidth: 200 + text: "Ok" + onClicked: { + okClicked = true + myDialogPopup.close() + } + } + Item { + Layout.fillWidth: true + } + MyPushButton { + implicitWidth: 200 + text: "Cancel" + onClicked: { + okClicked = false + myDialogPopup.close() + } + } + } + } + } + } + + Component.onCompleted: { + dialogContentItem.parent = dialogContent + } +} diff --git a/bin/win64/res/qml/MyDialogOkPopup.qml b/bin/win64/res/qml/MyDialogOkPopup.qml new file mode 100644 index 0000000..6cd4f61 --- /dev/null +++ b/bin/win64/res/qml/MyDialogOkPopup.qml @@ -0,0 +1,92 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import QtQuick.Layouts 1.3 + +Popup { + id: myDialogPopup + + implicitHeight: parent.height + implicitWidth: parent.width + + property string dialogTitle: "" + property string dialogText: "" + property int dialogWidth: 600 + property int dialogHeight: 300 + + property Item dialogContentItem: MyText { + text: dialogText + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + Layout.fillWidth: true + } + + property bool okClicked: false + + closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent + + background: Rectangle { + color: "black" + opacity: 0.8 + } + + contentItem: Item { + Rectangle { + implicitWidth: dialogWidth + implicitHeight: dialogHeight + anchors.centerIn: parent + radius: 24 + color: "#1b2939" + border.color: "#cccccc" + border.width: 2 + ColumnLayout { + anchors.fill: parent + anchors.margins: 12 + MyText { + Layout.leftMargin: 16 + Layout.rightMargin: 16 + text: dialogTitle + } + Rectangle { + color: "#cccccc" + height: 1 + Layout.fillWidth: true + } + Item { + Layout.fillHeight: true + Layout.fillWidth: true + } + ColumnLayout { + id: dialogContent + } + Item { + Layout.fillHeight: true + Layout.fillWidth: true + } + RowLayout { + Layout.fillWidth: true + Layout.leftMargin: 24 + Layout.rightMargin: 24 + Layout.bottomMargin: 12 + Item { + Layout.fillWidth: true + } + MyPushButton { + implicitWidth: 200 + text: "Ok" + onClicked: { + okClicked = true + myDialogPopup.close() + } + } + Item { + Layout.fillWidth: true + } + } + } + } + } + + Component.onCompleted: { + dialogContentItem.parent = dialogContent + } +} diff --git a/bin/win64/res/qml/MyPushButton.qml b/bin/win64/res/qml/MyPushButton.qml new file mode 100644 index 0000000..a070053 --- /dev/null +++ b/bin/win64/res/qml/MyPushButton.qml @@ -0,0 +1,31 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import "." // QTBUG-34418, singletons require explicit import to load qmldir file + +Button { + property bool activationSoundEnabled: true + hoverEnabled: true + contentItem: MyText { + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + text: parent.text + color: parent.enabled ? "#ffffff" : "#909090" + } + background: Rectangle { + color: parent.down ? "#406288" : (parent.activeFocus ? "#365473" : "#2c435d") + } + + onHoveredChanged: { + if (hovered) { + forceActiveFocus() + } else { + focus = false + } + } + + onClicked: { + if (activationSoundEnabled) { + MyResources.activationSound.play() + } + } +} diff --git a/bin/win64/res/qml/MyPushButton2.qml b/bin/win64/res/qml/MyPushButton2.qml new file mode 100644 index 0000000..b819b5d --- /dev/null +++ b/bin/win64/res/qml/MyPushButton2.qml @@ -0,0 +1,29 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import "." // QTBUG-34418, singletons require explicit import to load qmldir file + +Button { + hoverEnabled: true + contentItem: MyText { + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + text: parent.text + color: parent.enabled ? "#ffffff" : "#909090" + } + background: Rectangle { + color: parent.down ? "#406288" : (parent.activeFocus ? "#365473" : "transparent") + border.color: parent.enabled ? "#ffffff" : "#909090" + radius: 8 + } + onHoveredChanged: { + if (hovered) { + forceActiveFocus() + } else { + focus = false + } + } + + onClicked: { + MyResources.activationSound.play() + } +} diff --git a/bin/win64/res/qml/MyResources.qml b/bin/win64/res/qml/MyResources.qml new file mode 100644 index 0000000..bae3c94 --- /dev/null +++ b/bin/win64/res/qml/MyResources.qml @@ -0,0 +1,12 @@ +pragma Singleton +import QtQuick 2.7 +import QtMultimedia 5.6 + +QtObject { + property SoundEffect activationSound: SoundEffect { + source: vrRuntimePath + "tools/content/panorama/sounds/activation.wav" + } + property SoundEffect focusChangedSound: SoundEffect { + source: vrRuntimePath + "tools/content/panorama/sounds/focus_change.wav" + } +} diff --git a/bin/win64/res/qml/MySlider.qml b/bin/win64/res/qml/MySlider.qml new file mode 100644 index 0000000..e3d5808 --- /dev/null +++ b/bin/win64/res/qml/MySlider.qml @@ -0,0 +1,52 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import "." // QTBUG-34418, singletons require explicit import to load qmldir file + + + +Slider { + snapMode: Slider.SnapAlways + wheelEnabled: true + hoverEnabled: true + + background: Rectangle { + x: parent.leftPadding + y: parent.topPadding + parent.availableHeight / 2 - height / 2 + width: parent.availableWidth + height: parent.availableHeight + radius: 2 + color: parent.activeFocus ? "#2c435d" : "#1b2939" + Rectangle { + y: parent.height / 2 - height / 2 + implicitHeight: 4 + width: parent.width + height: implicitHeight + radius: 2 + color: "#bdbebf" + } + } + + handle: Rectangle { + x: parent.leftPadding + parent.visualPosition * (parent.availableWidth - width) + y: parent.topPadding + parent.availableHeight / 2 - height / 2 + implicitWidth: 20 + implicitHeight: 40 + radius: 4 + color: parent.pressed ? "#ffffff" : "#eeeeee" + border.color: "#bdbebf" + } + + onHoveredChanged: { + if (hovered) { + forceActiveFocus() + } else { + focus = false + } + } + + onValueChanged: { + if (activeFocus) { + MyResources.activationSound.play() + } + } +} diff --git a/bin/win64/res/qml/MyStackViewPage.qml b/bin/win64/res/qml/MyStackViewPage.qml new file mode 100644 index 0000000..8ad1242 --- /dev/null +++ b/bin/win64/res/qml/MyStackViewPage.qml @@ -0,0 +1,92 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import QtQuick.Layouts 1.2 +import "." // QTBUG-34418, singletons require explicit import to load qmldir file + +Rectangle { + color: "#1b2939" + width: 1200 + height: 800 + + property StackView stackView + + property string headerText: "Header Title" + + property bool headerShowBackButton: true + + property Item header: ColumnLayout { + RowLayout { + Button { + id: headerBackButton + Layout.preferredHeight: 50 + Layout.preferredWidth: 50 + hoverEnabled: true + enabled: headerShowBackButton + opacity: headerShowBackButton ? 1.0 : 0.0 + contentItem: Image { + source: "backarrow.svg" + sourceSize.width: 50 + sourceSize.height: 50 + anchors.fill: parent + } + background: Rectangle { + opacity: parent.down ? 1.0 : (parent.activeFocus ? 0.5 : 0.0) + color: "#406288" + radius: 4 + anchors.fill: parent + } + onHoveredChanged: { + if (hovered) { + forceActiveFocus() + } else { + focus = false + } + } + onClicked: { + MyResources.focusChangedSound.play() + stackView.pop() + } + } + MyText { + id: headerTitle + text: headerText + font.pointSize: 30 + anchors.verticalCenter: headerBackButton.verticalCenter + Layout.leftMargin: 32 + } + } + + Rectangle { + color: "#cccccc" + height: 1 + Layout.topMargin: 10 + Layout.fillWidth: true + } + } + + property Item content: Frame { + MyText { + text: "Content" + } + } + + ColumnLayout { + id: mainLayout + spacing: 12 + anchors.fill: parent + } + + Component.onCompleted: { + header.parent = mainLayout + header.Layout.leftMargin = 40 + header.Layout.topMargin = 30 + header.Layout.rightMargin = 40 + content.parent = mainLayout + content.Layout.fillHeight = true + content.Layout.fillWidth = true + content.Layout.topMargin = 10 + content.Layout.leftMargin = 40 + content.Layout.rightMargin = 40 + content.Layout.bottomMargin = 40 + } +} diff --git a/bin/win64/res/qml/MyText.qml b/bin/win64/res/qml/MyText.qml new file mode 100644 index 0000000..4e40408 --- /dev/null +++ b/bin/win64/res/qml/MyText.qml @@ -0,0 +1,8 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 + + +Text { + color: "#ffffff" + font.pointSize: 20 +} diff --git a/bin/win64/res/qml/MyToggleButton.qml b/bin/win64/res/qml/MyToggleButton.qml new file mode 100644 index 0000000..f066c3b --- /dev/null +++ b/bin/win64/res/qml/MyToggleButton.qml @@ -0,0 +1,51 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import "." // QTBUG-34418, singletons require explicit import to load qmldir file + + +CheckBox { + hoverEnabled: true + spacing: 12 + + indicator: Rectangle { + implicitWidth: 26 + implicitHeight: 26 + x: parent.leftPadding + y: parent.height / 2 - height / 2 + radius: 3 + Rectangle { + width: 18 + height: 18 + x: 4 + y: 4 + radius: 2 + color: "#1b2939" + visible: parent.parent.checked + } + } + + contentItem: MyText { + text: parent.text + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + leftPadding: parent.indicator.width + parent.spacing + color: parent.enabled ? "#ffffff" : "#909090" + } + + background: Rectangle { + color: "#2c435d" + opacity: parent.activeFocus ? 1.0 : 0.0 + } + + onHoveredChanged: { + if (hovered) { + forceActiveFocus() + } else { + focus = false + } + } + + onClicked: { + MyResources.activationSound.play() + } +} diff --git a/bin/win64/res/qml/PlayspacePage.qml b/bin/win64/res/qml/PlayspacePage.qml new file mode 100644 index 0000000..4c1d981 --- /dev/null +++ b/bin/win64/res/qml/PlayspacePage.qml @@ -0,0 +1,298 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import QtQuick.Layouts 1.3 +import matzman666.advsettings 1.0 + + + +MyStackViewPage { + headerText: "Play Space Settings" + + content: ColumnLayout { + spacing: 18 + + RowLayout { + MyText { + text: "Tracking Universe:" + Layout.preferredWidth: 230 + } + MyText { + id: playspaceModeText + font.bold: true + text: "Standing" + } + } + + GroupBox { + Layout.fillWidth: true + + label: MyText { + leftPadding: 10 + text: "Move Play Space" + bottomPadding: -10 + } + background: Rectangle { + color: "transparent" + border.color: "#ffffff" + radius: 8 + } + ColumnLayout { + anchors.fill: parent + + Rectangle { + color: "#ffffff" + height: 1 + Layout.fillWidth: true + Layout.bottomMargin: 5 + } + + GridLayout { + columns: 4 + + MyText { + text: "X-Axis (Left/Right):" + Layout.preferredWidth: 500 + } + + MyPushButton2 { + id: playSpaceMoveXMinusButton + Layout.preferredWidth: 40 + text: "-" + onClicked: { + MoveCenterTabController.modOffsetX(-0.5) + } + KeyNavigation.down: playSpaceMoveXPlusButton + focus : true + } + + MyText { + id: playSpaceMoveXText + horizontalAlignment: Text.AlignHCenter + text: "0.0" + Layout.preferredWidth: 120 + } + + MyPushButton2 { + id: playSpaceMoveXPlusButton + Layout.preferredWidth: 40 + text: "+" + onClicked: { + MoveCenterTabController.modOffsetX(0.5) + } + KeyNavigation.up: playSpaceMoveXMinusButton + } + + MyText { + text: "Y-Axis (Down/Up):" + Layout.preferredWidth: 380 + } + + MyPushButton2 { + Layout.preferredWidth: 40 + text: "-" + onClicked: { + MoveCenterTabController.modOffsetY(-0.5) + } + } + + MyText { + id: playSpaceMoveYText + horizontalAlignment: Text.AlignHCenter + text: "0.0" + Layout.preferredWidth: 120 + } + + MyPushButton2 { + Layout.preferredWidth: 40 + text: "+" + onClicked: { + MoveCenterTabController.modOffsetY(0.5) + } + } + + MyText { + text: "Z-Axis (Forth/Back):" + Layout.preferredWidth: 380 + } + + MyPushButton2 { + Layout.preferredWidth: 40 + text: "-" + onClicked: { + MoveCenterTabController.modOffsetZ(-0.5) + } + } + + MyText { + id: playSpaceMoveZText + horizontalAlignment: Text.AlignHCenter + text: "0.0" + Layout.preferredWidth: 120 + } + + MyPushButton2 { + Layout.preferredWidth: 40 + text: "+" + onClicked: { + MoveCenterTabController.modOffsetZ(0.5) + } + } + } + } + } + + GroupBox { + Layout.fillWidth: true + + label: MyText { + leftPadding: 10 + text: "Rotate Play Space" + bottomPadding: -10 + } + background: Rectangle { + color: "transparent" + border.color: "#ffffff" + radius: 8 + } + ColumnLayout { + anchors.fill: parent + + Rectangle { + color: "#ffffff" + height: 1 + Layout.fillWidth: true + Layout.bottomMargin: 5 + } + + ColumnLayout { + + RowLayout { + + MyPushButton2 { + id: playSpaceRotationMinusButton + Layout.preferredWidth: 40 + text: "-" + onClicked: { + playspaceRotationSlider.value -= 45 + } + } + + MySlider { + id: playspaceRotationSlider + from: -360 + to: 360 + stepSize: 1 + value: 0 + Layout.fillWidth: true + onPositionChanged: { + var val = this.from + ( this.position * (this.to - this.from)) + playspaceRotationText.text = Math.round(val) + "°" + } + } + + MyPushButton2 { + id: playSpaceRotationPlusButton + Layout.preferredWidth: 40 + text: "+" + onClicked: { + playspaceRotationSlider.value += 45 + } + } + + MyText { + id: playspaceRotationText + Layout.preferredWidth: 85 + horizontalAlignment: Text.AlignRight + text: "-360°" + } + } + RowLayout { + Item { + Layout.fillWidth: true + } + MyPushButton { + id: playspaceApplyButton + text: "Apply" + Layout.preferredWidth: 250 + onClicked: { + MoveCenterTabController.rotation = playspaceRotationSlider.value + } + } + } + } + } + } + + Item { Layout.fillHeight: true; Layout.fillWidth: true} + + MyPushButton { + id: playspaceResetButton + Layout.preferredWidth: 250 + text: "Reset" + onClicked: { + MoveCenterTabController.reset() + } + } + + Component.onCompleted: { + playSpaceMoveXText.text = MoveCenterTabController.offsetX.toFixed(1) + playSpaceMoveYText.text = MoveCenterTabController.offsetY.toFixed(1) + playSpaceMoveZText.text = MoveCenterTabController.offsetZ.toFixed(1) + playspaceRotationSlider.value = MoveCenterTabController.rotation + if (MoveCenterTabController.trackingUniverse === 0) { + playspaceModeText.text = "Sitting" + playspaceApplyButton.enabled = false + playSpaceRotationPlusButton.enabled = false + playSpaceRotationMinusButton.enabled = false + playspaceRotationSlider.enabled = false + playspaceRotationText.text = "-" + } else if (MoveCenterTabController.trackingUniverse === 1) { + playspaceModeText.text = "Standing" + playspaceApplyButton.enabled = true + playSpaceRotationPlusButton.enabled = true + playSpaceRotationMinusButton.enabled = true + playspaceRotationSlider.enabled = true + playspaceRotationText.text = "0°" + } else { + playspaceModeText.text = "Unknown(" + MoveCenterTabController.trackingUniverse + ")" + } + } + + Connections { + target: MoveCenterTabController + onOffsetXChanged: { + playSpaceMoveXText.text = MoveCenterTabController.offsetX.toFixed(1) + } + onOffsetYChanged: { + playSpaceMoveYText.text = MoveCenterTabController.offsetY.toFixed(1) + } + onOffsetZChanged: { + playSpaceMoveZText.text = MoveCenterTabController.offsetZ.toFixed(1) + } + onRotationChanged: { + playspaceRotationSlider.value = MoveCenterTabController.rotation + } + onTrackingUniverseChanged: { + if (MoveCenterTabController.trackingUniverse === 0) { + playspaceModeText.text = "Sitting" + playspaceApplyButton.enabled = false + playSpaceRotationPlusButton.enabled = false + playSpaceRotationMinusButton.enabled = false + playspaceRotationSlider.enabled = false + playspaceRotationText.text = "-" + } else if (MoveCenterTabController.trackingUniverse === 1) { + playspaceModeText.text = "Standing" + playspaceApplyButton.enabled = true + playSpaceRotationPlusButton.enabled = true + playSpaceRotationMinusButton.enabled = true + playspaceRotationSlider.enabled = true + playspaceRotationText.text = "0°" + } else { + playspaceModeText.text = "Unknown(" + MoveCenterTabController.trackingUniverse + ")" + } + } + } + + } + +} diff --git a/bin/win64/res/qml/RootPage.qml b/bin/win64/res/qml/RootPage.qml new file mode 100644 index 0000000..ddc126e --- /dev/null +++ b/bin/win64/res/qml/RootPage.qml @@ -0,0 +1,435 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import QtQuick.Layouts 1.3 +import matzman666.advsettings 1.0 +import "." // QTBUG-34418, singletons require explicit import to load qmldir file + +MyStackViewPage { + width: 1200 + height: 800 + headerText: "OpenVR Advanced Settings" + headerShowBackButton: false + stackView: mainView + content: Item { + ColumnLayout { + anchors.fill: parent + RowLayout { + Layout.fillHeight: true + Layout.fillWidth: true + ColumnLayout { + Layout.preferredWidth: 250 + Layout.maximumWidth: 250 + Layout.fillHeight: true + spacing: 18 + MyPushButton { + id: steamVRButton + activationSoundEnabled: false + text: "SteamVR" + Layout.fillWidth: true + onClicked: { + MyResources.focusChangedSound.play() + mainView.push(steamVRPage) + } + } + + MyPushButton { + id: chaperoneButton + activationSoundEnabled: false + text: "Chaperone" + Layout.fillWidth: true + onClicked: { + MyResources.focusChangedSound.play() + mainView.push(chaperonePage) + } + } + + MyPushButton { + id: playSpaceButton + activationSoundEnabled: false + text: "Play Space" + Layout.fillWidth: true + onClicked: { + MyResources.focusChangedSound.play() + mainView.push(playspacePage) + } + } + + MyPushButton { + id: fixFloorButton + activationSoundEnabled: false + text: "Floor Fix" + Layout.fillWidth: true + onClicked: { + MyResources.focusChangedSound.play() + mainView.push(fixFloorPage) + } + } + + MyPushButton { + id: audioButton + activationSoundEnabled: false + text: "Audio" + Layout.fillWidth: true + onClicked: { + MyResources.focusChangedSound.play() + mainView.push(audioPage) + } + } + + MyPushButton { + id: statisticsButton + activationSoundEnabled: false + text: "Statistics" + Layout.fillWidth: true + onClicked: { + MyResources.focusChangedSound.play() + mainView.push(statisticsPage) + } + } + + Item { + Layout.fillHeight: true + Layout.fillWidth: true + } + + MyPushButton { + id: settingsButton + activationSoundEnabled: false + text: "Settings" + Layout.fillWidth: true + onClicked: { + MyResources.focusChangedSound.play() + mainView.push(settingsPage) + } + } + } + + + ColumnLayout { + Layout.fillHeight: true + Layout.fillWidth: true + Layout.leftMargin: 80 + spacing: 18 + + RowLayout { + spacing: 18 + + MyText { + text: "Chaperone Profile:" + } + + MyComboBox { + id: summaryChaperoneProfileComboBox + Layout.maximumWidth: 378 + Layout.minimumWidth: 378 + Layout.preferredWidth: 378 + Layout.fillWidth: true + model: [""] + onCurrentIndexChanged: { + if (currentIndex > 0) { + summaryChaperoneProfileApplyButton.enabled = true + } else { + summaryChaperoneProfileApplyButton.enabled = false + } + } + } + + MyPushButton { + id: summaryChaperoneProfileApplyButton + enabled: false + Layout.preferredWidth: 150 + text: "Apply" + onClicked: { + if (summaryChaperoneProfileComboBox.currentIndex > 0) { + ChaperoneTabController.applyChaperoneProfile(summaryChaperoneProfileComboBox.currentIndex - 1) + summaryChaperoneProfileComboBox.currentIndex = 0 + } + } + } + } + + Item { + Layout.fillHeight: true + Layout.fillWidth: true + } + + RowLayout { + MyText { + text: "Tracking Universe:" + } + MyText { + id: summaryPlaySpaceModeText + Layout.fillWidth: true + horizontalAlignment: Text.AlignRight + text: "Unknown" + } + } + + RowLayout { + MyText { + text: "HMD Rotations:" + } + MyText { + id: summaryHmdRotationsText + Layout.fillWidth: true + horizontalAlignment: Text.AlignRight + text: "-999.9" + } + } + + Item { + Layout.fillHeight: true + Layout.fillWidth: true + } + + RowLayout { + MyText { + text: "Dropped Frames:" + } + MyText { + id: summaryDroppedFramesText + Layout.fillWidth: true + horizontalAlignment: Text.AlignRight + text: "0" + } + } + + RowLayout { + MyText { + text: "Reprojected Frames:" + } + MyText { + id: summaryReprojectedFramesText + Layout.fillWidth: true + horizontalAlignment: Text.AlignRight + text: "0" + } + } + + RowLayout { + MyText { + text: "Timed Out:" + } + MyText { + id: summaryTimedOutText + Layout.fillWidth: true + horizontalAlignment: Text.AlignRight + text: "0" + } + } + + Item { + Layout.fillHeight: true + Layout.fillWidth: true + } + + + + RowLayout { + MyText { + text: "Microphone:" + } + MySlider { + id: summaryMicVolumeSlider + from: 0.0 + to: 1.0 + stepSize: 0.01 + value: 1.0 + Layout.fillWidth: true + onPositionChanged: { + var val = this.position * 100 + summaryMicVolumeText.text = Math.round(val) + "%" + } + onValueChanged: { + AudioTabController.setMicVolume(this.value.toFixed(2)) + } + } + MyText { + id: summaryMicVolumeText + text: "100%" + Layout.preferredWidth: 85 + horizontalAlignment: Text.AlignRight + } + + MyPushButton2 { + id: summaryMicMuteToggle + Layout.leftMargin: 12 + checkable: true + contentItem: Image { + source: parent.checked ? "mic_off.svg" : "mic_on.svg" + sourceSize.width: 32 + sourceSize.height: 32 + anchors.fill: parent + } + onCheckedChanged: { + AudioTabController.setMicMuted(checked) + } + } + } + RowLayout { + MyToggleButton { + id: summaryPttToggle + text: "Push-to-Talk" + onClicked: { + AudioTabController.pttEnabled = checked + } + } + RowLayout { + spacing: 18 + + MyComboBox { + Layout.leftMargin: 33 + id: summaryPttProfileComboBox + Layout.maximumWidth: 378 + Layout.minimumWidth: 378 + Layout.preferredWidth: 378 + Layout.fillWidth: true + model: [""] + onCurrentIndexChanged: { + if (currentIndex > 0) { + summaryPttProfileApplyButton.enabled = true + } else { + summaryPttProfileApplyButton.enabled = false + } + } + } + + MyPushButton { + id: summaryPttProfileApplyButton + enabled: false + Layout.preferredWidth: 150 + text: "Apply" + onClicked: { + if (summaryPttProfileComboBox.currentIndex > 0) { + AudioTabController.applyPttProfile(summaryPttProfileComboBox.currentIndex - 1) + summaryPttProfileComboBox.currentIndex = 0 + } + } + } + } + } + + Item { + Layout.fillHeight: true + Layout.fillWidth: true + } + + MyText { + id: summaryVersionText + text: "v0.0.0" + font.pointSize: 16 + Layout.fillWidth: true + horizontalAlignment: Text.AlignRight + } + } + } + } + } + + Component.onCompleted: { + reloadChaperoneProfiles() + reloadPttProfiles() + summaryVersionText.text = applicationVersion + if (MoveCenterTabController.trackingUniverse === 0) { + summaryPlaySpaceModeText.text = "Sitting" + } else if (MoveCenterTabController.trackingUniverse === 1) { + summaryPlaySpaceModeText.text = "Standing" + } else { + summaryPlaySpaceModeText.text = "Unknown(" + MoveCenterTabController.trackingUniverse + ")" + } + updateStatistics() + if (visible) { + summaryUpdateTimer.start() + } + summaryMicVolumeSlider.value = AudioTabController.micVolume + summaryMicMuteToggle.checked = AudioTabController.micMuted + summaryPttToggle.checked = AudioTabController.pttEnabled + } + + Connections { + target: ChaperoneTabController + onChaperoneProfilesUpdated: { + reloadChaperoneProfiles() + } + } + + Connections { + target: AudioTabController + onPttProfilesUpdated: { + reloadPttProfiles() + } + onMicVolumeChanged: { + summaryMicVolumeSlider.value = AudioTabController.micVolume + } + onMicMutedChanged: { + summaryMicMuteToggle.checked = AudioTabController.micMuted + } + onPttEnabledChanged: { + summaryPttToggle.checked = AudioTabController.pttEnabled + } + } + + Connections { + target: MoveCenterTabController + onTrackingUniverseChanged: { + if (MoveCenterTabController.trackingUniverse === 0) { + summaryPlaySpaceModeText.text = "Sitting" + } else if (MoveCenterTabController.trackingUniverse === 1) { + summaryPlaySpaceModeText.text = "Standing" + } else { + summaryPlaySpaceModeText.text = "Unknown(" + MoveCenterTabController.trackingUniverse + ")" + } + } + } + + function updateStatistics() { + var rotations = StatisticsTabController.hmdRotations + if (rotations > 0) { + summaryHmdRotationsText.text = rotations.toFixed(1) + " CCW" + } else { + summaryHmdRotationsText.text = -rotations.toFixed(1) + " CW" + } + summaryDroppedFramesText.text = StatisticsTabController.droppedFrames + summaryReprojectedFramesText.text = StatisticsTabController.reprojectedFrames + summaryTimedOutText.text = StatisticsTabController.timedOut + } + + Timer { + id: summaryUpdateTimer + repeat: true + interval: 100 + onTriggered: { + parent.updateStatistics() + } + } + + onVisibleChanged: { + if (visible) { + updateStatistics() + summaryUpdateTimer.start() + } else { + summaryUpdateTimer.stop() + } + } + + + function reloadChaperoneProfiles() { + var profiles = [""] + var profileCount = ChaperoneTabController.getChaperoneProfileCount() + for (var i = 0; i < profileCount; i++) { + profiles.push(ChaperoneTabController.getChaperoneProfileName(i)) + } + summaryChaperoneProfileComboBox.currentIndex = 0 + summaryChaperoneProfileComboBox.model = profiles + } + + function reloadPttProfiles() { + var profiles = [""] + var profileCount = AudioTabController.getPttProfileCount() + for (var i = 0; i < profileCount; i++) { + profiles.push(AudioTabController.getPttProfileName(i)) + } + summaryPttProfileComboBox.currentIndex = 0 + summaryPttProfileComboBox.model = profiles + } +} diff --git a/bin/win64/res/qml/SettingsPage.qml b/bin/win64/res/qml/SettingsPage.qml new file mode 100644 index 0000000..884e198 --- /dev/null +++ b/bin/win64/res/qml/SettingsPage.qml @@ -0,0 +1,36 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import QtQuick.Layouts 1.3 +import matzman666.advsettings 1.0 + + +MyStackViewPage { + headerText: "Application Settings" + + content: ColumnLayout { + spacing: 18 + + MyToggleButton { + id: settingsAutoStartToggle + text: "Autostart" + onCheckedChanged: { + SettingsTabController.setAutoStartEnabled(checked, false) + } + } + + Item { + Layout.fillHeight: true + } + + Component.onCompleted: { + settingsAutoStartToggle.checked = SettingsTabController.autoStartEnabled + } + + Connections { + target: SettingsTabController + onAutoStartEnabledChanged: { + settingsAutoStartToggle.checked = SettingsTabController.autoStartEnabled + } + } + } +} diff --git a/bin/win64/res/qml/StatisticsPage.qml b/bin/win64/res/qml/StatisticsPage.qml new file mode 100644 index 0000000..86958db --- /dev/null +++ b/bin/win64/res/qml/StatisticsPage.qml @@ -0,0 +1,194 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import QtQuick.Layouts 1.3 +import matzman666.advsettings 1.0 + + + +MyStackViewPage { + headerText: "Statistics" + + content: ColumnLayout { + spacing: 18 + + GridLayout { + columns: 3 + + MyText { + text: "HMD Distance Moved:" + } + + MyText { + id: statsHmdMovedText + text: "-00.0" + Layout.fillWidth: true + horizontalAlignment: Text.AlignRight + Layout.rightMargin: 10 + } + + MyPushButton { + text: "Reset" + onClicked: { + StatisticsTabController.statsDistanceResetClicked() + } + } + + MyText { + text: "HMD Rotations:" + } + + MyText { + id: statsHmdRotationText + text: "0.0 CCW" + Layout.fillWidth: true + horizontalAlignment: Text.AlignRight + Layout.rightMargin: 10 + } + + MyPushButton { + text: "Reset" + onClicked: { + StatisticsTabController.statsRotationResetClicked() + } + } + + MyText { + text: "Left Controller Max Speed:" + } + + MyText { + id: statsLeftControllerSpeedText + text: "99.9 m/s" + Layout.fillWidth: true + horizontalAlignment: Text.AlignRight + Layout.rightMargin: 10 + } + + MyPushButton { + text: "Reset" + onClicked: { + StatisticsTabController.statsLeftControllerSpeedResetClicked() + } + } + + MyText { + text: "Right Controller Max Speed:" + } + + MyText { + id: statsRightControllerSpeedText + text: "99.9 m/s" + Layout.fillWidth: true + horizontalAlignment: Text.AlignRight + Layout.rightMargin: 10 + } + + MyPushButton { + text: "Reset" + onClicked: { + StatisticsTabController.statsRightControllerSpeedResetClicked() + } + } + } + + GridLayout { + columns: 3 + Layout.topMargin: 32 + + MyText { + text: "Dropped Frames:" + } + + MyText { + id: statsDroppedFramesText + text: "000" + Layout.fillWidth: true + horizontalAlignment: Text.AlignRight + Layout.rightMargin: 10 + } + + MyPushButton { + text: "Reset" + onClicked: { + StatisticsTabController.droppedFramesResetClicked() + } + } + + MyText { + text: "Reprojected Frames:" + } + + MyText { + id: statsReprojectionFramesText + text: "000" + Layout.fillWidth: true + horizontalAlignment: Text.AlignRight + Layout.rightMargin: 10 + } + + MyPushButton { + text: "Reset" + onClicked: { + StatisticsTabController.reprojectedFramesResetClicked() + } + } + + MyText { + text: "Timed Out:" + } + + MyText { + id: statsTimedOutText + text: "000" + Layout.fillWidth: true + horizontalAlignment: Text.AlignRight + Layout.rightMargin: 10 + } + + MyPushButton { + text: "Reset" + onClicked: { + StatisticsTabController.timedOutResetClicked() + } + } + } + Item { + Layout.fillHeight: true + } + + function updateStatistics() { + statsHmdMovedText.text = StatisticsTabController.hmdDistanceMoved.toFixed(1) + " m" + var rotations = StatisticsTabController.hmdRotations + if (rotations > 0) { + statsHmdRotationText.text = rotations.toFixed(1) + " CCW" + } else { + statsHmdRotationText.text = -rotations.toFixed(1) + " CW" + } + statsLeftControllerSpeedText.text = " " + StatisticsTabController.leftControllerMaxSpeed.toFixed(1) + " m/s" + statsRightControllerSpeedText.text = " " + StatisticsTabController.rightControllerMaxSpeed.toFixed(1) + " m/s" + statsDroppedFramesText.text = StatisticsTabController.droppedFrames + statsReprojectionFramesText.text = StatisticsTabController.reprojectedFrames + statsTimedOutText.text = StatisticsTabController.timedOut + } + + Timer { + id: statisticsUpdateTimer + repeat: true + interval: 100 + onTriggered: { + parent.updateStatistics() + } + } + + onVisibleChanged: { + if (visible) { + updateStatistics() + statisticsUpdateTimer.start() + } else { + statisticsUpdateTimer.stop() + } + } + + } + +} diff --git a/bin/win64/res/qml/SteamVRPage.qml b/bin/win64/res/qml/SteamVRPage.qml new file mode 100644 index 0000000..c4d11e1 --- /dev/null +++ b/bin/win64/res/qml/SteamVRPage.qml @@ -0,0 +1,205 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import QtQuick.Layouts 1.3 +import matzman666.advsettings 1.0 + +MyStackViewPage { + id: myStackViewPage1 + headerText: "SteamVR Settings" + + content: ColumnLayout { + spacing: 18 + + RowLayout { + spacing: 16 + + MyText { + text: "Application Supersampling*:" + Layout.preferredWidth: 350 + Layout.rightMargin: 12 + } + + MyPushButton2 { + text: "-" + Layout.preferredWidth: 40 + onClicked: { + steamvrSupersamplingSlider.decrease() + } + } + + MySlider { + id: steamvrSupersamplingSlider + from: 0.1 + to: 4 + stepSize: 0.1 + value: 1.0 + snapMode: Slider.SnapAlways + Layout.fillWidth: true + onPositionChanged: { + var val = this.from + ( this.position * (this.to - this.from)) + steamvrSupersamplingText.text = val.toFixed(1) + } + onValueChanged: { + SteamVRTabController.setSuperSampling(this.value.toFixed(1), false) + } + } + + MyPushButton2 { + text: "+" + Layout.preferredWidth: 40 + onClicked: { + steamvrSupersamplingSlider.increase() + } + } + + MyText { + id: steamvrSupersamplingText + text: "9.9" + horizontalAlignment: Text.AlignRight + Layout.minimumWidth: 64 + } + } + + RowLayout { + spacing: 16 + + MyText { + text: "Compositor Supersampling*:" + Layout.preferredWidth: 350 + Layout.rightMargin: 12 + } + + MyPushButton2 { + text: "-" + Layout.preferredWidth: 40 + onClicked: { + steamvrCompositorSupersamplingSlider.decrease() + } + } + + MySlider { + id: steamvrCompositorSupersamplingSlider + from: 0.1 + to: 4 + stepSize: 0.1 + value: 1.0 + snapMode: Slider.SnapAlways + Layout.fillWidth: true + onPositionChanged: { + var val = this.from + ( this.position * (this.to - this.from)) + steamvrCompositorSupersamplingText.text = val.toFixed(1) + } + onValueChanged: { + SteamVRTabController.setCompositorSuperSampling(this.value.toFixed(1), false) + } + } + + MyPushButton2 { + text: "+" + Layout.preferredWidth: 40 + onClicked: { + steamvrCompositorSupersamplingSlider.increase() + } + } + + MyText { + id: steamvrCompositorSupersamplingText + text: "9.9" + horizontalAlignment: Text.AlignRight + Layout.minimumWidth: 64 + } + } + + MyToggleButton { + id: steamvrAllowAsyncReprojectionToggle + text: "Allow Asynchronous Reprojection" + onCheckedChanged: { + SteamVRTabController.setAllowAsyncReprojection(this.checked, false) + } + } + + MyToggleButton { + id: steamvrAllowInterleavedReprojectionToggle + text: "Allow Interleaved Reprojection" + onCheckedChanged: { + SteamVRTabController.setAllowInterleavedReprojection(this.checked, false) + } + } + + MyToggleButton { + id: steamvrForceReprojectionToggle + text: "Enable Always-on Reprojection*" + onCheckedChanged: { + SteamVRTabController.setForceReprojection(this.checked, false) + } + } + + Item { Layout.fillHeight: true; Layout.fillWidth: true} + + MyText { + Layout.fillWidth: true + horizontalAlignment: Text.AlignRight + text: "* Requires Restart" + font.pointSize: 18 + } + + RowLayout { + Layout.fillWidth: true + + MyPushButton { + id: steamVRResetButton + text: "Reset" + Layout.preferredWidth: 250 + onClicked: { + steamvrSupersamplingSlider.value = 1.0 + steamvrCompositorSupersamplingSlider.value = 1.0 + steamvrAllowInterleavedReprojectionToggle.checked = true + steamvrAllowAsyncReprojectionToggle.checked = true + steamvrForceReprojectionToggle.checked = false + } + } + + Item { Layout.fillWidth: true} + + MyPushButton { + id: steamVRRestartButton + text: "Restart SteamVR" + Layout.preferredWidth: 250 + onClicked: { + SteamVRTabController.restartSteamVR() + } + } + } + + Component.onCompleted: { + steamvrSupersamplingSlider.value = SteamVRTabController.superSampling + steamvrCompositorSupersamplingSlider.value = SteamVRTabController.compositorSuperSampling + steamvrAllowInterleavedReprojectionToggle.checked = SteamVRTabController.allowInterleavedReprojection + steamvrAllowAsyncReprojectionToggle.checked = SteamVRTabController.allowAsyncReprojection + steamvrForceReprojectionToggle.checked = SteamVRTabController.forceReprojection + } + + Connections { + target: SteamVRTabController + onSuperSamplingChanged: { + if (Math.abs(steamvrSupersamplingSlider.value-SteamVRTabController.superSampling) > 0.08) { + steamvrSupersamplingSlider.value = SteamVRTabController.superSampling + } + } + onCompositorSuperSamplingChanged: { + if (Math.abs(steamvrCompositorSupersamplingSlider.value-SteamVRTabController.compositorSuperSampling) > 0.08) { + steamvrCompositorSupersamplingSlider.value = SteamVRTabController.compositorSuperSampling + } + } + onAllowInterleavedReprojectionChanged: { + steamvrAllowInterleavedReprojectionToggle.checked = SteamVRTabController.allowInterleavedReprojection + } + onAllowAsyncReprojectionChanged: { + steamvrAllowAsyncReprojectionToggle.checked = SteamVRTabController.allowAsyncReprojection + } + onForceReprojectionChanged: { + steamvrForceReprojectionToggle.checked = SteamVRTabController.forceReprojection + } + } + } +} diff --git a/bin/win64/res/qml/backarrow.svg b/bin/win64/res/qml/backarrow.svg new file mode 100644 index 0000000..6e08dbe --- /dev/null +++ b/bin/win64/res/qml/backarrow.svg @@ -0,0 +1,76 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + diff --git a/bin/win64/res/qml/mainwidget.qml b/bin/win64/res/qml/mainwidget.qml new file mode 100644 index 0000000..a98e9b4 --- /dev/null +++ b/bin/win64/res/qml/mainwidget.qml @@ -0,0 +1,90 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import QtQuick.Layouts 1.0 + + +Rectangle { + id: root + color: "#1b2939" + width: 1200 + height: 800 + + property RootPage rootPage: RootPage { + stackView: mainView + } + + property SteamVRPage steamVRPage: SteamVRPage { + stackView: mainView + visible: false + } + + property ChaperonePage chaperonePage: ChaperonePage { + stackView: mainView + visible: false + } + + property PlayspacePage playspacePage: PlayspacePage { + stackView: mainView + visible: false + } + + property FixFloorPage fixFloorPage: FixFloorPage { + stackView: mainView + visible: false + } + + property StatisticsPage statisticsPage: StatisticsPage { + stackView: mainView + visible: false + } + + property SettingsPage settingsPage: SettingsPage { + stackView: mainView + visible: false + } + + property AudioPage audioPage: AudioPage { + stackView: mainView + visible: false + } + + StackView { + id: mainView + anchors.fill: parent + + pushEnter: Transition { + PropertyAnimation { + property: "x" + from: mainView.width + to: 0 + duration: 200 + } + } + pushExit: Transition { + PropertyAnimation { + property: "x" + from: 0 + to: -mainView.width + duration: 200 + } + } + popEnter: Transition { + PropertyAnimation { + property: "x" + from: -mainView.width + to: 0 + duration: 200 + } + } + popExit: Transition { + PropertyAnimation { + property: "x" + from: 0 + to: mainView.width + duration: 200 + } + } + + initialItem: rootPage + } +} diff --git a/bin/win64/res/qml/mic_off.svg b/bin/win64/res/qml/mic_off.svg new file mode 100644 index 0000000..a03af97 --- /dev/null +++ b/bin/win64/res/qml/mic_off.svg @@ -0,0 +1,75 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/bin/win64/res/qml/mic_on.svg b/bin/win64/res/qml/mic_on.svg new file mode 100644 index 0000000..7c32e56 --- /dev/null +++ b/bin/win64/res/qml/mic_on.svg @@ -0,0 +1,70 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/bin/win64/res/qml/ptt_notification.png b/bin/win64/res/qml/ptt_notification.png new file mode 100644 index 0000000..cf8d3f9 Binary files /dev/null and b/bin/win64/res/qml/ptt_notification.png differ diff --git a/bin/win64/res/qml/ptt_notification.svg b/bin/win64/res/qml/ptt_notification.svg new file mode 100644 index 0000000..a3a96d3 --- /dev/null +++ b/bin/win64/res/qml/ptt_notification.svg @@ -0,0 +1,85 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + diff --git a/bin/win64/res/qml/qmldir b/bin/win64/res/qml/qmldir new file mode 100644 index 0000000..ec338c0 --- /dev/null +++ b/bin/win64/res/qml/qmldir @@ -0,0 +1 @@ +singleton MyResources 1.0 MyResources.qml \ No newline at end of file diff --git a/bin/win64/res/qml/speaker_off.svg b/bin/win64/res/qml/speaker_off.svg new file mode 100644 index 0000000..585c36d --- /dev/null +++ b/bin/win64/res/qml/speaker_off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/bin/win64/res/qml/speaker_on.svg b/bin/win64/res/qml/speaker_on.svg new file mode 100644 index 0000000..f0353d8 --- /dev/null +++ b/bin/win64/res/qml/speaker_on.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/bin/win64/scenegraph/softwarecontext.dll b/bin/win64/scenegraph/softwarecontext.dll new file mode 100644 index 0000000..7d6e555 Binary files /dev/null and b/bin/win64/scenegraph/softwarecontext.dll differ diff --git a/bin/win64/translations/qt_ca.qm b/bin/win64/translations/qt_ca.qm new file mode 100644 index 0000000..b034ffa Binary files /dev/null and b/bin/win64/translations/qt_ca.qm differ diff --git a/bin/win64/translations/qt_cs.qm b/bin/win64/translations/qt_cs.qm new file mode 100644 index 0000000..4e0fdc8 Binary files /dev/null and b/bin/win64/translations/qt_cs.qm differ diff --git a/bin/win64/translations/qt_de.qm b/bin/win64/translations/qt_de.qm new file mode 100644 index 0000000..ee8cd01 Binary files /dev/null and b/bin/win64/translations/qt_de.qm differ diff --git a/bin/win64/translations/qt_en.qm b/bin/win64/translations/qt_en.qm new file mode 100644 index 0000000..9dad8df Binary files /dev/null and b/bin/win64/translations/qt_en.qm differ diff --git a/bin/win64/translations/qt_fi.qm b/bin/win64/translations/qt_fi.qm new file mode 100644 index 0000000..76a959e Binary files /dev/null and b/bin/win64/translations/qt_fi.qm differ diff --git a/bin/win64/translations/qt_fr.qm b/bin/win64/translations/qt_fr.qm new file mode 100644 index 0000000..1b1217e Binary files /dev/null and b/bin/win64/translations/qt_fr.qm differ diff --git a/bin/win64/translations/qt_he.qm b/bin/win64/translations/qt_he.qm new file mode 100644 index 0000000..e86e9c8 Binary files /dev/null and b/bin/win64/translations/qt_he.qm differ diff --git a/bin/win64/translations/qt_hu.qm b/bin/win64/translations/qt_hu.qm new file mode 100644 index 0000000..bd2b36a Binary files /dev/null and b/bin/win64/translations/qt_hu.qm differ diff --git a/bin/win64/translations/qt_it.qm b/bin/win64/translations/qt_it.qm new file mode 100644 index 0000000..d5d43ba Binary files /dev/null and b/bin/win64/translations/qt_it.qm differ diff --git a/bin/win64/translations/qt_ja.qm b/bin/win64/translations/qt_ja.qm new file mode 100644 index 0000000..e9e6aff Binary files /dev/null and b/bin/win64/translations/qt_ja.qm differ diff --git a/bin/win64/translations/qt_ko.qm b/bin/win64/translations/qt_ko.qm new file mode 100644 index 0000000..42e59bb Binary files /dev/null and b/bin/win64/translations/qt_ko.qm differ diff --git a/bin/win64/translations/qt_lv.qm b/bin/win64/translations/qt_lv.qm new file mode 100644 index 0000000..14b6764 Binary files /dev/null and b/bin/win64/translations/qt_lv.qm differ diff --git a/bin/win64/translations/qt_pl.qm b/bin/win64/translations/qt_pl.qm new file mode 100644 index 0000000..4b8cb70 Binary files /dev/null and b/bin/win64/translations/qt_pl.qm differ diff --git a/bin/win64/translations/qt_ru.qm b/bin/win64/translations/qt_ru.qm new file mode 100644 index 0000000..f2a01e5 Binary files /dev/null and b/bin/win64/translations/qt_ru.qm differ diff --git a/bin/win64/translations/qt_sk.qm b/bin/win64/translations/qt_sk.qm new file mode 100644 index 0000000..e617275 Binary files /dev/null and b/bin/win64/translations/qt_sk.qm differ diff --git a/bin/win64/translations/qt_uk.qm b/bin/win64/translations/qt_uk.qm new file mode 100644 index 0000000..197818b Binary files /dev/null and b/bin/win64/translations/qt_uk.qm differ diff --git a/docs/screenshots/AudioPage.png b/docs/screenshots/AudioPage.png new file mode 100644 index 0000000..9a4fbbd Binary files /dev/null and b/docs/screenshots/AudioPage.png differ diff --git a/docs/screenshots/ChaperonePage.png b/docs/screenshots/ChaperonePage.png new file mode 100644 index 0000000..51ed67a Binary files /dev/null and b/docs/screenshots/ChaperonePage.png differ diff --git a/docs/screenshots/FloorFixPage.png b/docs/screenshots/FloorFixPage.png new file mode 100644 index 0000000..58754a5 Binary files /dev/null and b/docs/screenshots/FloorFixPage.png differ diff --git a/docs/screenshots/InVRScreenshot.png b/docs/screenshots/InVRScreenshot.png new file mode 100644 index 0000000..3049f7c Binary files /dev/null and b/docs/screenshots/InVRScreenshot.png differ diff --git a/docs/screenshots/PlayspacePage.png b/docs/screenshots/PlayspacePage.png new file mode 100644 index 0000000..3c70a40 Binary files /dev/null and b/docs/screenshots/PlayspacePage.png differ diff --git a/docs/screenshots/RootPage.png b/docs/screenshots/RootPage.png new file mode 100644 index 0000000..8a44c90 Binary files /dev/null and b/docs/screenshots/RootPage.png differ diff --git a/docs/screenshots/SettingsPage.png b/docs/screenshots/SettingsPage.png new file mode 100644 index 0000000..9a51c07 Binary files /dev/null and b/docs/screenshots/SettingsPage.png differ diff --git a/docs/screenshots/StatisticsPage.png b/docs/screenshots/StatisticsPage.png new file mode 100644 index 0000000..918cbb6 Binary files /dev/null and b/docs/screenshots/StatisticsPage.png differ diff --git a/docs/screenshots/SteamVRPage.png b/docs/screenshots/SteamVRPage.png new file mode 100644 index 0000000..b56b1bb Binary files /dev/null and b/docs/screenshots/SteamVRPage.png differ diff --git a/src/main.cpp b/src/main.cpp index 1a5e425..a261467 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,6 +1,10 @@ -#include "overlaywidget.h" #include "overlaycontroller.h" #include +#include +#include +#include +#include +#include #include #include "logging.h" @@ -19,6 +23,25 @@ const char* logConfigDefault = INITIALIZE_EASYLOGGINGPP +void myQtMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg) { + QByteArray localMsg = msg.toLocal8Bit(); + switch (type) { + case QtDebugMsg: + case QtInfoMsg: + LOG(INFO) << localMsg.constData() << "(" << context.file << ":" << context.line << ")"; + break; + case QtWarningMsg: + LOG(WARNING) << localMsg.constData() << "(" << context.file << ":" << context.line << ")"; + break; + case QtCriticalMsg: + LOG(ERROR) << localMsg.constData() << "(" << context.file << ":" << context.line << ")"; + break; + case QtFatalMsg: + LOG(FATAL) << localMsg.constData() << "(" << context.file << ":" << context.line << ")"; + break; + } +} + int main(int argc, char *argv[]) { // Configure logger @@ -36,11 +59,24 @@ int main(int argc, char *argv[]) { LOG(INFO) << "Starting Application."; try { QApplication a(argc, argv); - advsettings::OverlayWidget *pOverlayWidget = new advsettings::OverlayWidget; - advsettings::OverlayController* controller = new advsettings::OverlayController(); + qInstallMessageHandler(myQtMessageHandler); - controller->Init(); - controller->SetWidget(pOverlayWidget, advsettings::OverlayController::applicationName, advsettings::OverlayController::applicationKey); + QSettings appSettings(QSettings::IniFormat, QSettings::UserScope, "matzman666", "OpenVRAdvancedSettings"); + advsettings::OverlayController::setAppSettings(&appSettings); + LOG(INFO) << "Settings File: " << appSettings.fileName().toStdString(); + + QQmlEngine qmlEngine; + + advsettings::OverlayController* controller = advsettings::OverlayController::getInstance(); + controller->Init(&qmlEngine); + + QQmlComponent component(&qmlEngine, QUrl::fromLocalFile("res/qml/mainwidget.qml")); + auto errors = component.errors(); + for (auto& e : errors) { + LOG(ERROR) << "QML Error: " << e.toString().toStdString() << std::endl; + } + auto quickObj = component.create(); + controller->SetWidget(qobject_cast(quickObj), advsettings::OverlayController::applicationName, advsettings::OverlayController::applicationKey); std::string manifestPath = QApplication::applicationDirPath().toStdString() + "\\advancedsettings.vrmanifest"; if (QFile::exists(QString::fromStdString(manifestPath))) { @@ -61,6 +97,13 @@ int main(int argc, char *argv[]) { LOG(ERROR) << "Could not find application manifest: " << manifestPath; } +#ifdef DEBUG_DESKTOP_WINDOW + auto m_pWindow = new QQuickWindow(); + qobject_cast(quickObj)->setParentItem(m_pWindow->contentItem()); + m_pWindow->setGeometry(0, 0, qobject_cast(quickObj)->width(), qobject_cast(quickObj)->height()); + m_pWindow->show(); +#endif + return a.exec(); } catch (const std::exception& e) { diff --git a/src/overlaycontroller.cpp b/src/overlaycontroller.cpp index 1acda8d..ba0699f 100644 --- a/src/overlaycontroller.cpp +++ b/src/overlaycontroller.cpp @@ -1,10 +1,11 @@ #include "overlaycontroller.h" -#include "overlaywidget.h" -#include "ui_overlaywidget.h" #include #include #include +#include #include +#include +#include #include #include #include @@ -25,408 +26,455 @@ // application namespace namespace advsettings { - OverlayController::~OverlayController() { - m_pPumpEventsTimer.reset(); - vr::VR_Shutdown(); - m_pScene.reset(); - m_pFbo.reset(); - m_pOffscreenSurface.reset(); - m_pOpenGLContext.reset(); +std::unique_ptr OverlayController::singleton; + +QSettings* OverlayController::_appSettings = nullptr; + +OverlayController::~OverlayController() { +} + +void OverlayController::Init(QQmlEngine* qmlEngine) { + // Loading the OpenVR Runtime + auto initError = vr::VRInitError_None; + vr::VR_Init(&initError, vr::VRApplication_Overlay); + if (initError != vr::VRInitError_None) { + throw std::runtime_error(std::string("Failed to initialize OpenVR: " + std::string(vr::VR_GetVRInitErrorAsEnglishDescription(initError)))); } - void OverlayController::Init() { - // Loading the OpenVR Runtime - auto initError = vr::VRInitError_None; - vr::VR_Init(&initError, vr::VRApplication_Overlay); - if (initError != vr::VRInitError_None) { - throw std::runtime_error(std::string("Failed to initialize OpenVR: " + std::string(vr::VR_GetVRInitErrorAsEnglishDescription(initError)))); - } + m_runtimePathUrl = QUrl::fromLocalFile(vr::VR_RuntimePath()); + LOG(INFO) << "VR Runtime Path: " << m_runtimePathUrl.toLocalFile(); - QSurfaceFormat format; - // Qt's QOpenGLPaintDevice is not compatible with OpenGL versions >= 3.0 - // NVIDIA does not care, but unfortunately AMD does - // Are subtle changes to the semantics of OpenGL functions actually covered by the compatibility profile, - // and this is an AMD bug? - format.setVersion(2, 1); - //format.setProfile( QSurfaceFormat::CompatibilityProfile ); - format.setDepthBufferSize(16); - format.setStencilBufferSize(8); - format.setSamples(16); + QSurfaceFormat format; + // Qt's QOpenGLPaintDevice is not compatible with OpenGL versions >= 3.0 + // NVIDIA does not care, but unfortunately AMD does + // Are subtle changes to the semantics of OpenGL functions actually covered by the compatibility profile, + // and this is an AMD bug? + format.setVersion(2, 1); + //format.setProfile( QSurfaceFormat::CompatibilityProfile ); + format.setDepthBufferSize(16); + format.setStencilBufferSize(8); + format.setSamples(16); - m_pOpenGLContext.reset(new QOpenGLContext()); - m_pOpenGLContext->setFormat(format); - if (!m_pOpenGLContext->create()) { - throw std::runtime_error("Could not create OpenGL context"); - } - - // create an offscreen surface to attach the context and FBO to - m_pOffscreenSurface.reset(new QOffscreenSurface()); - m_pOffscreenSurface->setFormat(m_pOpenGLContext->format()); - m_pOffscreenSurface->create(); - m_pOpenGLContext->makeCurrent(m_pOffscreenSurface.get()); - - m_pScene.reset(new QGraphicsScene()); - connect(m_pScene.get(), SIGNAL(changed(const QList&)), this, SLOT(OnSceneChanged(const QList&))); + m_pOpenGLContext.reset(new QOpenGLContext()); + m_pOpenGLContext->setFormat(format); + if (!m_pOpenGLContext->create()) { + throw std::runtime_error("Could not create OpenGL context"); } + // create an offscreen surface to attach the context and FBO to + m_pOffscreenSurface.reset(new QOffscreenSurface()); + m_pOffscreenSurface->setFormat(m_pOpenGLContext->format()); + m_pOffscreenSurface->create(); + m_pOpenGLContext->makeCurrent(m_pOffscreenSurface.get()); - void OverlayController::SetWidget(OverlayWidget *pWidget, const std::string& name, const std::string& key) { - // all of the mouse handling stuff requires that the widget be at 0,0 - pWidget->move(0, 0); - m_pScene->addWidget(pWidget); - m_pWidget = pWidget; - pWidget->ui->VersionLabel->setText(OverlayController::applicationVersionString); - - if (!vr::VROverlay()) { - QMessageBox::critical(nullptr, "OpenVR Advanced Settings Overlay", "Is OpenVR running?"); - throw std::runtime_error(std::string("No Overlay interface")); - } - vr::VROverlayError overlayError = vr::VROverlay()->CreateDashboardOverlay(key.c_str(), name.c_str(), &m_ulOverlayHandle, &m_ulOverlayThumbnailHandle); - if (overlayError != vr::VROverlayError_None) { - if (overlayError == vr::VROverlayError_KeyInUse) { - QMessageBox::critical(nullptr, "OpenVR Advanced Settings Overlay", "Another instance is already running."); - } - throw std::runtime_error(std::string("Failed to create Overlay: " + std::string(vr::VROverlay()->GetOverlayErrorNameFromEnum(overlayError)))); - } - vr::VROverlay()->SetOverlayWidthInMeters(m_ulOverlayHandle, 2.5f); - vr::VROverlay()->SetOverlayInputMethod(m_ulOverlayHandle, vr::VROverlayInputMethod_Mouse); - std::string thumbIconPath = QApplication::applicationDirPath().toStdString() + "\\res\\thumbicon.png"; - if (QFile::exists(QString::fromStdString(thumbIconPath))) { - vr::VROverlay()->SetOverlayFromFile(m_ulOverlayThumbnailHandle, thumbIconPath.c_str()); - } else { - LOG(ERROR) << "Could not find thumbnail icon \"" << thumbIconPath << "\""; - } - - m_pPumpEventsTimer.reset(new QTimer(this)); - connect(m_pPumpEventsTimer.get(), SIGNAL(timeout()), this, SLOT(OnTimeoutPumpEvents())); - m_pPumpEventsTimer->setInterval(20); - m_pPumpEventsTimer->start(); - - QOpenGLFramebufferObjectFormat fboFormat; - fboFormat.setAttachment(QOpenGLFramebufferObject::CombinedDepthStencil); - fboFormat.setTextureTarget(GL_TEXTURE_2D); - - m_pFbo.reset(new QOpenGLFramebufferObject(pWidget->width(), pWidget->height(), fboFormat)); - - vr::HmdVector2_t vecWindowSize = { - (float)pWidget->width(), - (float)pWidget->height() - }; - vr::VROverlay()->SetOverlayMouseScale(m_ulOverlayHandle, &vecWindowSize); - - steamVRTabController.init(this, pWidget); - chaperoneTabController.init(this, pWidget); - moveCenterTabController.init(this, pWidget); - fixFloorTabController.init(this, pWidget); - statisticsTabController.init(this, pWidget); - settingsTabController.init(this, pWidget); + if (!vr::VROverlay()) { + QMessageBox::critical(nullptr, "OpenVR Advanced Settings Overlay", "Is OpenVR running?"); + throw std::runtime_error(std::string("No Overlay interface")); } + // Init controllers + steamVRTabController.initStage1(); + chaperoneTabController.initStage1(); + moveCenterTabController.initStage1(); + fixFloorTabController.initStage1(); + audioTabController.initStage1(); + statisticsTabController.initStage1(); + settingsTabController.initStage1(); - void OverlayController::OnSceneChanged(const QList&) { - // skip rendering if the overlay isn't visible - if (!vr::VROverlay() || !vr::VROverlay()->IsOverlayVisible(m_ulOverlayHandle) && !vr::VROverlay()->IsOverlayVisible(m_ulOverlayThumbnailHandle)) - return; + // Set qml context + qmlEngine->rootContext()->setContextProperty("applicationVersion", getVersionString()); + qmlEngine->rootContext()->setContextProperty("vrRuntimePath", getVRRuntimePathUrl()); - m_pOpenGLContext->makeCurrent(m_pOffscreenSurface.get()); - m_pFbo->bind(); + // Register qml singletons + qmlRegisterSingletonType("matzman666.advsettings", 1, 0, "OverlayController", [](QQmlEngine*, QJSEngine*) { + QObject* obj = getInstance(); + QQmlEngine::setObjectOwnership(obj, QQmlEngine::CppOwnership); + return obj; + }); + qmlRegisterSingletonType("matzman666.advsettings", 1, 0, "SteamVRTabController", [](QQmlEngine*, QJSEngine*) { + QObject* obj = &getInstance()->steamVRTabController; + QQmlEngine::setObjectOwnership(obj, QQmlEngine::CppOwnership); + return obj; + }); + qmlRegisterSingletonType("matzman666.advsettings", 1, 0, "ChaperoneTabController", [](QQmlEngine*, QJSEngine*) { + QObject* obj = &getInstance()->chaperoneTabController; + QQmlEngine::setObjectOwnership(obj, QQmlEngine::CppOwnership); + return obj; + }); + qmlRegisterSingletonType("matzman666.advsettings", 1, 0, "MoveCenterTabController", [](QQmlEngine*, QJSEngine*) { + QObject* obj = &getInstance()->moveCenterTabController; + QQmlEngine::setObjectOwnership(obj, QQmlEngine::CppOwnership); + return obj; + }); + qmlRegisterSingletonType("matzman666.advsettings", 1, 0, "FixFloorTabController", [](QQmlEngine*, QJSEngine*) { + QObject* obj = &getInstance()->fixFloorTabController; + QQmlEngine::setObjectOwnership(obj, QQmlEngine::CppOwnership); + return obj; + }); + qmlRegisterSingletonType("matzman666.advsettings", 1, 0, "AudioTabController", [](QQmlEngine*, QJSEngine*) { + QObject* obj = &getInstance()->audioTabController; + QQmlEngine::setObjectOwnership(obj, QQmlEngine::CppOwnership); + return obj; + }); + qmlRegisterSingletonType("matzman666.advsettings", 1, 0, "StatisticsTabController", [](QQmlEngine*, QJSEngine*) { + QObject* obj = &getInstance()->statisticsTabController; + QQmlEngine::setObjectOwnership(obj, QQmlEngine::CppOwnership); + return obj; + }); + qmlRegisterSingletonType("matzman666.advsettings", 1, 0, "SettingsTabController", [](QQmlEngine*, QJSEngine*) { + QObject* obj = &getInstance()->settingsTabController; + QQmlEngine::setObjectOwnership(obj, QQmlEngine::CppOwnership); + return obj; + }); +} - QOpenGLPaintDevice device(m_pFbo->size()); - QPainter painter(&device); - painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing | QPainter::SmoothPixmapTransform); - m_pScene->render(&painter); +void OverlayController::SetWidget(QQuickItem* quickItem, const std::string& name, const std::string& key) { + vr::VROverlayError overlayError = vr::VROverlay()->CreateDashboardOverlay(key.c_str(), name.c_str(), &m_ulOverlayHandle, &m_ulOverlayThumbnailHandle); + if (overlayError != vr::VROverlayError_None) { + if (overlayError == vr::VROverlayError_KeyInUse) { + QMessageBox::critical(nullptr, "OpenVR Advanced Settings Overlay", "Another instance is already running."); + } + throw std::runtime_error(std::string("Failed to create Overlay: " + std::string(vr::VROverlay()->GetOverlayErrorNameFromEnum(overlayError)))); + } + vr::VROverlay()->SetOverlayWidthInMeters(m_ulOverlayHandle, 2.5f); + vr::VROverlay()->SetOverlayInputMethod(m_ulOverlayHandle, vr::VROverlayInputMethod_Mouse); + vr::VROverlay()->SetOverlayFlag(m_ulOverlayHandle, vr::VROverlayFlags_SendVRScrollEvents, true); + std::string thumbIconPath = QApplication::applicationDirPath().toStdString() + "\\res\\thumbicon.png"; + if (QFile::exists(QString::fromStdString(thumbIconPath))) { + vr::VROverlay()->SetOverlayFromFile(m_ulOverlayThumbnailHandle, thumbIconPath.c_str()); + } else { + LOG(ERROR) << "Could not find thumbnail icon \"" << thumbIconPath << "\""; + } - m_pFbo->release(); + m_pPumpEventsTimer.reset(new QTimer()); + connect(m_pPumpEventsTimer.get(), SIGNAL(timeout()), this, SLOT(OnTimeoutPumpEvents())); + m_pPumpEventsTimer->setInterval(20); + m_pPumpEventsTimer->start(); - GLuint unTexture = m_pFbo->texture(); - if (unTexture != 0) { -#if defined _WIN64 || defined _LP64 - // To avoid any compiler warning because of cast to a larger pointer type (warning C4312 on VC) - vr::Texture_t texture = { (void*)((uint64_t)unTexture), vr::API_OpenGL, vr::ColorSpace_Auto }; -#else - vr::Texture_t texture = { (void*)unTexture, vr::API_OpenGL, vr::ColorSpace_Auto }; + // Too many render calls in too short time overwhelm Qt and an assertion gets thrown. + // Therefore we use an timer to delay render calls + m_pRenderTimer.reset(new QTimer()); + m_pRenderTimer->setSingleShot(true); + m_pRenderTimer->setInterval(5); + connect(m_pRenderTimer.get(), SIGNAL(timeout()), this, SLOT(renderOverlay())); + + QOpenGLFramebufferObjectFormat fboFormat; + fboFormat.setAttachment(QOpenGLFramebufferObject::CombinedDepthStencil); + fboFormat.setTextureTarget(GL_TEXTURE_2D); + m_pFbo.reset(new QOpenGLFramebufferObject(quickItem->width(), quickItem->height(), fboFormat)); + +#ifndef DEBUG_DESKTOP_WINDOW + m_pRenderControl.reset(new QQuickRenderControl()); + m_pWindow.reset(new QQuickWindow(m_pRenderControl.get())); + m_pWindow->setRenderTarget(m_pFbo.get()); + quickItem->setParentItem(m_pWindow->contentItem()); + m_pWindow->setGeometry(0, 0, quickItem->width(), quickItem->height()); + m_pRenderControl->initialize(m_pOpenGLContext.get()); + + vr::HmdVector2_t vecWindowSize = { + (float)quickItem->width(), + (float)quickItem->height() + }; + vr::VROverlay()->SetOverlayMouseScale(m_ulOverlayHandle, &vecWindowSize); + + connect(m_pRenderControl.get(), SIGNAL(renderRequested()), this, SLOT(OnRenderRequest())); + connect(m_pRenderControl.get(), SIGNAL(sceneChanged()), this, SLOT(OnRenderRequest())); #endif - vr::VROverlay()->SetOverlayTexture(m_ulOverlayHandle, &texture); - } - m_pOpenGLContext->functions()->glFlush(); // We need to flush otherwise the texture may be empty. + + steamVRTabController.initStage2(this, m_pWindow.get()); + chaperoneTabController.initStage2(this, m_pWindow.get()); + moveCenterTabController.initStage2(this, m_pWindow.get()); + fixFloorTabController.initStage2(this, m_pWindow.get()); + audioTabController.initStage2(this, m_pWindow.get()); + statisticsTabController.initStage2(this, m_pWindow.get()); + settingsTabController.initStage2(this, m_pWindow.get()); +} + + +void OverlayController::OnRenderRequest() { + if (!m_pRenderTimer->isActive()) { + m_pRenderTimer->start(); } +} + +void OverlayController::renderOverlay() { + // skip rendering if the overlay isn't visible + if (!vr::VROverlay() || !vr::VROverlay()->IsOverlayVisible(m_ulOverlayHandle) && !vr::VROverlay()->IsOverlayVisible(m_ulOverlayThumbnailHandle)) + return; + +#ifndef DEBUG_DESKTOP_WINDOW + m_pRenderControl->polishItems(); + m_pRenderControl->sync(); + m_pRenderControl->render(); + + GLuint unTexture = m_pFbo->texture(); + if (unTexture != 0) { +#if defined _WIN64 || defined _LP64 + // To avoid any compiler warning because of cast to a larger pointer type (warning C4312 on VC) + vr::Texture_t texture = { (void*)((uint64_t)unTexture), vr::API_OpenGL, vr::ColorSpace_Auto }; +#else + vr::Texture_t texture = { (void*)unTexture, vr::API_OpenGL, vr::ColorSpace_Auto }; +#endif + vr::VROverlay()->SetOverlayTexture(m_ulOverlayHandle, &texture); + } + m_pOpenGLContext->functions()->glFlush(); // We need to flush otherwise the texture may be empty.*/ +#endif +} - void OverlayController::OnTimeoutPumpEvents() { - if (!vr::VRSystem()) - return; +void OverlayController::OnTimeoutPumpEvents() { + if (!vr::VRSystem()) + return; - /* - // tell OpenVR to make some events for us - for( vr::TrackedDeviceIndex_t unDeviceId = 1; unDeviceId < vr::k_unControllerStateAxisCount; unDeviceId++ ) { + // tell OpenVR to make some events for us + /*for( vr::TrackedDeviceIndex_t unDeviceId = 1; unDeviceId < vr::k_unControllerStateAxisCount; unDeviceId++ ) { if( vr::VROverlay()->HandleControllerOverlayInteractionAsMouse( m_ulOverlayHandle, unDeviceId ) ) { - break; + break; } - } - */ + }*/ + + vr::TrackedDevicePose_t devicePoses[vr::k_unMaxTrackedDeviceCount]; + vr::VRSystem()->GetDeviceToAbsoluteTrackingPose(vr::TrackingUniverseStanding, 0.0f, devicePoses, vr::k_unMaxTrackedDeviceCount); + fixFloorTabController.eventLoopTick(devicePoses); + statisticsTabController.eventLoopTick(devicePoses); + moveCenterTabController.eventLoopTick(vr::VRCompositor()->GetTrackingSpace()); + steamVRTabController.eventLoopTick(); + chaperoneTabController.eventLoopTick(); + settingsTabController.eventLoopTick(); + audioTabController.eventLoopTick(); - vr::TrackedDevicePose_t devicePoses[vr::k_unMaxTrackedDeviceCount]; - vr::VRSystem()->GetDeviceToAbsoluteTrackingPose(vr::TrackingUniverseStanding, 0.0f, devicePoses, vr::k_unMaxTrackedDeviceCount); - fixFloorTabController.eventLoopTick(devicePoses); - statisticsTabController.eventLoopTick(devicePoses); - moveCenterTabController.eventLoopTick(vr::VRCompositor()->GetTrackingSpace()); - - vr::VREvent_t vrEvent; - while (vr::VROverlay()->PollNextOverlayEvent(m_ulOverlayHandle, &vrEvent, sizeof(vrEvent))) { - switch (vrEvent.eventType) { + vr::VREvent_t vrEvent; + while (vr::VROverlay()->PollNextOverlayEvent(m_ulOverlayHandle, &vrEvent, sizeof(vrEvent))) { + switch (vrEvent.eventType) { case vr::VREvent_MouseMove: { - QPointF ptNewMouse(vrEvent.data.mouse.x, vrEvent.data.mouse.y); - QPoint ptGlobal = ptNewMouse.toPoint(); - QGraphicsSceneMouseEvent mouseEvent(QEvent::GraphicsSceneMouseMove); - mouseEvent.setWidget(NULL); - mouseEvent.setPos(ptNewMouse); - mouseEvent.setScenePos(ptGlobal); - mouseEvent.setScreenPos(ptGlobal); - mouseEvent.setLastPos(m_ptLastMouse); - mouseEvent.setLastScenePos(m_pWidget->mapToGlobal(m_ptLastMouse.toPoint())); - mouseEvent.setLastScreenPos(m_pWidget->mapToGlobal(m_ptLastMouse.toPoint())); - mouseEvent.setButtons(m_lastMouseButtons); - mouseEvent.setButton(Qt::NoButton); - mouseEvent.setModifiers(0); - mouseEvent.setAccepted(false); - - m_ptLastMouse = ptNewMouse; - QApplication::sendEvent(m_pScene.get(), &mouseEvent); - - OnSceneChanged(QList()); + QPoint ptNewMouse(vrEvent.data.mouse.x, vrEvent.data.mouse.y); + if (ptNewMouse != m_ptLastMouse) { + QMouseEvent mouseEvent( QEvent::MouseMove, ptNewMouse, m_pWindow->mapToGlobal(ptNewMouse), Qt::NoButton, m_lastMouseButtons, 0 ); + m_ptLastMouse = ptNewMouse; + QCoreApplication::sendEvent(m_pWindow.get(), &mouseEvent); + OnRenderRequest(); + } } - break; + break; case vr::VREvent_MouseButtonDown: { + QPoint ptNewMouse(vrEvent.data.mouse.x, vrEvent.data.mouse.y); Qt::MouseButton button = vrEvent.data.mouse.button == vr::VRMouseButton_Right ? Qt::RightButton : Qt::LeftButton; - m_lastMouseButtons |= button; - - QPoint ptGlobal = m_ptLastMouse.toPoint(); - QGraphicsSceneMouseEvent mouseEvent(QEvent::GraphicsSceneMousePress); - mouseEvent.setWidget(NULL); - mouseEvent.setPos(m_ptLastMouse); - mouseEvent.setButtonDownPos(button, m_ptLastMouse); - mouseEvent.setButtonDownScenePos(button, ptGlobal); - mouseEvent.setButtonDownScreenPos(button, ptGlobal); - mouseEvent.setScenePos(ptGlobal); - mouseEvent.setScreenPos(ptGlobal); - mouseEvent.setLastPos(m_ptLastMouse); - mouseEvent.setLastScenePos(ptGlobal); - mouseEvent.setLastScreenPos(ptGlobal); - mouseEvent.setButtons(m_lastMouseButtons); - mouseEvent.setButton(button); - mouseEvent.setModifiers(0); - mouseEvent.setAccepted(false); - - QApplication::sendEvent(m_pScene.get(), &mouseEvent); + QMouseEvent mouseEvent(QEvent::MouseButtonPress, ptNewMouse, m_pWindow->mapToGlobal(ptNewMouse), button, m_lastMouseButtons, 0); + QCoreApplication::sendEvent(m_pWindow.get(), &mouseEvent); } - break; + break; case vr::VREvent_MouseButtonUp: { + QPoint ptNewMouse(vrEvent.data.mouse.x, vrEvent.data.mouse.y); Qt::MouseButton button = vrEvent.data.mouse.button == vr::VRMouseButton_Right ? Qt::RightButton : Qt::LeftButton; m_lastMouseButtons &= ~button; - - QPoint ptGlobal = m_ptLastMouse.toPoint(); - QGraphicsSceneMouseEvent mouseEvent(QEvent::GraphicsSceneMouseRelease); - mouseEvent.setWidget(NULL); - mouseEvent.setPos(m_ptLastMouse); - mouseEvent.setScenePos(ptGlobal); - mouseEvent.setScreenPos(ptGlobal); - mouseEvent.setLastPos(m_ptLastMouse); - mouseEvent.setLastScenePos(ptGlobal); - mouseEvent.setLastScreenPos(ptGlobal); - mouseEvent.setButtons(m_lastMouseButtons); - mouseEvent.setButton(button); - mouseEvent.setModifiers(0); - mouseEvent.setAccepted(false); - - QApplication::sendEvent(m_pScene.get(), &mouseEvent); + QMouseEvent mouseEvent(QEvent::MouseButtonRelease, ptNewMouse, m_pWindow->mapToGlobal(ptNewMouse), button, m_lastMouseButtons, 0); + QCoreApplication::sendEvent(m_pWindow.get(), &mouseEvent); } - break; + break; + + case vr::VREvent_Scroll: { + // Wheel speed is defined as 1/8 of a degree + QWheelEvent wheelEvent(m_ptLastMouse, m_pWindow->mapToGlobal(m_ptLastMouse), QPoint(), + QPoint(vrEvent.data.scroll.xdelta * 360.0f * 8.0f, vrEvent.data.scroll.ydelta * 360.0f * 8.0f), + 0, Qt::Vertical, m_lastMouseButtons, 0); + QCoreApplication::sendEvent(m_pWindow.get(), &wheelEvent); + } + break; case vr::VREvent_OverlayShown: { - m_pWidget->repaint(); - UpdateWidget(); + m_pWindow->update(); } - break; + break; case vr::VREvent_Quit: { LOG(INFO) << "Received quit request."; vr::VRSystem()->AcknowledgeQuit_Exiting(); // Let us buy some time just in case - moveCenterTabController.MoveCenterResetClicked(); + moveCenterTabController.reset(); QApplication::exit(); } - break; + break; case vr::VREvent_DashboardActivated: { - LOG(INFO) << "Dashboard activated"; + LOG(DEBUG) << "Dashboard activated"; dashboardVisible = true; } - break; + break; case vr::VREvent_DashboardDeactivated: { - LOG(INFO) << "Dashboard deactivated"; + LOG(DEBUG) << "Dashboard deactivated"; dashboardVisible = false; } - break; - } - } + break; - if (m_ulOverlayThumbnailHandle != vr::k_ulOverlayHandleInvalid) { - while (vr::VROverlay()->PollNextOverlayEvent(m_ulOverlayThumbnailHandle, &vrEvent, sizeof(vrEvent))) { - switch (vrEvent.eventType) { + case vr::VREvent_KeyboardDone: { + char keyboardBuffer[1024]; + vr::VROverlay()->GetKeyboardText(keyboardBuffer, 1024); + emit keyBoardInputSignal(QString(keyboardBuffer), vrEvent.data.keyboard.uUserValue); + } + break; + } + } + + if (m_ulOverlayThumbnailHandle != vr::k_ulOverlayHandleInvalid) { + while (vr::VROverlay()->PollNextOverlayEvent(m_ulOverlayThumbnailHandle, &vrEvent, sizeof(vrEvent))) { + switch (vrEvent.eventType) { case vr::VREvent_OverlayShown: { - m_pWidget->repaint(); - UpdateWidget(); - } - break; + m_pWindow->update(); } + break; } } } +} - void OverlayController::UpdateWidget() { - steamVRTabController.UpdateTab(); - chaperoneTabController.UpdateTab(); - moveCenterTabController.UpdateTab(); - fixFloorTabController.UpdateTab(); - statisticsTabController.UpdateTab(); - settingsTabController.UpdateTab(); - } - - void OverlayController::AddOffsetToUniverseCenter(vr::ETrackingUniverseOrigin universe, unsigned axisId, float offset, bool adjustBounds, bool commit) { - if (offset != 0.0f) { - if (commit) { - vr::VRChaperoneSetup()->RevertWorkingCopy(); - } - vr::HmdMatrix34_t curPos; - if (universe == vr::TrackingUniverseStanding) { - vr::VRChaperoneSetup()->GetWorkingStandingZeroPoseToRawTrackingPose(&curPos); - } else { - vr::VRChaperoneSetup()->GetWorkingSeatedZeroPoseToRawTrackingPose(&curPos); - } - curPos.m[0][3] += curPos.m[0][axisId] * offset; - curPos.m[1][3] += curPos.m[1][axisId] * offset; - curPos.m[2][3] += curPos.m[2][axisId] * offset; - if (universe == vr::TrackingUniverseStanding) { - vr::VRChaperoneSetup()->SetWorkingStandingZeroPoseToRawTrackingPose(&curPos); - } else { - vr::VRChaperoneSetup()->SetWorkingSeatedZeroPoseToRawTrackingPose(&curPos); - } - if (adjustBounds && universe == vr::TrackingUniverseStanding) { - AddOffsetToCollisionBounds(axisId, -offset, false); - } - if (commit) { - vr::VRChaperoneSetup()->CommitWorkingCopy(vr::EChaperoneConfigFile_Live); - } +void OverlayController::AddOffsetToUniverseCenter(vr::ETrackingUniverseOrigin universe, unsigned axisId, float offset, bool adjustBounds, bool commit) { + if (offset != 0.0f) { + if (commit) { + vr::VRChaperoneSetup()->RevertWorkingCopy(); + } + vr::HmdMatrix34_t curPos; + if (universe == vr::TrackingUniverseStanding) { + vr::VRChaperoneSetup()->GetWorkingStandingZeroPoseToRawTrackingPose(&curPos); + } else { + vr::VRChaperoneSetup()->GetWorkingSeatedZeroPoseToRawTrackingPose(&curPos); + } + curPos.m[0][3] += curPos.m[0][axisId] * offset; + curPos.m[1][3] += curPos.m[1][axisId] * offset; + curPos.m[2][3] += curPos.m[2][axisId] * offset; + if (universe == vr::TrackingUniverseStanding) { + vr::VRChaperoneSetup()->SetWorkingStandingZeroPoseToRawTrackingPose(&curPos); + } else { + vr::VRChaperoneSetup()->SetWorkingSeatedZeroPoseToRawTrackingPose(&curPos); + } + if (adjustBounds && universe == vr::TrackingUniverseStanding) { + AddOffsetToCollisionBounds(axisId, -offset, false); + } + if (commit) { + vr::VRChaperoneSetup()->CommitWorkingCopy(vr::EChaperoneConfigFile_Live); } } +} - void OverlayController::RotateUniverseCenter(vr::ETrackingUniverseOrigin universe, float yAngle, bool adjustBounds, bool commit) { - if (yAngle != 0.0f) { - if (commit) { - vr::VRChaperoneSetup()->RevertWorkingCopy(); - } - vr::HmdMatrix34_t curPos; - if (universe == vr::TrackingUniverseStanding) { - vr::VRChaperoneSetup()->GetWorkingStandingZeroPoseToRawTrackingPose(&curPos); - } else { - vr::VRChaperoneSetup()->GetWorkingSeatedZeroPoseToRawTrackingPose(&curPos); - } - vr::HmdMatrix34_t newPos; - float yRot[3][3] = { - { std::cos(yAngle), 0, std::sin(yAngle) }, - { 0, 1, 0 }, - { -std::sin(yAngle), 0, std::cos(yAngle) } - }; - for (unsigned i = 0; i < 3; i++) { - for (unsigned j = 0; j < 3; j++) { - newPos.m[i][j] = 0.0f; - for (unsigned k = 0; k < 3; k++) { - newPos.m[i][j] += yRot[i][k] * curPos.m[k][j]; - } +void OverlayController::RotateUniverseCenter(vr::ETrackingUniverseOrigin universe, float yAngle, bool adjustBounds, bool commit) { + if (yAngle != 0.0f) { + if (commit) { + vr::VRChaperoneSetup()->RevertWorkingCopy(); + } + vr::HmdMatrix34_t curPos; + if (universe == vr::TrackingUniverseStanding) { + vr::VRChaperoneSetup()->GetWorkingStandingZeroPoseToRawTrackingPose(&curPos); + } else { + vr::VRChaperoneSetup()->GetWorkingSeatedZeroPoseToRawTrackingPose(&curPos); + } + vr::HmdMatrix34_t newPos; + float yRot[3][3] = { + { std::cos(yAngle), 0, std::sin(yAngle) }, + { 0, 1, 0 }, + { -std::sin(yAngle), 0, std::cos(yAngle) } + }; + for (unsigned i = 0; i < 3; i++) { + for (unsigned j = 0; j < 3; j++) { + newPos.m[i][j] = 0.0f; + for (unsigned k = 0; k < 3; k++) { + newPos.m[i][j] += yRot[i][k] * curPos.m[k][j]; } } - newPos.m[0][3] = curPos.m[0][3]; - newPos.m[1][3] = curPos.m[1][3]; - newPos.m[2][3] = curPos.m[2][3]; + } + newPos.m[0][3] = curPos.m[0][3]; + newPos.m[1][3] = curPos.m[1][3]; + newPos.m[2][3] = curPos.m[2][3]; + if (universe == vr::TrackingUniverseStanding) { vr::VRChaperoneSetup()->SetWorkingStandingZeroPoseToRawTrackingPose(&newPos); - if (universe == vr::TrackingUniverseStanding) { - vr::VRChaperoneSetup()->SetWorkingStandingZeroPoseToRawTrackingPose(&newPos); - } else { - vr::VRChaperoneSetup()->SetWorkingSeatedZeroPoseToRawTrackingPose(&newPos); - } - if (adjustBounds && universe == vr::TrackingUniverseStanding) { - RotateCollisionBounds(-yAngle, false); - } - if (commit) { - vr::VRChaperoneSetup()->CommitWorkingCopy(vr::EChaperoneConfigFile_Live); - } + } else { + vr::VRChaperoneSetup()->SetWorkingSeatedZeroPoseToRawTrackingPose(&newPos); + } + if (adjustBounds && universe == vr::TrackingUniverseStanding) { + RotateCollisionBounds(-yAngle, false); } - } - - void OverlayController::AddOffsetToCollisionBounds(unsigned axisId, float offset, bool commit) { - // Apparently Valve sanity-checks the y-coordinates of the collision bounds (and only the y-coordinates) - // I can move the bounds on the xz-plane, I can make the "ceiling" of the chaperone cage lower/higher, but when I - // dare to set one single lower corner to something non-zero, every corner gets its y-coordinates reset to the defaults. - // I do it anyway, maybe it gets fixed in the future. if (commit) { - vr::VRChaperoneSetup()->RevertWorkingCopy(); - } - unsigned collisionBoundsCount = 0; - vr::VRChaperoneSetup()->GetWorkingCollisionBoundsInfo(nullptr, &collisionBoundsCount); - if (collisionBoundsCount > 0) { - vr::HmdQuad_t* collisionBounds = new vr::HmdQuad_t[collisionBoundsCount]; - vr::VRChaperoneSetup()->GetWorkingCollisionBoundsInfo(collisionBounds, &collisionBoundsCount); - for (unsigned b = 0; b < collisionBoundsCount; b++) { - for (unsigned c = 0; c < 4; c++) { - collisionBounds[b].vCorners[c].v[axisId] += offset; - } - } - vr::VRChaperoneSetup()->SetWorkingCollisionBoundsInfo(collisionBounds, collisionBoundsCount); - delete collisionBounds; - } - if (commit && collisionBoundsCount > 0) { vr::VRChaperoneSetup()->CommitWorkingCopy(vr::EChaperoneConfigFile_Live); } } +} - void OverlayController::RotateCollisionBounds(float angle, bool commit) { - if (commit) { - vr::VRChaperoneSetup()->RevertWorkingCopy(); - } - unsigned collisionBoundsCount = 0; - vr::VRChaperoneSetup()->GetWorkingCollisionBoundsInfo(nullptr, &collisionBoundsCount); - if (collisionBoundsCount > 0) { - vr::HmdQuad_t* collisionBounds = new vr::HmdQuad_t[collisionBoundsCount]; - vr::VRChaperoneSetup()->GetWorkingCollisionBoundsInfo(collisionBounds, &collisionBoundsCount); - float yRot[3][3] = { - { std::cos(angle), 0, std::sin(angle) }, - { 0, 1, 0 }, - { -std::sin(angle), 0, std::cos(angle) } - }; - for (unsigned b = 0; b < collisionBoundsCount; b++) { - for (unsigned c = 0; c < 4; c++) { - auto& corner = collisionBounds[b].vCorners[c]; - vr::HmdVector3_t newVal; - for (unsigned i = 0; i < 3; i++) { - newVal.v[i] = 0.0f; - for (unsigned k = 0; k < 3; k++) { - newVal.v[i] += corner.v[k] * yRot[i][k]; - }; - } - corner = newVal; - } - } - vr::VRChaperoneSetup()->SetWorkingCollisionBoundsInfo(collisionBounds, collisionBoundsCount); - delete collisionBounds; - } - if (commit && collisionBoundsCount > 0) { - vr::VRChaperoneSetup()->CommitWorkingCopy(vr::EChaperoneConfigFile_Live); - } +void OverlayController::AddOffsetToCollisionBounds(unsigned axisId, float offset, bool commit) { + // Apparently Valve sanity-checks the y-coordinates of the collision bounds (and only the y-coordinates) + // I can move the bounds on the xz-plane, I can make the "ceiling" of the chaperone cage lower/higher, but when I + // dare to set one single lower corner to something non-zero, every corner gets its y-coordinates reset to the defaults. + // I do it anyway, maybe it gets fixed in the future. + if (commit) { + vr::VRChaperoneSetup()->RevertWorkingCopy(); } + unsigned collisionBoundsCount = 0; + vr::VRChaperoneSetup()->GetWorkingCollisionBoundsInfo(nullptr, &collisionBoundsCount); + if (collisionBoundsCount > 0) { + vr::HmdQuad_t* collisionBounds = new vr::HmdQuad_t[collisionBoundsCount]; + vr::VRChaperoneSetup()->GetWorkingCollisionBoundsInfo(collisionBounds, &collisionBoundsCount); + for (unsigned b = 0; b < collisionBoundsCount; b++) { + for (unsigned c = 0; c < 4; c++) { + collisionBounds[b].vCorners[c].v[axisId] += offset; + } + } + vr::VRChaperoneSetup()->SetWorkingCollisionBoundsInfo(collisionBounds, collisionBoundsCount); + delete collisionBounds; + } + if (commit && collisionBoundsCount > 0) { + vr::VRChaperoneSetup()->CommitWorkingCopy(vr::EChaperoneConfigFile_Live); + } +} + +void OverlayController::RotateCollisionBounds(float angle, bool commit) { + if (commit) { + vr::VRChaperoneSetup()->RevertWorkingCopy(); + } + unsigned collisionBoundsCount = 0; + vr::VRChaperoneSetup()->GetWorkingCollisionBoundsInfo(nullptr, &collisionBoundsCount); + if (collisionBoundsCount > 0) { + vr::HmdQuad_t* collisionBounds = new vr::HmdQuad_t[collisionBoundsCount]; + vr::VRChaperoneSetup()->GetWorkingCollisionBoundsInfo(collisionBounds, &collisionBoundsCount); + float yRot[3][3] = { + { std::cos(angle), 0, std::sin(angle) }, + { 0, 1, 0 }, + { -std::sin(angle), 0, std::cos(angle) } + }; + for (unsigned b = 0; b < collisionBoundsCount; b++) { + for (unsigned c = 0; c < 4; c++) { + auto& corner = collisionBounds[b].vCorners[c]; + vr::HmdVector3_t newVal; + for (unsigned i = 0; i < 3; i++) { + newVal.v[i] = 0.0f; + for (unsigned k = 0; k < 3; k++) { + newVal.v[i] += corner.v[k] * yRot[i][k]; + }; + } + corner = newVal; + } + } + vr::VRChaperoneSetup()->SetWorkingCollisionBoundsInfo(collisionBounds, collisionBoundsCount); + delete collisionBounds; + } + if (commit && collisionBoundsCount > 0) { + vr::VRChaperoneSetup()->CommitWorkingCopy(vr::EChaperoneConfigFile_Live); + } +} + +QString OverlayController::getVersionString() { + return QString(applicationVersionString); +} + + +QUrl OverlayController::getVRRuntimePathUrl() { + return m_runtimePathUrl; +} + + +void OverlayController::showKeyboard(QString existingText, unsigned long userValue) { + vr::VROverlay()->ShowKeyboardForOverlay(m_ulOverlayHandle, vr::k_EGamepadTextInputModeNormal, vr::k_EGamepadTextInputLineModeSingleLine, "Advanced Settings Overlay", 1024, existingText.toStdString().c_str(), false, userValue); +} } // namespace advconfig diff --git a/src/overlaycontroller.h b/src/overlaycontroller.h index 4511205..7d4545d 100644 --- a/src/overlaycontroller.h +++ b/src/overlaycontroller.h @@ -9,10 +9,16 @@ #include #include #include +#include +#include +#include #include #include #include #include +#include +#include +#include #include #include "logging.h" @@ -20,70 +26,100 @@ #include "tabcontrollers/ChaperoneTabController.h" #include "tabcontrollers/MoveCenterTabController.h" #include "tabcontrollers/FixFloorTabController.h" +#include "tabcontrollers/AudioTabController.h" #include "tabcontrollers/StatisticsTabController.h" #include "tabcontrollers/SettingsTabController.h" +// Show a window on the desktop instead of an overlay in vr +//#define DEBUG_DESKTOP_WINDOW + + // application namespace namespace advsettings { -// forward declaration -class OverlayWidget; - class OverlayController : public QObject { Q_OBJECT public: static constexpr const char* applicationKey = "matzman666.AdvancedSettings"; static constexpr const char* applicationName = "Advanced Settings"; - static constexpr const char* applicationVersionString = "v1.1"; + static constexpr const char* applicationVersionString = "v2.0"; private: - OverlayWidget *m_pWidget; - vr::VROverlayHandle_t m_ulOverlayHandle = vr::k_ulOverlayHandleInvalid; vr::VROverlayHandle_t m_ulOverlayThumbnailHandle = vr::k_ulOverlayHandleInvalid; + std::unique_ptr m_pWindow; std::unique_ptr m_pOpenGLContext; - std::unique_ptr m_pScene; std::unique_ptr m_pFbo; + std::unique_ptr m_pRenderControl; std::unique_ptr m_pOffscreenSurface; std::unique_ptr m_pPumpEventsTimer; + std::unique_ptr m_pRenderTimer; bool dashboardVisible = false; - QPointF m_ptLastMouse; + QPoint m_ptLastMouse; Qt::MouseButtons m_lastMouseButtons = 0; + QUrl m_runtimePathUrl; + SteamVRTabController steamVRTabController; ChaperoneTabController chaperoneTabController; MoveCenterTabController moveCenterTabController; FixFloorTabController fixFloorTabController; + AudioTabController audioTabController; StatisticsTabController statisticsTabController; SettingsTabController settingsTabController; -public: +private: OverlayController() : QObject() {} + +public: virtual ~OverlayController(); - void Init(); + void Init(QQmlEngine* qmlEngine); bool isDashboardVisible() { return dashboardVisible; } - void SetWidget(OverlayWidget *pWidget, const std::string& name, const std::string& key = ""); + void SetWidget(QQuickItem* quickItem, const std::string& name, const std::string& key = ""); void AddOffsetToUniverseCenter(vr::ETrackingUniverseOrigin universe, unsigned axisId, float offset, bool adjustBounds = true, bool commit = true); void RotateUniverseCenter(vr::ETrackingUniverseOrigin universe, float yAngle, bool adjustBounds = true, bool commit = true); // around y axis void AddOffsetToCollisionBounds(unsigned axisId, float offset, bool commit = true); void RotateCollisionBounds(float angle, bool commit = true); // around y axis + Q_INVOKABLE QString getVersionString(); + Q_INVOKABLE QUrl getVRRuntimePathUrl(); + public slots: - void OnSceneChanged( const QList& ); + void renderOverlay(); + void OnRenderRequest(); void OnTimeoutPumpEvents(); - void UpdateWidget(); + void showKeyboard(QString existingText, unsigned long userValue = 0); + +signals: + void keyBoardInputSignal(QString input, unsigned long userValue = 0); + +private: + static QSettings* _appSettings; + static std::unique_ptr singleton; + +public: + static OverlayController* getInstance() { + if (!singleton) { + singleton.reset(new advsettings::OverlayController()); + } + return singleton.get(); + } + + static QSettings* appSettings() { return _appSettings; } + + static void setAppSettings(QSettings* settings) { _appSettings = settings; } }; } // namespace advsettings diff --git a/src/overlaywidget.cpp b/src/overlaywidget.cpp deleted file mode 100644 index ab745a1..0000000 --- a/src/overlaywidget.cpp +++ /dev/null @@ -1,12 +0,0 @@ -#include "overlaywidget.h" -#include "ui_overlaywidget.h" - -// application namespace -namespace advsettings { - - OverlayWidget::OverlayWidget(QWidget *parent) : - QWidget(parent), ui(new Ui::OverlayWidget) { - ui->setupUi(this); - } - -} // namespace advsettings diff --git a/src/overlaywidget.h b/src/overlaywidget.h deleted file mode 100644 index 9f20171..0000000 --- a/src/overlaywidget.h +++ /dev/null @@ -1,27 +0,0 @@ -#pragma once - - -#include -#include - - -// forward declaration -namespace Ui { class OverlayWidget; } - -// application namespace -namespace advsettings { - -class OverlayWidget : public QWidget { - Q_OBJECT - -public: - std::unique_ptr ui; - - explicit OverlayWidget(QWidget *parent = 0); - -private slots: -}; - -} // namespace advsettings - - diff --git a/src/tabcontrollers/AudioManager.h b/src/tabcontrollers/AudioManager.h new file mode 100644 index 0000000..41e7d5f --- /dev/null +++ b/src/tabcontrollers/AudioManager.h @@ -0,0 +1,35 @@ +#pragma once + +#include + +// application namespace +namespace advsettings { + +class AudioTabController; + +class AudioManager +{ +public: + virtual ~AudioManager() {}; + + virtual void init(AudioTabController* controller) = 0; + + virtual void setMirrorDevice(const std::string& id) = 0; + virtual void deleteMirrorDevice() = 0; + virtual bool isMirrorValid() = 0; + virtual std::string getMirrorDevName() = 0; + virtual float getMirrorVolume() = 0; + virtual bool setMirrorVolume(float value) = 0; + virtual bool getMirrorMuted() = 0; + virtual bool setMirrorMuted(bool value) = 0; + + virtual bool isMicValid() = 0; + virtual std::string getMicDevName() = 0; + virtual float getMicVolume() = 0; + virtual bool setMicVolume(float value) = 0; + virtual bool getMicMuted() = 0; + virtual bool setMicMuted(bool value) = 0; +}; + +} + diff --git a/src/tabcontrollers/AudioTabController.cpp b/src/tabcontrollers/AudioTabController.cpp new file mode 100644 index 0000000..112dab1 --- /dev/null +++ b/src/tabcontrollers/AudioTabController.cpp @@ -0,0 +1,680 @@ +#include "AudioTabController.h" +#include +#include +#include "../overlaycontroller.h" +#include "audiomanager/AudioManagerWindows.h" + +// application namespace +namespace advsettings { + + void AudioTabController::initStage1() { + vr::EVRSettingsError vrSettingsError; + audioManager.reset(new AudioManagerWindows()); + audioManager->init(this); + char mirrorDeviceId[1024]; + vr::VRSettings()->GetString(vr::k_pch_audio_Section, vr::k_pch_audio_OnPlaybackMirrorDevice_String, mirrorDeviceId, 1024, &vrSettingsError); + if (vrSettingsError != vr::VRSettingsError_None) { + LOG(WARNING) << "Could not read \"" << vr::k_pch_audio_OnPlaybackMirrorDevice_String << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError); + } + audioManager->setMirrorDevice(mirrorDeviceId); + lastMirrorDevId = mirrorDeviceId; + m_micPresent = audioManager->isMicValid(); + m_micVolume = audioManager->getMicVolume(); + m_micMuted = audioManager->getMicMuted(); + m_micDevName = QString::fromStdString(audioManager->getMicDevName()); + m_mirrorPresent = audioManager->isMirrorValid(); + m_mirrorVolume = audioManager->getMirrorVolume(); + m_mirrorMuted = audioManager->getMirrorMuted(); + m_mirrorDevName = QString::fromStdString(audioManager->getMirrorDevName()); + reloadPttProfiles(); + reloadPttConfig(); + eventLoopTick(); + } + + + void AudioTabController::initStage2(OverlayController * parent, QQuickWindow * widget) { + this->parent = parent; + this->widget = widget; + + std::string notifKey = std::string(OverlayController::applicationKey) + ".pptnotification"; + vr::VROverlayError overlayError = vr::VROverlay()->CreateOverlay(notifKey.c_str(), notifKey.c_str(), &m_ulNotificationOverlayHandle); + if (overlayError == vr::VROverlayError_None) { + std::string notifIconPath = QApplication::applicationDirPath().toStdString() + "/res/qml/ptt_notification.png"; + if (QFile::exists(QString::fromStdString(notifIconPath))) { + vr::VROverlay()->SetOverlayFromFile(m_ulNotificationOverlayHandle, notifIconPath.c_str()); + vr::VROverlay()->SetOverlayWidthInMeters(m_ulNotificationOverlayHandle, 0.02f); + vr::HmdMatrix34_t notificationTransform = { + 1.0f, 0.0f, 0.0f, 0.12f, + 0.0f, 1.0f, 0.0f, 0.08f, + 0.0f, 0.0f, 1.0f, -0.3f + }; + vr::VROverlay()->SetOverlayTransformTrackedDeviceRelative(m_ulNotificationOverlayHandle, vr::k_unTrackedDeviceIndex_Hmd, ¬ificationTransform); + } else { + LOG(ERROR) << "Could not find notification icon \"" << notifIconPath << "\""; + } + } else { + LOG(ERROR) << "Could not create ptt notification overlay: " << vr::VROverlay()->GetOverlayErrorNameFromEnum(overlayError); + } + } + + + bool AudioTabController::mirrorPresent() const { + return m_mirrorPresent; + } + + + QString AudioTabController::mirrorDevName() const { + return m_mirrorDevName; + } + + + float AudioTabController::mirrorVolume() const { + return m_mirrorVolume; + } + + + bool AudioTabController::mirrorMuted() const { + return m_mirrorMuted; + } + + + bool AudioTabController::micPresent() const { + return m_micPresent; + } + + + QString AudioTabController::micDevName() const { + return m_micDevName; + } + + + float AudioTabController::micVolume() const { + return m_micVolume; + } + + + bool AudioTabController::micMuted() const { + return m_micMuted; + } + + + bool AudioTabController::pttEnabled() const { + return m_pttEnabled; + } + + + bool AudioTabController::pttActive() const { + return m_pttActive; + } + + + bool AudioTabController::pttShowNotification() const { + return m_pttShowNotification; + } + + + bool AudioTabController::pttLeftControllerEnabled() const { + return m_pttLeftControllerEnabled; + } + + + bool AudioTabController::pttRightControllerEnabled() const { + return m_pttRightControllerEnabled; + } + + void AudioTabController::setPttControllerConfig(unsigned controller, QVariantList buttons, unsigned triggerMode, unsigned padMode, unsigned padAreas) { + std::lock_guard lock(eventLoopMutex); + if (controller < 2) { + uint64_t buttonMask = 0; + for (auto b : buttons) { + buttonMask |= vr::ButtonMaskFromId((vr::EVRButtonId)b.toInt()); + } + m_pttControllerConfigs[controller].digitalButtons = buttons; + m_pttControllerConfigs[controller].digitalButtonMask = buttonMask; + m_pttControllerConfigs[controller].triggerMode = triggerMode; + m_pttControllerConfigs[controller].touchpadMode = padMode; + m_pttControllerConfigs[controller].touchpadAreas = padAreas; + savePttConfig(); + } + } + + void AudioTabController::reloadPttProfiles() { + pttProfiles.clear(); + auto settings = OverlayController::appSettings(); + settings->beginGroup("audioSettings"); + auto profileCount = settings->beginReadArray("pttProfiles"); + for (int i = 0; i < profileCount; i++) { + settings->setArrayIndex(i); + pttProfiles.emplace_back(); + auto& entry = pttProfiles[i]; + entry.profileName = settings->value("profileName").toString().toStdString(); + entry.showNotification = settings->value("showNotification", true).toBool(); + entry.leftControllerEnabled = settings->value("leftControllerEnabled", false).toBool(); + entry.rightControllerEnabled = settings->value("rightControllerEnabled", false).toBool(); + entry.controllerConfigs[0].digitalButtons = settings->value("digitalButtons_0").toList(); + uint64_t buttonMask = 0; + for (auto b : entry.controllerConfigs[0].digitalButtons) { + buttonMask |= vr::ButtonMaskFromId((vr::EVRButtonId)b.toInt()); + } + entry.controllerConfigs[0].digitalButtonMask = buttonMask; + entry.controllerConfigs[0].triggerMode = settings->value("triggerMode_0", 0).toUInt(); + entry.controllerConfigs[0].touchpadMode = settings->value("touchpadMode_0", 0).toUInt(); + entry.controllerConfigs[0].touchpadAreas = settings->value("touchPadAreas_0", 0).toUInt(); + entry.controllerConfigs[1].digitalButtons = settings->value("digitalButtons_1").toList(); + buttonMask = 0; + for (auto b : entry.controllerConfigs[1].digitalButtons) { + buttonMask |= vr::ButtonMaskFromId((vr::EVRButtonId)b.toInt()); + } + entry.controllerConfigs[1].digitalButtonMask = buttonMask; + entry.controllerConfigs[1].triggerMode = settings->value("triggerMode_1", 0).toUInt(); + entry.controllerConfigs[1].touchpadMode = settings->value("touchpadMode_1", 0).toUInt(); + entry.controllerConfigs[1].touchpadAreas = settings->value("touchPadAreas_1", 0).toUInt(); + } + settings->endArray(); + settings->endGroup(); + } + + void AudioTabController::savePttProfiles() { + auto settings = OverlayController::appSettings(); + settings->beginGroup("audioSettings"); + settings->beginWriteArray("pttProfiles"); + unsigned i = 0; + for (auto& p : pttProfiles) { + settings->setArrayIndex(i); + settings->setValue("profileName", QString::fromStdString(p.profileName)); + settings->setValue("showNotification", p.showNotification); + settings->setValue("leftControllerEnabled", p.leftControllerEnabled); + settings->setValue("rightControllerEnabled", p.rightControllerEnabled); + settings->setValue("digitalButtons_0", p.controllerConfigs[0].digitalButtons); + settings->setValue("triggerMode_0", p.controllerConfigs[0].triggerMode); + settings->setValue("touchpadMode_0", p.controllerConfigs[0].touchpadMode); + settings->setValue("touchPadAreas_0", p.controllerConfigs[0].touchpadAreas); + settings->setValue("digitalButtons_1", p.controllerConfigs[1].digitalButtons); + settings->setValue("triggerMode_1", p.controllerConfigs[1].triggerMode); + settings->setValue("touchpadMode_1", p.controllerConfigs[1].touchpadMode); + settings->setValue("touchPadAreas_1", p.controllerConfigs[1].touchpadAreas); + i++; + } + settings->endArray(); + settings->endGroup(); + } + + + void AudioTabController::reloadPttConfig() { + std::lock_guard lock(eventLoopMutex); + auto settings = OverlayController::appSettings(); + settings->beginGroup("audioSettings"); + setPttEnabled(settings->value("pttEnabled", false).toBool(), true, false); + setPttLeftControllerEnabled(settings->value("pttLeftControllerEnabled", false).toBool(), true, false); + setPttRightControllerEnabled(settings->value("pttRightControllerEnabled", false).toBool(), true, false); + setPttShowNotification(settings->value("pttShowNotification", true).toBool(), true, false); + m_pttControllerConfigs[0].digitalButtons = settings->value("pttDigitalButtons_0").toList(); + uint64_t buttonMask = 0; + for (auto b : m_pttControllerConfigs[0].digitalButtons) { + buttonMask |= vr::ButtonMaskFromId((vr::EVRButtonId)b.toInt()); + } + m_pttControllerConfigs[0].digitalButtonMask = buttonMask; + m_pttControllerConfigs[0].triggerMode = settings->value("pttTriggerMode_0", 0).toUInt(); + m_pttControllerConfigs[0].touchpadMode = settings->value("pttTouchpadMode_0", 0).toUInt(); + m_pttControllerConfigs[0].touchpadAreas = settings->value("pttTouchPadAreas_0", 0).toUInt(); + m_pttControllerConfigs[1].digitalButtons = settings->value("pttDigitalButtons_1").toList(); + buttonMask = 0; + for (auto b : m_pttControllerConfigs[0].digitalButtons) { + buttonMask |= vr::ButtonMaskFromId((vr::EVRButtonId)b.toInt()); + } + m_pttControllerConfigs[1].digitalButtonMask = buttonMask; + m_pttControllerConfigs[1].triggerMode = settings->value("pttTriggerMode_1", 0).toUInt(); + m_pttControllerConfigs[1].touchpadMode = settings->value("pttTouchpadMode_1", 0).toUInt(); + m_pttControllerConfigs[1].touchpadAreas = settings->value("pttTouchPadAreas_1", 0).toUInt(); + settings->endGroup(); + } + + void AudioTabController::savePttConfig() { + auto settings = OverlayController::appSettings(); + settings->beginGroup("audioSettings"); + settings->setValue("pttEnabled", pttEnabled()); + settings->setValue("pttLeftControllerEnabled", pttLeftControllerEnabled()); + settings->setValue("pttRightControllerEnabled", pttRightControllerEnabled()); + settings->setValue("pttShowNotification", pttShowNotification()); + settings->setValue("pttDigitalButtons_0", m_pttControllerConfigs[0].digitalButtons); + settings->setValue("pttTriggerMode_0", m_pttControllerConfigs[0].triggerMode); + settings->setValue("pttTouchpadMode_0", m_pttControllerConfigs[0].touchpadMode); + settings->setValue("pttTouchPadAreas_0", m_pttControllerConfigs[0].touchpadAreas); + settings->setValue("pttDigitalButtons_1", m_pttControllerConfigs[1].digitalButtons); + settings->setValue("pttTriggerMode_1", m_pttControllerConfigs[1].triggerMode); + settings->setValue("pttTouchpadMode_1", m_pttControllerConfigs[1].touchpadMode); + settings->setValue("pttTouchPadAreas_1", m_pttControllerConfigs[1].touchpadAreas); + settings->endGroup(); + } + + void logControllerState(const vr::VRControllerState_t& state, const std::string& prefix) { + if (state.ulButtonPressed & vr::ButtonMaskFromId(vr::k_EButton_ApplicationMenu)) { + LOG(INFO) << prefix << vr::VRSystem()->GetButtonIdNameFromEnum(vr::k_EButton_ApplicationMenu) << " pressed"; + } + if (state.ulButtonTouched & vr::ButtonMaskFromId(vr::k_EButton_ApplicationMenu)) { + LOG(INFO) << prefix << vr::VRSystem()->GetButtonIdNameFromEnum(vr::k_EButton_ApplicationMenu) << " touched"; + } + if (state.ulButtonPressed & vr::ButtonMaskFromId(vr::k_EButton_Grip)) { + LOG(INFO) << prefix << vr::VRSystem()->GetButtonIdNameFromEnum(vr::k_EButton_Grip) << " pressed"; + } + if (state.ulButtonTouched & vr::ButtonMaskFromId(vr::k_EButton_Grip)) { + LOG(INFO) << prefix << vr::VRSystem()->GetButtonIdNameFromEnum(vr::k_EButton_Grip) << " touched"; + } + if (state.ulButtonPressed & vr::ButtonMaskFromId(vr::k_EButton_DPad_Left)) { + LOG(INFO) << prefix << vr::VRSystem()->GetButtonIdNameFromEnum(vr::k_EButton_DPad_Left) << " pressed"; + } + if (state.ulButtonTouched & vr::ButtonMaskFromId(vr::k_EButton_DPad_Left)) { + LOG(INFO) << prefix << vr::VRSystem()->GetButtonIdNameFromEnum(vr::k_EButton_DPad_Left) << " touched"; + } + if (state.ulButtonPressed & vr::ButtonMaskFromId(vr::k_EButton_DPad_Up)) { + LOG(INFO) << prefix << vr::VRSystem()->GetButtonIdNameFromEnum(vr::k_EButton_DPad_Up) << " pressed"; + } + if (state.ulButtonTouched & vr::ButtonMaskFromId(vr::k_EButton_DPad_Up)) { + LOG(INFO) << prefix << vr::VRSystem()->GetButtonIdNameFromEnum(vr::k_EButton_DPad_Up) << " touched"; + } + if (state.ulButtonPressed & vr::ButtonMaskFromId(vr::k_EButton_DPad_Right)) { + LOG(INFO) << prefix << vr::VRSystem()->GetButtonIdNameFromEnum(vr::k_EButton_DPad_Right) << " pressed"; + } + if (state.ulButtonTouched & vr::ButtonMaskFromId(vr::k_EButton_DPad_Right)) { + LOG(INFO) << prefix << vr::VRSystem()->GetButtonIdNameFromEnum(vr::k_EButton_DPad_Right) << " touched"; + } + if (state.ulButtonPressed & vr::ButtonMaskFromId(vr::k_EButton_DPad_Down)) { + LOG(INFO) << prefix << vr::VRSystem()->GetButtonIdNameFromEnum(vr::k_EButton_DPad_Down) << " pressed"; + } + if (state.ulButtonTouched & vr::ButtonMaskFromId(vr::k_EButton_DPad_Down)) { + LOG(INFO) << prefix << vr::VRSystem()->GetButtonIdNameFromEnum(vr::k_EButton_DPad_Down) << " touched"; + } + if (state.ulButtonPressed & vr::ButtonMaskFromId(vr::k_EButton_A)) { + LOG(INFO) << prefix << vr::VRSystem()->GetButtonIdNameFromEnum(vr::k_EButton_A) << " pressed"; + } + if (state.ulButtonTouched & vr::ButtonMaskFromId(vr::k_EButton_A)) { + LOG(INFO) << prefix << vr::VRSystem()->GetButtonIdNameFromEnum(vr::k_EButton_A) << " touched"; + } + if (state.ulButtonPressed & vr::ButtonMaskFromId(vr::k_EButton_Axis0)) { + LOG(INFO) << prefix << vr::VRSystem()->GetButtonIdNameFromEnum(vr::k_EButton_Axis0) << " pressed"; + LOG(INFO) << prefix << vr::VRSystem()->GetButtonIdNameFromEnum(vr::k_EButton_Axis0) << " x: " << state.rAxis[0].x << " y: " << state.rAxis[0].y; + } + if (state.ulButtonTouched & vr::ButtonMaskFromId(vr::k_EButton_Axis0)) { + LOG(INFO) << prefix << vr::VRSystem()->GetButtonIdNameFromEnum(vr::k_EButton_Axis0) << " touched"; + LOG(INFO) << prefix << vr::VRSystem()->GetButtonIdNameFromEnum(vr::k_EButton_Axis0) << " x: " << state.rAxis[0].x << " y: " << state.rAxis[0].y; + } + if (state.ulButtonPressed & vr::ButtonMaskFromId(vr::k_EButton_Axis1)) { + LOG(INFO) << prefix << vr::VRSystem()->GetButtonIdNameFromEnum(vr::k_EButton_Axis1) << " pressed"; + LOG(INFO) << prefix << vr::VRSystem()->GetButtonIdNameFromEnum(vr::k_EButton_Axis1) << " x: " << state.rAxis[1].x << " y: " << state.rAxis[0].y; + } + if (state.ulButtonTouched & vr::ButtonMaskFromId(vr::k_EButton_Axis1)) { + LOG(INFO) << prefix << vr::VRSystem()->GetButtonIdNameFromEnum(vr::k_EButton_Axis1) << " touched"; + LOG(INFO) << prefix << vr::VRSystem()->GetButtonIdNameFromEnum(vr::k_EButton_Axis1) << " x: " << state.rAxis[1].x << " y: " << state.rAxis[0].y; + } + if (state.ulButtonPressed & vr::ButtonMaskFromId(vr::k_EButton_Axis2)) { + LOG(INFO) << prefix << vr::VRSystem()->GetButtonIdNameFromEnum(vr::k_EButton_Axis2) << " pressed"; + LOG(INFO) << prefix << vr::VRSystem()->GetButtonIdNameFromEnum(vr::k_EButton_Axis2) << " x: " << state.rAxis[2].x << " y: " << state.rAxis[0].y; + } + if (state.ulButtonTouched & vr::ButtonMaskFromId(vr::k_EButton_Axis2)) { + LOG(INFO) << prefix << vr::VRSystem()->GetButtonIdNameFromEnum(vr::k_EButton_Axis2) << " touched"; + LOG(INFO) << prefix << vr::VRSystem()->GetButtonIdNameFromEnum(vr::k_EButton_Axis2) << " x: " << state.rAxis[2].x << " y: " << state.rAxis[0].y; + } + if (state.ulButtonPressed & vr::ButtonMaskFromId(vr::k_EButton_Axis3)) { + LOG(INFO) << prefix << vr::VRSystem()->GetButtonIdNameFromEnum(vr::k_EButton_Axis3) << " pressed"; + LOG(INFO) << prefix << vr::VRSystem()->GetButtonIdNameFromEnum(vr::k_EButton_Axis3) << " x: " << state.rAxis[3].x << " y: " << state.rAxis[0].y; + } + if (state.ulButtonTouched & vr::ButtonMaskFromId(vr::k_EButton_Axis3)) { + LOG(INFO) << prefix << vr::VRSystem()->GetButtonIdNameFromEnum(vr::k_EButton_Axis3) << " touched"; + LOG(INFO) << prefix << vr::VRSystem()->GetButtonIdNameFromEnum(vr::k_EButton_Axis3) << " x: " << state.rAxis[3].x << " y: " << state.rAxis[0].y; + } + if (state.ulButtonPressed & vr::ButtonMaskFromId(vr::k_EButton_Axis4)) { + LOG(INFO) << prefix << vr::VRSystem()->GetButtonIdNameFromEnum(vr::k_EButton_Axis4) << " pressed"; + LOG(INFO) << prefix << vr::VRSystem()->GetButtonIdNameFromEnum(vr::k_EButton_Axis4) << " x: " << state.rAxis[4].x << " y: " << state.rAxis[0].y; + } + if (state.ulButtonTouched & vr::ButtonMaskFromId(vr::k_EButton_Axis4)) { + LOG(INFO) << prefix << vr::VRSystem()->GetButtonIdNameFromEnum(vr::k_EButton_Axis4) << " touched"; + LOG(INFO) << prefix << vr::VRSystem()->GetButtonIdNameFromEnum(vr::k_EButton_Axis4) << " x: " << state.rAxis[4].x << " y: " << state.rAxis[0].y; + } + } + + void AudioTabController::eventLoopTick() { + if (!eventLoopMutex.try_lock()) { + return; + } + if (settingsUpdateCounter >= 50) { + vr::EVRSettingsError vrSettingsError; + char mirrorDeviceId[1024]; + vr::VRSettings()->GetString(vr::k_pch_audio_Section, vr::k_pch_audio_OnPlaybackMirrorDevice_String, mirrorDeviceId, 1024, &vrSettingsError); + if (vrSettingsError != vr::VRSettingsError_None) { + LOG(WARNING) << "Could not read \"" << vr::k_pch_audio_OnPlaybackMirrorDevice_String << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError); + } + if (lastMirrorDevId.compare(mirrorDeviceId) != 0) { + audioManager->setMirrorDevice(mirrorDeviceId); + if (audioManager->isMirrorValid()) { + if (!m_mirrorPresent) { + m_mirrorPresent = true; + emit mirrorPresentChanged(m_mirrorPresent); + } + m_mirrorDevName = QString::fromStdString(audioManager->getMirrorDevName()); + emit mirrorDevNameChanged(m_mirrorDevName); + } else if (m_mirrorPresent) { + m_mirrorPresent = false; + emit mirrorPresentChanged(m_mirrorPresent); + } + lastMirrorDevId = mirrorDeviceId; + } + if (m_mirrorPresent) { + setMirrorVolume(audioManager->getMirrorVolume()); + setMirrorMuted(audioManager->getMirrorMuted()); + } + if (m_micPresent) { + setMicVolume(audioManager->getMicVolume()); + setMicMuted(audioManager->getMicMuted()); + } + settingsUpdateCounter = 0; + } else { + settingsUpdateCounter++; + } + static auto handleControllerState = [](const vr::VRControllerState_t& state, PttControllerConfig* config) -> bool { + if (state.ulButtonPressed & config->digitalButtonMask) { + return true; + } + if (config->triggerMode) { + if (state.ulButtonPressed & vr::ButtonMaskFromId(vr::k_EButton_SteamVR_Trigger) + || state.ulButtonTouched & vr::ButtonMaskFromId(vr::k_EButton_SteamVR_Trigger)) { + return true; + } + } + if (config->touchpadMode) { + if (((config->touchpadMode & 1) && (state.ulButtonTouched & vr::ButtonMaskFromId(vr::k_EButton_SteamVR_Touchpad))) + || ((config->touchpadMode & 2) && (state.ulButtonPressed & vr::ButtonMaskFromId(vr::k_EButton_SteamVR_Touchpad)))) { + if (config->touchpadAreas == (PAD_AREA_LEFT + PAD_AREA_TOP + PAD_AREA_RIGHT + PAD_AREA_BOTTOM)) { + return true; + } else { + float x = state.rAxis[0].x; + float y = state.rAxis[0].y; + if (std::abs(x) >= 0.2 || std::abs(y) >= 0.2) { // deadzone in the middle + if (x < 0 && std::abs(y) < -x && (config->touchpadAreas & PAD_AREA_LEFT)) { + return true; + } else if (y > 0 && std::abs(x) < y && (config->touchpadAreas & PAD_AREA_TOP)) { + return true; + } else if (x > 0 && std::abs(y) < x && (config->touchpadAreas & PAD_AREA_RIGHT)) { + return true; + } else if (y < 0 && std::abs(x) < -y && (config->touchpadAreas & PAD_AREA_BOTTOM)) { + return true; + } + } + } + } + } + return false; + }; + if (m_pttEnabled) { + bool newState = false; + if (m_pttLeftControllerEnabled) { + auto leftId = vr::VRSystem()->GetTrackedDeviceIndexForControllerRole(vr::TrackedControllerRole_LeftHand); + if (leftId != vr::k_unTrackedDeviceIndexInvalid) { + vr::VRControllerState_t state; + if (vr::VRSystem()->GetControllerState(leftId, &state)) { + //logControllerState(state, "Left "); + newState |= handleControllerState(state, m_pttControllerConfigs); + } + } + } + if (m_pttRightControllerEnabled) { + auto rightId = vr::VRSystem()->GetTrackedDeviceIndexForControllerRole(vr::TrackedControllerRole_RightHand); + if (rightId != vr::k_unTrackedDeviceIndexInvalid) { + vr::VRControllerState_t state; + if (vr::VRSystem()->GetControllerState(rightId, &state)) { + //logControllerState(state, "Right "); + newState |= handleControllerState(state, m_pttControllerConfigs + 1); + } + } + } + if (newState && !m_pttActive) { + if (audioManager && audioManager->isMicValid()) { + m_pttActive = true; + setMicMuted(false); + if (m_pttShowNotification && m_ulNotificationOverlayHandle != vr::k_ulOverlayHandleInvalid) { + vr::VROverlay()->ShowOverlay(m_ulNotificationOverlayHandle); + } + emit pttActiveChanged(m_pttActive); + } + } else if (!newState && m_pttActive) { + if (audioManager && audioManager->isMicValid()) { + m_pttActive = false; + setMicMuted(true); + if (m_pttShowNotification && m_ulNotificationOverlayHandle != vr::k_ulOverlayHandleInvalid) { + vr::VROverlay()->HideOverlay(m_ulNotificationOverlayHandle); + } + emit pttActiveChanged(m_pttActive); + } + } + } + eventLoopMutex.unlock(); + } + + void AudioTabController::addPttProfile(QString name) { + auto i = pttProfiles.size(); + pttProfiles.emplace_back(); + auto& profile = pttProfiles[i]; + profile.profileName = name.toStdString(); + profile.showNotification = m_pttShowNotification; + profile.leftControllerEnabled = m_pttLeftControllerEnabled; + profile.rightControllerEnabled = m_pttRightControllerEnabled; + profile.controllerConfigs[0].digitalButtons = m_pttControllerConfigs[0].digitalButtons; + profile.controllerConfigs[0].digitalButtonMask = m_pttControllerConfigs[0].digitalButtonMask; + profile.controllerConfigs[0].triggerMode = m_pttControllerConfigs[0].triggerMode; + profile.controllerConfigs[0].touchpadMode = m_pttControllerConfigs[0].touchpadMode; + profile.controllerConfigs[0].touchpadAreas = m_pttControllerConfigs[0].touchpadAreas; + profile.controllerConfigs[1].digitalButtons = m_pttControllerConfigs[1].digitalButtons; + profile.controllerConfigs[1].digitalButtonMask = m_pttControllerConfigs[1].digitalButtonMask; + profile.controllerConfigs[1].triggerMode = m_pttControllerConfigs[1].triggerMode; + profile.controllerConfigs[1].touchpadMode = m_pttControllerConfigs[1].touchpadMode; + profile.controllerConfigs[1].touchpadAreas = m_pttControllerConfigs[1].touchpadAreas; + savePttProfiles(); + OverlayController::appSettings()->sync(); + emit pttProfilesUpdated(); + } + + void AudioTabController::applyPttProfile(unsigned index) { + std::lock_guard lock(eventLoopMutex); + if (index < pttProfiles.size()) { + auto& profile = pttProfiles[index]; + setPttShowNotification(profile.showNotification); + setPttLeftControllerEnabled(profile.leftControllerEnabled); + setPttRightControllerEnabled(profile.rightControllerEnabled); + m_pttControllerConfigs[0].digitalButtons = profile.controllerConfigs[0].digitalButtons; + m_pttControllerConfigs[0].digitalButtonMask = profile.controllerConfigs[0].digitalButtonMask; + m_pttControllerConfigs[0].triggerMode = profile.controllerConfigs[0].triggerMode; + m_pttControllerConfigs[0].touchpadMode = profile.controllerConfigs[0].touchpadMode; + m_pttControllerConfigs[0].touchpadAreas = profile.controllerConfigs[0].touchpadAreas; + m_pttControllerConfigs[1].digitalButtons = profile.controllerConfigs[1].digitalButtons; + m_pttControllerConfigs[1].digitalButtonMask = profile.controllerConfigs[1].digitalButtonMask; + m_pttControllerConfigs[1].triggerMode = profile.controllerConfigs[1].triggerMode; + m_pttControllerConfigs[1].touchpadMode = profile.controllerConfigs[1].touchpadMode; + m_pttControllerConfigs[1].touchpadAreas = profile.controllerConfigs[1].touchpadAreas; + } + } + + void AudioTabController::deletePttProfile(unsigned index) { + if (index < pttProfiles.size()) { + auto pos = pttProfiles.begin() + index; + pttProfiles.erase(pos); + savePttProfiles(); + OverlayController::appSettings()->sync(); + emit pttProfilesUpdated(); + } + } + + QVariantList AudioTabController::pttDigitalButtons(unsigned controller) { + if (controller < 2) { + return m_pttControllerConfigs[controller].digitalButtons; + } + return QVariantList(); + } + + unsigned long AudioTabController::pttDigitalButtonMask(unsigned controller) { + if (controller < 2) { + return m_pttControllerConfigs[controller].digitalButtonMask; + } + return 0; + } + + unsigned AudioTabController::pttTouchpadMode(unsigned controller) { + if (controller < 2) { + return m_pttControllerConfigs[controller].touchpadMode; + } + return 0; + } + + unsigned AudioTabController::pttTriggerMode(unsigned controller) { + if (controller < 2) { + return m_pttControllerConfigs[controller].triggerMode; + } + return 0; + } + + unsigned AudioTabController::pttTouchpadArea(unsigned controller) { + if (controller < 2) { + return m_pttControllerConfigs[controller].touchpadAreas; + } + return 0; + } + + unsigned AudioTabController::getPttProfileCount() { + return (unsigned)pttProfiles.size(); + } + + QString AudioTabController::getPttProfileName(unsigned index) { + if (index < pttProfiles.size()) { + return QString::fromStdString(pttProfiles[index].profileName); + } + return ""; + } + + void AudioTabController::setMirrorVolume(float value, bool notify) { + std::lock_guard lock(eventLoopMutex); + if (value != m_mirrorVolume) { + m_mirrorVolume = value; + if (audioManager->isMirrorValid()) { + audioManager->setMirrorVolume(value); + } + if (notify) { + emit mirrorVolumeChanged(value); + } + } + } + + void AudioTabController::setMirrorMuted(bool value, bool notify) { + std::lock_guard lock(eventLoopMutex); + if (value != m_mirrorMuted) { + m_mirrorMuted = value; + if (audioManager->isMirrorValid()) { + audioManager->setMirrorMuted(value); + } + if (notify) { + emit mirrorMutedChanged(value); + } + } + } + + void AudioTabController::setMicVolume(float value, bool notify) { + std::lock_guard lock(eventLoopMutex); + if (value != m_micVolume) { + m_micVolume = value; + if (audioManager->isMicValid()) { + audioManager->setMicVolume(value); + } + if (notify) { + emit micVolumeChanged(value); + } + } + } + + void AudioTabController::setMicMuted(bool value, bool notify) { + std::lock_guard lock(eventLoopMutex); + if (value != m_micMuted) { + m_micMuted = value; + if (audioManager->isMicValid()) { + audioManager->setMicMuted(value); + } + if (notify) { + emit micMutedChanged(value); + } + } + } + + void AudioTabController::setPttEnabled(bool value, bool notify, bool save) { + std::lock_guard lock(eventLoopMutex); + if (value != m_pttEnabled) { + m_pttEnabled = value; + if (value) { + setMicMuted(true); + } else { + setMicMuted(false); + } + if (notify) { + emit pttEnabledChanged(value); + } + if (save) { + savePttConfig(); + } + } + } + + void AudioTabController::setPttShowNotification(bool value, bool notify, bool save) { + std::lock_guard lock(eventLoopMutex); + if (value != m_pttShowNotification) { + m_pttShowNotification = value; + if (notify) { + emit pttShowNotificationChanged(value); + } + if (save) { + savePttConfig(); + } + } + } + + void AudioTabController::setPttLeftControllerEnabled(bool value, bool notify, bool save) { + std::lock_guard lock(eventLoopMutex); + if (value != m_pttLeftControllerEnabled) { + m_pttLeftControllerEnabled = value; + if (notify) { + emit pttLeftControllerEnabledChanged(value); + } + if (save) { + savePttConfig(); + } + } + } + + void AudioTabController::setPttRightControllerEnabled(bool value, bool notify, bool save) { + std::lock_guard lock(eventLoopMutex); + if (value != m_pttRightControllerEnabled) { + m_pttRightControllerEnabled = value; + if (notify) { + emit pttRightControllerEnabledChanged(value); + } + if (save) { + savePttConfig(); + } + } + } + + + void AudioTabController::onNewRecordingDevice() { + if (audioManager->isMicValid()) { + if (!m_micPresent) { + m_micPresent = true; + emit micPresentChanged(m_micPresent); + } + setMicVolume(audioManager->getMicVolume()); + setMicMuted(audioManager->getMicMuted()); + m_micDevName = QString::fromStdString(audioManager->getMicDevName()); + + emit micDevNameChanged(m_micDevName); + } else { + if (m_micPresent) { + m_micPresent = false; + emit micPresentChanged(m_micPresent); + } + } + } + +} // namespace advconfig diff --git a/src/tabcontrollers/AudioTabController.h b/src/tabcontrollers/AudioTabController.h new file mode 100644 index 0000000..e7f98cd --- /dev/null +++ b/src/tabcontrollers/AudioTabController.h @@ -0,0 +1,169 @@ + +#pragma once + +#include "AudioManager.h" +#include +#include +#include +#include +#include +#include +#include + +class QQuickWindow; +// application namespace +namespace advsettings { + + // forward declaration + class OverlayController; + + enum TouchPadArea { + PAD_AREA_LEFT = (1 << 0), + PAD_AREA_TOP = (1 << 1), + PAD_AREA_RIGHT = (1 << 2), + PAD_AREA_BOTTOM = (1 << 3), + }; + + struct PttControllerConfig { + QVariantList digitalButtons; + uint64_t digitalButtonMask = 0; + unsigned triggerMode = 0; // 0 .. disabled, 1 .. enabled + unsigned touchpadMode = 0; // 0 .. disabled, 1 .. only touch, 2 .. only press, 3 .. both + unsigned touchpadAreas = 0; + }; + + struct PttProfile { + std::string profileName; + + bool showNotification = false; + bool leftControllerEnabled = false; + bool rightControllerEnabled = false; + PttControllerConfig controllerConfigs[2]; + }; + + + class AudioTabController : public QObject { + Q_OBJECT + Q_PROPERTY(bool mirrorPresent READ mirrorPresent NOTIFY mirrorPresentChanged) + Q_PROPERTY(QString mirrorDevName READ mirrorDevName NOTIFY mirrorDevNameChanged) + Q_PROPERTY(float mirrorVolume READ mirrorVolume WRITE setMirrorVolume NOTIFY mirrorVolumeChanged) + Q_PROPERTY(bool mirrorMuted READ mirrorMuted WRITE setMirrorMuted NOTIFY mirrorMutedChanged) + Q_PROPERTY(bool micPresent READ micPresent NOTIFY micPresentChanged) + Q_PROPERTY(QString micDevName READ micDevName NOTIFY micDevNameChanged) + Q_PROPERTY(float micVolume READ micVolume WRITE setMicVolume NOTIFY micVolumeChanged) + Q_PROPERTY(bool micMuted READ micMuted WRITE setMicMuted NOTIFY micMutedChanged) + Q_PROPERTY(bool pttEnabled READ pttEnabled WRITE setPttEnabled NOTIFY pttEnabledChanged) + Q_PROPERTY(bool pttActive READ pttActive NOTIFY pttActiveChanged) + Q_PROPERTY(bool pttShowNotification READ pttShowNotification WRITE setPttShowNotification NOTIFY pttShowNotificationChanged) + Q_PROPERTY(bool pttLeftControllerEnabled READ pttLeftControllerEnabled WRITE setPttLeftControllerEnabled NOTIFY pttLeftControllerEnabledChanged) + Q_PROPERTY(bool pttRightControllerEnabled READ pttRightControllerEnabled WRITE setPttRightControllerEnabled NOTIFY pttRightControllerEnabledChanged) + + private: + OverlayController* parent; + QQuickWindow* widget; + + vr::VROverlayHandle_t m_ulNotificationOverlayHandle = vr::k_ulOverlayHandleInvalid; + + bool m_mirrorPresent = false; + QString m_mirrorDevName = ""; + float m_mirrorVolume = 1.0; + bool m_mirrorMuted = false; + + bool m_micPresent = false; + QString m_micDevName = ""; + float m_micVolume = 1.0; + bool m_micMuted = false; + + bool m_pttEnabled = false; + bool m_pttActive = false; + bool m_pttShowNotification = false; + bool m_pttLeftControllerEnabled = false; + bool m_pttRightControllerEnabled = false; + PttControllerConfig m_pttControllerConfigs[2]; + + unsigned settingsUpdateCounter = 0; + + std::vector pttProfiles; + + std::unique_ptr audioManager; + std::string lastMirrorDevId; + + std::recursive_mutex eventLoopMutex; + + public: + void initStage1(); + void initStage2(OverlayController* parent, QQuickWindow* widget); + + void eventLoopTick(); + + bool mirrorPresent() const; + QString mirrorDevName() const; + float mirrorVolume() const; + bool mirrorMuted() const; + + bool micPresent() const; + QString micDevName() const; + float micVolume() const; + bool micMuted() const; + + bool pttEnabled() const; + bool pttActive() const; + bool pttShowNotification() const; + bool pttLeftControllerEnabled() const; + bool pttRightControllerEnabled() const; + + void reloadPttProfiles(); + void reloadPttConfig(); + void savePttProfiles(); + void savePttConfig(); + + void onNewRecordingDevice(); + + Q_INVOKABLE QVariantList pttDigitalButtons(unsigned controller); + Q_INVOKABLE unsigned long pttDigitalButtonMask(unsigned controller); + Q_INVOKABLE unsigned pttTouchpadMode(unsigned controller); + Q_INVOKABLE unsigned pttTriggerMode(unsigned controller); + Q_INVOKABLE unsigned pttTouchpadArea(unsigned controller); + + Q_INVOKABLE unsigned getPttProfileCount(); + Q_INVOKABLE QString getPttProfileName(unsigned index); + + public slots: + void setMirrorVolume(float value, bool notify = true); + void setMirrorMuted(bool value, bool notify = true); + + void setMicVolume(float value, bool notify = true); + void setMicMuted(bool value, bool notify = true); + + void setPttEnabled(bool value, bool notify = true, bool save = true); + void setPttShowNotification(bool value, bool notify = true, bool save = true); + void setPttLeftControllerEnabled(bool value, bool notify = true, bool save = true); + void setPttRightControllerEnabled(bool value, bool notify = true, bool save = true); + + void setPttControllerConfig(unsigned controller, QVariantList buttons, unsigned triggerMode, unsigned padMode, unsigned padAreas); + + void addPttProfile(QString name); + void applyPttProfile(unsigned index); + void deletePttProfile(unsigned index); + + signals: + void mirrorPresentChanged(bool value); + void mirrorDevNameChanged(QString value); + void mirrorVolumeChanged(float value); + void mirrorMutedChanged(bool value); + + void micPresentChanged(bool value); + void micDevNameChanged(QString value); + void micVolumeChanged(float value); + void micMutedChanged(bool value); + + void pttEnabledChanged(bool value); + void pttActiveChanged(bool value); + void pttShowNotificationChanged(bool value); + void pttLeftControllerEnabledChanged(bool value); + void pttRightControllerEnabledChanged(bool value); + + void pttProfilesUpdated(); + }; + +} // namespace advsettings diff --git a/src/tabcontrollers/ChaperoneTabController.cpp b/src/tabcontrollers/ChaperoneTabController.cpp index 34b198a..c6f9ab9 100644 --- a/src/tabcontrollers/ChaperoneTabController.cpp +++ b/src/tabcontrollers/ChaperoneTabController.cpp @@ -1,108 +1,431 @@ #include "ChaperoneTabController.h" +#include #include "../overlaycontroller.h" -#include "../overlaywidget.h" -#include "ui_overlaywidget.h" // application namespace namespace advsettings { -void ChaperoneTabController::init(OverlayController * parent, OverlayWidget * widget) { +void ChaperoneTabController::initStage1() { + reloadChaperoneProfiles(); + eventLoopTick(); +} + + +void ChaperoneTabController::initStage2(OverlayController * parent, QQuickWindow * widget) { this->parent = parent; this->widget = widget; - - connect(widget->ui->CenterMarkerToggle, SIGNAL(toggled(bool)), this, SLOT(CenterMarkerToggled(bool))); - connect(widget->ui->PlaySpaceToggle, SIGNAL(toggled(bool)), this, SLOT(PlaySpaceToggled(bool))); - connect(widget->ui->ForceBoundsToggle, SIGNAL(toggled(bool)), this, SLOT(ForceBoundsToggled(bool))); - connect(widget->ui->FadeDistanceSlider, SIGNAL(valueChanged(int)), this, SLOT(FadeDistanceChanged(int))); - connect(widget->ui->ColorAlphaSlider, SIGNAL(valueChanged(int)), this, SLOT(ColorAlphaChanged(int))); - connect(widget->ui->FlipOrientationButton, SIGNAL(clicked()), this, SLOT(FlipOrientationClicked())); - connect(widget->ui->ReloadChaperoneButton, SIGNAL(clicked()), this, SLOT(ReloadClicked())); - connect(widget->ui->ResetDefaultsToggle, SIGNAL(clicked()), this, SLOT(ResetDefaultsClicked())); } -void ChaperoneTabController::UpdateTab() { - if (widget && vr::VRSettings()) { - widget->ui->CenterMarkerToggle->blockSignals(true); - widget->ui->PlaySpaceToggle->blockSignals(true); - widget->ui->ForceBoundsToggle->blockSignals(true); - widget->ui->FadeDistanceSlider->blockSignals(true); - widget->ui->ColorAlphaSlider->blockSignals(true); - auto centerMarkerOn = vr::VRSettings()->GetBool(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_CenterMarkerOn_Bool, false); - widget->ui->CenterMarkerToggle->setChecked(centerMarkerOn); - auto playSpaceOn = vr::VRSettings()->GetBool(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_PlaySpaceOn_Bool, false); - widget->ui->PlaySpaceToggle->setChecked(playSpaceOn); - widget->ui->ForceBoundsToggle->setChecked(forceBoundsFlag); - auto fadeDistance = vr::VRSettings()->GetFloat(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_FadeDistance_Float, 0.7f); - widget->ui->FadeDistanceSlider->setValue(fadeDistance * 100); - widget->ui->FadeDistanceLabel->setText(QString::asprintf("%.2f", fadeDistance)); - auto colorAlpha = vr::VRSettings()->GetInt32(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_ColorGammaA_Int32, 255); - widget->ui->ColorAlphaSlider->setValue(colorAlpha * 100 / 255); - widget->ui->ColorAlphaLabel->setText(QString::asprintf("%i%%", colorAlpha * 100 / 255)); - widget->ui->CenterMarkerToggle->blockSignals(false); - widget->ui->PlaySpaceToggle->blockSignals(false); - widget->ui->ForceBoundsToggle->blockSignals(false); - widget->ui->FadeDistanceSlider->blockSignals(false); - widget->ui->ColorAlphaSlider->blockSignals(false); +void ChaperoneTabController::reloadChaperoneProfiles() { + chaperoneProfiles.clear(); + auto settings = OverlayController::appSettings(); + settings->beginGroup("chaperoneSettings"); + auto profileCount = settings->beginReadArray("chaperoneProfiles"); + for (int i = 0; i < profileCount; i++) { + settings->setArrayIndex(i); + chaperoneProfiles.emplace_back(); + auto& entry = chaperoneProfiles[i]; + entry.profileName = settings->value("profileName").toString().toStdString(); + entry.includesChaperoneGeometry = settings->value("includesChaperoneGeometry", false).toBool(); + if (entry.includesChaperoneGeometry) { + entry.chaperoneGeometryQuadCount = settings->value("chaperoneGeometryQuadCount", 0).toUInt(); + entry.chaperoneGeometryQuads.reset(new vr::HmdQuad_t[entry.chaperoneGeometryQuadCount]); + unsigned qi = 0; + for (auto q : settings->value("chaperoneGeometryQuads").toList()) { + unsigned ci = 0; + for (auto c : q.toList()) { + unsigned cci = 0; + for (auto cc : c.toList()) { + entry.chaperoneGeometryQuads.get()[qi].vCorners[ci].v[cci] = cc.toFloat(); + cci++; + } + ci++; + } + qi++; + } + unsigned i1 = 0; + for (auto l1 : settings->value("standingCenter").toList()) { + unsigned i2 = 0; + for (auto l2 : l1.toList()) { + entry.standingCenter.m[i1][i2] = l2.toFloat(); + i2++; + } + i1++; + } + entry.playSpaceAreaX = settings->value("playSpaceAreaX", 0.0f).toFloat(); + entry.playSpaceAreaZ = settings->value("playSpaceAreaZ", 0.0f).toFloat(); + } + entry.includesVisibility = settings->value("includesVisibility", false).toBool(); + if (entry.includesVisibility) { + entry.visibility = settings->value("visibility", 0.6).toFloat(); + } + entry.includesFadeDistance = settings->value("includesFadeDistance", false).toBool(); + if (entry.includesFadeDistance) { + entry.fadeDistance = settings->value("fadeDistance", 0.7).toFloat(); + } + entry.includesCenterMarker = settings->value("includesCenterMarker", false).toBool(); + if (entry.includesCenterMarker) { + entry.centerMarker = settings->value("centerMarker", false).toBool(); + } + entry.includesPlaySpaceMarker = settings->value("includesPlaySpaceMarker", false).toBool(); + if (entry.includesPlaySpaceMarker) { + entry.playSpaceMarker = settings->value("playSpaceMarker", false).toBool(); + } + entry.includesFloorBoundsMarker = settings->value("includesFloorBoundsMarker", false).toBool(); + if (entry.includesFloorBoundsMarker) { + entry.floorBoundsMarker = settings->value("floorBoundsMarker", false).toBool(); + } + entry.includesBoundsColor = settings->value("includesBoundsColor", false).toBool(); + if (entry.includesBoundsColor) { + auto color = settings->value("boundsColor").toList(); + entry.boundsColor[0] = color[0].toInt(); + entry.boundsColor[1] = color[1].toInt(); + entry.boundsColor[2] = color[2].toInt(); + } + entry.includesChaperoneStyle = settings->value("includesChaperoneStyle", false).toBool(); + if (entry.includesChaperoneStyle) { + entry.chaperoneStyle = settings->value("chaperoneStyle", 0).toInt(); + } + entry.includesForceBounds = settings->value("includesForceBounds", false).toBool(); + if (entry.includesForceBounds) { + entry.forceBounds = settings->value("forceBounds", false).toBool(); + } + } + settings->endArray(); + settings->endGroup(); +} + +void ChaperoneTabController::saveChaperoneProfiles() { + auto settings = OverlayController::appSettings(); + settings->beginGroup("chaperoneSettings"); + settings->beginWriteArray("chaperoneProfiles"); + unsigned i = 0; + for (auto& p : chaperoneProfiles) { + settings->setArrayIndex(i); + settings->setValue("profileName", QString::fromStdString(p.profileName)); + settings->setValue("includesChaperoneGeometry", p.includesChaperoneGeometry); + if (p.includesChaperoneGeometry) { + settings->setValue("chaperoneGeometryQuadCount", p.chaperoneGeometryQuadCount); + QVariantList quadList; + for (unsigned qi = 0; qi < p.chaperoneGeometryQuadCount; qi++) { + QVariantList cornerList; + for (unsigned ci = 0; ci < 4; ci++) { + QVariantList coordVector; + for (unsigned cci = 0; cci < 3; cci++) { + coordVector.push_back(p.chaperoneGeometryQuads.get()[qi].vCorners[ci].v[cci]); + } + cornerList.push_back(coordVector); + } + quadList.push_back(cornerList); + } + settings->setValue("chaperoneGeometryQuads", quadList); + QVariantList l1; + for (unsigned i1 = 0; i1 < 3; i1++) { + QVariantList l2; + for (unsigned i2 = 0; i2 < 4; i2++) { + l2.push_back(p.standingCenter.m[i1][i2]); + } + l1.push_back(l2); + } + settings->setValue("standingCenter", l1); + settings->setValue("playSpaceAreaX", p.playSpaceAreaX); + settings->setValue("playSpaceAreaZ", p.playSpaceAreaZ); + } + settings->setValue("includesVisibility", p.includesVisibility); + if (p.includesVisibility) { + settings->setValue("visibility", p.visibility); + } + settings->setValue("includesFadeDistance", p.includesFadeDistance); + if (p.includesFadeDistance) { + settings->setValue("fadeDistance", p.fadeDistance); + } + settings->setValue("includesCenterMarker", p.includesCenterMarker); + if (p.includesCenterMarker) { + settings->setValue("centerMarker", p.centerMarker); + } + settings->setValue("includesPlaySpaceMarker", p.includesPlaySpaceMarker); + if (p.includesPlaySpaceMarker) { + settings->setValue("playSpaceMarker", p.playSpaceMarker); + } + settings->setValue("includesFloorBoundsMarker", p.includesFloorBoundsMarker); + if (p.includesFloorBoundsMarker) { + settings->setValue("floorBoundsMarker", p.floorBoundsMarker); + } + settings->setValue("includesBoundsColor", p.includesBoundsColor); + if (p.includesBoundsColor) { + QVariantList color; + color.push_back(p.boundsColor[0]); + color.push_back(p.boundsColor[1]); + color.push_back(p.boundsColor[2]); + settings->setValue("boundsColor", color); + } + settings->setValue("includesChaperoneStyle", p.includesChaperoneStyle); + if (p.includesChaperoneStyle) { + settings->setValue("chaperoneStyle", p.chaperoneStyle); + } + settings->setValue("includesForceBounds", p.includesForceBounds); + if (p.includesForceBounds) { + settings->setValue("forceBounds", p.forceBounds); + } + i++; + } + settings->endArray(); + settings->endGroup(); + +} + + +void ChaperoneTabController::eventLoopTick() { + if (settingsUpdateCounter >= 50) { + vr::EVRSettingsError vrSettingsError; + float vis = vr::VRSettings()->GetInt32(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_ColorGammaA_Int32, &vrSettingsError); + if (vrSettingsError != vr::VRSettingsError_None) { + LOG(WARNING) << "Could not read \"" << vr::k_pch_CollisionBounds_ColorGammaA_Int32 << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError); + } + setBoundsVisibility(vis/255.0f); + auto fd = vr::VRSettings()->GetFloat(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_FadeDistance_Float, &vrSettingsError); + if (vrSettingsError != vr::VRSettingsError_None) { + LOG(WARNING) << "Could not read \"" << vr::k_pch_CollisionBounds_FadeDistance_Float << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError); + } + setFadeDistance(fd); + auto cm = vr::VRSettings()->GetBool(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_CenterMarkerOn_Bool, &vrSettingsError); + if (vrSettingsError != vr::VRSettingsError_None) { + LOG(WARNING) << "Could not read \"" << vr::k_pch_CollisionBounds_CenterMarkerOn_Bool << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError); + } + setCenterMarker(cm); + auto ps = vr::VRSettings()->GetBool(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_PlaySpaceOn_Bool, &vrSettingsError); + if (vrSettingsError != vr::VRSettingsError_None) { + LOG(WARNING) << "Could not read \"" << vr::k_pch_CollisionBounds_PlaySpaceOn_Bool << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError); + } + setPlaySpaceMarker(ps); + settingsUpdateCounter = 0; + } else { + settingsUpdateCounter++; } } -void ChaperoneTabController::CenterMarkerToggled(bool value) { - if (vr::VRSettings()) { - vr::VRSettings()->SetBool(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_CenterMarkerOn_Bool, value); + +float ChaperoneTabController::boundsVisibility() const { + return m_visibility; +} + + +void ChaperoneTabController::setBoundsVisibility(float value, bool notify) { + if (m_visibility != value) { + m_visibility = value; + vr::VRSettings()->SetInt32(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_ColorGammaA_Int32, 255 * m_visibility); vr::VRSettings()->Sync(); + if (notify) { + emit boundsVisibilityChanged(m_visibility); + } } } -void ChaperoneTabController::PlaySpaceToggled(bool value) { - if (vr::VRSettings()) { - vr::VRSettings()->SetBool(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_PlaySpaceOn_Bool, value); + +float ChaperoneTabController::fadeDistance() const { + return m_fadeDistance; +} + + +void ChaperoneTabController::setFadeDistance(float value, bool notify) { + if (m_fadeDistance != value) { + m_fadeDistance = value; + vr::VRSettings()->SetFloat(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_FadeDistance_Float, m_fadeDistance); vr::VRSettings()->Sync(); + if (notify) { + emit fadeDistanceChanged(m_fadeDistance); + } } } -void ChaperoneTabController::ForceBoundsToggled(bool value) { - if (vr::VRChaperone()) { - forceBoundsFlag = value; - vr::VRChaperone()->ForceBoundsVisible(value); - } +bool ChaperoneTabController::centerMarker() const { + return m_centerMarker; } -void ChaperoneTabController::FadeDistanceChanged(int value) { - if (vr::VRSettings()) { - float fval = (float)value / 100; - vr::VRSettings()->SetFloat(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_FadeDistance_Float, fval); +void ChaperoneTabController::setCenterMarker(bool value, bool notify) { + if (m_centerMarker != value) { + m_centerMarker = value; + vr::VRSettings()->SetBool(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_CenterMarkerOn_Bool, m_centerMarker); vr::VRSettings()->Sync(); - widget->ui->FadeDistanceLabel->setText(QString::asprintf("%.2f", fval)); + if (notify) { + emit centerMarkerChanged(m_centerMarker); + } } } -void ChaperoneTabController::ColorAlphaChanged(int value) { - if (vr::VRSettings()) { - float fval = (float)value / 100; - vr::VRSettings()->SetInt32(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_ColorGammaA_Int32, 255 * fval); +bool ChaperoneTabController::playSpaceMarker() const { + return m_playSpaceMarker; +} + +void ChaperoneTabController::setPlaySpaceMarker(bool value, bool notify) { + if (m_playSpaceMarker != value) { + m_playSpaceMarker = value; + vr::VRSettings()->SetBool(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_PlaySpaceOn_Bool, m_playSpaceMarker); vr::VRSettings()->Sync(); - widget->ui->ColorAlphaLabel->setText(QString::asprintf("%i%%", value)); + if (notify) { + emit playSpaceMarkerChanged(m_playSpaceMarker); + } } } -void ChaperoneTabController::FlipOrientationClicked() { +bool ChaperoneTabController::forceBounds() const { + return m_forceBounds; +} + +Q_INVOKABLE unsigned ChaperoneTabController::getChaperoneProfileCount() { + return (unsigned)chaperoneProfiles.size(); +} + +Q_INVOKABLE QString ChaperoneTabController::getChaperoneProfileName(unsigned index) { + if (index >= chaperoneProfiles.size()) { + return QString(); + } else { + return QString::fromStdString(chaperoneProfiles[index].profileName); + } +} + +void ChaperoneTabController::setForceBounds(bool value, bool notify) { + if (m_forceBounds != value) { + m_forceBounds = value; + vr::VRChaperone()->ForceBoundsVisible(m_forceBounds); + if (notify) { + emit forceBoundsChanged(m_forceBounds); + } + } +} + +void ChaperoneTabController::flipOrientation() { parent->RotateUniverseCenter(vr::TrackingUniverseStanding, (float)M_PI); } -void ChaperoneTabController::ReloadClicked() { +void ChaperoneTabController::reloadFromDisk() { vr::VRChaperoneSetup()->ReloadFromDisk(vr::EChaperoneConfigFile_Live); vr::VRChaperoneSetup()->CommitWorkingCopy(vr::EChaperoneConfigFile_Live); } -void ChaperoneTabController::ResetDefaultsClicked() { - widget->ui->CenterMarkerToggle->setChecked(false); - widget->ui->PlaySpaceToggle->setChecked(false); - widget->ui->ForceBoundsToggle->setChecked(false); - widget->ui->FadeDistanceSlider->setValue(70); - widget->ui->ColorAlphaSlider->setValue(100); +void ChaperoneTabController::addChaperoneProfile(QString name, bool includeGeometry, bool includeVisbility, bool includeFadeDistance, bool includeCenterMarker, + bool includePlaySpaceMarker, bool includeFloorBounds, bool includeBoundsColor, bool includeChaperoneStyle, bool includeForceBounds) { + vr::EVRSettingsError vrSettingsError; + auto i = chaperoneProfiles.size(); + chaperoneProfiles.emplace_back(); + auto& profile = chaperoneProfiles[i]; + profile.profileName = name.toStdString(); + profile.includesChaperoneGeometry = includeGeometry; + if (includeGeometry) { + vr::VRChaperoneSetup()->RevertWorkingCopy(); + uint32_t quadCount = 0; + vr::VRChaperoneSetup()->GetLiveCollisionBoundsInfo(nullptr, &quadCount); + profile.chaperoneGeometryQuadCount = quadCount; + profile.chaperoneGeometryQuads.reset(new vr::HmdQuad_t[quadCount]); + vr::VRChaperoneSetup()->GetLiveCollisionBoundsInfo(profile.chaperoneGeometryQuads.get(), &quadCount); + vr::VRChaperoneSetup()->GetWorkingStandingZeroPoseToRawTrackingPose(&profile.standingCenter); + vr::VRChaperoneSetup()->GetWorkingPlayAreaSize(&profile.playSpaceAreaX, &profile.playSpaceAreaZ); + } + profile.includesVisibility = includeVisbility; + if (includeVisbility) { + profile.visibility = m_visibility; + } + profile.includesFadeDistance = includeFadeDistance; + if (includeFadeDistance) { + profile.fadeDistance = m_fadeDistance; + } + profile.includesCenterMarker = includeCenterMarker; + if (includeCenterMarker) { + profile.centerMarker = m_centerMarker; + } + profile.includesPlaySpaceMarker = includePlaySpaceMarker; + if (includePlaySpaceMarker) { + profile.playSpaceMarker = m_playSpaceMarker; + } + profile.includesFloorBoundsMarker = includeFloorBounds; + if (includeFloorBounds) { + profile.floorBoundsMarker = vr::VRSettings()->GetBool(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_GroundPerimeterOn_Bool, &vrSettingsError); + if (vrSettingsError != vr::VRSettingsError_None) { + LOG(WARNING) << "Could not read \"" << vr::k_pch_CollisionBounds_GroundPerimeterOn_Bool << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError); + } + } + profile.includesBoundsColor = includeBoundsColor; + if (includeBoundsColor) { + profile.boundsColor[0] = vr::VRSettings()->GetInt32(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_ColorGammaR_Int32, &vrSettingsError); + if (vrSettingsError != vr::VRSettingsError_None) { + LOG(WARNING) << "Could not read \"" << vr::k_pch_CollisionBounds_ColorGammaR_Int32 << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError); + } + profile.boundsColor[1] = vr::VRSettings()->GetInt32(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_ColorGammaG_Int32, &vrSettingsError); + if (vrSettingsError != vr::VRSettingsError_None) { + LOG(WARNING) << "Could not read \"" << vr::k_pch_CollisionBounds_ColorGammaG_Int32 << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError); + } + profile.boundsColor[2] = vr::VRSettings()->GetInt32(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_ColorGammaB_Int32, &vrSettingsError); + if (vrSettingsError != vr::VRSettingsError_None) { + LOG(WARNING) << "Could not read \"" << vr::k_pch_CollisionBounds_ColorGammaB_Int32 << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError); + } + } + profile.includesChaperoneStyle = includeChaperoneStyle; + if (includeChaperoneStyle) { + profile.chaperoneStyle = vr::VRSettings()->GetInt32(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_Style_Int32, &vrSettingsError); + if (vrSettingsError != vr::VRSettingsError_None) { + LOG(WARNING) << "Could not read \"" << vr::k_pch_CollisionBounds_Style_Int32 << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError); + } + } + profile.includesForceBounds = includeForceBounds; + if (includeForceBounds) { + profile.forceBounds = m_forceBounds; + } + saveChaperoneProfiles(); + OverlayController::appSettings()->sync(); + emit chaperoneProfilesUpdated(); +} + +void ChaperoneTabController::applyChaperoneProfile(unsigned index) { + if (index < chaperoneProfiles.size()) { + auto& profile = chaperoneProfiles[index]; + if (profile.includesChaperoneGeometry) { + vr::VRChaperoneSetup()->RevertWorkingCopy(); + vr::VRChaperoneSetup()->SetWorkingCollisionBoundsInfo(profile.chaperoneGeometryQuads.get(), profile.chaperoneGeometryQuadCount); + vr::VRChaperoneSetup()->SetWorkingStandingZeroPoseToRawTrackingPose(&profile.standingCenter); + vr::VRChaperoneSetup()->SetWorkingPlayAreaSize(profile.playSpaceAreaX, profile.playSpaceAreaZ); + vr::VRChaperoneSetup()->CommitWorkingCopy(vr::EChaperoneConfigFile_Live); + } + if (profile.includesVisibility) { + setBoundsVisibility(profile.visibility); + } + if (profile.includesFadeDistance) { + setFadeDistance(profile.fadeDistance); + } + if (profile.includesCenterMarker) { + setCenterMarker(profile.centerMarker); + } + if (profile.includesPlaySpaceMarker) { + setPlaySpaceMarker(profile.playSpaceMarker); + } + if (profile.includesFloorBoundsMarker) { + vr::VRSettings()->SetBool(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_GroundPerimeterOn_Bool, profile.floorBoundsMarker); + } + if (profile.includesBoundsColor) { + vr::VRSettings()->SetInt32(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_ColorGammaR_Int32, profile.boundsColor[0]); + vr::VRSettings()->SetInt32(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_ColorGammaG_Int32, profile.boundsColor[1]); + vr::VRSettings()->SetInt32(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_ColorGammaB_Int32, profile.boundsColor[2]); + } + if (profile.includesChaperoneStyle) { + vr::VRSettings()->SetInt32(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_Style_Int32, profile.chaperoneStyle); + } + if (profile.includesForceBounds) { + setForceBounds(profile.forceBounds); + } + vr::VRSettings()->Sync(); + } +} + +void ChaperoneTabController::deleteChaperoneProfile(unsigned index) { + if (index < chaperoneProfiles.size()) { + auto pos = chaperoneProfiles.begin() + index; + chaperoneProfiles.erase(pos); + saveChaperoneProfiles(); + OverlayController::appSettings()->sync(); + emit chaperoneProfilesUpdated(); + } } } // namespace advconfig diff --git a/src/tabcontrollers/ChaperoneTabController.h b/src/tabcontrollers/ChaperoneTabController.h index 0cc4abc..c7042d7 100644 --- a/src/tabcontrollers/ChaperoneTabController.h +++ b/src/tabcontrollers/ChaperoneTabController.h @@ -2,38 +2,116 @@ #pragma once #include +#include +#include +class QQuickWindow; // application namespace namespace advsettings { // forward declaration -class OverlayWidget; class OverlayController; +struct ChaperoneProfile { + std::string profileName; + + bool includesChaperoneGeometry = false; + unsigned chaperoneGeometryQuadCount = 0; + std::unique_ptr chaperoneGeometryQuads = nullptr; + vr::HmdMatrix34_t standingCenter; + float playSpaceAreaX = 0.0f; + float playSpaceAreaZ = 0.0f; + + bool includesVisibility = false; + float visibility = 0.6f; + + bool includesFadeDistance = false; + float fadeDistance = 0.7f; + + bool includesCenterMarker = false; + bool centerMarker = false; + + bool includesPlaySpaceMarker = false; + bool playSpaceMarker = false; + + bool includesFloorBoundsMarker = false; + bool floorBoundsMarker = false; + + bool includesBoundsColor = false; + int boundsColor[3] = {0, 0, 0}; + + bool includesChaperoneStyle = false; + int chaperoneStyle = 0; + + bool includesForceBounds = false; + bool forceBounds = false; +}; + + class ChaperoneTabController : public QObject { Q_OBJECT + Q_PROPERTY(float boundsVisibility READ boundsVisibility WRITE setBoundsVisibility NOTIFY boundsVisibilityChanged) + Q_PROPERTY(float fadeDistance READ fadeDistance WRITE setFadeDistance NOTIFY fadeDistanceChanged) + Q_PROPERTY(float centerMarker READ centerMarker WRITE setCenterMarker NOTIFY centerMarkerChanged) + Q_PROPERTY(float playSpaceMarker READ playSpaceMarker WRITE setPlaySpaceMarker NOTIFY playSpaceMarkerChanged) + Q_PROPERTY(float forceBounds READ forceBounds WRITE setForceBounds NOTIFY forceBoundsChanged) private: OverlayController* parent; - OverlayWidget* widget; + QQuickWindow* widget; - bool forceBoundsFlag = false; + float m_visibility = 0.6f; + float m_fadeDistance = 0.7f; + bool m_centerMarker = false; + bool m_playSpaceMarker = false; + bool m_forceBounds = false; + + unsigned settingsUpdateCounter = 0; + + std::vector chaperoneProfiles; public: - void init(OverlayController* parent, OverlayWidget* widget); + void initStage1(); + void initStage2(OverlayController* parent, QQuickWindow* widget); + + void eventLoopTick(); + + float boundsVisibility() const; + float fadeDistance() const; + bool centerMarker() const; + bool playSpaceMarker() const; + bool forceBounds() const; + + void reloadChaperoneProfiles(); + void saveChaperoneProfiles(); + + Q_INVOKABLE unsigned getChaperoneProfileCount(); + Q_INVOKABLE QString getChaperoneProfileName(unsigned index); public slots: - void UpdateTab(); + void setBoundsVisibility(float value, bool notify = true); + void setFadeDistance(float value, bool notify = true); + void setCenterMarker(bool value, bool notify = true); + void setPlaySpaceMarker(bool value, bool notify = true); + void setForceBounds(bool value, bool notify = true); - void CenterMarkerToggled(bool value); - void PlaySpaceToggled(bool value); - void ForceBoundsToggled(bool value); - void FadeDistanceChanged(int value); - void ColorAlphaChanged(int value); - void FlipOrientationClicked(); - void ReloadClicked(); - void ResetDefaultsClicked(); + void flipOrientation(); + void reloadFromDisk(); + + void addChaperoneProfile(QString name, bool includeGeometry, bool includeVisbility, bool includeFadeDistance, bool includeCenterMarker, + bool includePlaySpaceMarker, bool includeFloorBounds, bool includeBoundsColor, bool includeChaperoneStyle, bool includeForceBounds); + void applyChaperoneProfile(unsigned index); + void deleteChaperoneProfile(unsigned index); + +signals: + void boundsVisibilityChanged(float value); + void fadeDistanceChanged(float value); + void centerMarkerChanged(bool value); + void playSpaceMarkerChanged(bool value); + void forceBoundsChanged(bool value); + + void chaperoneProfilesUpdated(); }; } // namespace advsettings diff --git a/src/tabcontrollers/FixFloorTabController.cpp b/src/tabcontrollers/FixFloorTabController.cpp index 8a41182..e182332 100644 --- a/src/tabcontrollers/FixFloorTabController.cpp +++ b/src/tabcontrollers/FixFloorTabController.cpp @@ -1,32 +1,17 @@ #include "FixFloorTabController.h" +#include #include "../overlaycontroller.h" -#include "../overlaywidget.h" -#include "ui_overlaywidget.h" // application namespace namespace advsettings { -void FixFloorTabController::init(OverlayController * parent, OverlayWidget * widget) { - this->parent = parent; - this->widget = widget; - connect(widget->ui->FixFloorButton, SIGNAL(clicked()), this, SLOT(FixFloorClicked())); - connect(widget->ui->UndoFixFloorButton, SIGNAL(clicked()), this, SLOT(UndoFixFloorClicked())); +void FixFloorTabController::initStage1() { } -void FixFloorTabController::UpdateTab() { - if (widget) { - if (state == 1) { - widget->ui->FixFloorButton->setEnabled(false); - } else { - widget->ui->FixFloorButton->setEnabled(true); - } - if (floorOffset != 0.0f) { - widget->ui->UndoFixFloorButton->setEnabled(true); - } else { - widget->ui->UndoFixFloorButton->setEnabled(false); - } - } +void FixFloorTabController::initStage2(OverlayController * parent, QQuickWindow * widget) { + this->parent = parent; + this->widget = widget; } void FixFloorTabController::eventLoopTick(vr::TrackedDevicePose_t* devicePoses) { @@ -35,34 +20,38 @@ void FixFloorTabController::eventLoopTick(vr::TrackedDevicePose_t* devicePoses) // Get Controller ids for left/right hand auto leftId = vr::VRSystem()->GetTrackedDeviceIndexForControllerRole(vr::TrackedControllerRole_LeftHand); if (leftId == vr::k_unTrackedDeviceIndexInvalid) { - widget->ui->FixFloorStatusLabel->setText("No left controller found."); - statusMessageTimeout = 100; - state = 2; - UpdateTab(); + statusMessage = "No left controller found."; + statusMessageTimeout = 2.0; + emit statusMessageSignal(); + emit measureEndSignal(); + state = 0; return; } auto rightId = vr::VRSystem()->GetTrackedDeviceIndexForControllerRole(vr::TrackedControllerRole_RightHand); if (rightId == vr::k_unTrackedDeviceIndexInvalid) { - widget->ui->FixFloorStatusLabel->setText("No right controller found."); - statusMessageTimeout = 100; - state = 2; - UpdateTab(); + statusMessage = "No right controller found."; + statusMessageTimeout = 2.0; + emit statusMessageSignal(); + emit measureEndSignal(); + state = 0; return; } // Get poses vr::TrackedDevicePose_t* leftPose = devicePoses + leftId; vr::TrackedDevicePose_t* rightPose = devicePoses + rightId; if (!leftPose->bPoseIsValid || !leftPose->bDeviceIsConnected || leftPose->eTrackingResult != vr::TrackingResult_Running_OK) { - widget->ui->FixFloorStatusLabel->setText("Left controller tracking problems."); - statusMessageTimeout = 100; - state = 2; - UpdateTab(); + statusMessage = "Left controller tracking problems."; + statusMessageTimeout = 2.0; + emit statusMessageSignal(); + emit measureEndSignal(); + state = 0; return; } else if (!rightPose->bPoseIsValid || !rightPose->bDeviceIsConnected || rightPose->eTrackingResult != vr::TrackingResult_Running_OK) { - widget->ui->FixFloorStatusLabel->setText("Right controller tracking problems."); - statusMessageTimeout = 100; - state = 2; - UpdateTab(); + statusMessage = "Right controller tracking problems."; + statusMessageTimeout = 2.0; + emit statusMessageSignal(); + emit measureEndSignal(); + state = 0; return; } else { // The controller with the lowest y-pos is the floor fix reference @@ -79,45 +68,57 @@ void FixFloorTabController::eventLoopTick(vr::TrackedDevicePose_t* devicePoses) floorOffset = -controllerUpOffsetCorrection + (float)(tempOffset / (double)measurementCount); LOG(INFO) << "Fix Floor: Floor Offset = " << floorOffset; parent->AddOffsetToUniverseCenter(vr::TrackingUniverseStanding, 1, floorOffset); - widget->ui->FixFloorStatusLabel->setText("Fixing ... OK"); - statusMessageTimeout = 50; - state = 2; - UpdateTab(); + statusMessage = "Fixing ... OK"; + statusMessageTimeout = 1.0; + emit statusMessageSignal(); + emit measureEndSignal(); + setCanUndo(true); + state = 0; } else { tempOffset += (double)devicePoses[referenceController].mDeviceToAbsoluteTracking.m[1][3]; measurementCount++; } - } else if (state == 2) { - if (statusMessageTimeout == 0) { - if (widget) { - widget->ui->FixFloorStatusLabel->setText(""); - } - state = 0; - UpdateTab(); - } else { - statusMessageTimeout--; + } +} + +QString FixFloorTabController::currentStatusMessage() { + return statusMessage; +} + +float FixFloorTabController::currentStatusMessageTimeout() { + return statusMessageTimeout; +} + +bool FixFloorTabController::canUndo() const { + return m_canUndo; +} + +void FixFloorTabController::setCanUndo(bool value, bool notify) { + if (m_canUndo != value) { + m_canUndo = value; + if (notify) { + emit canUndoChanged(m_canUndo); } } } -void FixFloorTabController::FixFloorClicked() { - if (widget) { - widget->ui->FixFloorStatusLabel->setText("Fixing ..."); - widget->ui->FixFloorButton->setEnabled(false); - widget->ui->UndoFixFloorButton->setEnabled(false); - measurementCount = 0; - state = 1; - } +void FixFloorTabController::fixFloorClicked() { + statusMessage = "Fixing ..."; + statusMessageTimeout = 1.0; + emit statusMessageSignal(); + emit measureStartSignal(); + measurementCount = 0; + state = 1; } -void FixFloorTabController::UndoFixFloorClicked() { +void FixFloorTabController::undoFixFloorClicked() { parent->AddOffsetToUniverseCenter(vr::TrackingUniverseStanding, 1, -floorOffset); LOG(INFO) << "Fix Floor: Undo Floor Offset = " << -floorOffset; floorOffset = 0.0f; - widget->ui->FixFloorStatusLabel->setText("Undo ... OK"); - statusMessageTimeout = 100; - state = 2; - UpdateTab(); + statusMessage = "Undo ... OK"; + statusMessageTimeout = 1.0; + emit statusMessageSignal(); + setCanUndo(false); } } // namespace advconfig diff --git a/src/tabcontrollers/FixFloorTabController.h b/src/tabcontrollers/FixFloorTabController.h index 438f4e9..d85a9dd 100644 --- a/src/tabcontrollers/FixFloorTabController.h +++ b/src/tabcontrollers/FixFloorTabController.h @@ -4,39 +4,56 @@ #include #include +class QQuickWindow; // application namespace namespace advsettings { // forward declaration -class OverlayWidget; class OverlayController; class FixFloorTabController : public QObject { Q_OBJECT + Q_PROPERTY(bool canUndo READ canUndo WRITE setCanUndo NOTIFY canUndoChanged) private: OverlayController* parent; - OverlayWidget* widget; + QQuickWindow* widget; float controllerUpOffsetCorrection = 0.06f; // Controller touchpad facing upwards float controllerDownOffsetCorrection = 0.0f; // Controller touchpad facing downwards (not implemented yet) - int state = 0; // 0 .. idle, 1 .. measurement in progress, 2 .. waiting for status message timeout + int state = 0; // 0 .. idle, 1 .. measurement in progress vr::TrackedDeviceIndex_t referenceController = vr::k_unTrackedDeviceIndexInvalid; unsigned measurementCount = 0; double tempOffset = 0.0; - unsigned statusMessageTimeout = 0; float floorOffset = 0.0f; + QString statusMessage = ""; + float statusMessageTimeout = 0.0f; + bool m_canUndo = false; + public: - void init(OverlayController* parent, OverlayWidget* widget); + void initStage1(); + void initStage2(OverlayController* parent, QQuickWindow* widget); - public slots: - void UpdateTab(); void eventLoopTick(vr::TrackedDevicePose_t* devicePoses); - void FixFloorClicked(); - void UndoFixFloorClicked(); + Q_INVOKABLE QString currentStatusMessage(); + Q_INVOKABLE float currentStatusMessageTimeout(); + + bool canUndo() const; + +public slots: + void fixFloorClicked(); + void undoFixFloorClicked(); + + void setCanUndo(bool value, bool notify = true); + +signals: + void statusMessageSignal(); + void measureStartSignal(); + void measureEndSignal(); + void canUndoChanged(bool value); }; } // namespace advsettings diff --git a/src/tabcontrollers/MoveCenterTabController.cpp b/src/tabcontrollers/MoveCenterTabController.cpp index 97b8985..9e11be6 100644 --- a/src/tabcontrollers/MoveCenterTabController.cpp +++ b/src/tabcontrollers/MoveCenterTabController.cpp @@ -1,201 +1,145 @@ #include "MoveCenterTabController.h" +#include #include "../overlaycontroller.h" -#include "../overlaywidget.h" -#include "ui_overlaywidget.h" // application namespace namespace advsettings { -void MoveCenterTabController::init(OverlayController * parent, OverlayWidget * widget) { +void MoveCenterTabController::initStage1() { + setTrackingUniverse(vr::VRCompositor()->GetTrackingSpace()); +} + +void MoveCenterTabController::initStage2(OverlayController * parent, QQuickWindow * widget) { this->parent = parent; this->widget = widget; - trackingUniverse = vr::VRCompositor()->GetTrackingSpace(); - xOffset = 0.0f; - yOffset = 0.0f; - zOffset = 0.0f; - widget->ui->MoveCenterStandingSwitch->setChecked(true); - widget->ui->MoveCenterStandingSwitch->setEnabled(false); - widget->ui->MoveCenterSeatedSwitch->setChecked(false); - widget->ui->MoveCenterSeatedSwitch->setEnabled(true); - connect(widget->ui->XMinusButton, SIGNAL(clicked()), this, SLOT(XMinusClicked())); - connect(widget->ui->XPlusButton, SIGNAL(clicked()), this, SLOT(XPlusClicked())); - connect(widget->ui->YMinusButton, SIGNAL(clicked()), this, SLOT(YMinusClicked())); - connect(widget->ui->YPlusButton, SIGNAL(clicked()), this, SLOT(YPlusClicked())); - connect(widget->ui->ZMinusButton, SIGNAL(clicked()), this, SLOT(ZMinusClicked())); - connect(widget->ui->ZPlusButton, SIGNAL(clicked()), this, SLOT(ZPlusClicked())); - connect(widget->ui->RotateCenterSlider, SIGNAL(valueChanged(int)), this, SLOT(RotateSliderChanged(int))); - connect(widget->ui->RotateCenterButton, SIGNAL(clicked()), this, SLOT(RotateApplyClicked())); - connect(widget->ui->MoveCenterResetButton, SIGNAL(clicked()), this, SLOT(MoveCenterResetClicked())); - /*connect(widget->ui->MoveCenterStandingSwitch, SIGNAL(toggled(bool)), this, SLOT(StandingToggled(bool))); - connect(widget->ui->MoveCenterSeatedSwitch, SIGNAL(toggled(bool)), this, SLOT(SeatedToggled(bool)));*/ } -void MoveCenterTabController::UpdateTab() { - if (widget) { - widget->ui->XOffsetLabel->setText(QString::asprintf("%.1f", xOffset)); - widget->ui->YOffsetLabel->setText(QString::asprintf("%.1f", yOffset)); - widget->ui->ZOffsetLabel->setText(QString::asprintf("%.1f", zOffset)); - widget->ui->MoveCenterStandingSwitch->blockSignals(true); - widget->ui->MoveCenterSeatedSwitch->blockSignals(true); - widget->ui->RotateCenterSlider->blockSignals(true); - if (trackingUniverse == vr::TrackingUniverseStanding) { - widget->ui->MoveCenterStandingSwitch->setChecked(true); - widget->ui->MoveCenterSeatedSwitch->setChecked(false); - widget->ui->MoveCenterStandingSwitch->setEnabled(false); - widget->ui->MoveCenterSeatedSwitch->setEnabled(false); - widget->ui->RotateCenterButton->setEnabled(true); - widget->ui->RotateCenterSlider->setEnabled(true); - widget->ui->RotateCenterLabel->setText(QString::asprintf("%i", rotation)); - } else { - widget->ui->MoveCenterStandingSwitch->setChecked(false); - widget->ui->MoveCenterSeatedSwitch->setChecked(true); - widget->ui->MoveCenterStandingSwitch->setEnabled(false); - widget->ui->MoveCenterSeatedSwitch->setEnabled(false); - widget->ui->RotateCenterButton->setEnabled(false); - widget->ui->RotateCenterSlider->setEnabled(false); - widget->ui->RotateCenterLabel->setText("-"); + +int MoveCenterTabController::trackingUniverse() const { + return (int)m_trackingUniverse; +} + +void MoveCenterTabController::setTrackingUniverse(int value, bool notify) { + if (m_trackingUniverse != value) { + reset(); + m_trackingUniverse = value; + if (notify) { + emit trackingUniverseChanged(m_trackingUniverse); } - widget->ui->RotateCenterSlider->setValue(rotation); - widget->ui->MoveCenterStandingSwitch->blockSignals(false); - widget->ui->MoveCenterSeatedSwitch->blockSignals(false); - widget->ui->RotateCenterSlider->blockSignals(false); } } -void MoveCenterTabController::XMinusClicked() { - if (widget) { - if (rotation == 0) { - parent->AddOffsetToUniverseCenter(trackingUniverse, 0, -0.5f); - } else { - auto angle = rotation * 2 * M_PI / 360.0; - vr::VRChaperoneSetup()->RevertWorkingCopy(); - parent->AddOffsetToUniverseCenter(trackingUniverse, 0, -0.5f * std::cos(angle), true, false); - parent->AddOffsetToUniverseCenter(trackingUniverse, 2, -0.5f * std::sin(angle), true, false); - vr::VRChaperoneSetup()->CommitWorkingCopy(vr::EChaperoneConfigFile_Live); +float MoveCenterTabController::offsetX() const { + return m_offsetX; +} + +void MoveCenterTabController::setOffsetX(float value, bool notify) { + if (m_offsetX != value) { + m_offsetX = value; + if (notify) { + emit offsetXChanged(m_offsetX); } - xOffset -= 0.5f; - widget->ui->XOffsetLabel->setText(QString::asprintf("%.1f", xOffset)); } } -void MoveCenterTabController::XPlusClicked() { - if (widget) { - if (rotation == 0) { - parent->AddOffsetToUniverseCenter(trackingUniverse, 0, 0.5f); - } else { - auto angle = rotation * 2 * M_PI / 360.0; - vr::VRChaperoneSetup()->RevertWorkingCopy(); - parent->AddOffsetToUniverseCenter(trackingUniverse, 0, 0.5f * std::cos(angle), true, false); - parent->AddOffsetToUniverseCenter(trackingUniverse, 2, 0.5f * std::sin(angle), true, false); - vr::VRChaperoneSetup()->CommitWorkingCopy(vr::EChaperoneConfigFile_Live); +float MoveCenterTabController::offsetY() const { + return m_offsetY; +} + +void MoveCenterTabController::setOffsetY(float value, bool notify) { + if (m_offsetY != value) { + m_offsetY = value; + if (notify) { + emit offsetYChanged(m_offsetY); } - xOffset += 0.5f; - widget->ui->XOffsetLabel->setText(QString::asprintf("%.1f", xOffset)); } } -void MoveCenterTabController::YMinusClicked() { - if (widget) { - parent->AddOffsetToUniverseCenter(trackingUniverse, 1, -0.5f); - yOffset -= 0.5f; - widget->ui->YOffsetLabel->setText(QString::asprintf("%.1f", yOffset)); - } +float MoveCenterTabController::offsetZ() const { + return m_offsetZ; } -void MoveCenterTabController::YPlusClicked() { - if (widget) { - parent->AddOffsetToUniverseCenter(trackingUniverse, 1, 0.5f); - yOffset += 0.5f; - widget->ui->YOffsetLabel->setText(QString::asprintf("%.1f", yOffset)); - } -} - -void MoveCenterTabController::ZMinusClicked() { - if (widget) { - if (rotation == 0) { - parent->AddOffsetToUniverseCenter(trackingUniverse, 2, -0.5f); - } else { - auto angle = rotation * 2 * M_PI / 360.0; - vr::VRChaperoneSetup()->RevertWorkingCopy(); - parent->AddOffsetToUniverseCenter(trackingUniverse, 2, -0.5f * std::cos(angle), true, false); - parent->AddOffsetToUniverseCenter(trackingUniverse, 0, 0.5f * std::sin(angle), true, false); - vr::VRChaperoneSetup()->CommitWorkingCopy(vr::EChaperoneConfigFile_Live); +void MoveCenterTabController::setOffsetZ(float value, bool notify) { + if (m_offsetZ != value) { + m_offsetZ = value; + if (notify) { + emit offsetZChanged(m_offsetZ); } - zOffset -= 0.5f; - widget->ui->ZOffsetLabel->setText(QString::asprintf("%.1f", zOffset)); } } -void MoveCenterTabController::ZPlusClicked() { - if (widget) { - if (rotation == 0) { - parent->AddOffsetToUniverseCenter(trackingUniverse, 2, 0.5f); - } else { - auto angle = rotation * 2 * M_PI / 360.0; - vr::VRChaperoneSetup()->RevertWorkingCopy(); - parent->AddOffsetToUniverseCenter(trackingUniverse, 2, 0.5f * std::cos(angle), true, false); - parent->AddOffsetToUniverseCenter(trackingUniverse, 0, -0.5f * std::sin(angle), true, false); - vr::VRChaperoneSetup()->CommitWorkingCopy(vr::EChaperoneConfigFile_Live); +int MoveCenterTabController::rotation() const { + return m_rotation; +} + +void MoveCenterTabController::setRotation(int value, bool notify) { + if (m_rotation != value) { + float angle = (value - m_rotation) * 2 * M_PI / 360.0; + parent->RotateUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, angle); + m_rotation = value; + if (notify) { + emit rotationChanged(m_rotation); } - zOffset += 0.5f; - widget->ui->ZOffsetLabel->setText(QString::asprintf("%.1f", zOffset)); } } -void MoveCenterTabController::RotateApplyClicked() { - int value = widget->ui->RotateCenterSlider->value(); - float angle = (value - rotation) * 2 * M_PI / 360.0; - parent->RotateUniverseCenter(trackingUniverse, angle); - rotation = value; -} - -void MoveCenterTabController::RotateSliderChanged(int value) { - widget->ui->RotateCenterLabel->setText(QString::asprintf("%i", value)); -} - -void MoveCenterTabController::MoveCenterResetClicked() { - if (widget) { +void MoveCenterTabController::modOffsetX(float value) { + if (m_rotation == 0) { + parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, 0, value); + } else { + auto angle = m_rotation * 2 * M_PI / 360.0; vr::VRChaperoneSetup()->RevertWorkingCopy(); - parent->RotateUniverseCenter(trackingUniverse, -rotation * 2 * M_PI / 360.0); - parent->AddOffsetToUniverseCenter(trackingUniverse, 0, -xOffset, true, false); - parent->AddOffsetToUniverseCenter(trackingUniverse, 1, -yOffset, true, false); - parent->AddOffsetToUniverseCenter(trackingUniverse, 2, -zOffset, true, false); + parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, 0, value * std::cos(angle), true, false); + parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, 2, value * std::sin(angle), true, false); vr::VRChaperoneSetup()->CommitWorkingCopy(vr::EChaperoneConfigFile_Live); - xOffset = 0.0f; - yOffset = 0.0f; - zOffset = 0.0f; - rotation = 0; - widget->ui->XOffsetLabel->setText(QString::asprintf("%.1f", xOffset)); - widget->ui->YOffsetLabel->setText(QString::asprintf("%.1f", yOffset)); - widget->ui->ZOffsetLabel->setText(QString::asprintf("%.1f", zOffset)); - widget->ui->RotateCenterSlider->setValue(rotation); - if (trackingUniverse == vr::TrackingUniverseStanding) { - widget->ui->RotateCenterLabel->setText(QString::asprintf("%i", rotation)); - } else { - widget->ui->RotateCenterLabel->setText("-"); - } } + m_offsetX += value; + emit offsetXChanged(m_offsetX); } -void MoveCenterTabController::StandingToggled(bool) { - MoveCenterResetClicked(); - trackingUniverse = vr::TrackingUniverseStanding; - UpdateTab(); +void MoveCenterTabController::modOffsetY(float value) { + parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, 1, value); + m_offsetY += value; + emit offsetYChanged(m_offsetY); } -void MoveCenterTabController::SeatedToggled(bool) { - MoveCenterResetClicked(); - trackingUniverse = vr::TrackingUniverseSeated; - UpdateTab(); +void MoveCenterTabController::modOffsetZ(float value) { + if (m_rotation == 0) { + parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, 2, value); + } else { + auto angle = m_rotation * 2 * M_PI / 360.0; + vr::VRChaperoneSetup()->RevertWorkingCopy(); + parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, 2, value * std::cos(angle), true, false); + parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, 0, -value * std::sin(angle), true, false); + vr::VRChaperoneSetup()->CommitWorkingCopy(vr::EChaperoneConfigFile_Live); + } + m_offsetZ += value; + emit offsetZChanged(m_offsetZ); +} + +void MoveCenterTabController::reset() { + vr::VRChaperoneSetup()->RevertWorkingCopy(); + parent->RotateUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, -m_rotation * 2 * M_PI / 360.0); + parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, 0, -m_offsetX, true, false); + parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, 1, -m_offsetY, true, false); + parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, 2, -m_offsetZ, true, false); + vr::VRChaperoneSetup()->CommitWorkingCopy(vr::EChaperoneConfigFile_Live); + m_offsetX = 0.0f; + m_offsetY = 0.0f; + m_offsetZ = 0.0f; + m_rotation = 0; + emit offsetXChanged(m_offsetX); + emit offsetYChanged(m_offsetY); + emit offsetZChanged(m_offsetZ); + emit rotationChanged(m_rotation); } void MoveCenterTabController::eventLoopTick(vr::ETrackingUniverseOrigin universe) { - if (trackingUniverse != universe) { - if (universe == vr::TrackingUniverseStanding) { - StandingToggled(true); - } else if (universe == vr::TrackingUniverseSeated) { - SeatedToggled(true); - } + if (settingsUpdateCounter >= 50) { + setTrackingUniverse((int)universe); + settingsUpdateCounter = 0; + } else { + settingsUpdateCounter++; } } diff --git a/src/tabcontrollers/MoveCenterTabController.h b/src/tabcontrollers/MoveCenterTabController.h index c7c1d08..882a2c2 100644 --- a/src/tabcontrollers/MoveCenterTabController.h +++ b/src/tabcontrollers/MoveCenterTabController.h @@ -4,44 +4,66 @@ #include #include +class QQuickWindow; // application namespace namespace advsettings { // forward declaration -class OverlayWidget; class OverlayController; + class MoveCenterTabController : public QObject { Q_OBJECT + Q_PROPERTY(int trackingUniverse READ trackingUniverse WRITE setTrackingUniverse NOTIFY trackingUniverseChanged) + Q_PROPERTY(float offsetX READ offsetX WRITE setOffsetX NOTIFY offsetXChanged) + Q_PROPERTY(float offsetY READ offsetY WRITE setOffsetY NOTIFY offsetYChanged) + Q_PROPERTY(float offsetZ READ offsetZ WRITE setOffsetZ NOTIFY offsetZChanged) + Q_PROPERTY(int rotation READ rotation WRITE setRotation NOTIFY rotationChanged) private: OverlayController* parent; - OverlayWidget* widget; + QQuickWindow* widget; - vr::ETrackingUniverseOrigin trackingUniverse = vr::TrackingUniverseStanding; - float xOffset = 0.0f; - float yOffset = 0.0f; - float zOffset = 0.0f; - int rotation = 0; + int m_trackingUniverse = (int)vr::TrackingUniverseStanding; + float m_offsetX = 0.0f; + float m_offsetY = 0.0f; + float m_offsetZ = 0.0f; + int m_rotation = 0; + + unsigned settingsUpdateCounter = 0; public: - void init(OverlayController* parent, OverlayWidget* widget); + void initStage1(); + void initStage2(OverlayController* parent, QQuickWindow* widget); - public slots: - void UpdateTab(); - - void XMinusClicked(); - void XPlusClicked(); - void YMinusClicked(); - void YPlusClicked(); - void ZMinusClicked(); - void ZPlusClicked(); - void RotateApplyClicked(); - void RotateSliderChanged(int value); - void MoveCenterResetClicked(); - void StandingToggled(bool value); - void SeatedToggled(bool value); void eventLoopTick(vr::ETrackingUniverseOrigin universe); + + float offsetX() const; + float offsetY() const; + float offsetZ() const; + int rotation() const; + +public slots: + int trackingUniverse() const; + void setTrackingUniverse(int value, bool notify = true); + + void setOffsetX(float value, bool notify = true); + void setOffsetY(float value, bool notify = true); + void setOffsetZ(float value, bool notify = true); + + void setRotation(int value, bool notify = true); + + void modOffsetX(float value); + void modOffsetY(float value); + void modOffsetZ(float value); + void reset(); + +signals: + void trackingUniverseChanged(int value); + void offsetXChanged(float value); + void offsetYChanged(float value); + void offsetZChanged(float value); + void rotationChanged(int value); }; } // namespace advsettings diff --git a/src/tabcontrollers/SettingsTabController.cpp b/src/tabcontrollers/SettingsTabController.cpp index 3a41f28..3f6e59c 100644 --- a/src/tabcontrollers/SettingsTabController.cpp +++ b/src/tabcontrollers/SettingsTabController.cpp @@ -1,37 +1,44 @@ #include "SettingsTabController.h" +#include #include "../overlaycontroller.h" -#include "../overlaywidget.h" -#include "ui_overlaywidget.h" // application namespace namespace advsettings { -void SettingsTabController::init(OverlayController * parent, OverlayWidget * widget) { +void SettingsTabController::initStage1() { + m_autoStartEnabled = vr::VRApplications()->GetApplicationAutoLaunch(OverlayController::applicationKey); +} + +void SettingsTabController::initStage2(OverlayController * parent, QQuickWindow * widget) { this->parent = parent; this->widget = widget; - connect(widget->ui->AutoStartToggle, SIGNAL(toggled(bool)), this, SLOT(AutoStartToggled(bool))); } -void SettingsTabController::UpdateTab() { - if (widget) { - widget->ui->AutoStartToggle->blockSignals(true); - if (vr::VRApplications()->GetApplicationAutoLaunch(OverlayController::applicationKey)) { - widget->ui->AutoStartToggle->setChecked(true); - } else { - widget->ui->AutoStartToggle->setChecked(false); +void SettingsTabController::eventLoopTick() { + if (settingsUpdateCounter >= 50) { + setAutoStartEnabled(vr::VRApplications()->GetApplicationAutoLaunch(OverlayController::applicationKey)); + settingsUpdateCounter = 0; + } else { + settingsUpdateCounter++; + } +} + +bool SettingsTabController::autoStartEnabled() const { + return m_autoStartEnabled; +} + +void SettingsTabController::setAutoStartEnabled(bool value, bool notify) { + if (m_autoStartEnabled != value) { + m_autoStartEnabled = value; + auto apperror = vr::VRApplications()->SetApplicationAutoLaunch(OverlayController::applicationKey, m_autoStartEnabled); + if (apperror != vr::VRApplicationError_None) { + LOG(ERROR) << "Could not set auto start: " << vr::VRApplications()->GetApplicationsErrorNameFromEnum(apperror); + } + if (notify) { + emit autoStartEnabledChanged(m_autoStartEnabled); } - widget->ui->AutoStartToggle->blockSignals(false); } } -void SettingsTabController::AutoStartToggled(bool value) { - LOG(INFO) << "Setting auto start: " << value; - auto apperror = vr::VRApplications()->SetApplicationAutoLaunch(OverlayController::applicationKey, value); - if (apperror != vr::VRApplicationError_None) { - LOG(ERROR) << "Could not set auto start: " << vr::VRApplications()->GetApplicationsErrorNameFromEnum(apperror); - } -} - - } // namespace advconfig diff --git a/src/tabcontrollers/SettingsTabController.h b/src/tabcontrollers/SettingsTabController.h index 4c6c82f..3763e5c 100644 --- a/src/tabcontrollers/SettingsTabController.h +++ b/src/tabcontrollers/SettingsTabController.h @@ -3,28 +3,39 @@ #include +class QQuickWindow; // application namespace namespace advsettings { // forward declaration -class OverlayWidget; class OverlayController; class SettingsTabController : public QObject { Q_OBJECT + Q_PROPERTY(bool autoStartEnabled READ autoStartEnabled WRITE setAutoStartEnabled NOTIFY autoStartEnabledChanged) private: OverlayController* parent; - OverlayWidget* widget; + QQuickWindow* widget; + + unsigned settingsUpdateCounter = 0; + + bool m_autoStartEnabled = false; public: - void init(OverlayController* parent, OverlayWidget* widget); + void initStage1(); + void initStage2(OverlayController* parent, QQuickWindow* widget); - public slots: - void UpdateTab(); + void eventLoopTick(); - void AutoStartToggled(bool value); + bool autoStartEnabled() const; + +public slots: + void setAutoStartEnabled(bool value, bool notify = true); + +signals: + void autoStartEnabledChanged(bool value); }; } // namespace advsettings diff --git a/src/tabcontrollers/StatisticsTabController.cpp b/src/tabcontrollers/StatisticsTabController.cpp index 21f74f2..ffd6e84 100644 --- a/src/tabcontrollers/StatisticsTabController.cpp +++ b/src/tabcontrollers/StatisticsTabController.cpp @@ -1,45 +1,28 @@ #include "StatisticsTabController.h" +#include #include "../overlaycontroller.h" -#include "../overlaywidget.h" -#include "ui_overlaywidget.h" // application namespace namespace advsettings { - -void StatisticsTabController::init(OverlayController * parent, OverlayWidget * widget) { - this->parent = parent; - this->widget = widget; - connect(widget->ui->StatsDistanceResetButton, SIGNAL(clicked()), this, SLOT(StatsDistanceResetClicked())); - connect(widget->ui->StatsRotationResetButton, SIGNAL(clicked()), this, SLOT(StatsRotationResetClicked())); - connect(widget->ui->StatsLeftMaxSpeedResetButton, SIGNAL(clicked()), this, SLOT(StatsLeftControllerSpeedResetClicked())); - connect(widget->ui->StatsRightMaxSpeedResetButton, SIGNAL(clicked()), this, SLOT(StatsRightControllerSpeedResetClicked())); - connect(widget->ui->DroppedFramesResetButton, SIGNAL(clicked()), this, SLOT(DroppedFramesResetClicked())); - connect(widget->ui->ReprojectedFramesResetButton, SIGNAL(clicked()), this, SLOT(ReprojectedFramesResetClicked())); - connect(widget->ui->TimedOutResetButton, SIGNAL(clicked()), this, SLOT(TimedOutResetClicked())); - +void StatisticsTabController::initStage1() { } -void StatisticsTabController::UpdateTab() { - if (widget) { - widget->ui->StatsDistanceLabel->setText(QString::asprintf("%.1f m", hmdDistance)); - widget->ui->StatsLeftMaxSpeedLabel->setText(QString::asprintf("%.1f m/s", leftControllerMaxSpeed)); - widget->ui->StatsRightMaxSpeedLabel->setText(QString::asprintf("%.1f m/s", rightControllerMaxSpeed)); - vr::Compositor_CumulativeStats pStats; - vr::VRCompositor()->GetCumulativeStats(&pStats, sizeof(vr::Compositor_CumulativeStats)); - if (pStats.m_nPid != compositorStatsPid) { - droppedFramesOffset = 0; - reprojectedFramesOffset = 0; - timedOutOffset = 0; - compositorStatsPid = pStats.m_nPid; - } - widget->ui->DroppedFramesLabel->setText(QString::asprintf("%i", pStats.m_nNumDroppedFrames - droppedFramesOffset)); - widget->ui->ReprojectedFramesLabel->setText(QString::asprintf("%i", pStats.m_nNumReprojectedFrames - reprojectedFramesOffset)); - widget->ui->TimedOutLabel->setText(QString::asprintf("%i", pStats.m_nNumTimedOut - timedOutOffset)); - } +void StatisticsTabController::initStage2(OverlayController * parent, QQuickWindow * widget) { + this->parent = parent; + this->widget = widget; } void StatisticsTabController::eventLoopTick(vr::TrackedDevicePose_t* devicePoses) { + vr::Compositor_CumulativeStats pStats; + vr::VRCompositor()->GetCumulativeStats(&pStats, sizeof(vr::Compositor_CumulativeStats)); + if (pStats.m_nPid != compositorStatsPid) { + m_droppedFramesOffset = 0; + m_reprojectedFramesOffset = 0; + m_timedOutOffset = 0; + compositorStatsPid = pStats.m_nPid; + } + auto& m = devicePoses->mDeviceToAbsoluteTracking.m; // Hmd Distance // @@ -50,7 +33,7 @@ void StatisticsTabController::eventLoopTick(vr::TrackedDevicePose_t* devicePoses } else { auto delta = std::sqrt(std::pow(m[0][3] - lastHmdPos[0], 2) /*+ std::pow(m[1][3] - lastHmdPos[1], 2)*/ + std::pow(m[2][3] - lastHmdPos[2], 2)); if (delta >= 0.01f) { - hmdDistance += delta; + m_hmdDistanceMoved += delta; } } lastHmdPos[0] = m[0][3]; @@ -61,14 +44,13 @@ void StatisticsTabController::eventLoopTick(vr::TrackedDevicePose_t* devicePoses } } - // Controller speeds // auto leftId = vr::VRSystem()->GetTrackedDeviceIndexForControllerRole(vr::TrackedControllerRole_LeftHand); if (leftId != vr::k_unTrackedDeviceIndexInvalid && devicePoses[leftId].bPoseIsValid && devicePoses[leftId].eTrackingResult == vr::TrackingResult_Running_OK) { auto& vel = devicePoses[leftId].vVelocity.v; auto lspeed = std::sqrt(std::pow(vel[0], 2) + std::pow(vel[1], 2) + std::pow(vel[2], 2)); - if (lspeed > leftControllerMaxSpeed) { - leftControllerMaxSpeed = lspeed; + if (lspeed > m_leftControllerMaxSpeed) { + m_leftControllerMaxSpeed = lspeed; } } @@ -76,8 +58,8 @@ void StatisticsTabController::eventLoopTick(vr::TrackedDevicePose_t* devicePoses if (rightId != vr::k_unTrackedDeviceIndexInvalid && devicePoses[rightId].bPoseIsValid && devicePoses[rightId].eTrackingResult == vr::TrackingResult_Running_OK) { auto& vel = devicePoses[rightId].vVelocity.v; auto rspeed = std::sqrt(std::pow(vel[0], 2) + std::pow(vel[1], 2) + std::pow(vel[2], 2)); - if (rspeed > rightControllerMaxSpeed) { - rightControllerMaxSpeed = rspeed; + if (rspeed > m_rightControllerMaxSpeed) { + m_rightControllerMaxSpeed = rspeed; } } @@ -94,33 +76,46 @@ void StatisticsTabController::eventLoopTick(vr::TrackedDevicePose_t* devicePoses roll = atan2(cp*sr, cp*cr) [pi, -pi], CW */ - auto yaw = 0.0; + double yawRaw = 0.0; + double yaw = 0.0; + bool rotationChanged = false; if (devicePoses[0].bPoseIsValid && devicePoses[0].eTrackingResult == vr::TrackingResult_Running_OK) { - yaw = std::atan2(m[0][2], m[2][2]); - if (yaw < 0.0f) { - yaw += 2 * M_PI; // map to [0, 2*pi], CCW + yawRaw = std::atan2(m[0][2], m[2][2]); + if (yawRaw < 0.0f) { + yawRaw += 2 * M_PI; // map to [0, 2*pi], CCW + } + yaw = yawRaw - rotationOffset; + if (yaw < 0.0) { + yaw = 2 * M_PI + yaw; } if (rotationResetFlag) { rotationDir = 0; rotationCounter = 0; - rotationMarker = yaw; + rotationOffset = yawRaw; rotationResetFlag = false; lastYaw = -1.0f; - } else if (lastYaw < 0.0f && yaw != rotationMarker) { + rotationChanged = true; + } else if (lastYaw < 0.0f && yaw > 0.0) { lastYaw = yaw; - } else if (lastYaw != yaw && yaw != rotationMarker) { + rotationChanged = true; + if (yaw <= M_PI) { + rotationDir = 1; + } else { + rotationDir = -1; + } + } else if (std::abs(lastYaw - yaw) >= 0.01 && yaw > 0.0) { auto diff = yaw - lastYaw; int mode = 0; if (std::abs(diff) > M_PI) { - if (diff < -M_PI && (rotationMarker < yaw || rotationMarker > lastYaw)) { // CCW overflow + if (diff < -M_PI) { // CCW overflow mode = 1; - } else if (diff > M_PI && (rotationMarker > yaw || rotationMarker < lastYaw)) { // CW overflow + } else if (diff > M_PI) { // CW overflow mode = -1; } } else { - if (lastYaw < rotationMarker && yaw > rotationMarker) { + if (lastYaw < 0.0 && yaw > 0.0) { mode = 1; - } else if (lastYaw > rotationMarker && yaw < rotationMarker) { + } else if (lastYaw > 0.0 && yaw < 0.0) { mode = -1; } } @@ -138,48 +133,19 @@ void StatisticsTabController::eventLoopTick(vr::TrackedDevicePose_t* devicePoses } } lastYaw = yaw; + rotationChanged = true; } } else { lastYaw = -1; } - if (parent->isDashboardVisible()) { - if (lastPosTimer == 0) { - widget->ui->StatsDistanceLabel->setText(QString::asprintf("%.1f m", hmdDistance)); + if (rotationChanged) { + m_hmdRotation = (float)rotationCounter; + if (rotationDir > 0) { + m_hmdRotation += yaw / (2 * M_PI); + } else if (rotationDir < 0) { + m_hmdRotation += -1.0f + yaw / (2 * M_PI); } - widget->ui->StatsLeftMaxSpeedLabel->setText(QString::asprintf("%.1f m/s", leftControllerMaxSpeed)); - widget->ui->StatsRightMaxSpeedLabel->setText(QString::asprintf("%.1f m/s", rightControllerMaxSpeed)); - float displayCounter = rotationCounter; - std::string dirStr; - if (rotationDir == 0) { - dirStr = "CCW"; - } else if (rotationDir > 0) { - if (yaw > rotationMarker) { - displayCounter += (yaw - rotationMarker) / (2 * M_PI); - } else { - displayCounter += 1.0f + (yaw - rotationMarker) / (2 * M_PI); - } - dirStr = "CCW"; - } else { - if (yaw > rotationMarker) { - displayCounter = -displayCounter + 1.0f - (yaw - rotationMarker) / (2 * M_PI); - } else { - displayCounter = -displayCounter - (yaw - rotationMarker) / (2 * M_PI); - } - dirStr = "CW"; - } - widget->ui->StatsRotationLabel->setText(QString::asprintf("%.1f %s", displayCounter, dirStr.c_str())); - vr::Compositor_CumulativeStats pStats; - vr::VRCompositor()->GetCumulativeStats(&pStats, sizeof(vr::Compositor_CumulativeStats)); - if (pStats.m_nPid != compositorStatsPid) { - droppedFramesOffset = 0; - reprojectedFramesOffset = 0; - timedOutOffset = 0; - compositorStatsPid = pStats.m_nPid; - } - widget->ui->DroppedFramesLabel->setText(QString::asprintf("%i", pStats.m_nNumDroppedFrames - droppedFramesOffset)); - widget->ui->ReprojectedFramesLabel->setText(QString::asprintf("%i", pStats.m_nNumReprojectedFrames - reprojectedFramesOffset)); - widget->ui->TimedOutLabel->setText(QString::asprintf("%i", pStats.m_nNumTimedOut - timedOutOffset)); } if (lastPosTimer == 0) { lastPosTimer = 10; @@ -188,42 +154,79 @@ void StatisticsTabController::eventLoopTick(vr::TrackedDevicePose_t* devicePoses } } -void StatisticsTabController::StatsDistanceResetClicked() { - lastHmdPosValid = false; - hmdDistance = 0.0f; - widget->ui->StatsDistanceLabel->setText(QString::asprintf("%.1f m", hmdDistance)); +float StatisticsTabController::hmdDistanceMoved() const { + return m_hmdDistanceMoved; } -void StatisticsTabController::StatsRotationResetClicked() { +float StatisticsTabController::hmdRotations() const { + return m_hmdRotation; +} + +float StatisticsTabController::rightControllerMaxSpeed() const { + return m_rightControllerMaxSpeed; +} + +float StatisticsTabController::leftControllerMaxSpeed() const { + return m_leftControllerMaxSpeed; +} + +unsigned StatisticsTabController::droppedFrames() const { + vr::Compositor_CumulativeStats pStats; + vr::VRCompositor()->GetCumulativeStats(&pStats, sizeof(vr::Compositor_CumulativeStats)); + return pStats.m_nNumDroppedFrames - m_droppedFramesOffset; +} + +unsigned StatisticsTabController::reprojectedFrames() const { + vr::Compositor_CumulativeStats pStats; + vr::VRCompositor()->GetCumulativeStats(&pStats, sizeof(vr::Compositor_CumulativeStats)); + return pStats.m_nNumReprojectedFrames - m_reprojectedFramesOffset; +} + +unsigned StatisticsTabController::timedOut() const { + vr::Compositor_CumulativeStats pStats; + vr::VRCompositor()->GetCumulativeStats(&pStats, sizeof(vr::Compositor_CumulativeStats)); + return pStats.m_nNumTimedOut - m_timedOutOffset; +} + +void StatisticsTabController::statsDistanceResetClicked() { + lastHmdPosValid = false; + if (m_hmdDistanceMoved != 0.0) { + m_hmdDistanceMoved = 0.0; + } +} + +void StatisticsTabController::statsRotationResetClicked() { rotationResetFlag = true; } -void StatisticsTabController::StatsLeftControllerSpeedResetClicked() { - leftControllerMaxSpeed = 0; - widget->ui->StatsLeftMaxSpeedLabel->setText(QString::asprintf("%.1f m/s", leftControllerMaxSpeed)); +void StatisticsTabController::statsLeftControllerSpeedResetClicked() { + if (m_leftControllerMaxSpeed != 0.0) { + m_leftControllerMaxSpeed = 0.0; + } } -void StatisticsTabController::StatsRightControllerSpeedResetClicked() { - rightControllerMaxSpeed = 0; - widget->ui->StatsRightMaxSpeedLabel->setText(QString::asprintf("%.1f m/s", rightControllerMaxSpeed)); +void StatisticsTabController::statsRightControllerSpeedResetClicked() { + if (m_rightControllerMaxSpeed != 0.0) { + m_rightControllerMaxSpeed = 0.0; + } } -void StatisticsTabController::DroppedFramesResetClicked() { +void StatisticsTabController::droppedFramesResetClicked() { vr::Compositor_CumulativeStats pStats; vr::VRCompositor()->GetCumulativeStats(&pStats, sizeof(vr::Compositor_CumulativeStats)); - droppedFramesOffset = pStats.m_nNumDroppedFrames; + m_droppedFramesOffset = pStats.m_nNumDroppedFrames; } -void StatisticsTabController::ReprojectedFramesResetClicked() { +void StatisticsTabController::reprojectedFramesResetClicked() { vr::Compositor_CumulativeStats pStats; vr::VRCompositor()->GetCumulativeStats(&pStats, sizeof(vr::Compositor_CumulativeStats)); - reprojectedFramesOffset = pStats.m_nNumReprojectedFrames; + m_reprojectedFramesOffset = pStats.m_nNumReprojectedFrames; } -void StatisticsTabController::TimedOutResetClicked() { +void StatisticsTabController::timedOutResetClicked() { vr::Compositor_CumulativeStats pStats; vr::VRCompositor()->GetCumulativeStats(&pStats, sizeof(vr::Compositor_CumulativeStats)); - timedOutOffset = pStats.m_nNumTimedOut; + m_timedOutOffset = pStats.m_nNumTimedOut; } } // namespace advconfig diff --git a/src/tabcontrollers/StatisticsTabController.h b/src/tabcontrollers/StatisticsTabController.h index 54ab948..b0ef347 100644 --- a/src/tabcontrollers/StatisticsTabController.h +++ b/src/tabcontrollers/StatisticsTabController.h @@ -4,51 +4,75 @@ #include #include +class QQuickWindow; // application namespace namespace advsettings { // forward declaration -class OverlayWidget; class OverlayController; class StatisticsTabController : public QObject { Q_OBJECT + Q_PROPERTY(float hmdDistanceMoved READ hmdDistanceMoved) + Q_PROPERTY(float hmdRotations READ hmdRotations) + Q_PROPERTY(float leftControllerMaxSpeed READ leftControllerMaxSpeed) + Q_PROPERTY(float rightControllerMaxSpeed READ rightControllerMaxSpeed) + Q_PROPERTY(int droppedFrames READ droppedFrames) + Q_PROPERTY(int reprojectedFrames READ reprojectedFrames) + Q_PROPERTY(int timedOut READ timedOut) private: OverlayController* parent; - OverlayWidget* widget; + QQuickWindow* widget; bool rotationResetFlag = false; - float rotationMarker = 0.0f; + float rotationOffset = 0.0f; int rotationDir = 0; int64_t rotationCounter = 0; float lastYaw = -1.0f; unsigned lastPosTimer = 0; float lastHmdPos[3]; bool lastHmdPosValid = false; - double hmdDistance = 0.0; - float leftControllerMaxSpeed = 0.0; - float rightControllerMaxSpeed = 0.0; unsigned compositorStatsPid = 0; - unsigned droppedFramesOffset = 0; - unsigned reprojectedFramesOffset = 0; - unsigned timedOutOffset = 0; + + float m_hmdRotation = 0.0f; + + double m_hmdDistanceMoved = 0.0; + + float m_leftControllerMaxSpeed = 0.0f; + + float m_rightControllerMaxSpeed = 0.0f; + + unsigned m_droppedFramesOffset = 0; + + unsigned m_reprojectedFramesOffset = 0; + + unsigned m_timedOutOffset = 0; public: - void init(OverlayController* parent, OverlayWidget* widget); + void initStage1(); + void initStage2(OverlayController* parent, QQuickWindow* widget); - public slots: - void UpdateTab(); void eventLoopTick(vr::TrackedDevicePose_t* devicePoses); - void StatsDistanceResetClicked(); - void StatsRotationResetClicked(); - void StatsLeftControllerSpeedResetClicked(); - void StatsRightControllerSpeedResetClicked(); - void DroppedFramesResetClicked(); - void ReprojectedFramesResetClicked(); - void TimedOutResetClicked(); + float hmdDistanceMoved() const; + float hmdRotations() const; + float rightControllerMaxSpeed() const; + float leftControllerMaxSpeed() const; + + unsigned droppedFrames() const; + unsigned reprojectedFrames() const; + unsigned timedOut() const; + +public slots: + void statsDistanceResetClicked(); + void statsRotationResetClicked(); + void statsLeftControllerSpeedResetClicked(); + void statsRightControllerSpeedResetClicked(); + void droppedFramesResetClicked(); + void reprojectedFramesResetClicked(); + void timedOutResetClicked(); }; diff --git a/src/tabcontrollers/SteamVRTabController.cpp b/src/tabcontrollers/SteamVRTabController.cpp index 01eb5ba..e2003b2 100644 --- a/src/tabcontrollers/SteamVRTabController.cpp +++ b/src/tabcontrollers/SteamVRTabController.cpp @@ -1,68 +1,151 @@ #include "SteamVRTabController.h" +#include #include "../overlaycontroller.h" -#include "../overlaywidget.h" -#include "ui_overlaywidget.h" // application namespace namespace advsettings { -void SteamVRTabController::init(OverlayController * parent, OverlayWidget * widget) { - this->parent = parent; - this->widget = widget; - connect(widget->ui->SupersamplingSlider, SIGNAL(valueChanged(int)), this, SLOT(SupersamplingChanged(int))); - connect(widget->ui->ReprojectionToggle, SIGNAL(toggled(bool)), this, SLOT(ReprojectionToggled(bool))); - connect(widget->ui->ForceReprojectionToggle, SIGNAL(toggled(bool)), this, SLOT(ForceReprojectionToggled(bool))); - connect(widget->ui->SteamVRResetButton, SIGNAL(clicked()), this, SLOT(ResetClicked())); - connect(widget->ui->SteamVRRestartButton, SIGNAL(clicked()), this, SLOT(RestartClicked())); + +void SteamVRTabController::initStage1() { + eventLoopTick(); } -void SteamVRTabController::UpdateTab() { - if (widget) { - widget->ui->SupersamplingSlider->blockSignals(true); - widget->ui->ReprojectionToggle->blockSignals(true); - widget->ui->ForceReprojectionToggle->blockSignals(true); - widget->ui->SteamVRResetButton->blockSignals(true); - widget->ui->SteamVRRestartButton->blockSignals(true); - auto ss = vr::VRSettings()->GetFloat(vr::k_pch_SteamVR_Section, vr::k_pch_SteamVR_RenderTargetMultiplier_Float, 1.0); - widget->ui->SupersamplingSlider->setValue(ss * 10); - widget->ui->SupersamplingLabel->setText(QString::asprintf("%.1f", ss)); - widget->ui->ReprojectionToggle->setChecked(vr::VRSettings()->GetBool(vr::k_pch_SteamVR_Section, vr::k_pch_SteamVR_AllowReprojection_Bool, true)); - widget->ui->ForceReprojectionToggle->setChecked(vr::VRSettings()->GetBool(vr::k_pch_SteamVR_Section, vr::k_pch_SteamVR_ForceReprojection_Bool, false)); +void SteamVRTabController::initStage2(OverlayController * parent, QQuickWindow * widget) { + this->parent = parent; + this->widget = widget; +} - widget->ui->SupersamplingSlider->blockSignals(false); - widget->ui->ReprojectionToggle->blockSignals(false); - widget->ui->ForceReprojectionToggle->blockSignals(false); - widget->ui->SteamVRResetButton->blockSignals(false); - widget->ui->SteamVRRestartButton->blockSignals(false); + +void SteamVRTabController::eventLoopTick() { + if (settingsUpdateCounter >= 50) { + vr::EVRSettingsError vrSettingsError; + auto ss = vr::VRSettings()->GetFloat(vr::k_pch_SteamVR_Section, vr::k_pch_SteamVR_RenderTargetMultiplier_Float, &vrSettingsError); + if (vrSettingsError != vr::VRSettingsError_None) { + LOG(WARNING) << "Could not read \"" << vr::k_pch_SteamVR_RenderTargetMultiplier_Float << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError); + setSuperSampling(1.0); + } else { + setSuperSampling(ss); + } + auto css = vr::VRSettings()->GetFloat(vrsettings_compositor_category, vr::k_pch_SteamVR_RenderTargetMultiplier_Float, &vrSettingsError); + if (vrSettingsError != vr::VRSettingsError_None) { + if (vrSettingsError != vr::VRSettingsError_UnsetSettingHasNoDefault) { // does not appear in the default settings file as of beta 1477423729 + LOG(WARNING) << "Could not read \"compositor::" << vr::k_pch_SteamVR_RenderTargetMultiplier_Float << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError); + } + setCompositorSuperSampling(1.0); + } else { + setCompositorSuperSampling(css); + } + auto air = vr::VRSettings()->GetBool(vr::k_pch_SteamVR_Section, vrsettings_steamvr_allowInterleavedReprojection, &vrSettingsError); + if (vrSettingsError != vr::VRSettingsError_None) { + LOG(WARNING) << "Could not read \"" << vrsettings_steamvr_allowInterleavedReprojection << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError); + } + setAllowInterleavedReprojection(air); + auto aar = vr::VRSettings()->GetBool(vr::k_pch_SteamVR_Section, vrsettings_steamvr_allowAsyncReprojection, &vrSettingsError); + if (vrSettingsError != vr::VRSettingsError_None) { + LOG(WARNING) << "Could not read \"" << vrsettings_steamvr_allowAsyncReprojection << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError); + } + setAllowAsyncReprojection(aar); + auto fr = vr::VRSettings()->GetBool(vr::k_pch_SteamVR_Section, vr::k_pch_SteamVR_ForceReprojection_Bool, &vrSettingsError); + if (vrSettingsError != vr::VRSettingsError_None) { + LOG(WARNING) << "Could not read \"" << vr::k_pch_SteamVR_ForceReprojection_Bool << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError); + } + setForceReprojection(fr); + settingsUpdateCounter = 0; + } else { + settingsUpdateCounter++; } } -void SteamVRTabController::SupersamplingChanged(int value) { - float fval = (float)value / 10.0f; - widget->ui->SupersamplingLabel->setText(QString::asprintf("%.1f", fval)); - vr::VRSettings()->SetFloat(vr::k_pch_SteamVR_Section, vr::k_pch_SteamVR_RenderTargetMultiplier_Float, fval); - vr::VRSettings()->Sync(); + +void SteamVRTabController::setSuperSampling(float value, bool notify) { + if (m_superSampling != value) { + m_superSampling = value; + vr::VRSettings()->SetFloat(vr::k_pch_SteamVR_Section, vr::k_pch_SteamVR_RenderTargetMultiplier_Float, m_superSampling); + vr::VRSettings()->Sync(); + if (notify) { + emit superSamplingChanged(m_superSampling); + } + } } -void SteamVRTabController::ReprojectionToggled(bool value) { - vr::VRSettings()->SetBool(vr::k_pch_SteamVR_Section, vr::k_pch_SteamVR_AllowReprojection_Bool, value); - vr::VRSettings()->Sync(); + +void SteamVRTabController::setCompositorSuperSampling(float value, bool notify) { + if (m_compositorSuperSampling != value) { + m_compositorSuperSampling = value; + vr::VRSettings()->SetFloat(vrsettings_compositor_category, vr::k_pch_SteamVR_RenderTargetMultiplier_Float, m_compositorSuperSampling); + vr::VRSettings()->Sync(); + if (notify) { + emit compositorSuperSamplingChanged(m_compositorSuperSampling); + } + } } -void SteamVRTabController::ForceReprojectionToggled(bool value) { - vr::VRSettings()->SetBool(vr::k_pch_SteamVR_Section, vr::k_pch_SteamVR_ForceReprojection_Bool, value); - vr::VRSettings()->Sync(); + +float SteamVRTabController::superSampling() const { + return m_superSampling; } -void SteamVRTabController::ResetClicked() { - widget->ui->SupersamplingSlider->setValue(10); - widget->ui->ReprojectionToggle->setChecked(true); - widget->ui->ForceReprojectionToggle->setChecked(false); + +float SteamVRTabController::compositorSuperSampling() const { + return m_compositorSuperSampling; } -void SteamVRTabController::RestartClicked() { + +bool SteamVRTabController::allowInterleavedReprojection() const { + return m_allowInterleavedReprojection; +} + + +bool SteamVRTabController::allowAsyncReprojection() const { + return m_allowAsyncReprojection; +} + + +void SteamVRTabController::setAllowInterleavedReprojection(bool value, bool notify) { + if (m_allowInterleavedReprojection != value) { + m_allowInterleavedReprojection = value; + vr::VRSettings()->SetBool(vr::k_pch_SteamVR_Section, vrsettings_steamvr_allowInterleavedReprojection, m_allowInterleavedReprojection); + vr::VRSettings()->Sync(); + if (notify) { + emit allowInterleavedReprojectionChanged(m_allowInterleavedReprojection); + } + } +} + + +void SteamVRTabController::setAllowAsyncReprojection(bool value, bool notify) { + if (m_allowAsyncReprojection != value) { + m_allowAsyncReprojection = value; + vr::VRSettings()->SetBool(vr::k_pch_SteamVR_Section, vrsettings_steamvr_allowAsyncReprojection, m_allowAsyncReprojection); + vr::VRSettings()->Sync(); + if (notify) { + emit allowAsyncReprojectionChanged(m_allowAsyncReprojection); + } + } +} + +bool SteamVRTabController::forceReprojection() const { + return m_forceReprojection; +} + + +void SteamVRTabController::setForceReprojection(bool value, bool notify) { + if (m_forceReprojection != value) { + m_forceReprojection = value; + vr::VRSettings()->SetBool(vr::k_pch_SteamVR_Section, vr::k_pch_SteamVR_ForceReprojection_Bool, m_forceReprojection); + vr::VRSettings()->Sync(); + if (notify) { + emit forceReprojectionChanged(m_forceReprojection); + } + } +} + + +void SteamVRTabController::restartSteamVR() { QProcess::startDetached("cmd.exe /C restartvrserver.bat"); } + } // namespace advconfig + diff --git a/src/tabcontrollers/SteamVRTabController.h b/src/tabcontrollers/SteamVRTabController.h index 10a02ba..1902d90 100644 --- a/src/tabcontrollers/SteamVRTabController.h +++ b/src/tabcontrollers/SteamVRTabController.h @@ -3,32 +3,67 @@ #include +// openvr's github repo hasn't been updated yet to reflect changes in beta 1477423729. +static const char* vrsettings_steamvr_allowAsyncReprojection = "allowAsyncReprojection"; +static const char* vrsettings_steamvr_allowInterleavedReprojection = "allowInterleavedReprojection"; +static const char* vrsettings_compositor_category = "compositor"; + + +class QQuickWindow; // application namespace namespace advsettings { // forward declaration -class OverlayWidget; class OverlayController; class SteamVRTabController : public QObject { Q_OBJECT + Q_PROPERTY(float superSampling READ superSampling WRITE setSuperSampling NOTIFY superSamplingChanged) + Q_PROPERTY(float compositorSuperSampling READ compositorSuperSampling WRITE setCompositorSuperSampling NOTIFY compositorSuperSamplingChanged) + Q_PROPERTY(bool allowInterleavedReprojection READ allowInterleavedReprojection WRITE setAllowInterleavedReprojection NOTIFY allowInterleavedReprojectionChanged) + Q_PROPERTY(bool allowAsyncReprojection READ allowAsyncReprojection WRITE setAllowAsyncReprojection NOTIFY allowAsyncReprojectionChanged) + Q_PROPERTY(bool forceReprojection READ forceReprojection WRITE setForceReprojection NOTIFY forceReprojectionChanged) private: OverlayController* parent; - OverlayWidget* widget; + QQuickWindow* widget; + + float m_superSampling = 1.0; + float m_compositorSuperSampling = 1.0; + bool m_allowInterleavedReprojection = true; + bool m_allowAsyncReprojection = true; + bool m_forceReprojection = false; + + unsigned settingsUpdateCounter = 0; public: - void init(OverlayController* parent, OverlayWidget* widget); + void initStage1(); + void initStage2(OverlayController* parent, QQuickWindow* widget); + + void eventLoopTick(); + + float superSampling() const; + float compositorSuperSampling() const; + bool allowInterleavedReprojection() const; + bool allowAsyncReprojection() const; + bool forceReprojection() const; public slots: - void UpdateTab(); + void setSuperSampling(float value, bool notify = true); + void setCompositorSuperSampling(float value, bool notify = true); + void setAllowInterleavedReprojection(bool value, bool notify = true); + void setAllowAsyncReprojection(bool value, bool notify = true); + void setForceReprojection(bool value, bool notify = true); - void SupersamplingChanged(int value); - void ReprojectionToggled(bool value); - void ForceReprojectionToggled(bool value); - void ResetClicked(); - void RestartClicked(); + void restartSteamVR(); + +signals: + void superSamplingChanged(float value); + void compositorSuperSamplingChanged(float value); + void allowInterleavedReprojectionChanged(bool value); + void allowAsyncReprojectionChanged(bool value); + void forceReprojectionChanged(bool value); }; } // namespace advsettings diff --git a/src/tabcontrollers/audiomanager/AudioManagerWindows.cpp b/src/tabcontrollers/audiomanager/AudioManagerWindows.cpp new file mode 100644 index 0000000..fd4d7fb --- /dev/null +++ b/src/tabcontrollers/audiomanager/AudioManagerWindows.cpp @@ -0,0 +1,305 @@ +#include "audiomanagerwindows.h" +#include +#include "../../logging.h" +#include "../AudioTabController.h" + +#include +#include + + +// application namespace +namespace advsettings { + +AudioManagerWindows::~AudioManagerWindows() { + audioDeviceEnumerator->UnregisterEndpointNotificationCallback((IMMNotificationClient*)this); + if (mirrorAudioEndpointVolume) { + mirrorAudioEndpointVolume->Release(); + } + if (micAudioEndpointVolume) { + micAudioEndpointVolume->Release(); + } + if (mirrorAudioDevice) { + mirrorAudioDevice->Release(); + } + if (micAudioDevice) { + micAudioDevice->Release(); + } + audioDeviceEnumerator->Release(); +} + +void AudioManagerWindows::init(AudioTabController* controller) { + audioDeviceEnumerator = getAudioDeviceEnumerator(); + if (!audioDeviceEnumerator) { + throw std::exception("Could not create audio device enumerator"); + } + micAudioDevice = getDefaultRecordingDevice(audioDeviceEnumerator); + if (micAudioDevice) { + micAudioEndpointVolume = getAudioEndpointVolume(micAudioDevice); + } else { + LOG(WARNING) << "Could not find a default recording device."; + } + this->controller = controller; + audioDeviceEnumerator->RegisterEndpointNotificationCallback((IMMNotificationClient*)this); +} + + +void AudioManagerWindows::setMirrorDevice(const std::string& id) { + if (id.empty()) { + deleteMirrorDevice(); + } else { + mirrorAudioDevice = getDevice(audioDeviceEnumerator, id); + if (mirrorAudioDevice) { + mirrorAudioEndpointVolume = getAudioEndpointVolume(mirrorAudioDevice); + } else { + LOG(WARNING) << "Could not find mirror device \"" << id << "\"."; + } + } +} + +void AudioManagerWindows::deleteMirrorDevice() { + if (mirrorAudioEndpointVolume) { + mirrorAudioEndpointVolume->Release(); + mirrorAudioEndpointVolume = nullptr; + } + if (mirrorAudioDevice) { + mirrorAudioDevice->Release(); + mirrorAudioDevice = nullptr; + } +} + +bool AudioManagerWindows::isMirrorValid() { + return mirrorAudioEndpointVolume != nullptr; +} + +std::string AudioManagerWindows::getMirrorDevName() { + if (mirrorAudioDevice) { + return getDeviceName(mirrorAudioDevice); + } + return ""; +} + +float AudioManagerWindows::getMirrorVolume() { + float value; + if (mirrorAudioEndpointVolume && mirrorAudioEndpointVolume->GetMasterVolumeLevelScalar(&value) >= 0) { + return value; + } else { + return 0.0; + } +} + +bool AudioManagerWindows::setMirrorVolume(float value) { + if (mirrorAudioEndpointVolume) { + if (mirrorAudioEndpointVolume->SetMasterVolumeLevelScalar(value, nullptr) >= 0) { + return true; + } + } + return false; +} + +bool AudioManagerWindows::getMirrorMuted() { + BOOL value; + if (mirrorAudioEndpointVolume && mirrorAudioEndpointVolume->GetMute(&value) >= 0) { + return value; + } else { + return false; + } +} + +bool AudioManagerWindows::setMirrorMuted(bool value) { + if (mirrorAudioEndpointVolume) { + if (mirrorAudioEndpointVolume->SetMute(value, nullptr) >= 0) { + return true; + } + } + return false; +} + + +bool AudioManagerWindows::isMicValid() { + return micAudioEndpointVolume != nullptr; +} + +std::string AudioManagerWindows::getMicDevName() { + if (micAudioDevice) { + return getDeviceName(micAudioDevice); + } + return ""; +} + +float AudioManagerWindows::getMicVolume() { + float value; + if (micAudioEndpointVolume && micAudioEndpointVolume->GetMasterVolumeLevelScalar(&value) >= 0) { + return value; + } else { + return 0.0; + } +} + +bool AudioManagerWindows::setMicVolume(float value) { + if (micAudioEndpointVolume) { + if (micAudioEndpointVolume->SetMasterVolumeLevelScalar(value, nullptr) >= 0) { + return true; + } + } + return false; +} + +bool AudioManagerWindows::getMicMuted() { + BOOL value; + if (micAudioEndpointVolume && micAudioEndpointVolume->GetMute(&value) >= 0) { + return value; + } else { + return false; + } +} + +bool AudioManagerWindows::setMicMuted(bool value) { + if (micAudioEndpointVolume) { + if (micAudioEndpointVolume->SetMute(value, nullptr) >= 0) { + return true; + } + } + return false; +} + + +IMMDeviceEnumerator* AudioManagerWindows::getAudioDeviceEnumerator() { + IMMDeviceEnumerator* pEnumerator; + if (CoCreateInstance(__uuidof(MMDeviceEnumerator), NULL, CLSCTX_ALL, __uuidof(IMMDeviceEnumerator), (void**)&pEnumerator) < 0) { + return nullptr; + } + return pEnumerator; +} + +IMMDevice* AudioManagerWindows::getDefaultRecordingDevice(IMMDeviceEnumerator* deviceEnumerator) { + IMMDevice* pDevice; + if (deviceEnumerator->GetDefaultAudioEndpoint(eCapture, eCommunications, &pDevice) < 0) { + return nullptr; + } + return pDevice; +} + +IMMDevice* AudioManagerWindows::getDevice(IMMDeviceEnumerator* deviceEnumerator, const std::string& id) { + std::wstring_convert> converter; + std::wstring wid = converter.from_bytes(id); + return getDevice(deviceEnumerator, wid.c_str()); +} + +IMMDevice * AudioManagerWindows::getDevice(IMMDeviceEnumerator * deviceEnumerator, LPCWSTR id) { + IMMDevice* pDevice; + if (deviceEnumerator->GetDevice(id, &pDevice) < 0) { + return nullptr; + } + return pDevice; +} + +IAudioEndpointVolume * AudioManagerWindows::getAudioEndpointVolume(IMMDevice* device) { + IAudioEndpointVolume * pEndpointVolume; + if (device->Activate(__uuidof(IAudioEndpointVolume), CLSCTX_INPROC_SERVER, NULL, (void**)&pEndpointVolume) < 0) { + return nullptr; + } + return pEndpointVolume; +} + +std::string AudioManagerWindows::getDeviceName(IMMDevice* device) { + IPropertyStore *pProps = nullptr; + PROPVARIANT varString; + if (device->OpenPropertyStore(STGM_READ, &pProps) >= 0 && pProps->GetValue(PKEY_Device_FriendlyName, &varString) >= 0) { + std::wstring_convert> converter; + std::string name = converter.to_bytes(varString.pwszVal); + return name; + } + return ""; +} + + +HRESULT AudioManagerWindows::QueryInterface(REFIID riid, void ** ppvObject) { + if (IID_IUnknown == riid) { + AddRef(); + *ppvObject = (IUnknown*)this; + } else if (__uuidof(IMMNotificationClient) == riid) { + AddRef(); + *ppvObject = (IMMNotificationClient*)this; + } else { + *ppvObject = NULL; + return E_NOINTERFACE; + } + return S_OK; +} + +ULONG AudioManagerWindows::AddRef(void) { + return 1; // We don't need reference counting +} + +ULONG AudioManagerWindows::Release(void) { + return 1; // We don't need reference counting +} + +HRESULT AudioManagerWindows::OnDeviceStateChanged(LPCWSTR, DWORD) { + return S_OK; +} + +HRESULT AudioManagerWindows::OnDeviceAdded(LPCWSTR) { + return S_OK; +} + +HRESULT AudioManagerWindows::OnDeviceRemoved(LPCWSTR) { + return S_OK; +} + +HRESULT AudioManagerWindows::OnDefaultDeviceChanged(EDataFlow flow, ERole role, LPCWSTR pwstrDefaultDeviceId) { + if (flow == eCapture && role == eMultimedia) { + if (audioDeviceEnumerator) { + auto device = getDevice(audioDeviceEnumerator, pwstrDefaultDeviceId); + if (device != micAudioDevice) { + if (micAudioDevice) { + micAudioDevice->Release(); + } + micAudioDevice = device; + if (micAudioDevice) { + micAudioEndpointVolume = getAudioEndpointVolume(micAudioDevice); + } else { + std::wstring_convert> converter; + std::string name = converter.to_bytes(pwstrDefaultDeviceId); + LOG(WARNING) << "Could not find recording device \"" << name << "\"."; + } + controller->onNewRecordingDevice(); + } + } + } + /*char* pszFlow = (char*)"?????"; + char* pszRole = (char*)"?????"; + + switch (flow) { + case eRender: + pszFlow = (char*)"eRender"; + break; + case eCapture: + pszFlow = (char*)"eCapture"; + break; + } + + switch (role) { + case eConsole: + pszRole = (char*)"eConsole"; + break; + case eMultimedia: + pszRole = (char*)"eMultimedia"; + break; + case eCommunications: + pszRole = (char*)"eCommunications"; + break; + } + + std::wstring_convert> converter; + std::string name = converter.to_bytes(pwstrDefaultDeviceId); + printf(" %s -->New default device: flow = %s, role = %s\n", name.c_str(), pszFlow, pszRole); + fflush(stdout);*/ + return S_OK; +} + +HRESULT AudioManagerWindows::OnPropertyValueChanged(LPCWSTR, const PROPERTYKEY) { + return S_OK; +} + +} diff --git a/src/tabcontrollers/audiomanager/AudioManagerWindows.h b/src/tabcontrollers/audiomanager/AudioManagerWindows.h new file mode 100644 index 0000000..094628b --- /dev/null +++ b/src/tabcontrollers/audiomanager/AudioManagerWindows.h @@ -0,0 +1,64 @@ +#pragma once + +#include "../audiomanager.h" + +#include +#include +#include + + +// application namespace +namespace advsettings { + +class AudioManagerWindows : public AudioManager, IMMNotificationClient { +friend class AudioNotificationClient; +private: + AudioTabController* controller = nullptr; + IMMDeviceEnumerator* audioDeviceEnumerator = nullptr; + IMMDevice* mirrorAudioDevice = nullptr; + IAudioEndpointVolume* mirrorAudioEndpointVolume = nullptr; + IMMDevice* micAudioDevice = nullptr; + IAudioEndpointVolume* micAudioEndpointVolume = nullptr; + +public: + ~AudioManagerWindows(); + + virtual void init(AudioTabController* controller) override; + + virtual void setMirrorDevice(const std::string& id) override; + virtual void deleteMirrorDevice() override; + virtual bool isMirrorValid() override; + virtual std::string getMirrorDevName() override; + virtual float getMirrorVolume() override; + virtual bool setMirrorVolume(float value) override; + virtual bool getMirrorMuted() override; + virtual bool setMirrorMuted(bool value) override; + + virtual bool isMicValid() override; + virtual std::string getMicDevName() override; + virtual float getMicVolume() override; + virtual bool setMicVolume(float value) override; + virtual bool getMicMuted() override; + virtual bool setMicMuted(bool value) override; + + // from IMMNotificationClient + virtual HRESULT QueryInterface(REFIID riid, void ** ppvObject) override; + virtual ULONG AddRef(void) override; + virtual ULONG Release(void) override; + virtual HRESULT OnDeviceStateChanged(LPCWSTR pwstrDeviceId, DWORD dwNewState) override; + virtual HRESULT OnDeviceAdded(LPCWSTR pwstrDeviceId) override; + virtual HRESULT OnDeviceRemoved(LPCWSTR pwstrDeviceId) override; + virtual HRESULT OnDefaultDeviceChanged(EDataFlow flow, ERole role, LPCWSTR pwstrDefaultDeviceId) override; + virtual HRESULT OnPropertyValueChanged(LPCWSTR pwstrDeviceId, const PROPERTYKEY key) override; + +private: + IMMDeviceEnumerator* getAudioDeviceEnumerator(); + IMMDevice* getDefaultRecordingDevice(IMMDeviceEnumerator* deviceEnumerator); + IMMDevice* getDevice(IMMDeviceEnumerator* deviceEnumerator, const std::string& id); + IMMDevice* getDevice(IMMDeviceEnumerator* deviceEnumerator, LPCWSTR id); + IAudioEndpointVolume* getAudioEndpointVolume(IMMDevice* device); + std::string getDeviceName(IMMDevice* device); +}; + +} + diff --git a/third-party/openvr/README b/third-party/openvr/README new file mode 100644 index 0000000..9a89231 --- /dev/null +++ b/third-party/openvr/README @@ -0,0 +1,9 @@ +OpenVR is an API and runtime that allows access to VR hardware from multiple +vendors without requiring that applications have specific knowledge of the +hardware they are targeting. This repository is an SDK that contains the API +and samples. The runtime is under SteamVR in Tools on Steam. + +Documentation for the API is available in the wiki: https://github.com/ValveSoftware/openvr/wiki/API-Documentation + +More information on OpenVR and SteamVR can be found on http://steamvr.com + diff --git a/third-party/openvr/bin/linux32/libopenvr_api.so b/third-party/openvr/bin/linux32/libopenvr_api.so deleted file mode 100644 index a250545..0000000 Binary files a/third-party/openvr/bin/linux32/libopenvr_api.so and /dev/null differ diff --git a/third-party/openvr/bin/linux32/libopenvr_api.so.dbg b/third-party/openvr/bin/linux32/libopenvr_api.so.dbg deleted file mode 100644 index a26ac1c..0000000 Binary files a/third-party/openvr/bin/linux32/libopenvr_api.so.dbg and /dev/null differ diff --git a/third-party/openvr/bin/linux64/libopenvr_api.so b/third-party/openvr/bin/linux64/libopenvr_api.so index a190fe1..692a87c 100644 Binary files a/third-party/openvr/bin/linux64/libopenvr_api.so and b/third-party/openvr/bin/linux64/libopenvr_api.so differ diff --git a/third-party/openvr/bin/linux64/libopenvr_api.so.dbg b/third-party/openvr/bin/linux64/libopenvr_api.so.dbg index ca9c9af..6285a38 100644 Binary files a/third-party/openvr/bin/linux64/libopenvr_api.so.dbg and b/third-party/openvr/bin/linux64/libopenvr_api.so.dbg differ diff --git a/third-party/openvr/bin/osx32/libopenvr_api.dylib b/third-party/openvr/bin/osx32/libopenvr_api.dylib index df781eb..e3e871a 100644 Binary files a/third-party/openvr/bin/osx32/libopenvr_api.dylib and b/third-party/openvr/bin/osx32/libopenvr_api.dylib differ diff --git a/third-party/openvr/bin/osx32/libopenvr_api.dylib.dSYM/Contents/Resources/DWARF/libopenvr_api.dylib b/third-party/openvr/bin/osx32/libopenvr_api.dylib.dSYM/Contents/Resources/DWARF/libopenvr_api.dylib index dacf5f8..9b6372f 100644 Binary files a/third-party/openvr/bin/osx32/libopenvr_api.dylib.dSYM/Contents/Resources/DWARF/libopenvr_api.dylib and b/third-party/openvr/bin/osx32/libopenvr_api.dylib.dSYM/Contents/Resources/DWARF/libopenvr_api.dylib differ diff --git a/third-party/openvr/bin/win32/openvr_api.dll b/third-party/openvr/bin/win32/openvr_api.dll index f845d44..2dd3fbe 100644 Binary files a/third-party/openvr/bin/win32/openvr_api.dll and b/third-party/openvr/bin/win32/openvr_api.dll differ diff --git a/third-party/openvr/bin/win32/openvr_api.pdb b/third-party/openvr/bin/win32/openvr_api.pdb index a2c9adc..5a43d1b 100644 Binary files a/third-party/openvr/bin/win32/openvr_api.pdb and b/third-party/openvr/bin/win32/openvr_api.pdb differ diff --git a/third-party/openvr/bin/win64/openvr_api.dll b/third-party/openvr/bin/win64/openvr_api.dll index dbf1531..9ae4922 100644 Binary files a/third-party/openvr/bin/win64/openvr_api.dll and b/third-party/openvr/bin/win64/openvr_api.dll differ diff --git a/third-party/openvr/bin/win64/openvr_api.pdb b/third-party/openvr/bin/win64/openvr_api.pdb index 8a2095e..e575e13 100644 Binary files a/third-party/openvr/bin/win64/openvr_api.pdb and b/third-party/openvr/bin/win64/openvr_api.pdb differ diff --git a/third-party/openvr/include/openvr.h b/third-party/openvr/include/openvr.h index deb3142..b72fcae 100644 --- a/third-party/openvr/include/openvr.h +++ b/third-party/openvr/include/openvr.h @@ -13,7 +13,13 @@ // vrtypes.h #ifndef _INCLUDE_VRTYPES_H -#define _INCLUDE_VRTYPES_H +#define _INCLUDE_VRTYPES_H + +// Forward declarations to avoid requiring vulkan.h +struct VkDevice_T; +struct VkPhysicalDevice_T; +struct VkInstance_T; +struct VkQueue_T; namespace vr { @@ -125,6 +131,10 @@ struct Texture_t EColorSpace eColorSpace; }; +// Handle to a shared texture (HANDLE on Windows obtained using OpenSharedResource). +typedef uint64_t SharedTextureHandle_t; +#define INVALID_SHARED_TEXTURE_HANDLE ((vr::SharedTextureHandle_t)0) + enum ETrackingResult { TrackingResult_Uninitialized = 1, @@ -154,6 +164,8 @@ enum ETrackedDeviceClass TrackedDeviceClass_Controller = 2, // Tracked controllers TrackedDeviceClass_TrackingReference = 4, // Camera and base stations that serve as tracking reference points + TrackedDeviceClass_Count, // This isn't a class that will ever be returned. It is used for allocating arrays and such + TrackedDeviceClass_Other = 1000, }; @@ -288,6 +300,17 @@ enum ETrackedDeviceProperty Prop_TrackingRangeMaximumMeters_Float = 4005, Prop_ModeLabel_String = 4006, + // Properties that are used for user interface like icons names + Prop_IconPathName_String = 5000, // usually a directory named "icons" + Prop_NamedIconPathDeviceOff_String = 5001, // PNG for static icon, or GIF for animation, 50x32 for headsets and 32x32 for others + Prop_NamedIconPathDeviceSearching_String = 5002, // PNG for static icon, or GIF for animation, 50x32 for headsets and 32x32 for others + Prop_NamedIconPathDeviceSearchingAlert_String = 5003, // PNG for static icon, or GIF for animation, 50x32 for headsets and 32x32 for others + Prop_NamedIconPathDeviceReady_String = 5004, // PNG for static icon, or GIF for animation, 50x32 for headsets and 32x32 for others + Prop_NamedIconPathDeviceReadyAlert_String = 5005, // PNG for static icon, or GIF for animation, 50x32 for headsets and 32x32 for others + Prop_NamedIconPathDeviceNotReady_String = 5006, // PNG for static icon, or GIF for animation, 50x32 for headsets and 32x32 for others + Prop_NamedIconPathDeviceStandby_String = 5007, // PNG for static icon, or GIF for animation, 50x32 for headsets and 32x32 for others + Prop_NamedIconPathDeviceAlertLow_String = 5008, // PNG for static icon, or GIF for animation, 50x32 for headsets and 32x32 for others + // Vendors are free to expose private debug data in this reserved region Prop_VendorSpecific_Reserved_Start = 10000, Prop_VendorSpecific_Reserved_End = 10999, @@ -333,6 +356,22 @@ enum EVRSubmitFlags // If the texture pointer passed in is actually a renderbuffer (e.g. for MSAA in OpenGL) then set this flag. Submit_GlRenderBuffer = 0x02, + + // Handle is pointer to VulkanData_t + Submit_VulkanTexture = 0x04, +}; + +/** Data required for passing Vulkan textures to IVRCompositor::Submit. +* Be sure to call OpenVR_Shutdown before destroying these resources. */ +struct VulkanData_t +{ + uint64_t m_nImage; // VkImage + VkDevice_T *m_pDevice; + VkPhysicalDevice_T *m_pPhysicalDevice; + VkInstance_T *m_pInstance; + VkQueue_T *m_pQueue; + uint32_t m_nQueueFamilyIndex; + uint32_t m_nWidth, m_nHeight, m_nFormat, m_nSampleCount; }; @@ -365,6 +404,7 @@ enum EVREventType VREvent_LeaveStandbyMode = 107, VREvent_TrackedDeviceRoleChanged = 108, VREvent_WatchdogWakeUpRequested = 109, + VREvent_LensDistortionChanged = 110, VREvent_ButtonPress = 200, // data is controller VREvent_ButtonUnpress = 201, // data is controller @@ -410,6 +450,7 @@ enum EVREventType VREvent_DashboardGuideButtonUp = 515, VREvent_ScreenshotTriggered = 516, // Screenshot button combo was pressed, Dashboard should request a screenshot VREvent_ImageFailed = 517, // Sent to overlays when a SetOverlayRaw or SetOverlayfromFail fails to load + VREvent_DashboardOverlayCreated = 518, // Screenshot API VREvent_RequestScreenshot = 520, // Sent by vrclient application to compositor to take a screenshot @@ -442,6 +483,7 @@ enum EVREventType VREvent_ReprojectionSettingHasChanged = 852, VREvent_ModelSkinSettingsHaveChanged = 853, VREvent_EnvironmentSettingsHaveChanged = 854, + VREvent_PowerSettingsHaveChanged = 855, VREvent_StatusUpdate = 900, @@ -469,6 +511,7 @@ enum EVREventType VREvent_TrackedCamera_StopVideoStream = 1501, VREvent_TrackedCamera_PauseVideoStream = 1502, VREvent_TrackedCamera_ResumeVideoStream = 1503, + VREvent_TrackedCamera_EditingSurface = 1550, VREvent_PerformanceTest_EnableCapture = 1600, VREvent_PerformanceTest_DisableCapture = 1601, @@ -502,6 +545,8 @@ enum EVRButtonId k_EButton_DPad_Right = 5, k_EButton_DPad_Down = 6, k_EButton_A = 7, + + k_EButton_ProximitySensor = 31, k_EButton_Axis0 = 32, k_EButton_Axis1 = 33, @@ -651,6 +696,12 @@ struct VREvent_ApplicationLaunch_t uint32_t unArgsHandle; }; +struct VREvent_EditingCameraSurface_t +{ + uint64_t overlayHandle; + uint32_t nVisualMode; +}; + /** If you change this you must manually update openvr_interop.cs.py */ typedef union { @@ -671,6 +722,7 @@ typedef union VREvent_Screenshot_t screenshot; VREvent_ScreenshotProgress_t screenshotProgress; VREvent_ApplicationLaunch_t applicationLaunch; + VREvent_EditingCameraSurface_t cameraSurface; } VREvent_Data_t; /** An event posted by the server to all running applications */ @@ -798,7 +850,7 @@ enum EVROverlayError VROverlayError_RequestFailed = 23, VROverlayError_InvalidTexture = 24, VROverlayError_UnableToLoadFile = 25, - VROVerlayError_KeyboardAlreadyInUse = 26, + VROverlayError_KeyboardAlreadyInUse = 26, VROverlayError_NoNeighbor = 27, }; @@ -1075,7 +1127,8 @@ public: virtual void GetProjectionRaw( EVREye eEye, float *pfLeft, float *pfRight, float *pfTop, float *pfBottom ) = 0; /** Returns the result of the distortion function for the specified eye and input UVs. UVs go from 0,0 in - * the upper left of that eye's viewport and 1,1 in the lower right of that eye's viewport. */ + * the upper left of that eye's viewport and 1,1 in the lower right of that eye's viewport. + * Values may be NAN to indicate an error has occurred. */ virtual DistortionCoordinates_t ComputeDistortion( EVREye eEye, float fU, float fV ) = 0; /** Returns the transform from eye space to the head space. Eye space is the per-eye flavor of head @@ -1097,8 +1150,10 @@ public: virtual int32_t GetD3D9AdapterIndex() = 0; /** [D3D10/11 Only] - * Returns the adapter index and output index that the user should pass into EnumAdapters and EnumOutputs - * to create the device and swap chain in DX10 and DX11. If an error occurs both indices will be set to -1. + * Returns the adapter index that the user should pass into EnumAdapters to create the device + * and swap chain in DX10 and DX11. If an error occurs the index will be set to -1. The index will + * also be -1 if the headset is in direct mode on the driver side instead of using the compositor's + * builtin direct mode support. */ virtual void GetDXGIOutputInfo( int32_t *pnAdapterIndex ) = 0; @@ -1398,6 +1453,10 @@ namespace vr const char *pchValue; }; + /** Currently recognized mime types */ + static const char * const k_pch_MimeType_HomeApp = "vr/home"; + static const char * const k_pch_MimeType_GameTheater = "vr/game_theater"; + class IVRApplications { public: @@ -1420,7 +1479,7 @@ namespace vr /** Returns the key of the specified application. The index is at least 0 and is less than the return * value of GetApplicationCount(). The buffer should be at least k_unMaxApplicationKeyLength in order to * fit the key. */ - virtual EVRApplicationError GetApplicationKeyByIndex( uint32_t unApplicationIndex, char *pchAppKeyBuffer, uint32_t unAppKeyBufferLen ) = 0; + virtual EVRApplicationError GetApplicationKeyByIndex( uint32_t unApplicationIndex, VR_OUT_STRING() char *pchAppKeyBuffer, uint32_t unAppKeyBufferLen ) = 0; /** Returns the key of the application for the specified Process Id. The buffer should be at least * k_unMaxApplicationKeyLength in order to fit the key. */ @@ -1460,7 +1519,7 @@ namespace vr // --------------- Application properties --------------- // /** Returns a value for an application property. The required buffer size to fit this value will be returned. */ - virtual uint32_t GetApplicationPropertyString( const char *pchAppKey, EVRApplicationProperty eProperty, char *pchPropertyValueBuffer, uint32_t unPropertyValueBufferLen, EVRApplicationError *peError = nullptr ) = 0; + virtual uint32_t GetApplicationPropertyString( const char *pchAppKey, EVRApplicationProperty eProperty, VR_OUT_STRING() char *pchPropertyValueBuffer, uint32_t unPropertyValueBufferLen, EVRApplicationError *peError = nullptr ) = 0; /** Returns a bool value for an application property. Returns false in all error cases. */ virtual bool GetApplicationPropertyBool( const char *pchAppKey, EVRApplicationProperty eProperty, EVRApplicationError *peError = nullptr ) = 0; @@ -1535,6 +1594,8 @@ namespace vr VRSettingsError_IPCFailed = 1, VRSettingsError_WriteFailed = 2, VRSettingsError_ReadFailed = 3, + VRSettingsError_JsonParseFailed = 4, + VRSettingsError_UnsetSettingHasNoDefault = 5, // This will be returned if the setting does not appear in the appropriate default file and has not been set }; // The maximum length of a settings key @@ -1548,21 +1609,24 @@ namespace vr // Returns true if file sync occurred (force or settings dirty) virtual bool Sync( bool bForce = false, EVRSettingsError *peError = nullptr ) = 0; - virtual bool GetBool( const char *pchSection, const char *pchSettingsKey, bool bDefaultValue, EVRSettingsError *peError = nullptr ) = 0; virtual void SetBool( const char *pchSection, const char *pchSettingsKey, bool bValue, EVRSettingsError *peError = nullptr ) = 0; - virtual int32_t GetInt32( const char *pchSection, const char *pchSettingsKey, int32_t nDefaultValue, EVRSettingsError *peError = nullptr ) = 0; virtual void SetInt32( const char *pchSection, const char *pchSettingsKey, int32_t nValue, EVRSettingsError *peError = nullptr ) = 0; - virtual float GetFloat( const char *pchSection, const char *pchSettingsKey, float flDefaultValue, EVRSettingsError *peError = nullptr ) = 0; virtual void SetFloat( const char *pchSection, const char *pchSettingsKey, float flValue, EVRSettingsError *peError = nullptr ) = 0; - virtual void GetString( const char *pchSection, const char *pchSettingsKey, VR_OUT_STRING() char *pchValue, uint32_t unValueLen, const char *pchDefaultValue, EVRSettingsError *peError = nullptr ) = 0; virtual void SetString( const char *pchSection, const char *pchSettingsKey, const char *pchValue, EVRSettingsError *peError = nullptr ) = 0; - + + // Users of the system need to provide a proper default in default.vrsettings in the resources/settings/ directory + // of either the runtime or the driver_xxx directory. Otherwise the default will be false, 0, 0.0 or "" + virtual bool GetBool( const char *pchSection, const char *pchSettingsKey, EVRSettingsError *peError = nullptr ) = 0; + virtual int32_t GetInt32( const char *pchSection, const char *pchSettingsKey, EVRSettingsError *peError = nullptr ) = 0; + virtual float GetFloat( const char *pchSection, const char *pchSettingsKey, EVRSettingsError *peError = nullptr ) = 0; + virtual void GetString( const char *pchSection, const char *pchSettingsKey, VR_OUT_STRING() char *pchValue, uint32_t unValueLen, EVRSettingsError *peError = nullptr ) = 0; + virtual void RemoveSection( const char *pchSection, EVRSettingsError *peError = nullptr ) = 0; virtual void RemoveKeyInSection( const char *pchSection, const char *pchSettingsKey, EVRSettingsError *peError = nullptr ) = 0; }; //----------------------------------------------------------------------------- - static const char * const IVRSettings_Version = "IVRSettings_001"; + static const char * const IVRSettings_Version = "IVRSettings_002"; //----------------------------------------------------------------------------- // steamvr keys @@ -1587,9 +1651,6 @@ namespace vr static const char * const k_pch_SteamVR_PlayAreaColor_String = "playAreaColor"; static const char * const k_pch_SteamVR_ShowStage_Bool = "showStage"; static const char * const k_pch_SteamVR_ActivateMultipleDrivers_Bool = "activateMultipleDrivers"; - static const char * const k_pch_SteamVR_PowerOffOnExit_Bool = "powerOffOnExit"; - static const char * const k_pch_SteamVR_StandbyAppRunningTimeout_Float = "standbyAppRunningTimeout"; - static const char * const k_pch_SteamVR_StandbyNoAppTimeout_Float = "standbyNoAppTimeout"; static const char * const k_pch_SteamVR_DirectMode_Bool = "directMode"; static const char * const k_pch_SteamVR_DirectModeEdidVid_Int32 = "directModeEdidVid"; static const char * const k_pch_SteamVR_DirectModeEdidPid_Int32 = "directModeEdidPid"; @@ -1603,9 +1664,12 @@ namespace vr static const char * const k_pch_SteamVR_ForceFadeOnBadTracking_Bool = "forceFadeOnBadTracking"; static const char * const k_pch_SteamVR_DefaultMirrorView_Int32 = "defaultMirrorView"; static const char * const k_pch_SteamVR_ShowMirrorView_Bool = "showMirrorView"; + static const char * const k_pch_SteamVR_MirrorViewGeometry_String = "mirrorViewGeometry"; static const char * const k_pch_SteamVR_StartMonitorFromAppLaunch = "startMonitorFromAppLaunch"; - static const char * const k_pch_SteamVR_AutoLaunchSteamVROnButtonPress = "autoLaunchSteamVROnButtonPress"; - static const char * const k_pch_SteamVR_UseGenericGraphcisDevice_Bool = "useGenericGraphicsDevice"; + static const char * const k_pch_SteamVR_EnableHomeApp = "enableHomeApp"; + static const char * const k_pch_SteamVR_SetInitialDefaultHomeApp = "setInitialDefaultHomeApp"; + static const char * const k_pch_SteamVR_CycleBackgroundImageTimeSec_Int32 = "CycleBackgroundImageTimeSec"; + static const char * const k_pch_SteamVR_RetailDemo_Bool = "retailDemo"; //----------------------------------------------------------------------------- @@ -1617,9 +1681,6 @@ namespace vr static const char * const k_pch_Lighthouse_DisambiguationDebug_Int32 = "disambiguationdebug"; static const char * const k_pch_Lighthouse_PrimaryBasestation_Int32 = "primarybasestation"; - static const char * const k_pch_Lighthouse_LighthouseName_String = "lighthousename"; - static const char * const k_pch_Lighthouse_MaxIncidenceAngleDegrees_Float = "maxincidenceangledegrees"; - static const char * const k_pch_Lighthouse_UseLighthouseDirect_Bool = "uselighthousedirect"; static const char * const k_pch_Lighthouse_DBHistory_Bool = "dbhistory"; //----------------------------------------------------------------------------- @@ -1695,6 +1756,7 @@ namespace vr static const char * const k_pch_Camera_BoundsColorGammaG_Int32 = "cameraBoundsColorGammaG"; static const char * const k_pch_Camera_BoundsColorGammaB_Int32 = "cameraBoundsColorGammaB"; static const char * const k_pch_Camera_BoundsColorGammaA_Int32 = "cameraBoundsColorGammaA"; + static const char * const k_pch_Camera_BoundsStrength_Int32 = "cameraBoundsStrength"; //----------------------------------------------------------------------------- // audio keys @@ -1706,6 +1768,21 @@ namespace vr static const char * const k_pch_audio_OffRecordDevice_String = "offRecordDevice"; static const char * const k_pch_audio_VIVEHDMIGain = "viveHDMIGain"; + //----------------------------------------------------------------------------- + // power management keys + static const char * const k_pch_Power_Section = "power"; + static const char * const k_pch_Power_PowerOffOnExit_Bool = "powerOffOnExit"; + static const char * const k_pch_Power_TurnOffScreensTimeout_Float = "turnOffScreensTimeout"; + static const char * const k_pch_Power_TurnOffControllersTimeout_Float = "turnOffControllersTimeout"; + static const char * const k_pch_Power_ReturnToWatchdogTimeout_Float = "returnToWatchdogTimeout"; + static const char * const k_pch_Power_AutoLaunchSteamVROnButtonPress = "autoLaunchSteamVROnButtonPress"; + + //----------------------------------------------------------------------------- + // dashboard keys + static const char * const k_pch_Dashboard_Section = "dashboard"; + static const char * const k_pch_Dashboard_EnableDashboard_Bool = "enableDashboard"; + static const char * const k_pch_Dashboard_ArcadeMode_Bool = "arcadeMode"; + //----------------------------------------------------------------------------- // model skin keys static const char * const k_pch_modelskin_Section = "modelskins"; diff --git a/third-party/openvr/include/openvr_api.cs b/third-party/openvr/include/openvr_api.cs new file mode 100644 index 0000000..8fcac88 --- /dev/null +++ b/third-party/openvr/include/openvr_api.cs @@ -0,0 +1,4446 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: This file contains C#/managed code bindings for the OpenVR interfaces +// This file is auto-generated, do not edit it. +// +//============================================================================= + +using System; +using System.Runtime.InteropServices; +using Valve.VR; + +namespace Valve.VR +{ + +[StructLayout(LayoutKind.Sequential)] +public struct IVRSystem +{ + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _GetRecommendedRenderTargetSize(ref uint pnWidth, ref uint pnHeight); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetRecommendedRenderTargetSize GetRecommendedRenderTargetSize; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate HmdMatrix44_t _GetProjectionMatrix(EVREye eEye, float fNearZ, float fFarZ, EGraphicsAPIConvention eProjType); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetProjectionMatrix GetProjectionMatrix; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _GetProjectionRaw(EVREye eEye, ref float pfLeft, ref float pfRight, ref float pfTop, ref float pfBottom); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetProjectionRaw GetProjectionRaw; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate DistortionCoordinates_t _ComputeDistortion(EVREye eEye, float fU, float fV); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ComputeDistortion ComputeDistortion; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate HmdMatrix34_t _GetEyeToHeadTransform(EVREye eEye); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetEyeToHeadTransform GetEyeToHeadTransform; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetTimeSinceLastVsync(ref float pfSecondsSinceLastVsync, ref ulong pulFrameCounter); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetTimeSinceLastVsync GetTimeSinceLastVsync; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate int _GetD3D9AdapterIndex(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetD3D9AdapterIndex GetD3D9AdapterIndex; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _GetDXGIOutputInfo(ref int pnAdapterIndex); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetDXGIOutputInfo GetDXGIOutputInfo; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _IsDisplayOnDesktop(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _IsDisplayOnDesktop IsDisplayOnDesktop; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _SetDisplayVisibility(bool bIsVisibleOnDesktop); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetDisplayVisibility SetDisplayVisibility; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _GetDeviceToAbsoluteTrackingPose(ETrackingUniverseOrigin eOrigin, float fPredictedSecondsToPhotonsFromNow, [In, Out] TrackedDevicePose_t[] pTrackedDevicePoseArray, uint unTrackedDevicePoseArrayCount); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetDeviceToAbsoluteTrackingPose GetDeviceToAbsoluteTrackingPose; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _ResetSeatedZeroPose(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ResetSeatedZeroPose ResetSeatedZeroPose; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate HmdMatrix34_t _GetSeatedZeroPoseToStandingAbsoluteTrackingPose(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetSeatedZeroPoseToStandingAbsoluteTrackingPose GetSeatedZeroPoseToStandingAbsoluteTrackingPose; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate HmdMatrix34_t _GetRawZeroPoseToStandingAbsoluteTrackingPose(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetRawZeroPoseToStandingAbsoluteTrackingPose GetRawZeroPoseToStandingAbsoluteTrackingPose; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetSortedTrackedDeviceIndicesOfClass(ETrackedDeviceClass eTrackedDeviceClass, [In, Out] uint[] punTrackedDeviceIndexArray, uint unTrackedDeviceIndexArrayCount, uint unRelativeToTrackedDeviceIndex); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetSortedTrackedDeviceIndicesOfClass GetSortedTrackedDeviceIndicesOfClass; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EDeviceActivityLevel _GetTrackedDeviceActivityLevel(uint unDeviceId); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetTrackedDeviceActivityLevel GetTrackedDeviceActivityLevel; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _ApplyTransform(ref TrackedDevicePose_t pOutputPose, ref TrackedDevicePose_t pTrackedDevicePose, ref HmdMatrix34_t pTransform); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ApplyTransform ApplyTransform; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetTrackedDeviceIndexForControllerRole(ETrackedControllerRole unDeviceType); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetTrackedDeviceIndexForControllerRole GetTrackedDeviceIndexForControllerRole; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate ETrackedControllerRole _GetControllerRoleForTrackedDeviceIndex(uint unDeviceIndex); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetControllerRoleForTrackedDeviceIndex GetControllerRoleForTrackedDeviceIndex; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate ETrackedDeviceClass _GetTrackedDeviceClass(uint unDeviceIndex); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetTrackedDeviceClass GetTrackedDeviceClass; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _IsTrackedDeviceConnected(uint unDeviceIndex); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _IsTrackedDeviceConnected IsTrackedDeviceConnected; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetBoolTrackedDeviceProperty(uint unDeviceIndex, ETrackedDeviceProperty prop, ref ETrackedPropertyError pError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetBoolTrackedDeviceProperty GetBoolTrackedDeviceProperty; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate float _GetFloatTrackedDeviceProperty(uint unDeviceIndex, ETrackedDeviceProperty prop, ref ETrackedPropertyError pError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetFloatTrackedDeviceProperty GetFloatTrackedDeviceProperty; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate int _GetInt32TrackedDeviceProperty(uint unDeviceIndex, ETrackedDeviceProperty prop, ref ETrackedPropertyError pError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetInt32TrackedDeviceProperty GetInt32TrackedDeviceProperty; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate ulong _GetUint64TrackedDeviceProperty(uint unDeviceIndex, ETrackedDeviceProperty prop, ref ETrackedPropertyError pError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetUint64TrackedDeviceProperty GetUint64TrackedDeviceProperty; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate HmdMatrix34_t _GetMatrix34TrackedDeviceProperty(uint unDeviceIndex, ETrackedDeviceProperty prop, ref ETrackedPropertyError pError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetMatrix34TrackedDeviceProperty GetMatrix34TrackedDeviceProperty; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetStringTrackedDeviceProperty(uint unDeviceIndex, ETrackedDeviceProperty prop, System.Text.StringBuilder pchValue, uint unBufferSize, ref ETrackedPropertyError pError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetStringTrackedDeviceProperty GetStringTrackedDeviceProperty; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate IntPtr _GetPropErrorNameFromEnum(ETrackedPropertyError error); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetPropErrorNameFromEnum GetPropErrorNameFromEnum; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _PollNextEvent(ref VREvent_t pEvent, uint uncbVREvent); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _PollNextEvent PollNextEvent; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _PollNextEventWithPose(ETrackingUniverseOrigin eOrigin, ref VREvent_t pEvent, uint uncbVREvent, ref TrackedDevicePose_t pTrackedDevicePose); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _PollNextEventWithPose PollNextEventWithPose; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate IntPtr _GetEventTypeNameFromEnum(EVREventType eType); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetEventTypeNameFromEnum GetEventTypeNameFromEnum; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate HiddenAreaMesh_t _GetHiddenAreaMesh(EVREye eEye); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetHiddenAreaMesh GetHiddenAreaMesh; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetControllerState(uint unControllerDeviceIndex, ref VRControllerState_t pControllerState); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetControllerState GetControllerState; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetControllerStateWithPose(ETrackingUniverseOrigin eOrigin, uint unControllerDeviceIndex, ref VRControllerState_t pControllerState, ref TrackedDevicePose_t pTrackedDevicePose); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetControllerStateWithPose GetControllerStateWithPose; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _TriggerHapticPulse(uint unControllerDeviceIndex, uint unAxisId, char usDurationMicroSec); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _TriggerHapticPulse TriggerHapticPulse; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate IntPtr _GetButtonIdNameFromEnum(EVRButtonId eButtonId); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetButtonIdNameFromEnum GetButtonIdNameFromEnum; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate IntPtr _GetControllerAxisTypeNameFromEnum(EVRControllerAxisType eAxisType); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetControllerAxisTypeNameFromEnum GetControllerAxisTypeNameFromEnum; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _CaptureInputFocus(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _CaptureInputFocus CaptureInputFocus; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _ReleaseInputFocus(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ReleaseInputFocus ReleaseInputFocus; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _IsInputFocusCapturedByAnotherProcess(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _IsInputFocusCapturedByAnotherProcess IsInputFocusCapturedByAnotherProcess; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _DriverDebugRequest(uint unDeviceIndex, string pchRequest, string pchResponseBuffer, uint unResponseBufferSize); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _DriverDebugRequest DriverDebugRequest; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRFirmwareError _PerformFirmwareUpdate(uint unDeviceIndex); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _PerformFirmwareUpdate PerformFirmwareUpdate; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _AcknowledgeQuit_Exiting(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _AcknowledgeQuit_Exiting AcknowledgeQuit_Exiting; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _AcknowledgeQuit_UserPrompt(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _AcknowledgeQuit_UserPrompt AcknowledgeQuit_UserPrompt; + +} + +[StructLayout(LayoutKind.Sequential)] +public struct IVRExtendedDisplay +{ + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _GetWindowBounds(ref int pnX, ref int pnY, ref uint pnWidth, ref uint pnHeight); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetWindowBounds GetWindowBounds; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _GetEyeOutputViewport(EVREye eEye, ref uint pnX, ref uint pnY, ref uint pnWidth, ref uint pnHeight); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetEyeOutputViewport GetEyeOutputViewport; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _GetDXGIOutputInfo(ref int pnAdapterIndex, ref int pnAdapterOutputIndex); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetDXGIOutputInfo GetDXGIOutputInfo; + +} + +[StructLayout(LayoutKind.Sequential)] +public struct IVRTrackedCamera +{ + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate IntPtr _GetCameraErrorNameFromEnum(EVRTrackedCameraError eCameraError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetCameraErrorNameFromEnum GetCameraErrorNameFromEnum; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRTrackedCameraError _HasCamera(uint nDeviceIndex, ref bool pHasCamera); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _HasCamera HasCamera; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRTrackedCameraError _GetCameraFrameSize(uint nDeviceIndex, EVRTrackedCameraFrameType eFrameType, ref uint pnWidth, ref uint pnHeight, ref uint pnFrameBufferSize); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetCameraFrameSize GetCameraFrameSize; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRTrackedCameraError _GetCameraIntrinisics(uint nDeviceIndex, EVRTrackedCameraFrameType eFrameType, ref HmdVector2_t pFocalLength, ref HmdVector2_t pCenter); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetCameraIntrinisics GetCameraIntrinisics; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRTrackedCameraError _GetCameraProjection(uint nDeviceIndex, EVRTrackedCameraFrameType eFrameType, float flZNear, float flZFar, ref HmdMatrix44_t pProjection); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetCameraProjection GetCameraProjection; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRTrackedCameraError _AcquireVideoStreamingService(uint nDeviceIndex, ref ulong pHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _AcquireVideoStreamingService AcquireVideoStreamingService; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRTrackedCameraError _ReleaseVideoStreamingService(ulong hTrackedCamera); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ReleaseVideoStreamingService ReleaseVideoStreamingService; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRTrackedCameraError _GetVideoStreamFrameBuffer(ulong hTrackedCamera, EVRTrackedCameraFrameType eFrameType, IntPtr pFrameBuffer, uint nFrameBufferSize, ref CameraVideoStreamFrameHeader_t pFrameHeader, uint nFrameHeaderSize); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetVideoStreamFrameBuffer GetVideoStreamFrameBuffer; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRTrackedCameraError _GetVideoStreamTextureSize(uint nDeviceIndex, EVRTrackedCameraFrameType eFrameType, ref VRTextureBounds_t pTextureBounds, ref uint pnWidth, ref uint pnHeight); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetVideoStreamTextureSize GetVideoStreamTextureSize; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRTrackedCameraError _GetVideoStreamTextureD3D11(ulong hTrackedCamera, EVRTrackedCameraFrameType eFrameType, IntPtr pD3D11DeviceOrResource, ref IntPtr ppD3D11ShaderResourceView, ref CameraVideoStreamFrameHeader_t pFrameHeader, uint nFrameHeaderSize); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetVideoStreamTextureD3D11 GetVideoStreamTextureD3D11; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRTrackedCameraError _GetVideoStreamTextureGL(ulong hTrackedCamera, EVRTrackedCameraFrameType eFrameType, ref uint pglTextureId, ref CameraVideoStreamFrameHeader_t pFrameHeader, uint nFrameHeaderSize); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetVideoStreamTextureGL GetVideoStreamTextureGL; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRTrackedCameraError _ReleaseVideoStreamTextureGL(ulong hTrackedCamera, uint glTextureId); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ReleaseVideoStreamTextureGL ReleaseVideoStreamTextureGL; + +} + +[StructLayout(LayoutKind.Sequential)] +public struct IVRApplications +{ + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRApplicationError _AddApplicationManifest(string pchApplicationManifestFullPath, bool bTemporary); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _AddApplicationManifest AddApplicationManifest; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRApplicationError _RemoveApplicationManifest(string pchApplicationManifestFullPath); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _RemoveApplicationManifest RemoveApplicationManifest; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _IsApplicationInstalled(string pchAppKey); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _IsApplicationInstalled IsApplicationInstalled; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetApplicationCount(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetApplicationCount GetApplicationCount; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRApplicationError _GetApplicationKeyByIndex(uint unApplicationIndex, System.Text.StringBuilder pchAppKeyBuffer, uint unAppKeyBufferLen); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetApplicationKeyByIndex GetApplicationKeyByIndex; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRApplicationError _GetApplicationKeyByProcessId(uint unProcessId, string pchAppKeyBuffer, uint unAppKeyBufferLen); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetApplicationKeyByProcessId GetApplicationKeyByProcessId; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRApplicationError _LaunchApplication(string pchAppKey); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _LaunchApplication LaunchApplication; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRApplicationError _LaunchTemplateApplication(string pchTemplateAppKey, string pchNewAppKey, [In, Out] AppOverrideKeys_t[] pKeys, uint unKeys); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _LaunchTemplateApplication LaunchTemplateApplication; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRApplicationError _LaunchApplicationFromMimeType(string pchMimeType, string pchArgs); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _LaunchApplicationFromMimeType LaunchApplicationFromMimeType; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRApplicationError _LaunchDashboardOverlay(string pchAppKey); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _LaunchDashboardOverlay LaunchDashboardOverlay; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _CancelApplicationLaunch(string pchAppKey); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _CancelApplicationLaunch CancelApplicationLaunch; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRApplicationError _IdentifyApplication(uint unProcessId, string pchAppKey); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _IdentifyApplication IdentifyApplication; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetApplicationProcessId(string pchAppKey); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetApplicationProcessId GetApplicationProcessId; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate IntPtr _GetApplicationsErrorNameFromEnum(EVRApplicationError error); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetApplicationsErrorNameFromEnum GetApplicationsErrorNameFromEnum; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetApplicationPropertyString(string pchAppKey, EVRApplicationProperty eProperty, System.Text.StringBuilder pchPropertyValueBuffer, uint unPropertyValueBufferLen, ref EVRApplicationError peError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetApplicationPropertyString GetApplicationPropertyString; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetApplicationPropertyBool(string pchAppKey, EVRApplicationProperty eProperty, ref EVRApplicationError peError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetApplicationPropertyBool GetApplicationPropertyBool; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate ulong _GetApplicationPropertyUint64(string pchAppKey, EVRApplicationProperty eProperty, ref EVRApplicationError peError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetApplicationPropertyUint64 GetApplicationPropertyUint64; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRApplicationError _SetApplicationAutoLaunch(string pchAppKey, bool bAutoLaunch); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetApplicationAutoLaunch SetApplicationAutoLaunch; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetApplicationAutoLaunch(string pchAppKey); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetApplicationAutoLaunch GetApplicationAutoLaunch; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRApplicationError _SetDefaultApplicationForMimeType(string pchAppKey, string pchMimeType); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetDefaultApplicationForMimeType SetDefaultApplicationForMimeType; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetDefaultApplicationForMimeType(string pchMimeType, string pchAppKeyBuffer, uint unAppKeyBufferLen); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetDefaultApplicationForMimeType GetDefaultApplicationForMimeType; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetApplicationSupportedMimeTypes(string pchAppKey, string pchMimeTypesBuffer, uint unMimeTypesBuffer); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetApplicationSupportedMimeTypes GetApplicationSupportedMimeTypes; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetApplicationsThatSupportMimeType(string pchMimeType, string pchAppKeysThatSupportBuffer, uint unAppKeysThatSupportBuffer); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetApplicationsThatSupportMimeType GetApplicationsThatSupportMimeType; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetApplicationLaunchArguments(uint unHandle, string pchArgs, uint unArgs); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetApplicationLaunchArguments GetApplicationLaunchArguments; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRApplicationError _GetStartingApplication(string pchAppKeyBuffer, uint unAppKeyBufferLen); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetStartingApplication GetStartingApplication; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRApplicationTransitionState _GetTransitionState(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetTransitionState GetTransitionState; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRApplicationError _PerformApplicationPrelaunchCheck(string pchAppKey); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _PerformApplicationPrelaunchCheck PerformApplicationPrelaunchCheck; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate IntPtr _GetApplicationsTransitionStateNameFromEnum(EVRApplicationTransitionState state); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetApplicationsTransitionStateNameFromEnum GetApplicationsTransitionStateNameFromEnum; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _IsQuitUserPromptRequested(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _IsQuitUserPromptRequested IsQuitUserPromptRequested; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRApplicationError _LaunchInternalProcess(string pchBinaryPath, string pchArguments, string pchWorkingDirectory); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _LaunchInternalProcess LaunchInternalProcess; + +} + +[StructLayout(LayoutKind.Sequential)] +public struct IVRChaperone +{ + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate ChaperoneCalibrationState _GetCalibrationState(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetCalibrationState GetCalibrationState; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetPlayAreaSize(ref float pSizeX, ref float pSizeZ); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetPlayAreaSize GetPlayAreaSize; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetPlayAreaRect(ref HmdQuad_t rect); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetPlayAreaRect GetPlayAreaRect; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _ReloadInfo(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ReloadInfo ReloadInfo; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _SetSceneColor(HmdColor_t color); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetSceneColor SetSceneColor; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _GetBoundsColor(ref HmdColor_t pOutputColorArray, int nNumOutputColors, float flCollisionBoundsFadeDistance, ref HmdColor_t pOutputCameraColor); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetBoundsColor GetBoundsColor; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _AreBoundsVisible(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _AreBoundsVisible AreBoundsVisible; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _ForceBoundsVisible(bool bForce); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ForceBoundsVisible ForceBoundsVisible; + +} + +[StructLayout(LayoutKind.Sequential)] +public struct IVRChaperoneSetup +{ + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _CommitWorkingCopy(EChaperoneConfigFile configFile); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _CommitWorkingCopy CommitWorkingCopy; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _RevertWorkingCopy(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _RevertWorkingCopy RevertWorkingCopy; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetWorkingPlayAreaSize(ref float pSizeX, ref float pSizeZ); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetWorkingPlayAreaSize GetWorkingPlayAreaSize; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetWorkingPlayAreaRect(ref HmdQuad_t rect); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetWorkingPlayAreaRect GetWorkingPlayAreaRect; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetWorkingCollisionBoundsInfo([In, Out] HmdQuad_t[] pQuadsBuffer, ref uint punQuadsCount); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetWorkingCollisionBoundsInfo GetWorkingCollisionBoundsInfo; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetLiveCollisionBoundsInfo([In, Out] HmdQuad_t[] pQuadsBuffer, ref uint punQuadsCount); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetLiveCollisionBoundsInfo GetLiveCollisionBoundsInfo; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetWorkingSeatedZeroPoseToRawTrackingPose(ref HmdMatrix34_t pmatSeatedZeroPoseToRawTrackingPose); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetWorkingSeatedZeroPoseToRawTrackingPose GetWorkingSeatedZeroPoseToRawTrackingPose; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetWorkingStandingZeroPoseToRawTrackingPose(ref HmdMatrix34_t pmatStandingZeroPoseToRawTrackingPose); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetWorkingStandingZeroPoseToRawTrackingPose GetWorkingStandingZeroPoseToRawTrackingPose; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _SetWorkingPlayAreaSize(float sizeX, float sizeZ); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetWorkingPlayAreaSize SetWorkingPlayAreaSize; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _SetWorkingCollisionBoundsInfo([In, Out] HmdQuad_t[] pQuadsBuffer, uint unQuadsCount); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetWorkingCollisionBoundsInfo SetWorkingCollisionBoundsInfo; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _SetWorkingSeatedZeroPoseToRawTrackingPose(ref HmdMatrix34_t pMatSeatedZeroPoseToRawTrackingPose); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetWorkingSeatedZeroPoseToRawTrackingPose SetWorkingSeatedZeroPoseToRawTrackingPose; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _SetWorkingStandingZeroPoseToRawTrackingPose(ref HmdMatrix34_t pMatStandingZeroPoseToRawTrackingPose); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetWorkingStandingZeroPoseToRawTrackingPose SetWorkingStandingZeroPoseToRawTrackingPose; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _ReloadFromDisk(EChaperoneConfigFile configFile); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ReloadFromDisk ReloadFromDisk; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetLiveSeatedZeroPoseToRawTrackingPose(ref HmdMatrix34_t pmatSeatedZeroPoseToRawTrackingPose); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetLiveSeatedZeroPoseToRawTrackingPose GetLiveSeatedZeroPoseToRawTrackingPose; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _SetWorkingCollisionBoundsTagsInfo([In, Out] byte[] pTagsBuffer, uint unTagCount); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetWorkingCollisionBoundsTagsInfo SetWorkingCollisionBoundsTagsInfo; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetLiveCollisionBoundsTagsInfo([In, Out] byte[] pTagsBuffer, ref uint punTagCount); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetLiveCollisionBoundsTagsInfo GetLiveCollisionBoundsTagsInfo; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _SetWorkingPhysicalBoundsInfo([In, Out] HmdQuad_t[] pQuadsBuffer, uint unQuadsCount); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetWorkingPhysicalBoundsInfo SetWorkingPhysicalBoundsInfo; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetLivePhysicalBoundsInfo([In, Out] HmdQuad_t[] pQuadsBuffer, ref uint punQuadsCount); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetLivePhysicalBoundsInfo GetLivePhysicalBoundsInfo; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _ExportLiveToBuffer(System.Text.StringBuilder pBuffer, ref uint pnBufferLength); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ExportLiveToBuffer ExportLiveToBuffer; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _ImportFromBufferToWorking(string pBuffer, uint nImportFlags); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ImportFromBufferToWorking ImportFromBufferToWorking; + +} + +[StructLayout(LayoutKind.Sequential)] +public struct IVRCompositor +{ + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _SetTrackingSpace(ETrackingUniverseOrigin eOrigin); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetTrackingSpace SetTrackingSpace; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate ETrackingUniverseOrigin _GetTrackingSpace(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetTrackingSpace GetTrackingSpace; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRCompositorError _WaitGetPoses([In, Out] TrackedDevicePose_t[] pRenderPoseArray, uint unRenderPoseArrayCount, [In, Out] TrackedDevicePose_t[] pGamePoseArray, uint unGamePoseArrayCount); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _WaitGetPoses WaitGetPoses; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRCompositorError _GetLastPoses([In, Out] TrackedDevicePose_t[] pRenderPoseArray, uint unRenderPoseArrayCount, [In, Out] TrackedDevicePose_t[] pGamePoseArray, uint unGamePoseArrayCount); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetLastPoses GetLastPoses; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRCompositorError _GetLastPoseForTrackedDeviceIndex(uint unDeviceIndex, ref TrackedDevicePose_t pOutputPose, ref TrackedDevicePose_t pOutputGamePose); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetLastPoseForTrackedDeviceIndex GetLastPoseForTrackedDeviceIndex; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRCompositorError _Submit(EVREye eEye, ref Texture_t pTexture, ref VRTextureBounds_t pBounds, EVRSubmitFlags nSubmitFlags); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _Submit Submit; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _ClearLastSubmittedFrame(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ClearLastSubmittedFrame ClearLastSubmittedFrame; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _PostPresentHandoff(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _PostPresentHandoff PostPresentHandoff; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetFrameTiming(ref Compositor_FrameTiming pTiming, uint unFramesAgo); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetFrameTiming GetFrameTiming; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate float _GetFrameTimeRemaining(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetFrameTimeRemaining GetFrameTimeRemaining; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _GetCumulativeStats(ref Compositor_CumulativeStats pStats, uint nStatsSizeInBytes); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetCumulativeStats GetCumulativeStats; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _FadeToColor(float fSeconds, float fRed, float fGreen, float fBlue, float fAlpha, bool bBackground); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _FadeToColor FadeToColor; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _FadeGrid(float fSeconds, bool bFadeIn); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _FadeGrid FadeGrid; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRCompositorError _SetSkyboxOverride([In, Out] Texture_t[] pTextures, uint unTextureCount); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetSkyboxOverride SetSkyboxOverride; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _ClearSkyboxOverride(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ClearSkyboxOverride ClearSkyboxOverride; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _CompositorBringToFront(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _CompositorBringToFront CompositorBringToFront; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _CompositorGoToBack(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _CompositorGoToBack CompositorGoToBack; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _CompositorQuit(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _CompositorQuit CompositorQuit; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _IsFullscreen(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _IsFullscreen IsFullscreen; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetCurrentSceneFocusProcess(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetCurrentSceneFocusProcess GetCurrentSceneFocusProcess; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetLastFrameRenderer(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetLastFrameRenderer GetLastFrameRenderer; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _CanRenderScene(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _CanRenderScene CanRenderScene; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _ShowMirrorWindow(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ShowMirrorWindow ShowMirrorWindow; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _HideMirrorWindow(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _HideMirrorWindow HideMirrorWindow; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _IsMirrorWindowVisible(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _IsMirrorWindowVisible IsMirrorWindowVisible; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _CompositorDumpImages(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _CompositorDumpImages CompositorDumpImages; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _ShouldAppRenderWithLowResources(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ShouldAppRenderWithLowResources ShouldAppRenderWithLowResources; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _ForceInterleavedReprojectionOn(bool bOverride); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ForceInterleavedReprojectionOn ForceInterleavedReprojectionOn; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _ForceReconnectProcess(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ForceReconnectProcess ForceReconnectProcess; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _SuspendRendering(bool bSuspend); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SuspendRendering SuspendRendering; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRCompositorError _GetMirrorTextureD3D11(EVREye eEye, IntPtr pD3D11DeviceOrResource, ref IntPtr ppD3D11ShaderResourceView); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetMirrorTextureD3D11 GetMirrorTextureD3D11; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRCompositorError _GetMirrorTextureGL(EVREye eEye, ref uint pglTextureId, IntPtr pglSharedTextureHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetMirrorTextureGL GetMirrorTextureGL; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _ReleaseSharedGLTexture(uint glTextureId, IntPtr glSharedTextureHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ReleaseSharedGLTexture ReleaseSharedGLTexture; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _LockGLSharedTextureForAccess(IntPtr glSharedTextureHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _LockGLSharedTextureForAccess LockGLSharedTextureForAccess; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _UnlockGLSharedTextureForAccess(IntPtr glSharedTextureHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _UnlockGLSharedTextureForAccess UnlockGLSharedTextureForAccess; + +} + +[StructLayout(LayoutKind.Sequential)] +public struct IVROverlay +{ + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _FindOverlay(string pchOverlayKey, ref ulong pOverlayHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _FindOverlay FindOverlay; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _CreateOverlay(string pchOverlayKey, string pchOverlayFriendlyName, ref ulong pOverlayHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _CreateOverlay CreateOverlay; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _DestroyOverlay(ulong ulOverlayHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _DestroyOverlay DestroyOverlay; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetHighQualityOverlay(ulong ulOverlayHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetHighQualityOverlay SetHighQualityOverlay; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate ulong _GetHighQualityOverlay(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetHighQualityOverlay GetHighQualityOverlay; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetOverlayKey(ulong ulOverlayHandle, System.Text.StringBuilder pchValue, uint unBufferSize, ref EVROverlayError pError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayKey GetOverlayKey; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetOverlayName(ulong ulOverlayHandle, System.Text.StringBuilder pchValue, uint unBufferSize, ref EVROverlayError pError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayName GetOverlayName; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayImageData(ulong ulOverlayHandle, IntPtr pvBuffer, uint unBufferSize, ref uint punWidth, ref uint punHeight); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayImageData GetOverlayImageData; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate IntPtr _GetOverlayErrorNameFromEnum(EVROverlayError error); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayErrorNameFromEnum GetOverlayErrorNameFromEnum; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayRenderingPid(ulong ulOverlayHandle, uint unPID); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayRenderingPid SetOverlayRenderingPid; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetOverlayRenderingPid(ulong ulOverlayHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayRenderingPid GetOverlayRenderingPid; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayFlag(ulong ulOverlayHandle, VROverlayFlags eOverlayFlag, bool bEnabled); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayFlag SetOverlayFlag; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayFlag(ulong ulOverlayHandle, VROverlayFlags eOverlayFlag, ref bool pbEnabled); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayFlag GetOverlayFlag; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayColor(ulong ulOverlayHandle, float fRed, float fGreen, float fBlue); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayColor SetOverlayColor; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayColor(ulong ulOverlayHandle, ref float pfRed, ref float pfGreen, ref float pfBlue); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayColor GetOverlayColor; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayAlpha(ulong ulOverlayHandle, float fAlpha); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayAlpha SetOverlayAlpha; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayAlpha(ulong ulOverlayHandle, ref float pfAlpha); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayAlpha GetOverlayAlpha; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayTexelAspect(ulong ulOverlayHandle, float fTexelAspect); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayTexelAspect SetOverlayTexelAspect; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayTexelAspect(ulong ulOverlayHandle, ref float pfTexelAspect); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayTexelAspect GetOverlayTexelAspect; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlaySortOrder(ulong ulOverlayHandle, uint unSortOrder); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlaySortOrder SetOverlaySortOrder; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlaySortOrder(ulong ulOverlayHandle, ref uint punSortOrder); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlaySortOrder GetOverlaySortOrder; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayWidthInMeters(ulong ulOverlayHandle, float fWidthInMeters); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayWidthInMeters SetOverlayWidthInMeters; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayWidthInMeters(ulong ulOverlayHandle, ref float pfWidthInMeters); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayWidthInMeters GetOverlayWidthInMeters; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayAutoCurveDistanceRangeInMeters(ulong ulOverlayHandle, float fMinDistanceInMeters, float fMaxDistanceInMeters); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayAutoCurveDistanceRangeInMeters SetOverlayAutoCurveDistanceRangeInMeters; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayAutoCurveDistanceRangeInMeters(ulong ulOverlayHandle, ref float pfMinDistanceInMeters, ref float pfMaxDistanceInMeters); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayAutoCurveDistanceRangeInMeters GetOverlayAutoCurveDistanceRangeInMeters; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayTextureColorSpace(ulong ulOverlayHandle, EColorSpace eTextureColorSpace); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayTextureColorSpace SetOverlayTextureColorSpace; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayTextureColorSpace(ulong ulOverlayHandle, ref EColorSpace peTextureColorSpace); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayTextureColorSpace GetOverlayTextureColorSpace; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayTextureBounds(ulong ulOverlayHandle, ref VRTextureBounds_t pOverlayTextureBounds); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayTextureBounds SetOverlayTextureBounds; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayTextureBounds(ulong ulOverlayHandle, ref VRTextureBounds_t pOverlayTextureBounds); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayTextureBounds GetOverlayTextureBounds; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayTransformType(ulong ulOverlayHandle, ref VROverlayTransformType peTransformType); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayTransformType GetOverlayTransformType; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayTransformAbsolute(ulong ulOverlayHandle, ETrackingUniverseOrigin eTrackingOrigin, ref HmdMatrix34_t pmatTrackingOriginToOverlayTransform); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayTransformAbsolute SetOverlayTransformAbsolute; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayTransformAbsolute(ulong ulOverlayHandle, ref ETrackingUniverseOrigin peTrackingOrigin, ref HmdMatrix34_t pmatTrackingOriginToOverlayTransform); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayTransformAbsolute GetOverlayTransformAbsolute; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayTransformTrackedDeviceRelative(ulong ulOverlayHandle, uint unTrackedDevice, ref HmdMatrix34_t pmatTrackedDeviceToOverlayTransform); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayTransformTrackedDeviceRelative SetOverlayTransformTrackedDeviceRelative; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayTransformTrackedDeviceRelative(ulong ulOverlayHandle, ref uint punTrackedDevice, ref HmdMatrix34_t pmatTrackedDeviceToOverlayTransform); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayTransformTrackedDeviceRelative GetOverlayTransformTrackedDeviceRelative; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayTransformTrackedDeviceComponent(ulong ulOverlayHandle, uint unDeviceIndex, string pchComponentName); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayTransformTrackedDeviceComponent SetOverlayTransformTrackedDeviceComponent; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayTransformTrackedDeviceComponent(ulong ulOverlayHandle, ref uint punDeviceIndex, string pchComponentName, uint unComponentNameSize); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayTransformTrackedDeviceComponent GetOverlayTransformTrackedDeviceComponent; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _ShowOverlay(ulong ulOverlayHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ShowOverlay ShowOverlay; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _HideOverlay(ulong ulOverlayHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _HideOverlay HideOverlay; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _IsOverlayVisible(ulong ulOverlayHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _IsOverlayVisible IsOverlayVisible; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetTransformForOverlayCoordinates(ulong ulOverlayHandle, ETrackingUniverseOrigin eTrackingOrigin, HmdVector2_t coordinatesInOverlay, ref HmdMatrix34_t pmatTransform); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetTransformForOverlayCoordinates GetTransformForOverlayCoordinates; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _PollNextOverlayEvent(ulong ulOverlayHandle, ref VREvent_t pEvent, uint uncbVREvent); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _PollNextOverlayEvent PollNextOverlayEvent; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayInputMethod(ulong ulOverlayHandle, ref VROverlayInputMethod peInputMethod); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayInputMethod GetOverlayInputMethod; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayInputMethod(ulong ulOverlayHandle, VROverlayInputMethod eInputMethod); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayInputMethod SetOverlayInputMethod; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayMouseScale(ulong ulOverlayHandle, ref HmdVector2_t pvecMouseScale); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayMouseScale GetOverlayMouseScale; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayMouseScale(ulong ulOverlayHandle, ref HmdVector2_t pvecMouseScale); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayMouseScale SetOverlayMouseScale; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _ComputeOverlayIntersection(ulong ulOverlayHandle, ref VROverlayIntersectionParams_t pParams, ref VROverlayIntersectionResults_t pResults); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ComputeOverlayIntersection ComputeOverlayIntersection; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _HandleControllerOverlayInteractionAsMouse(ulong ulOverlayHandle, uint unControllerDeviceIndex); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _HandleControllerOverlayInteractionAsMouse HandleControllerOverlayInteractionAsMouse; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _IsHoverTargetOverlay(ulong ulOverlayHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _IsHoverTargetOverlay IsHoverTargetOverlay; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate ulong _GetGamepadFocusOverlay(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetGamepadFocusOverlay GetGamepadFocusOverlay; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetGamepadFocusOverlay(ulong ulNewFocusOverlay); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetGamepadFocusOverlay SetGamepadFocusOverlay; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayNeighbor(EOverlayDirection eDirection, ulong ulFrom, ulong ulTo); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayNeighbor SetOverlayNeighbor; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _MoveGamepadFocusToNeighbor(EOverlayDirection eDirection, ulong ulFrom); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _MoveGamepadFocusToNeighbor MoveGamepadFocusToNeighbor; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayTexture(ulong ulOverlayHandle, ref Texture_t pTexture); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayTexture SetOverlayTexture; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _ClearOverlayTexture(ulong ulOverlayHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ClearOverlayTexture ClearOverlayTexture; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayRaw(ulong ulOverlayHandle, IntPtr pvBuffer, uint unWidth, uint unHeight, uint unDepth); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayRaw SetOverlayRaw; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayFromFile(ulong ulOverlayHandle, string pchFilePath); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayFromFile SetOverlayFromFile; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayTexture(ulong ulOverlayHandle, ref IntPtr pNativeTextureHandle, IntPtr pNativeTextureRef, ref uint pWidth, ref uint pHeight, ref uint pNativeFormat, ref EGraphicsAPIConvention pAPI, ref EColorSpace pColorSpace); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayTexture GetOverlayTexture; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _ReleaseNativeOverlayHandle(ulong ulOverlayHandle, IntPtr pNativeTextureHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ReleaseNativeOverlayHandle ReleaseNativeOverlayHandle; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetOverlayTextureSize(ulong ulOverlayHandle, ref uint pWidth, ref uint pHeight); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetOverlayTextureSize GetOverlayTextureSize; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _CreateDashboardOverlay(string pchOverlayKey, string pchOverlayFriendlyName, ref ulong pMainHandle, ref ulong pThumbnailHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _CreateDashboardOverlay CreateDashboardOverlay; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _IsDashboardVisible(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _IsDashboardVisible IsDashboardVisible; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _IsActiveDashboardOverlay(ulong ulOverlayHandle); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _IsActiveDashboardOverlay IsActiveDashboardOverlay; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetDashboardOverlaySceneProcess(ulong ulOverlayHandle, uint unProcessId); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetDashboardOverlaySceneProcess SetDashboardOverlaySceneProcess; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _GetDashboardOverlaySceneProcess(ulong ulOverlayHandle, ref uint punProcessId); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetDashboardOverlaySceneProcess GetDashboardOverlaySceneProcess; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _ShowDashboard(string pchOverlayToShow); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ShowDashboard ShowDashboard; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetPrimaryDashboardDevice(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetPrimaryDashboardDevice GetPrimaryDashboardDevice; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _ShowKeyboard(int eInputMode, int eLineInputMode, string pchDescription, uint unCharMax, string pchExistingText, bool bUseMinimalMode, ulong uUserValue); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ShowKeyboard ShowKeyboard; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _ShowKeyboardForOverlay(ulong ulOverlayHandle, int eInputMode, int eLineInputMode, string pchDescription, uint unCharMax, string pchExistingText, bool bUseMinimalMode, ulong uUserValue); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _ShowKeyboardForOverlay ShowKeyboardForOverlay; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetKeyboardText(System.Text.StringBuilder pchText, uint cchText); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetKeyboardText GetKeyboardText; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _HideKeyboard(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _HideKeyboard HideKeyboard; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _SetKeyboardTransformAbsolute(ETrackingUniverseOrigin eTrackingOrigin, ref HmdMatrix34_t pmatTrackingOriginToKeyboardTransform); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetKeyboardTransformAbsolute SetKeyboardTransformAbsolute; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _SetKeyboardPositionForOverlay(ulong ulOverlayHandle, HmdRect2_t avoidRect); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetKeyboardPositionForOverlay SetKeyboardPositionForOverlay; + +} + +[StructLayout(LayoutKind.Sequential)] +public struct IVRRenderModels +{ + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRRenderModelError _LoadRenderModel_Async(string pchRenderModelName, ref IntPtr ppRenderModel); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _LoadRenderModel_Async LoadRenderModel_Async; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _FreeRenderModel(IntPtr pRenderModel); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _FreeRenderModel FreeRenderModel; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRRenderModelError _LoadTexture_Async(int textureId, ref IntPtr ppTexture); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _LoadTexture_Async LoadTexture_Async; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _FreeTexture(IntPtr pTexture); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _FreeTexture FreeTexture; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRRenderModelError _LoadTextureD3D11_Async(int textureId, IntPtr pD3D11Device, ref IntPtr ppD3D11Texture2D); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _LoadTextureD3D11_Async LoadTextureD3D11_Async; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRRenderModelError _LoadIntoTextureD3D11_Async(int textureId, IntPtr pDstTexture); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _LoadIntoTextureD3D11_Async LoadIntoTextureD3D11_Async; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _FreeTextureD3D11(IntPtr pD3D11Texture2D); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _FreeTextureD3D11 FreeTextureD3D11; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetRenderModelName(uint unRenderModelIndex, System.Text.StringBuilder pchRenderModelName, uint unRenderModelNameLen); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetRenderModelName GetRenderModelName; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetRenderModelCount(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetRenderModelCount GetRenderModelCount; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetComponentCount(string pchRenderModelName); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetComponentCount GetComponentCount; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetComponentName(string pchRenderModelName, uint unComponentIndex, System.Text.StringBuilder pchComponentName, uint unComponentNameLen); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetComponentName GetComponentName; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate ulong _GetComponentButtonMask(string pchRenderModelName, string pchComponentName); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetComponentButtonMask GetComponentButtonMask; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetComponentRenderModelName(string pchRenderModelName, string pchComponentName, System.Text.StringBuilder pchComponentRenderModelName, uint unComponentRenderModelNameLen); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetComponentRenderModelName GetComponentRenderModelName; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetComponentState(string pchRenderModelName, string pchComponentName, ref VRControllerState_t pControllerState, ref RenderModel_ControllerMode_State_t pState, ref RenderModel_ComponentState_t pComponentState); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetComponentState GetComponentState; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _RenderModelHasComponent(string pchRenderModelName, string pchComponentName); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _RenderModelHasComponent RenderModelHasComponent; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetRenderModelThumbnailURL(string pchRenderModelName, System.Text.StringBuilder pchThumbnailURL, uint unThumbnailURLLen, ref EVRRenderModelError peError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetRenderModelThumbnailURL GetRenderModelThumbnailURL; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetRenderModelOriginalPath(string pchRenderModelName, System.Text.StringBuilder pchOriginalPath, uint unOriginalPathLen, ref EVRRenderModelError peError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetRenderModelOriginalPath GetRenderModelOriginalPath; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate IntPtr _GetRenderModelErrorNameFromEnum(EVRRenderModelError error); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetRenderModelErrorNameFromEnum GetRenderModelErrorNameFromEnum; + +} + +[StructLayout(LayoutKind.Sequential)] +public struct IVRNotifications +{ + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRNotificationError _CreateNotification(ulong ulOverlayHandle, ulong ulUserValue, EVRNotificationType type, string pchText, EVRNotificationStyle style, ref NotificationBitmap_t pImage, ref uint pNotificationId); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _CreateNotification CreateNotification; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRNotificationError _RemoveNotification(uint notificationId); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _RemoveNotification RemoveNotification; + +} + +[StructLayout(LayoutKind.Sequential)] +public struct IVRSettings +{ + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate IntPtr _GetSettingsErrorNameFromEnum(EVRSettingsError eError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetSettingsErrorNameFromEnum GetSettingsErrorNameFromEnum; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _Sync(bool bForce, ref EVRSettingsError peError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _Sync Sync; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _SetBool(string pchSection, string pchSettingsKey, bool bValue, ref EVRSettingsError peError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetBool SetBool; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _SetInt32(string pchSection, string pchSettingsKey, int nValue, ref EVRSettingsError peError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetInt32 SetInt32; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _SetFloat(string pchSection, string pchSettingsKey, float flValue, ref EVRSettingsError peError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetFloat SetFloat; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _SetString(string pchSection, string pchSettingsKey, string pchValue, ref EVRSettingsError peError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetString SetString; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _GetBool(string pchSection, string pchSettingsKey, ref EVRSettingsError peError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetBool GetBool; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate int _GetInt32(string pchSection, string pchSettingsKey, ref EVRSettingsError peError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetInt32 GetInt32; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate float _GetFloat(string pchSection, string pchSettingsKey, ref EVRSettingsError peError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetFloat GetFloat; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _GetString(string pchSection, string pchSettingsKey, System.Text.StringBuilder pchValue, uint unValueLen, ref EVRSettingsError peError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetString GetString; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _RemoveSection(string pchSection, ref EVRSettingsError peError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _RemoveSection RemoveSection; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _RemoveKeyInSection(string pchSection, string pchSettingsKey, ref EVRSettingsError peError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _RemoveKeyInSection RemoveKeyInSection; + +} + +[StructLayout(LayoutKind.Sequential)] +public struct IVRScreenshots +{ + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRScreenshotError _RequestScreenshot(ref uint pOutScreenshotHandle, EVRScreenshotType type, string pchPreviewFilename, string pchVRFilename); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _RequestScreenshot RequestScreenshot; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRScreenshotError _HookScreenshot([In, Out] EVRScreenshotType[] pSupportedTypes, int numTypes); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _HookScreenshot HookScreenshot; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRScreenshotType _GetScreenshotPropertyType(uint screenshotHandle, ref EVRScreenshotError pError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetScreenshotPropertyType GetScreenshotPropertyType; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetScreenshotPropertyFilename(uint screenshotHandle, EVRScreenshotPropertyFilenames filenameType, System.Text.StringBuilder pchFilename, uint cchFilename, ref EVRScreenshotError pError); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetScreenshotPropertyFilename GetScreenshotPropertyFilename; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRScreenshotError _UpdateScreenshotProgress(uint screenshotHandle, float flProgress); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _UpdateScreenshotProgress UpdateScreenshotProgress; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRScreenshotError _TakeStereoScreenshot(ref uint pOutScreenshotHandle, string pchPreviewFilename, string pchVRFilename); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _TakeStereoScreenshot TakeStereoScreenshot; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRScreenshotError _SubmitScreenshot(uint screenshotHandle, EVRScreenshotType type, string pchSourcePreviewFilename, string pchSourceVRFilename); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SubmitScreenshot SubmitScreenshot; + +} + +[StructLayout(LayoutKind.Sequential)] +public struct IVRResources +{ + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _LoadSharedResource(string pchResourceName, string pchBuffer, uint unBufferLen); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _LoadSharedResource LoadSharedResource; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate uint _GetResourceFullPath(string pchResourceName, string pchResourceTypeDirectory, string pchPathBuffer, uint unBufferLen); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetResourceFullPath GetResourceFullPath; + +} + + +public class CVRSystem +{ + IVRSystem FnTable; + internal CVRSystem(IntPtr pInterface) + { + FnTable = (IVRSystem)Marshal.PtrToStructure(pInterface, typeof(IVRSystem)); + } + public void GetRecommendedRenderTargetSize(ref uint pnWidth,ref uint pnHeight) + { + pnWidth = 0; + pnHeight = 0; + FnTable.GetRecommendedRenderTargetSize(ref pnWidth,ref pnHeight); + } + public HmdMatrix44_t GetProjectionMatrix(EVREye eEye,float fNearZ,float fFarZ,EGraphicsAPIConvention eProjType) + { + HmdMatrix44_t result = FnTable.GetProjectionMatrix(eEye,fNearZ,fFarZ,eProjType); + return result; + } + public void GetProjectionRaw(EVREye eEye,ref float pfLeft,ref float pfRight,ref float pfTop,ref float pfBottom) + { + pfLeft = 0; + pfRight = 0; + pfTop = 0; + pfBottom = 0; + FnTable.GetProjectionRaw(eEye,ref pfLeft,ref pfRight,ref pfTop,ref pfBottom); + } + public DistortionCoordinates_t ComputeDistortion(EVREye eEye,float fU,float fV) + { + DistortionCoordinates_t result = FnTable.ComputeDistortion(eEye,fU,fV); + return result; + } + public HmdMatrix34_t GetEyeToHeadTransform(EVREye eEye) + { + HmdMatrix34_t result = FnTable.GetEyeToHeadTransform(eEye); + return result; + } + public bool GetTimeSinceLastVsync(ref float pfSecondsSinceLastVsync,ref ulong pulFrameCounter) + { + pfSecondsSinceLastVsync = 0; + pulFrameCounter = 0; + bool result = FnTable.GetTimeSinceLastVsync(ref pfSecondsSinceLastVsync,ref pulFrameCounter); + return result; + } + public int GetD3D9AdapterIndex() + { + int result = FnTable.GetD3D9AdapterIndex(); + return result; + } + public void GetDXGIOutputInfo(ref int pnAdapterIndex) + { + pnAdapterIndex = 0; + FnTable.GetDXGIOutputInfo(ref pnAdapterIndex); + } + public bool IsDisplayOnDesktop() + { + bool result = FnTable.IsDisplayOnDesktop(); + return result; + } + public bool SetDisplayVisibility(bool bIsVisibleOnDesktop) + { + bool result = FnTable.SetDisplayVisibility(bIsVisibleOnDesktop); + return result; + } + public void GetDeviceToAbsoluteTrackingPose(ETrackingUniverseOrigin eOrigin,float fPredictedSecondsToPhotonsFromNow,TrackedDevicePose_t [] pTrackedDevicePoseArray) + { + FnTable.GetDeviceToAbsoluteTrackingPose(eOrigin,fPredictedSecondsToPhotonsFromNow,pTrackedDevicePoseArray,(uint) pTrackedDevicePoseArray.Length); + } + public void ResetSeatedZeroPose() + { + FnTable.ResetSeatedZeroPose(); + } + public HmdMatrix34_t GetSeatedZeroPoseToStandingAbsoluteTrackingPose() + { + HmdMatrix34_t result = FnTable.GetSeatedZeroPoseToStandingAbsoluteTrackingPose(); + return result; + } + public HmdMatrix34_t GetRawZeroPoseToStandingAbsoluteTrackingPose() + { + HmdMatrix34_t result = FnTable.GetRawZeroPoseToStandingAbsoluteTrackingPose(); + return result; + } + public uint GetSortedTrackedDeviceIndicesOfClass(ETrackedDeviceClass eTrackedDeviceClass,uint [] punTrackedDeviceIndexArray,uint unRelativeToTrackedDeviceIndex) + { + uint result = FnTable.GetSortedTrackedDeviceIndicesOfClass(eTrackedDeviceClass,punTrackedDeviceIndexArray,(uint) punTrackedDeviceIndexArray.Length,unRelativeToTrackedDeviceIndex); + return result; + } + public EDeviceActivityLevel GetTrackedDeviceActivityLevel(uint unDeviceId) + { + EDeviceActivityLevel result = FnTable.GetTrackedDeviceActivityLevel(unDeviceId); + return result; + } + public void ApplyTransform(ref TrackedDevicePose_t pOutputPose,ref TrackedDevicePose_t pTrackedDevicePose,ref HmdMatrix34_t pTransform) + { + FnTable.ApplyTransform(ref pOutputPose,ref pTrackedDevicePose,ref pTransform); + } + public uint GetTrackedDeviceIndexForControllerRole(ETrackedControllerRole unDeviceType) + { + uint result = FnTable.GetTrackedDeviceIndexForControllerRole(unDeviceType); + return result; + } + public ETrackedControllerRole GetControllerRoleForTrackedDeviceIndex(uint unDeviceIndex) + { + ETrackedControllerRole result = FnTable.GetControllerRoleForTrackedDeviceIndex(unDeviceIndex); + return result; + } + public ETrackedDeviceClass GetTrackedDeviceClass(uint unDeviceIndex) + { + ETrackedDeviceClass result = FnTable.GetTrackedDeviceClass(unDeviceIndex); + return result; + } + public bool IsTrackedDeviceConnected(uint unDeviceIndex) + { + bool result = FnTable.IsTrackedDeviceConnected(unDeviceIndex); + return result; + } + public bool GetBoolTrackedDeviceProperty(uint unDeviceIndex,ETrackedDeviceProperty prop,ref ETrackedPropertyError pError) + { + bool result = FnTable.GetBoolTrackedDeviceProperty(unDeviceIndex,prop,ref pError); + return result; + } + public float GetFloatTrackedDeviceProperty(uint unDeviceIndex,ETrackedDeviceProperty prop,ref ETrackedPropertyError pError) + { + float result = FnTable.GetFloatTrackedDeviceProperty(unDeviceIndex,prop,ref pError); + return result; + } + public int GetInt32TrackedDeviceProperty(uint unDeviceIndex,ETrackedDeviceProperty prop,ref ETrackedPropertyError pError) + { + int result = FnTable.GetInt32TrackedDeviceProperty(unDeviceIndex,prop,ref pError); + return result; + } + public ulong GetUint64TrackedDeviceProperty(uint unDeviceIndex,ETrackedDeviceProperty prop,ref ETrackedPropertyError pError) + { + ulong result = FnTable.GetUint64TrackedDeviceProperty(unDeviceIndex,prop,ref pError); + return result; + } + public HmdMatrix34_t GetMatrix34TrackedDeviceProperty(uint unDeviceIndex,ETrackedDeviceProperty prop,ref ETrackedPropertyError pError) + { + HmdMatrix34_t result = FnTable.GetMatrix34TrackedDeviceProperty(unDeviceIndex,prop,ref pError); + return result; + } + public uint GetStringTrackedDeviceProperty(uint unDeviceIndex,ETrackedDeviceProperty prop,System.Text.StringBuilder pchValue,uint unBufferSize,ref ETrackedPropertyError pError) + { + uint result = FnTable.GetStringTrackedDeviceProperty(unDeviceIndex,prop,pchValue,unBufferSize,ref pError); + return result; + } + public string GetPropErrorNameFromEnum(ETrackedPropertyError error) + { + IntPtr result = FnTable.GetPropErrorNameFromEnum(error); + return Marshal.PtrToStringAnsi(result); + } + public bool PollNextEvent(ref VREvent_t pEvent,uint uncbVREvent) + { + bool result = FnTable.PollNextEvent(ref pEvent,uncbVREvent); + return result; + } + public bool PollNextEventWithPose(ETrackingUniverseOrigin eOrigin,ref VREvent_t pEvent,uint uncbVREvent,ref TrackedDevicePose_t pTrackedDevicePose) + { + bool result = FnTable.PollNextEventWithPose(eOrigin,ref pEvent,uncbVREvent,ref pTrackedDevicePose); + return result; + } + public string GetEventTypeNameFromEnum(EVREventType eType) + { + IntPtr result = FnTable.GetEventTypeNameFromEnum(eType); + return Marshal.PtrToStringAnsi(result); + } + public HiddenAreaMesh_t GetHiddenAreaMesh(EVREye eEye) + { + HiddenAreaMesh_t result = FnTable.GetHiddenAreaMesh(eEye); + return result; + } + public bool GetControllerState(uint unControllerDeviceIndex,ref VRControllerState_t pControllerState) + { + bool result = FnTable.GetControllerState(unControllerDeviceIndex,ref pControllerState); + return result; + } + public bool GetControllerStateWithPose(ETrackingUniverseOrigin eOrigin,uint unControllerDeviceIndex,ref VRControllerState_t pControllerState,ref TrackedDevicePose_t pTrackedDevicePose) + { + bool result = FnTable.GetControllerStateWithPose(eOrigin,unControllerDeviceIndex,ref pControllerState,ref pTrackedDevicePose); + return result; + } + public void TriggerHapticPulse(uint unControllerDeviceIndex,uint unAxisId,char usDurationMicroSec) + { + FnTable.TriggerHapticPulse(unControllerDeviceIndex,unAxisId,usDurationMicroSec); + } + public string GetButtonIdNameFromEnum(EVRButtonId eButtonId) + { + IntPtr result = FnTable.GetButtonIdNameFromEnum(eButtonId); + return Marshal.PtrToStringAnsi(result); + } + public string GetControllerAxisTypeNameFromEnum(EVRControllerAxisType eAxisType) + { + IntPtr result = FnTable.GetControllerAxisTypeNameFromEnum(eAxisType); + return Marshal.PtrToStringAnsi(result); + } + public bool CaptureInputFocus() + { + bool result = FnTable.CaptureInputFocus(); + return result; + } + public void ReleaseInputFocus() + { + FnTable.ReleaseInputFocus(); + } + public bool IsInputFocusCapturedByAnotherProcess() + { + bool result = FnTable.IsInputFocusCapturedByAnotherProcess(); + return result; + } + public uint DriverDebugRequest(uint unDeviceIndex,string pchRequest,string pchResponseBuffer,uint unResponseBufferSize) + { + uint result = FnTable.DriverDebugRequest(unDeviceIndex,pchRequest,pchResponseBuffer,unResponseBufferSize); + return result; + } + public EVRFirmwareError PerformFirmwareUpdate(uint unDeviceIndex) + { + EVRFirmwareError result = FnTable.PerformFirmwareUpdate(unDeviceIndex); + return result; + } + public void AcknowledgeQuit_Exiting() + { + FnTable.AcknowledgeQuit_Exiting(); + } + public void AcknowledgeQuit_UserPrompt() + { + FnTable.AcknowledgeQuit_UserPrompt(); + } +} + + +public class CVRExtendedDisplay +{ + IVRExtendedDisplay FnTable; + internal CVRExtendedDisplay(IntPtr pInterface) + { + FnTable = (IVRExtendedDisplay)Marshal.PtrToStructure(pInterface, typeof(IVRExtendedDisplay)); + } + public void GetWindowBounds(ref int pnX,ref int pnY,ref uint pnWidth,ref uint pnHeight) + { + pnX = 0; + pnY = 0; + pnWidth = 0; + pnHeight = 0; + FnTable.GetWindowBounds(ref pnX,ref pnY,ref pnWidth,ref pnHeight); + } + public void GetEyeOutputViewport(EVREye eEye,ref uint pnX,ref uint pnY,ref uint pnWidth,ref uint pnHeight) + { + pnX = 0; + pnY = 0; + pnWidth = 0; + pnHeight = 0; + FnTable.GetEyeOutputViewport(eEye,ref pnX,ref pnY,ref pnWidth,ref pnHeight); + } + public void GetDXGIOutputInfo(ref int pnAdapterIndex,ref int pnAdapterOutputIndex) + { + pnAdapterIndex = 0; + pnAdapterOutputIndex = 0; + FnTable.GetDXGIOutputInfo(ref pnAdapterIndex,ref pnAdapterOutputIndex); + } +} + + +public class CVRTrackedCamera +{ + IVRTrackedCamera FnTable; + internal CVRTrackedCamera(IntPtr pInterface) + { + FnTable = (IVRTrackedCamera)Marshal.PtrToStructure(pInterface, typeof(IVRTrackedCamera)); + } + public string GetCameraErrorNameFromEnum(EVRTrackedCameraError eCameraError) + { + IntPtr result = FnTable.GetCameraErrorNameFromEnum(eCameraError); + return Marshal.PtrToStringAnsi(result); + } + public EVRTrackedCameraError HasCamera(uint nDeviceIndex,ref bool pHasCamera) + { + pHasCamera = false; + EVRTrackedCameraError result = FnTable.HasCamera(nDeviceIndex,ref pHasCamera); + return result; + } + public EVRTrackedCameraError GetCameraFrameSize(uint nDeviceIndex,EVRTrackedCameraFrameType eFrameType,ref uint pnWidth,ref uint pnHeight,ref uint pnFrameBufferSize) + { + pnWidth = 0; + pnHeight = 0; + pnFrameBufferSize = 0; + EVRTrackedCameraError result = FnTable.GetCameraFrameSize(nDeviceIndex,eFrameType,ref pnWidth,ref pnHeight,ref pnFrameBufferSize); + return result; + } + public EVRTrackedCameraError GetCameraIntrinisics(uint nDeviceIndex,EVRTrackedCameraFrameType eFrameType,ref HmdVector2_t pFocalLength,ref HmdVector2_t pCenter) + { + EVRTrackedCameraError result = FnTable.GetCameraIntrinisics(nDeviceIndex,eFrameType,ref pFocalLength,ref pCenter); + return result; + } + public EVRTrackedCameraError GetCameraProjection(uint nDeviceIndex,EVRTrackedCameraFrameType eFrameType,float flZNear,float flZFar,ref HmdMatrix44_t pProjection) + { + EVRTrackedCameraError result = FnTable.GetCameraProjection(nDeviceIndex,eFrameType,flZNear,flZFar,ref pProjection); + return result; + } + public EVRTrackedCameraError AcquireVideoStreamingService(uint nDeviceIndex,ref ulong pHandle) + { + pHandle = 0; + EVRTrackedCameraError result = FnTable.AcquireVideoStreamingService(nDeviceIndex,ref pHandle); + return result; + } + public EVRTrackedCameraError ReleaseVideoStreamingService(ulong hTrackedCamera) + { + EVRTrackedCameraError result = FnTable.ReleaseVideoStreamingService(hTrackedCamera); + return result; + } + public EVRTrackedCameraError GetVideoStreamFrameBuffer(ulong hTrackedCamera,EVRTrackedCameraFrameType eFrameType,IntPtr pFrameBuffer,uint nFrameBufferSize,ref CameraVideoStreamFrameHeader_t pFrameHeader,uint nFrameHeaderSize) + { + EVRTrackedCameraError result = FnTable.GetVideoStreamFrameBuffer(hTrackedCamera,eFrameType,pFrameBuffer,nFrameBufferSize,ref pFrameHeader,nFrameHeaderSize); + return result; + } + public EVRTrackedCameraError GetVideoStreamTextureSize(uint nDeviceIndex,EVRTrackedCameraFrameType eFrameType,ref VRTextureBounds_t pTextureBounds,ref uint pnWidth,ref uint pnHeight) + { + pnWidth = 0; + pnHeight = 0; + EVRTrackedCameraError result = FnTable.GetVideoStreamTextureSize(nDeviceIndex,eFrameType,ref pTextureBounds,ref pnWidth,ref pnHeight); + return result; + } + public EVRTrackedCameraError GetVideoStreamTextureD3D11(ulong hTrackedCamera,EVRTrackedCameraFrameType eFrameType,IntPtr pD3D11DeviceOrResource,ref IntPtr ppD3D11ShaderResourceView,ref CameraVideoStreamFrameHeader_t pFrameHeader,uint nFrameHeaderSize) + { + EVRTrackedCameraError result = FnTable.GetVideoStreamTextureD3D11(hTrackedCamera,eFrameType,pD3D11DeviceOrResource,ref ppD3D11ShaderResourceView,ref pFrameHeader,nFrameHeaderSize); + return result; + } + public EVRTrackedCameraError GetVideoStreamTextureGL(ulong hTrackedCamera,EVRTrackedCameraFrameType eFrameType,ref uint pglTextureId,ref CameraVideoStreamFrameHeader_t pFrameHeader,uint nFrameHeaderSize) + { + pglTextureId = 0; + EVRTrackedCameraError result = FnTable.GetVideoStreamTextureGL(hTrackedCamera,eFrameType,ref pglTextureId,ref pFrameHeader,nFrameHeaderSize); + return result; + } + public EVRTrackedCameraError ReleaseVideoStreamTextureGL(ulong hTrackedCamera,uint glTextureId) + { + EVRTrackedCameraError result = FnTable.ReleaseVideoStreamTextureGL(hTrackedCamera,glTextureId); + return result; + } +} + + +public class CVRApplications +{ + IVRApplications FnTable; + internal CVRApplications(IntPtr pInterface) + { + FnTable = (IVRApplications)Marshal.PtrToStructure(pInterface, typeof(IVRApplications)); + } + public EVRApplicationError AddApplicationManifest(string pchApplicationManifestFullPath,bool bTemporary) + { + EVRApplicationError result = FnTable.AddApplicationManifest(pchApplicationManifestFullPath,bTemporary); + return result; + } + public EVRApplicationError RemoveApplicationManifest(string pchApplicationManifestFullPath) + { + EVRApplicationError result = FnTable.RemoveApplicationManifest(pchApplicationManifestFullPath); + return result; + } + public bool IsApplicationInstalled(string pchAppKey) + { + bool result = FnTable.IsApplicationInstalled(pchAppKey); + return result; + } + public uint GetApplicationCount() + { + uint result = FnTable.GetApplicationCount(); + return result; + } + public EVRApplicationError GetApplicationKeyByIndex(uint unApplicationIndex,System.Text.StringBuilder pchAppKeyBuffer,uint unAppKeyBufferLen) + { + EVRApplicationError result = FnTable.GetApplicationKeyByIndex(unApplicationIndex,pchAppKeyBuffer,unAppKeyBufferLen); + return result; + } + public EVRApplicationError GetApplicationKeyByProcessId(uint unProcessId,string pchAppKeyBuffer,uint unAppKeyBufferLen) + { + EVRApplicationError result = FnTable.GetApplicationKeyByProcessId(unProcessId,pchAppKeyBuffer,unAppKeyBufferLen); + return result; + } + public EVRApplicationError LaunchApplication(string pchAppKey) + { + EVRApplicationError result = FnTable.LaunchApplication(pchAppKey); + return result; + } + public EVRApplicationError LaunchTemplateApplication(string pchTemplateAppKey,string pchNewAppKey,AppOverrideKeys_t [] pKeys) + { + EVRApplicationError result = FnTable.LaunchTemplateApplication(pchTemplateAppKey,pchNewAppKey,pKeys,(uint) pKeys.Length); + return result; + } + public EVRApplicationError LaunchApplicationFromMimeType(string pchMimeType,string pchArgs) + { + EVRApplicationError result = FnTable.LaunchApplicationFromMimeType(pchMimeType,pchArgs); + return result; + } + public EVRApplicationError LaunchDashboardOverlay(string pchAppKey) + { + EVRApplicationError result = FnTable.LaunchDashboardOverlay(pchAppKey); + return result; + } + public bool CancelApplicationLaunch(string pchAppKey) + { + bool result = FnTable.CancelApplicationLaunch(pchAppKey); + return result; + } + public EVRApplicationError IdentifyApplication(uint unProcessId,string pchAppKey) + { + EVRApplicationError result = FnTable.IdentifyApplication(unProcessId,pchAppKey); + return result; + } + public uint GetApplicationProcessId(string pchAppKey) + { + uint result = FnTable.GetApplicationProcessId(pchAppKey); + return result; + } + public string GetApplicationsErrorNameFromEnum(EVRApplicationError error) + { + IntPtr result = FnTable.GetApplicationsErrorNameFromEnum(error); + return Marshal.PtrToStringAnsi(result); + } + public uint GetApplicationPropertyString(string pchAppKey,EVRApplicationProperty eProperty,System.Text.StringBuilder pchPropertyValueBuffer,uint unPropertyValueBufferLen,ref EVRApplicationError peError) + { + uint result = FnTable.GetApplicationPropertyString(pchAppKey,eProperty,pchPropertyValueBuffer,unPropertyValueBufferLen,ref peError); + return result; + } + public bool GetApplicationPropertyBool(string pchAppKey,EVRApplicationProperty eProperty,ref EVRApplicationError peError) + { + bool result = FnTable.GetApplicationPropertyBool(pchAppKey,eProperty,ref peError); + return result; + } + public ulong GetApplicationPropertyUint64(string pchAppKey,EVRApplicationProperty eProperty,ref EVRApplicationError peError) + { + ulong result = FnTable.GetApplicationPropertyUint64(pchAppKey,eProperty,ref peError); + return result; + } + public EVRApplicationError SetApplicationAutoLaunch(string pchAppKey,bool bAutoLaunch) + { + EVRApplicationError result = FnTable.SetApplicationAutoLaunch(pchAppKey,bAutoLaunch); + return result; + } + public bool GetApplicationAutoLaunch(string pchAppKey) + { + bool result = FnTable.GetApplicationAutoLaunch(pchAppKey); + return result; + } + public EVRApplicationError SetDefaultApplicationForMimeType(string pchAppKey,string pchMimeType) + { + EVRApplicationError result = FnTable.SetDefaultApplicationForMimeType(pchAppKey,pchMimeType); + return result; + } + public bool GetDefaultApplicationForMimeType(string pchMimeType,string pchAppKeyBuffer,uint unAppKeyBufferLen) + { + bool result = FnTable.GetDefaultApplicationForMimeType(pchMimeType,pchAppKeyBuffer,unAppKeyBufferLen); + return result; + } + public bool GetApplicationSupportedMimeTypes(string pchAppKey,string pchMimeTypesBuffer,uint unMimeTypesBuffer) + { + bool result = FnTable.GetApplicationSupportedMimeTypes(pchAppKey,pchMimeTypesBuffer,unMimeTypesBuffer); + return result; + } + public uint GetApplicationsThatSupportMimeType(string pchMimeType,string pchAppKeysThatSupportBuffer,uint unAppKeysThatSupportBuffer) + { + uint result = FnTable.GetApplicationsThatSupportMimeType(pchMimeType,pchAppKeysThatSupportBuffer,unAppKeysThatSupportBuffer); + return result; + } + public uint GetApplicationLaunchArguments(uint unHandle,string pchArgs,uint unArgs) + { + uint result = FnTable.GetApplicationLaunchArguments(unHandle,pchArgs,unArgs); + return result; + } + public EVRApplicationError GetStartingApplication(string pchAppKeyBuffer,uint unAppKeyBufferLen) + { + EVRApplicationError result = FnTable.GetStartingApplication(pchAppKeyBuffer,unAppKeyBufferLen); + return result; + } + public EVRApplicationTransitionState GetTransitionState() + { + EVRApplicationTransitionState result = FnTable.GetTransitionState(); + return result; + } + public EVRApplicationError PerformApplicationPrelaunchCheck(string pchAppKey) + { + EVRApplicationError result = FnTable.PerformApplicationPrelaunchCheck(pchAppKey); + return result; + } + public string GetApplicationsTransitionStateNameFromEnum(EVRApplicationTransitionState state) + { + IntPtr result = FnTable.GetApplicationsTransitionStateNameFromEnum(state); + return Marshal.PtrToStringAnsi(result); + } + public bool IsQuitUserPromptRequested() + { + bool result = FnTable.IsQuitUserPromptRequested(); + return result; + } + public EVRApplicationError LaunchInternalProcess(string pchBinaryPath,string pchArguments,string pchWorkingDirectory) + { + EVRApplicationError result = FnTable.LaunchInternalProcess(pchBinaryPath,pchArguments,pchWorkingDirectory); + return result; + } +} + + +public class CVRChaperone +{ + IVRChaperone FnTable; + internal CVRChaperone(IntPtr pInterface) + { + FnTable = (IVRChaperone)Marshal.PtrToStructure(pInterface, typeof(IVRChaperone)); + } + public ChaperoneCalibrationState GetCalibrationState() + { + ChaperoneCalibrationState result = FnTable.GetCalibrationState(); + return result; + } + public bool GetPlayAreaSize(ref float pSizeX,ref float pSizeZ) + { + pSizeX = 0; + pSizeZ = 0; + bool result = FnTable.GetPlayAreaSize(ref pSizeX,ref pSizeZ); + return result; + } + public bool GetPlayAreaRect(ref HmdQuad_t rect) + { + bool result = FnTable.GetPlayAreaRect(ref rect); + return result; + } + public void ReloadInfo() + { + FnTable.ReloadInfo(); + } + public void SetSceneColor(HmdColor_t color) + { + FnTable.SetSceneColor(color); + } + public void GetBoundsColor(ref HmdColor_t pOutputColorArray,int nNumOutputColors,float flCollisionBoundsFadeDistance,ref HmdColor_t pOutputCameraColor) + { + FnTable.GetBoundsColor(ref pOutputColorArray,nNumOutputColors,flCollisionBoundsFadeDistance,ref pOutputCameraColor); + } + public bool AreBoundsVisible() + { + bool result = FnTable.AreBoundsVisible(); + return result; + } + public void ForceBoundsVisible(bool bForce) + { + FnTable.ForceBoundsVisible(bForce); + } +} + + +public class CVRChaperoneSetup +{ + IVRChaperoneSetup FnTable; + internal CVRChaperoneSetup(IntPtr pInterface) + { + FnTable = (IVRChaperoneSetup)Marshal.PtrToStructure(pInterface, typeof(IVRChaperoneSetup)); + } + public bool CommitWorkingCopy(EChaperoneConfigFile configFile) + { + bool result = FnTable.CommitWorkingCopy(configFile); + return result; + } + public void RevertWorkingCopy() + { + FnTable.RevertWorkingCopy(); + } + public bool GetWorkingPlayAreaSize(ref float pSizeX,ref float pSizeZ) + { + pSizeX = 0; + pSizeZ = 0; + bool result = FnTable.GetWorkingPlayAreaSize(ref pSizeX,ref pSizeZ); + return result; + } + public bool GetWorkingPlayAreaRect(ref HmdQuad_t rect) + { + bool result = FnTable.GetWorkingPlayAreaRect(ref rect); + return result; + } + public bool GetWorkingCollisionBoundsInfo(out HmdQuad_t [] pQuadsBuffer) + { + uint punQuadsCount = 0; + bool result = FnTable.GetWorkingCollisionBoundsInfo(null,ref punQuadsCount); + pQuadsBuffer= new HmdQuad_t[punQuadsCount]; + result = FnTable.GetWorkingCollisionBoundsInfo(pQuadsBuffer,ref punQuadsCount); + return result; + } + public bool GetLiveCollisionBoundsInfo(out HmdQuad_t [] pQuadsBuffer) + { + uint punQuadsCount = 0; + bool result = FnTable.GetLiveCollisionBoundsInfo(null,ref punQuadsCount); + pQuadsBuffer= new HmdQuad_t[punQuadsCount]; + result = FnTable.GetLiveCollisionBoundsInfo(pQuadsBuffer,ref punQuadsCount); + return result; + } + public bool GetWorkingSeatedZeroPoseToRawTrackingPose(ref HmdMatrix34_t pmatSeatedZeroPoseToRawTrackingPose) + { + bool result = FnTable.GetWorkingSeatedZeroPoseToRawTrackingPose(ref pmatSeatedZeroPoseToRawTrackingPose); + return result; + } + public bool GetWorkingStandingZeroPoseToRawTrackingPose(ref HmdMatrix34_t pmatStandingZeroPoseToRawTrackingPose) + { + bool result = FnTable.GetWorkingStandingZeroPoseToRawTrackingPose(ref pmatStandingZeroPoseToRawTrackingPose); + return result; + } + public void SetWorkingPlayAreaSize(float sizeX,float sizeZ) + { + FnTable.SetWorkingPlayAreaSize(sizeX,sizeZ); + } + public void SetWorkingCollisionBoundsInfo(HmdQuad_t [] pQuadsBuffer) + { + FnTable.SetWorkingCollisionBoundsInfo(pQuadsBuffer,(uint) pQuadsBuffer.Length); + } + public void SetWorkingSeatedZeroPoseToRawTrackingPose(ref HmdMatrix34_t pMatSeatedZeroPoseToRawTrackingPose) + { + FnTable.SetWorkingSeatedZeroPoseToRawTrackingPose(ref pMatSeatedZeroPoseToRawTrackingPose); + } + public void SetWorkingStandingZeroPoseToRawTrackingPose(ref HmdMatrix34_t pMatStandingZeroPoseToRawTrackingPose) + { + FnTable.SetWorkingStandingZeroPoseToRawTrackingPose(ref pMatStandingZeroPoseToRawTrackingPose); + } + public void ReloadFromDisk(EChaperoneConfigFile configFile) + { + FnTable.ReloadFromDisk(configFile); + } + public bool GetLiveSeatedZeroPoseToRawTrackingPose(ref HmdMatrix34_t pmatSeatedZeroPoseToRawTrackingPose) + { + bool result = FnTable.GetLiveSeatedZeroPoseToRawTrackingPose(ref pmatSeatedZeroPoseToRawTrackingPose); + return result; + } + public void SetWorkingCollisionBoundsTagsInfo(byte [] pTagsBuffer) + { + FnTable.SetWorkingCollisionBoundsTagsInfo(pTagsBuffer,(uint) pTagsBuffer.Length); + } + public bool GetLiveCollisionBoundsTagsInfo(out byte [] pTagsBuffer) + { + uint punTagCount = 0; + bool result = FnTable.GetLiveCollisionBoundsTagsInfo(null,ref punTagCount); + pTagsBuffer= new byte[punTagCount]; + result = FnTable.GetLiveCollisionBoundsTagsInfo(pTagsBuffer,ref punTagCount); + return result; + } + public bool SetWorkingPhysicalBoundsInfo(HmdQuad_t [] pQuadsBuffer) + { + bool result = FnTable.SetWorkingPhysicalBoundsInfo(pQuadsBuffer,(uint) pQuadsBuffer.Length); + return result; + } + public bool GetLivePhysicalBoundsInfo(out HmdQuad_t [] pQuadsBuffer) + { + uint punQuadsCount = 0; + bool result = FnTable.GetLivePhysicalBoundsInfo(null,ref punQuadsCount); + pQuadsBuffer= new HmdQuad_t[punQuadsCount]; + result = FnTable.GetLivePhysicalBoundsInfo(pQuadsBuffer,ref punQuadsCount); + return result; + } + public bool ExportLiveToBuffer(System.Text.StringBuilder pBuffer,ref uint pnBufferLength) + { + pnBufferLength = 0; + bool result = FnTable.ExportLiveToBuffer(pBuffer,ref pnBufferLength); + return result; + } + public bool ImportFromBufferToWorking(string pBuffer,uint nImportFlags) + { + bool result = FnTable.ImportFromBufferToWorking(pBuffer,nImportFlags); + return result; + } +} + + +public class CVRCompositor +{ + IVRCompositor FnTable; + internal CVRCompositor(IntPtr pInterface) + { + FnTable = (IVRCompositor)Marshal.PtrToStructure(pInterface, typeof(IVRCompositor)); + } + public void SetTrackingSpace(ETrackingUniverseOrigin eOrigin) + { + FnTable.SetTrackingSpace(eOrigin); + } + public ETrackingUniverseOrigin GetTrackingSpace() + { + ETrackingUniverseOrigin result = FnTable.GetTrackingSpace(); + return result; + } + public EVRCompositorError WaitGetPoses(TrackedDevicePose_t [] pRenderPoseArray,TrackedDevicePose_t [] pGamePoseArray) + { + EVRCompositorError result = FnTable.WaitGetPoses(pRenderPoseArray,(uint) pRenderPoseArray.Length,pGamePoseArray,(uint) pGamePoseArray.Length); + return result; + } + public EVRCompositorError GetLastPoses(TrackedDevicePose_t [] pRenderPoseArray,TrackedDevicePose_t [] pGamePoseArray) + { + EVRCompositorError result = FnTable.GetLastPoses(pRenderPoseArray,(uint) pRenderPoseArray.Length,pGamePoseArray,(uint) pGamePoseArray.Length); + return result; + } + public EVRCompositorError GetLastPoseForTrackedDeviceIndex(uint unDeviceIndex,ref TrackedDevicePose_t pOutputPose,ref TrackedDevicePose_t pOutputGamePose) + { + EVRCompositorError result = FnTable.GetLastPoseForTrackedDeviceIndex(unDeviceIndex,ref pOutputPose,ref pOutputGamePose); + return result; + } + public EVRCompositorError Submit(EVREye eEye,ref Texture_t pTexture,ref VRTextureBounds_t pBounds,EVRSubmitFlags nSubmitFlags) + { + EVRCompositorError result = FnTable.Submit(eEye,ref pTexture,ref pBounds,nSubmitFlags); + return result; + } + public void ClearLastSubmittedFrame() + { + FnTable.ClearLastSubmittedFrame(); + } + public void PostPresentHandoff() + { + FnTable.PostPresentHandoff(); + } + public bool GetFrameTiming(ref Compositor_FrameTiming pTiming,uint unFramesAgo) + { + bool result = FnTable.GetFrameTiming(ref pTiming,unFramesAgo); + return result; + } + public float GetFrameTimeRemaining() + { + float result = FnTable.GetFrameTimeRemaining(); + return result; + } + public void GetCumulativeStats(ref Compositor_CumulativeStats pStats,uint nStatsSizeInBytes) + { + FnTable.GetCumulativeStats(ref pStats,nStatsSizeInBytes); + } + public void FadeToColor(float fSeconds,float fRed,float fGreen,float fBlue,float fAlpha,bool bBackground) + { + FnTable.FadeToColor(fSeconds,fRed,fGreen,fBlue,fAlpha,bBackground); + } + public void FadeGrid(float fSeconds,bool bFadeIn) + { + FnTable.FadeGrid(fSeconds,bFadeIn); + } + public EVRCompositorError SetSkyboxOverride(Texture_t [] pTextures) + { + EVRCompositorError result = FnTable.SetSkyboxOverride(pTextures,(uint) pTextures.Length); + return result; + } + public void ClearSkyboxOverride() + { + FnTable.ClearSkyboxOverride(); + } + public void CompositorBringToFront() + { + FnTable.CompositorBringToFront(); + } + public void CompositorGoToBack() + { + FnTable.CompositorGoToBack(); + } + public void CompositorQuit() + { + FnTable.CompositorQuit(); + } + public bool IsFullscreen() + { + bool result = FnTable.IsFullscreen(); + return result; + } + public uint GetCurrentSceneFocusProcess() + { + uint result = FnTable.GetCurrentSceneFocusProcess(); + return result; + } + public uint GetLastFrameRenderer() + { + uint result = FnTable.GetLastFrameRenderer(); + return result; + } + public bool CanRenderScene() + { + bool result = FnTable.CanRenderScene(); + return result; + } + public void ShowMirrorWindow() + { + FnTable.ShowMirrorWindow(); + } + public void HideMirrorWindow() + { + FnTable.HideMirrorWindow(); + } + public bool IsMirrorWindowVisible() + { + bool result = FnTable.IsMirrorWindowVisible(); + return result; + } + public void CompositorDumpImages() + { + FnTable.CompositorDumpImages(); + } + public bool ShouldAppRenderWithLowResources() + { + bool result = FnTable.ShouldAppRenderWithLowResources(); + return result; + } + public void ForceInterleavedReprojectionOn(bool bOverride) + { + FnTable.ForceInterleavedReprojectionOn(bOverride); + } + public void ForceReconnectProcess() + { + FnTable.ForceReconnectProcess(); + } + public void SuspendRendering(bool bSuspend) + { + FnTable.SuspendRendering(bSuspend); + } + public EVRCompositorError GetMirrorTextureD3D11(EVREye eEye,IntPtr pD3D11DeviceOrResource,ref IntPtr ppD3D11ShaderResourceView) + { + EVRCompositorError result = FnTable.GetMirrorTextureD3D11(eEye,pD3D11DeviceOrResource,ref ppD3D11ShaderResourceView); + return result; + } + public EVRCompositorError GetMirrorTextureGL(EVREye eEye,ref uint pglTextureId,IntPtr pglSharedTextureHandle) + { + pglTextureId = 0; + EVRCompositorError result = FnTable.GetMirrorTextureGL(eEye,ref pglTextureId,pglSharedTextureHandle); + return result; + } + public bool ReleaseSharedGLTexture(uint glTextureId,IntPtr glSharedTextureHandle) + { + bool result = FnTable.ReleaseSharedGLTexture(glTextureId,glSharedTextureHandle); + return result; + } + public void LockGLSharedTextureForAccess(IntPtr glSharedTextureHandle) + { + FnTable.LockGLSharedTextureForAccess(glSharedTextureHandle); + } + public void UnlockGLSharedTextureForAccess(IntPtr glSharedTextureHandle) + { + FnTable.UnlockGLSharedTextureForAccess(glSharedTextureHandle); + } +} + + +public class CVROverlay +{ + IVROverlay FnTable; + internal CVROverlay(IntPtr pInterface) + { + FnTable = (IVROverlay)Marshal.PtrToStructure(pInterface, typeof(IVROverlay)); + } + public EVROverlayError FindOverlay(string pchOverlayKey,ref ulong pOverlayHandle) + { + pOverlayHandle = 0; + EVROverlayError result = FnTable.FindOverlay(pchOverlayKey,ref pOverlayHandle); + return result; + } + public EVROverlayError CreateOverlay(string pchOverlayKey,string pchOverlayFriendlyName,ref ulong pOverlayHandle) + { + pOverlayHandle = 0; + EVROverlayError result = FnTable.CreateOverlay(pchOverlayKey,pchOverlayFriendlyName,ref pOverlayHandle); + return result; + } + public EVROverlayError DestroyOverlay(ulong ulOverlayHandle) + { + EVROverlayError result = FnTable.DestroyOverlay(ulOverlayHandle); + return result; + } + public EVROverlayError SetHighQualityOverlay(ulong ulOverlayHandle) + { + EVROverlayError result = FnTable.SetHighQualityOverlay(ulOverlayHandle); + return result; + } + public ulong GetHighQualityOverlay() + { + ulong result = FnTable.GetHighQualityOverlay(); + return result; + } + public uint GetOverlayKey(ulong ulOverlayHandle,System.Text.StringBuilder pchValue,uint unBufferSize,ref EVROverlayError pError) + { + uint result = FnTable.GetOverlayKey(ulOverlayHandle,pchValue,unBufferSize,ref pError); + return result; + } + public uint GetOverlayName(ulong ulOverlayHandle,System.Text.StringBuilder pchValue,uint unBufferSize,ref EVROverlayError pError) + { + uint result = FnTable.GetOverlayName(ulOverlayHandle,pchValue,unBufferSize,ref pError); + return result; + } + public EVROverlayError GetOverlayImageData(ulong ulOverlayHandle,IntPtr pvBuffer,uint unBufferSize,ref uint punWidth,ref uint punHeight) + { + punWidth = 0; + punHeight = 0; + EVROverlayError result = FnTable.GetOverlayImageData(ulOverlayHandle,pvBuffer,unBufferSize,ref punWidth,ref punHeight); + return result; + } + public string GetOverlayErrorNameFromEnum(EVROverlayError error) + { + IntPtr result = FnTable.GetOverlayErrorNameFromEnum(error); + return Marshal.PtrToStringAnsi(result); + } + public EVROverlayError SetOverlayRenderingPid(ulong ulOverlayHandle,uint unPID) + { + EVROverlayError result = FnTable.SetOverlayRenderingPid(ulOverlayHandle,unPID); + return result; + } + public uint GetOverlayRenderingPid(ulong ulOverlayHandle) + { + uint result = FnTable.GetOverlayRenderingPid(ulOverlayHandle); + return result; + } + public EVROverlayError SetOverlayFlag(ulong ulOverlayHandle,VROverlayFlags eOverlayFlag,bool bEnabled) + { + EVROverlayError result = FnTable.SetOverlayFlag(ulOverlayHandle,eOverlayFlag,bEnabled); + return result; + } + public EVROverlayError GetOverlayFlag(ulong ulOverlayHandle,VROverlayFlags eOverlayFlag,ref bool pbEnabled) + { + pbEnabled = false; + EVROverlayError result = FnTable.GetOverlayFlag(ulOverlayHandle,eOverlayFlag,ref pbEnabled); + return result; + } + public EVROverlayError SetOverlayColor(ulong ulOverlayHandle,float fRed,float fGreen,float fBlue) + { + EVROverlayError result = FnTable.SetOverlayColor(ulOverlayHandle,fRed,fGreen,fBlue); + return result; + } + public EVROverlayError GetOverlayColor(ulong ulOverlayHandle,ref float pfRed,ref float pfGreen,ref float pfBlue) + { + pfRed = 0; + pfGreen = 0; + pfBlue = 0; + EVROverlayError result = FnTable.GetOverlayColor(ulOverlayHandle,ref pfRed,ref pfGreen,ref pfBlue); + return result; + } + public EVROverlayError SetOverlayAlpha(ulong ulOverlayHandle,float fAlpha) + { + EVROverlayError result = FnTable.SetOverlayAlpha(ulOverlayHandle,fAlpha); + return result; + } + public EVROverlayError GetOverlayAlpha(ulong ulOverlayHandle,ref float pfAlpha) + { + pfAlpha = 0; + EVROverlayError result = FnTable.GetOverlayAlpha(ulOverlayHandle,ref pfAlpha); + return result; + } + public EVROverlayError SetOverlayTexelAspect(ulong ulOverlayHandle,float fTexelAspect) + { + EVROverlayError result = FnTable.SetOverlayTexelAspect(ulOverlayHandle,fTexelAspect); + return result; + } + public EVROverlayError GetOverlayTexelAspect(ulong ulOverlayHandle,ref float pfTexelAspect) + { + pfTexelAspect = 0; + EVROverlayError result = FnTable.GetOverlayTexelAspect(ulOverlayHandle,ref pfTexelAspect); + return result; + } + public EVROverlayError SetOverlaySortOrder(ulong ulOverlayHandle,uint unSortOrder) + { + EVROverlayError result = FnTable.SetOverlaySortOrder(ulOverlayHandle,unSortOrder); + return result; + } + public EVROverlayError GetOverlaySortOrder(ulong ulOverlayHandle,ref uint punSortOrder) + { + punSortOrder = 0; + EVROverlayError result = FnTable.GetOverlaySortOrder(ulOverlayHandle,ref punSortOrder); + return result; + } + public EVROverlayError SetOverlayWidthInMeters(ulong ulOverlayHandle,float fWidthInMeters) + { + EVROverlayError result = FnTable.SetOverlayWidthInMeters(ulOverlayHandle,fWidthInMeters); + return result; + } + public EVROverlayError GetOverlayWidthInMeters(ulong ulOverlayHandle,ref float pfWidthInMeters) + { + pfWidthInMeters = 0; + EVROverlayError result = FnTable.GetOverlayWidthInMeters(ulOverlayHandle,ref pfWidthInMeters); + return result; + } + public EVROverlayError SetOverlayAutoCurveDistanceRangeInMeters(ulong ulOverlayHandle,float fMinDistanceInMeters,float fMaxDistanceInMeters) + { + EVROverlayError result = FnTable.SetOverlayAutoCurveDistanceRangeInMeters(ulOverlayHandle,fMinDistanceInMeters,fMaxDistanceInMeters); + return result; + } + public EVROverlayError GetOverlayAutoCurveDistanceRangeInMeters(ulong ulOverlayHandle,ref float pfMinDistanceInMeters,ref float pfMaxDistanceInMeters) + { + pfMinDistanceInMeters = 0; + pfMaxDistanceInMeters = 0; + EVROverlayError result = FnTable.GetOverlayAutoCurveDistanceRangeInMeters(ulOverlayHandle,ref pfMinDistanceInMeters,ref pfMaxDistanceInMeters); + return result; + } + public EVROverlayError SetOverlayTextureColorSpace(ulong ulOverlayHandle,EColorSpace eTextureColorSpace) + { + EVROverlayError result = FnTable.SetOverlayTextureColorSpace(ulOverlayHandle,eTextureColorSpace); + return result; + } + public EVROverlayError GetOverlayTextureColorSpace(ulong ulOverlayHandle,ref EColorSpace peTextureColorSpace) + { + EVROverlayError result = FnTable.GetOverlayTextureColorSpace(ulOverlayHandle,ref peTextureColorSpace); + return result; + } + public EVROverlayError SetOverlayTextureBounds(ulong ulOverlayHandle,ref VRTextureBounds_t pOverlayTextureBounds) + { + EVROverlayError result = FnTable.SetOverlayTextureBounds(ulOverlayHandle,ref pOverlayTextureBounds); + return result; + } + public EVROverlayError GetOverlayTextureBounds(ulong ulOverlayHandle,ref VRTextureBounds_t pOverlayTextureBounds) + { + EVROverlayError result = FnTable.GetOverlayTextureBounds(ulOverlayHandle,ref pOverlayTextureBounds); + return result; + } + public EVROverlayError GetOverlayTransformType(ulong ulOverlayHandle,ref VROverlayTransformType peTransformType) + { + EVROverlayError result = FnTable.GetOverlayTransformType(ulOverlayHandle,ref peTransformType); + return result; + } + public EVROverlayError SetOverlayTransformAbsolute(ulong ulOverlayHandle,ETrackingUniverseOrigin eTrackingOrigin,ref HmdMatrix34_t pmatTrackingOriginToOverlayTransform) + { + EVROverlayError result = FnTable.SetOverlayTransformAbsolute(ulOverlayHandle,eTrackingOrigin,ref pmatTrackingOriginToOverlayTransform); + return result; + } + public EVROverlayError GetOverlayTransformAbsolute(ulong ulOverlayHandle,ref ETrackingUniverseOrigin peTrackingOrigin,ref HmdMatrix34_t pmatTrackingOriginToOverlayTransform) + { + EVROverlayError result = FnTable.GetOverlayTransformAbsolute(ulOverlayHandle,ref peTrackingOrigin,ref pmatTrackingOriginToOverlayTransform); + return result; + } + public EVROverlayError SetOverlayTransformTrackedDeviceRelative(ulong ulOverlayHandle,uint unTrackedDevice,ref HmdMatrix34_t pmatTrackedDeviceToOverlayTransform) + { + EVROverlayError result = FnTable.SetOverlayTransformTrackedDeviceRelative(ulOverlayHandle,unTrackedDevice,ref pmatTrackedDeviceToOverlayTransform); + return result; + } + public EVROverlayError GetOverlayTransformTrackedDeviceRelative(ulong ulOverlayHandle,ref uint punTrackedDevice,ref HmdMatrix34_t pmatTrackedDeviceToOverlayTransform) + { + punTrackedDevice = 0; + EVROverlayError result = FnTable.GetOverlayTransformTrackedDeviceRelative(ulOverlayHandle,ref punTrackedDevice,ref pmatTrackedDeviceToOverlayTransform); + return result; + } + public EVROverlayError SetOverlayTransformTrackedDeviceComponent(ulong ulOverlayHandle,uint unDeviceIndex,string pchComponentName) + { + EVROverlayError result = FnTable.SetOverlayTransformTrackedDeviceComponent(ulOverlayHandle,unDeviceIndex,pchComponentName); + return result; + } + public EVROverlayError GetOverlayTransformTrackedDeviceComponent(ulong ulOverlayHandle,ref uint punDeviceIndex,string pchComponentName,uint unComponentNameSize) + { + punDeviceIndex = 0; + EVROverlayError result = FnTable.GetOverlayTransformTrackedDeviceComponent(ulOverlayHandle,ref punDeviceIndex,pchComponentName,unComponentNameSize); + return result; + } + public EVROverlayError ShowOverlay(ulong ulOverlayHandle) + { + EVROverlayError result = FnTable.ShowOverlay(ulOverlayHandle); + return result; + } + public EVROverlayError HideOverlay(ulong ulOverlayHandle) + { + EVROverlayError result = FnTable.HideOverlay(ulOverlayHandle); + return result; + } + public bool IsOverlayVisible(ulong ulOverlayHandle) + { + bool result = FnTable.IsOverlayVisible(ulOverlayHandle); + return result; + } + public EVROverlayError GetTransformForOverlayCoordinates(ulong ulOverlayHandle,ETrackingUniverseOrigin eTrackingOrigin,HmdVector2_t coordinatesInOverlay,ref HmdMatrix34_t pmatTransform) + { + EVROverlayError result = FnTable.GetTransformForOverlayCoordinates(ulOverlayHandle,eTrackingOrigin,coordinatesInOverlay,ref pmatTransform); + return result; + } + public bool PollNextOverlayEvent(ulong ulOverlayHandle,ref VREvent_t pEvent,uint uncbVREvent) + { + bool result = FnTable.PollNextOverlayEvent(ulOverlayHandle,ref pEvent,uncbVREvent); + return result; + } + public EVROverlayError GetOverlayInputMethod(ulong ulOverlayHandle,ref VROverlayInputMethod peInputMethod) + { + EVROverlayError result = FnTable.GetOverlayInputMethod(ulOverlayHandle,ref peInputMethod); + return result; + } + public EVROverlayError SetOverlayInputMethod(ulong ulOverlayHandle,VROverlayInputMethod eInputMethod) + { + EVROverlayError result = FnTable.SetOverlayInputMethod(ulOverlayHandle,eInputMethod); + return result; + } + public EVROverlayError GetOverlayMouseScale(ulong ulOverlayHandle,ref HmdVector2_t pvecMouseScale) + { + EVROverlayError result = FnTable.GetOverlayMouseScale(ulOverlayHandle,ref pvecMouseScale); + return result; + } + public EVROverlayError SetOverlayMouseScale(ulong ulOverlayHandle,ref HmdVector2_t pvecMouseScale) + { + EVROverlayError result = FnTable.SetOverlayMouseScale(ulOverlayHandle,ref pvecMouseScale); + return result; + } + public bool ComputeOverlayIntersection(ulong ulOverlayHandle,ref VROverlayIntersectionParams_t pParams,ref VROverlayIntersectionResults_t pResults) + { + bool result = FnTable.ComputeOverlayIntersection(ulOverlayHandle,ref pParams,ref pResults); + return result; + } + public bool HandleControllerOverlayInteractionAsMouse(ulong ulOverlayHandle,uint unControllerDeviceIndex) + { + bool result = FnTable.HandleControllerOverlayInteractionAsMouse(ulOverlayHandle,unControllerDeviceIndex); + return result; + } + public bool IsHoverTargetOverlay(ulong ulOverlayHandle) + { + bool result = FnTable.IsHoverTargetOverlay(ulOverlayHandle); + return result; + } + public ulong GetGamepadFocusOverlay() + { + ulong result = FnTable.GetGamepadFocusOverlay(); + return result; + } + public EVROverlayError SetGamepadFocusOverlay(ulong ulNewFocusOverlay) + { + EVROverlayError result = FnTable.SetGamepadFocusOverlay(ulNewFocusOverlay); + return result; + } + public EVROverlayError SetOverlayNeighbor(EOverlayDirection eDirection,ulong ulFrom,ulong ulTo) + { + EVROverlayError result = FnTable.SetOverlayNeighbor(eDirection,ulFrom,ulTo); + return result; + } + public EVROverlayError MoveGamepadFocusToNeighbor(EOverlayDirection eDirection,ulong ulFrom) + { + EVROverlayError result = FnTable.MoveGamepadFocusToNeighbor(eDirection,ulFrom); + return result; + } + public EVROverlayError SetOverlayTexture(ulong ulOverlayHandle,ref Texture_t pTexture) + { + EVROverlayError result = FnTable.SetOverlayTexture(ulOverlayHandle,ref pTexture); + return result; + } + public EVROverlayError ClearOverlayTexture(ulong ulOverlayHandle) + { + EVROverlayError result = FnTable.ClearOverlayTexture(ulOverlayHandle); + return result; + } + public EVROverlayError SetOverlayRaw(ulong ulOverlayHandle,IntPtr pvBuffer,uint unWidth,uint unHeight,uint unDepth) + { + EVROverlayError result = FnTable.SetOverlayRaw(ulOverlayHandle,pvBuffer,unWidth,unHeight,unDepth); + return result; + } + public EVROverlayError SetOverlayFromFile(ulong ulOverlayHandle,string pchFilePath) + { + EVROverlayError result = FnTable.SetOverlayFromFile(ulOverlayHandle,pchFilePath); + return result; + } + public EVROverlayError GetOverlayTexture(ulong ulOverlayHandle,ref IntPtr pNativeTextureHandle,IntPtr pNativeTextureRef,ref uint pWidth,ref uint pHeight,ref uint pNativeFormat,ref EGraphicsAPIConvention pAPI,ref EColorSpace pColorSpace) + { + pWidth = 0; + pHeight = 0; + pNativeFormat = 0; + EVROverlayError result = FnTable.GetOverlayTexture(ulOverlayHandle,ref pNativeTextureHandle,pNativeTextureRef,ref pWidth,ref pHeight,ref pNativeFormat,ref pAPI,ref pColorSpace); + return result; + } + public EVROverlayError ReleaseNativeOverlayHandle(ulong ulOverlayHandle,IntPtr pNativeTextureHandle) + { + EVROverlayError result = FnTable.ReleaseNativeOverlayHandle(ulOverlayHandle,pNativeTextureHandle); + return result; + } + public EVROverlayError GetOverlayTextureSize(ulong ulOverlayHandle,ref uint pWidth,ref uint pHeight) + { + pWidth = 0; + pHeight = 0; + EVROverlayError result = FnTable.GetOverlayTextureSize(ulOverlayHandle,ref pWidth,ref pHeight); + return result; + } + public EVROverlayError CreateDashboardOverlay(string pchOverlayKey,string pchOverlayFriendlyName,ref ulong pMainHandle,ref ulong pThumbnailHandle) + { + pMainHandle = 0; + pThumbnailHandle = 0; + EVROverlayError result = FnTable.CreateDashboardOverlay(pchOverlayKey,pchOverlayFriendlyName,ref pMainHandle,ref pThumbnailHandle); + return result; + } + public bool IsDashboardVisible() + { + bool result = FnTable.IsDashboardVisible(); + return result; + } + public bool IsActiveDashboardOverlay(ulong ulOverlayHandle) + { + bool result = FnTable.IsActiveDashboardOverlay(ulOverlayHandle); + return result; + } + public EVROverlayError SetDashboardOverlaySceneProcess(ulong ulOverlayHandle,uint unProcessId) + { + EVROverlayError result = FnTable.SetDashboardOverlaySceneProcess(ulOverlayHandle,unProcessId); + return result; + } + public EVROverlayError GetDashboardOverlaySceneProcess(ulong ulOverlayHandle,ref uint punProcessId) + { + punProcessId = 0; + EVROverlayError result = FnTable.GetDashboardOverlaySceneProcess(ulOverlayHandle,ref punProcessId); + return result; + } + public void ShowDashboard(string pchOverlayToShow) + { + FnTable.ShowDashboard(pchOverlayToShow); + } + public uint GetPrimaryDashboardDevice() + { + uint result = FnTable.GetPrimaryDashboardDevice(); + return result; + } + public EVROverlayError ShowKeyboard(int eInputMode,int eLineInputMode,string pchDescription,uint unCharMax,string pchExistingText,bool bUseMinimalMode,ulong uUserValue) + { + EVROverlayError result = FnTable.ShowKeyboard(eInputMode,eLineInputMode,pchDescription,unCharMax,pchExistingText,bUseMinimalMode,uUserValue); + return result; + } + public EVROverlayError ShowKeyboardForOverlay(ulong ulOverlayHandle,int eInputMode,int eLineInputMode,string pchDescription,uint unCharMax,string pchExistingText,bool bUseMinimalMode,ulong uUserValue) + { + EVROverlayError result = FnTable.ShowKeyboardForOverlay(ulOverlayHandle,eInputMode,eLineInputMode,pchDescription,unCharMax,pchExistingText,bUseMinimalMode,uUserValue); + return result; + } + public uint GetKeyboardText(System.Text.StringBuilder pchText,uint cchText) + { + uint result = FnTable.GetKeyboardText(pchText,cchText); + return result; + } + public void HideKeyboard() + { + FnTable.HideKeyboard(); + } + public void SetKeyboardTransformAbsolute(ETrackingUniverseOrigin eTrackingOrigin,ref HmdMatrix34_t pmatTrackingOriginToKeyboardTransform) + { + FnTable.SetKeyboardTransformAbsolute(eTrackingOrigin,ref pmatTrackingOriginToKeyboardTransform); + } + public void SetKeyboardPositionForOverlay(ulong ulOverlayHandle,HmdRect2_t avoidRect) + { + FnTable.SetKeyboardPositionForOverlay(ulOverlayHandle,avoidRect); + } +} + + +public class CVRRenderModels +{ + IVRRenderModels FnTable; + internal CVRRenderModels(IntPtr pInterface) + { + FnTable = (IVRRenderModels)Marshal.PtrToStructure(pInterface, typeof(IVRRenderModels)); + } + public EVRRenderModelError LoadRenderModel_Async(string pchRenderModelName,ref IntPtr ppRenderModel) + { + EVRRenderModelError result = FnTable.LoadRenderModel_Async(pchRenderModelName,ref ppRenderModel); + return result; + } + public void FreeRenderModel(IntPtr pRenderModel) + { + FnTable.FreeRenderModel(pRenderModel); + } + public EVRRenderModelError LoadTexture_Async(int textureId,ref IntPtr ppTexture) + { + EVRRenderModelError result = FnTable.LoadTexture_Async(textureId,ref ppTexture); + return result; + } + public void FreeTexture(IntPtr pTexture) + { + FnTable.FreeTexture(pTexture); + } + public EVRRenderModelError LoadTextureD3D11_Async(int textureId,IntPtr pD3D11Device,ref IntPtr ppD3D11Texture2D) + { + EVRRenderModelError result = FnTable.LoadTextureD3D11_Async(textureId,pD3D11Device,ref ppD3D11Texture2D); + return result; + } + public EVRRenderModelError LoadIntoTextureD3D11_Async(int textureId,IntPtr pDstTexture) + { + EVRRenderModelError result = FnTable.LoadIntoTextureD3D11_Async(textureId,pDstTexture); + return result; + } + public void FreeTextureD3D11(IntPtr pD3D11Texture2D) + { + FnTable.FreeTextureD3D11(pD3D11Texture2D); + } + public uint GetRenderModelName(uint unRenderModelIndex,System.Text.StringBuilder pchRenderModelName,uint unRenderModelNameLen) + { + uint result = FnTable.GetRenderModelName(unRenderModelIndex,pchRenderModelName,unRenderModelNameLen); + return result; + } + public uint GetRenderModelCount() + { + uint result = FnTable.GetRenderModelCount(); + return result; + } + public uint GetComponentCount(string pchRenderModelName) + { + uint result = FnTable.GetComponentCount(pchRenderModelName); + return result; + } + public uint GetComponentName(string pchRenderModelName,uint unComponentIndex,System.Text.StringBuilder pchComponentName,uint unComponentNameLen) + { + uint result = FnTable.GetComponentName(pchRenderModelName,unComponentIndex,pchComponentName,unComponentNameLen); + return result; + } + public ulong GetComponentButtonMask(string pchRenderModelName,string pchComponentName) + { + ulong result = FnTable.GetComponentButtonMask(pchRenderModelName,pchComponentName); + return result; + } + public uint GetComponentRenderModelName(string pchRenderModelName,string pchComponentName,System.Text.StringBuilder pchComponentRenderModelName,uint unComponentRenderModelNameLen) + { + uint result = FnTable.GetComponentRenderModelName(pchRenderModelName,pchComponentName,pchComponentRenderModelName,unComponentRenderModelNameLen); + return result; + } + public bool GetComponentState(string pchRenderModelName,string pchComponentName,ref VRControllerState_t pControllerState,ref RenderModel_ControllerMode_State_t pState,ref RenderModel_ComponentState_t pComponentState) + { + bool result = FnTable.GetComponentState(pchRenderModelName,pchComponentName,ref pControllerState,ref pState,ref pComponentState); + return result; + } + public bool RenderModelHasComponent(string pchRenderModelName,string pchComponentName) + { + bool result = FnTable.RenderModelHasComponent(pchRenderModelName,pchComponentName); + return result; + } + public uint GetRenderModelThumbnailURL(string pchRenderModelName,System.Text.StringBuilder pchThumbnailURL,uint unThumbnailURLLen,ref EVRRenderModelError peError) + { + uint result = FnTable.GetRenderModelThumbnailURL(pchRenderModelName,pchThumbnailURL,unThumbnailURLLen,ref peError); + return result; + } + public uint GetRenderModelOriginalPath(string pchRenderModelName,System.Text.StringBuilder pchOriginalPath,uint unOriginalPathLen,ref EVRRenderModelError peError) + { + uint result = FnTable.GetRenderModelOriginalPath(pchRenderModelName,pchOriginalPath,unOriginalPathLen,ref peError); + return result; + } + public string GetRenderModelErrorNameFromEnum(EVRRenderModelError error) + { + IntPtr result = FnTable.GetRenderModelErrorNameFromEnum(error); + return Marshal.PtrToStringAnsi(result); + } +} + + +public class CVRNotifications +{ + IVRNotifications FnTable; + internal CVRNotifications(IntPtr pInterface) + { + FnTable = (IVRNotifications)Marshal.PtrToStructure(pInterface, typeof(IVRNotifications)); + } + public EVRNotificationError CreateNotification(ulong ulOverlayHandle,ulong ulUserValue,EVRNotificationType type,string pchText,EVRNotificationStyle style,ref NotificationBitmap_t pImage,ref uint pNotificationId) + { + pNotificationId = 0; + EVRNotificationError result = FnTable.CreateNotification(ulOverlayHandle,ulUserValue,type,pchText,style,ref pImage,ref pNotificationId); + return result; + } + public EVRNotificationError RemoveNotification(uint notificationId) + { + EVRNotificationError result = FnTable.RemoveNotification(notificationId); + return result; + } +} + + +public class CVRSettings +{ + IVRSettings FnTable; + internal CVRSettings(IntPtr pInterface) + { + FnTable = (IVRSettings)Marshal.PtrToStructure(pInterface, typeof(IVRSettings)); + } + public string GetSettingsErrorNameFromEnum(EVRSettingsError eError) + { + IntPtr result = FnTable.GetSettingsErrorNameFromEnum(eError); + return Marshal.PtrToStringAnsi(result); + } + public bool Sync(bool bForce,ref EVRSettingsError peError) + { + bool result = FnTable.Sync(bForce,ref peError); + return result; + } + public void SetBool(string pchSection,string pchSettingsKey,bool bValue,ref EVRSettingsError peError) + { + FnTable.SetBool(pchSection,pchSettingsKey,bValue,ref peError); + } + public void SetInt32(string pchSection,string pchSettingsKey,int nValue,ref EVRSettingsError peError) + { + FnTable.SetInt32(pchSection,pchSettingsKey,nValue,ref peError); + } + public void SetFloat(string pchSection,string pchSettingsKey,float flValue,ref EVRSettingsError peError) + { + FnTable.SetFloat(pchSection,pchSettingsKey,flValue,ref peError); + } + public void SetString(string pchSection,string pchSettingsKey,string pchValue,ref EVRSettingsError peError) + { + FnTable.SetString(pchSection,pchSettingsKey,pchValue,ref peError); + } + public bool GetBool(string pchSection,string pchSettingsKey,ref EVRSettingsError peError) + { + bool result = FnTable.GetBool(pchSection,pchSettingsKey,ref peError); + return result; + } + public int GetInt32(string pchSection,string pchSettingsKey,ref EVRSettingsError peError) + { + int result = FnTable.GetInt32(pchSection,pchSettingsKey,ref peError); + return result; + } + public float GetFloat(string pchSection,string pchSettingsKey,ref EVRSettingsError peError) + { + float result = FnTable.GetFloat(pchSection,pchSettingsKey,ref peError); + return result; + } + public void GetString(string pchSection,string pchSettingsKey,System.Text.StringBuilder pchValue,uint unValueLen,ref EVRSettingsError peError) + { + FnTable.GetString(pchSection,pchSettingsKey,pchValue,unValueLen,ref peError); + } + public void RemoveSection(string pchSection,ref EVRSettingsError peError) + { + FnTable.RemoveSection(pchSection,ref peError); + } + public void RemoveKeyInSection(string pchSection,string pchSettingsKey,ref EVRSettingsError peError) + { + FnTable.RemoveKeyInSection(pchSection,pchSettingsKey,ref peError); + } +} + + +public class CVRScreenshots +{ + IVRScreenshots FnTable; + internal CVRScreenshots(IntPtr pInterface) + { + FnTable = (IVRScreenshots)Marshal.PtrToStructure(pInterface, typeof(IVRScreenshots)); + } + public EVRScreenshotError RequestScreenshot(ref uint pOutScreenshotHandle,EVRScreenshotType type,string pchPreviewFilename,string pchVRFilename) + { + pOutScreenshotHandle = 0; + EVRScreenshotError result = FnTable.RequestScreenshot(ref pOutScreenshotHandle,type,pchPreviewFilename,pchVRFilename); + return result; + } + public EVRScreenshotError HookScreenshot(EVRScreenshotType [] pSupportedTypes) + { + EVRScreenshotError result = FnTable.HookScreenshot(pSupportedTypes,(int) pSupportedTypes.Length); + return result; + } + public EVRScreenshotType GetScreenshotPropertyType(uint screenshotHandle,ref EVRScreenshotError pError) + { + EVRScreenshotType result = FnTable.GetScreenshotPropertyType(screenshotHandle,ref pError); + return result; + } + public uint GetScreenshotPropertyFilename(uint screenshotHandle,EVRScreenshotPropertyFilenames filenameType,System.Text.StringBuilder pchFilename,uint cchFilename,ref EVRScreenshotError pError) + { + uint result = FnTable.GetScreenshotPropertyFilename(screenshotHandle,filenameType,pchFilename,cchFilename,ref pError); + return result; + } + public EVRScreenshotError UpdateScreenshotProgress(uint screenshotHandle,float flProgress) + { + EVRScreenshotError result = FnTable.UpdateScreenshotProgress(screenshotHandle,flProgress); + return result; + } + public EVRScreenshotError TakeStereoScreenshot(ref uint pOutScreenshotHandle,string pchPreviewFilename,string pchVRFilename) + { + pOutScreenshotHandle = 0; + EVRScreenshotError result = FnTable.TakeStereoScreenshot(ref pOutScreenshotHandle,pchPreviewFilename,pchVRFilename); + return result; + } + public EVRScreenshotError SubmitScreenshot(uint screenshotHandle,EVRScreenshotType type,string pchSourcePreviewFilename,string pchSourceVRFilename) + { + EVRScreenshotError result = FnTable.SubmitScreenshot(screenshotHandle,type,pchSourcePreviewFilename,pchSourceVRFilename); + return result; + } +} + + +public class CVRResources +{ + IVRResources FnTable; + internal CVRResources(IntPtr pInterface) + { + FnTable = (IVRResources)Marshal.PtrToStructure(pInterface, typeof(IVRResources)); + } + public uint LoadSharedResource(string pchResourceName,string pchBuffer,uint unBufferLen) + { + uint result = FnTable.LoadSharedResource(pchResourceName,pchBuffer,unBufferLen); + return result; + } + public uint GetResourceFullPath(string pchResourceName,string pchResourceTypeDirectory,string pchPathBuffer,uint unBufferLen) + { + uint result = FnTable.GetResourceFullPath(pchResourceName,pchResourceTypeDirectory,pchPathBuffer,unBufferLen); + return result; + } +} + + +public class OpenVRInterop +{ + [DllImportAttribute("openvr_api", EntryPoint = "VR_InitInternal")] + internal static extern uint InitInternal(ref EVRInitError peError, EVRApplicationType eApplicationType); + [DllImportAttribute("openvr_api", EntryPoint = "VR_ShutdownInternal")] + internal static extern void ShutdownInternal(); + [DllImportAttribute("openvr_api", EntryPoint = "VR_IsHmdPresent")] + internal static extern bool IsHmdPresent(); + [DllImportAttribute("openvr_api", EntryPoint = "VR_IsRuntimeInstalled")] + internal static extern bool IsRuntimeInstalled(); + [DllImportAttribute("openvr_api", EntryPoint = "VR_GetStringForHmdError")] + internal static extern IntPtr GetStringForHmdError(EVRInitError error); + [DllImportAttribute("openvr_api", EntryPoint = "VR_GetGenericInterface")] + internal static extern IntPtr GetGenericInterface([In, MarshalAs(UnmanagedType.LPStr)] string pchInterfaceVersion, ref EVRInitError peError); + [DllImportAttribute("openvr_api", EntryPoint = "VR_IsInterfaceVersionValid")] + internal static extern bool IsInterfaceVersionValid([In, MarshalAs(UnmanagedType.LPStr)] string pchInterfaceVersion); + [DllImportAttribute("openvr_api", EntryPoint = "VR_GetInitToken")] + internal static extern uint GetInitToken(); +} + + +public enum EVREye +{ + Eye_Left = 0, + Eye_Right = 1, +} +public enum EGraphicsAPIConvention +{ + API_DirectX = 0, + API_OpenGL = 1, +} +public enum EColorSpace +{ + Auto = 0, + Gamma = 1, + Linear = 2, +} +public enum ETrackingResult +{ + Uninitialized = 1, + Calibrating_InProgress = 100, + Calibrating_OutOfRange = 101, + Running_OK = 200, + Running_OutOfRange = 201, +} +public enum ETrackedDeviceClass +{ + Invalid = 0, + HMD = 1, + Controller = 2, + TrackingReference = 4, + Count = 5, + Other = 1000, +} +public enum ETrackedControllerRole +{ + Invalid = 0, + LeftHand = 1, + RightHand = 2, +} +public enum ETrackingUniverseOrigin +{ + TrackingUniverseSeated = 0, + TrackingUniverseStanding = 1, + TrackingUniverseRawAndUncalibrated = 2, +} +public enum ETrackedDeviceProperty +{ + Prop_TrackingSystemName_String = 1000, + Prop_ModelNumber_String = 1001, + Prop_SerialNumber_String = 1002, + Prop_RenderModelName_String = 1003, + Prop_WillDriftInYaw_Bool = 1004, + Prop_ManufacturerName_String = 1005, + Prop_TrackingFirmwareVersion_String = 1006, + Prop_HardwareRevision_String = 1007, + Prop_AllWirelessDongleDescriptions_String = 1008, + Prop_ConnectedWirelessDongle_String = 1009, + Prop_DeviceIsWireless_Bool = 1010, + Prop_DeviceIsCharging_Bool = 1011, + Prop_DeviceBatteryPercentage_Float = 1012, + Prop_StatusDisplayTransform_Matrix34 = 1013, + Prop_Firmware_UpdateAvailable_Bool = 1014, + Prop_Firmware_ManualUpdate_Bool = 1015, + Prop_Firmware_ManualUpdateURL_String = 1016, + Prop_HardwareRevision_Uint64 = 1017, + Prop_FirmwareVersion_Uint64 = 1018, + Prop_FPGAVersion_Uint64 = 1019, + Prop_VRCVersion_Uint64 = 1020, + Prop_RadioVersion_Uint64 = 1021, + Prop_DongleVersion_Uint64 = 1022, + Prop_BlockServerShutdown_Bool = 1023, + Prop_CanUnifyCoordinateSystemWithHmd_Bool = 1024, + Prop_ContainsProximitySensor_Bool = 1025, + Prop_DeviceProvidesBatteryStatus_Bool = 1026, + Prop_DeviceCanPowerOff_Bool = 1027, + Prop_Firmware_ProgrammingTarget_String = 1028, + Prop_DeviceClass_Int32 = 1029, + Prop_HasCamera_Bool = 1030, + Prop_DriverVersion_String = 1031, + Prop_Firmware_ForceUpdateRequired_Bool = 1032, + Prop_ReportsTimeSinceVSync_Bool = 2000, + Prop_SecondsFromVsyncToPhotons_Float = 2001, + Prop_DisplayFrequency_Float = 2002, + Prop_UserIpdMeters_Float = 2003, + Prop_CurrentUniverseId_Uint64 = 2004, + Prop_PreviousUniverseId_Uint64 = 2005, + Prop_DisplayFirmwareVersion_Uint64 = 2006, + Prop_IsOnDesktop_Bool = 2007, + Prop_DisplayMCType_Int32 = 2008, + Prop_DisplayMCOffset_Float = 2009, + Prop_DisplayMCScale_Float = 2010, + Prop_EdidVendorID_Int32 = 2011, + Prop_DisplayMCImageLeft_String = 2012, + Prop_DisplayMCImageRight_String = 2013, + Prop_DisplayGCBlackClamp_Float = 2014, + Prop_EdidProductID_Int32 = 2015, + Prop_CameraToHeadTransform_Matrix34 = 2016, + Prop_DisplayGCType_Int32 = 2017, + Prop_DisplayGCOffset_Float = 2018, + Prop_DisplayGCScale_Float = 2019, + Prop_DisplayGCPrescale_Float = 2020, + Prop_DisplayGCImage_String = 2021, + Prop_LensCenterLeftU_Float = 2022, + Prop_LensCenterLeftV_Float = 2023, + Prop_LensCenterRightU_Float = 2024, + Prop_LensCenterRightV_Float = 2025, + Prop_UserHeadToEyeDepthMeters_Float = 2026, + Prop_CameraFirmwareVersion_Uint64 = 2027, + Prop_CameraFirmwareDescription_String = 2028, + Prop_DisplayFPGAVersion_Uint64 = 2029, + Prop_DisplayBootloaderVersion_Uint64 = 2030, + Prop_DisplayHardwareVersion_Uint64 = 2031, + Prop_AudioFirmwareVersion_Uint64 = 2032, + Prop_CameraCompatibilityMode_Int32 = 2033, + Prop_ScreenshotHorizontalFieldOfViewDegrees_Float = 2034, + Prop_ScreenshotVerticalFieldOfViewDegrees_Float = 2035, + Prop_DisplaySuppressed_Bool = 2036, + Prop_AttachedDeviceId_String = 3000, + Prop_SupportedButtons_Uint64 = 3001, + Prop_Axis0Type_Int32 = 3002, + Prop_Axis1Type_Int32 = 3003, + Prop_Axis2Type_Int32 = 3004, + Prop_Axis3Type_Int32 = 3005, + Prop_Axis4Type_Int32 = 3006, + Prop_ControllerRoleHint_Int32 = 3007, + Prop_FieldOfViewLeftDegrees_Float = 4000, + Prop_FieldOfViewRightDegrees_Float = 4001, + Prop_FieldOfViewTopDegrees_Float = 4002, + Prop_FieldOfViewBottomDegrees_Float = 4003, + Prop_TrackingRangeMinimumMeters_Float = 4004, + Prop_TrackingRangeMaximumMeters_Float = 4005, + Prop_ModeLabel_String = 4006, + Prop_IconPathName_String = 5000, + Prop_NamedIconPathDeviceOff_String = 5001, + Prop_NamedIconPathDeviceSearching_String = 5002, + Prop_NamedIconPathDeviceSearchingAlert_String = 5003, + Prop_NamedIconPathDeviceReady_String = 5004, + Prop_NamedIconPathDeviceReadyAlert_String = 5005, + Prop_NamedIconPathDeviceNotReady_String = 5006, + Prop_NamedIconPathDeviceStandby_String = 5007, + Prop_NamedIconPathDeviceAlertLow_String = 5008, + Prop_VendorSpecific_Reserved_Start = 10000, + Prop_VendorSpecific_Reserved_End = 10999, +} +public enum ETrackedPropertyError +{ + TrackedProp_Success = 0, + TrackedProp_WrongDataType = 1, + TrackedProp_WrongDeviceClass = 2, + TrackedProp_BufferTooSmall = 3, + TrackedProp_UnknownProperty = 4, + TrackedProp_InvalidDevice = 5, + TrackedProp_CouldNotContactServer = 6, + TrackedProp_ValueNotProvidedByDevice = 7, + TrackedProp_StringExceedsMaximumLength = 8, + TrackedProp_NotYetAvailable = 9, +} +public enum EVRSubmitFlags +{ + Submit_Default = 0, + Submit_LensDistortionAlreadyApplied = 1, + Submit_GlRenderBuffer = 2, + Submit_VulkanTexture = 4, +} +public enum EVRState +{ + Undefined = -1, + Off = 0, + Searching = 1, + Searching_Alert = 2, + Ready = 3, + Ready_Alert = 4, + NotReady = 5, + Standby = 6, + Ready_Alert_Low = 7, +} +public enum EVREventType +{ + VREvent_None = 0, + VREvent_TrackedDeviceActivated = 100, + VREvent_TrackedDeviceDeactivated = 101, + VREvent_TrackedDeviceUpdated = 102, + VREvent_TrackedDeviceUserInteractionStarted = 103, + VREvent_TrackedDeviceUserInteractionEnded = 104, + VREvent_IpdChanged = 105, + VREvent_EnterStandbyMode = 106, + VREvent_LeaveStandbyMode = 107, + VREvent_TrackedDeviceRoleChanged = 108, + VREvent_WatchdogWakeUpRequested = 109, + VREvent_LensDistortionChanged = 110, + VREvent_ButtonPress = 200, + VREvent_ButtonUnpress = 201, + VREvent_ButtonTouch = 202, + VREvent_ButtonUntouch = 203, + VREvent_MouseMove = 300, + VREvent_MouseButtonDown = 301, + VREvent_MouseButtonUp = 302, + VREvent_FocusEnter = 303, + VREvent_FocusLeave = 304, + VREvent_Scroll = 305, + VREvent_TouchPadMove = 306, + VREvent_OverlayFocusChanged = 307, + VREvent_InputFocusCaptured = 400, + VREvent_InputFocusReleased = 401, + VREvent_SceneFocusLost = 402, + VREvent_SceneFocusGained = 403, + VREvent_SceneApplicationChanged = 404, + VREvent_SceneFocusChanged = 405, + VREvent_InputFocusChanged = 406, + VREvent_SceneApplicationSecondaryRenderingStarted = 407, + VREvent_HideRenderModels = 410, + VREvent_ShowRenderModels = 411, + VREvent_OverlayShown = 500, + VREvent_OverlayHidden = 501, + VREvent_DashboardActivated = 502, + VREvent_DashboardDeactivated = 503, + VREvent_DashboardThumbSelected = 504, + VREvent_DashboardRequested = 505, + VREvent_ResetDashboard = 506, + VREvent_RenderToast = 507, + VREvent_ImageLoaded = 508, + VREvent_ShowKeyboard = 509, + VREvent_HideKeyboard = 510, + VREvent_OverlayGamepadFocusGained = 511, + VREvent_OverlayGamepadFocusLost = 512, + VREvent_OverlaySharedTextureChanged = 513, + VREvent_DashboardGuideButtonDown = 514, + VREvent_DashboardGuideButtonUp = 515, + VREvent_ScreenshotTriggered = 516, + VREvent_ImageFailed = 517, + VREvent_DashboardOverlayCreated = 518, + VREvent_RequestScreenshot = 520, + VREvent_ScreenshotTaken = 521, + VREvent_ScreenshotFailed = 522, + VREvent_SubmitScreenshotToDashboard = 523, + VREvent_ScreenshotProgressToDashboard = 524, + VREvent_Notification_Shown = 600, + VREvent_Notification_Hidden = 601, + VREvent_Notification_BeginInteraction = 602, + VREvent_Notification_Destroyed = 603, + VREvent_Quit = 700, + VREvent_ProcessQuit = 701, + VREvent_QuitAborted_UserPrompt = 702, + VREvent_QuitAcknowledged = 703, + VREvent_DriverRequestedQuit = 704, + VREvent_ChaperoneDataHasChanged = 800, + VREvent_ChaperoneUniverseHasChanged = 801, + VREvent_ChaperoneTempDataHasChanged = 802, + VREvent_ChaperoneSettingsHaveChanged = 803, + VREvent_SeatedZeroPoseReset = 804, + VREvent_AudioSettingsHaveChanged = 820, + VREvent_BackgroundSettingHasChanged = 850, + VREvent_CameraSettingsHaveChanged = 851, + VREvent_ReprojectionSettingHasChanged = 852, + VREvent_ModelSkinSettingsHaveChanged = 853, + VREvent_EnvironmentSettingsHaveChanged = 854, + VREvent_PowerSettingsHaveChanged = 855, + VREvent_StatusUpdate = 900, + VREvent_MCImageUpdated = 1000, + VREvent_FirmwareUpdateStarted = 1100, + VREvent_FirmwareUpdateFinished = 1101, + VREvent_KeyboardClosed = 1200, + VREvent_KeyboardCharInput = 1201, + VREvent_KeyboardDone = 1202, + VREvent_ApplicationTransitionStarted = 1300, + VREvent_ApplicationTransitionAborted = 1301, + VREvent_ApplicationTransitionNewAppStarted = 1302, + VREvent_ApplicationListUpdated = 1303, + VREvent_ApplicationMimeTypeLoad = 1304, + VREvent_Compositor_MirrorWindowShown = 1400, + VREvent_Compositor_MirrorWindowHidden = 1401, + VREvent_Compositor_ChaperoneBoundsShown = 1410, + VREvent_Compositor_ChaperoneBoundsHidden = 1411, + VREvent_TrackedCamera_StartVideoStream = 1500, + VREvent_TrackedCamera_StopVideoStream = 1501, + VREvent_TrackedCamera_PauseVideoStream = 1502, + VREvent_TrackedCamera_ResumeVideoStream = 1503, + VREvent_TrackedCamera_EditingSurface = 1550, + VREvent_PerformanceTest_EnableCapture = 1600, + VREvent_PerformanceTest_DisableCapture = 1601, + VREvent_PerformanceTest_FidelityLevel = 1602, + VREvent_VendorSpecific_Reserved_Start = 10000, + VREvent_VendorSpecific_Reserved_End = 19999, +} +public enum EDeviceActivityLevel +{ + k_EDeviceActivityLevel_Unknown = -1, + k_EDeviceActivityLevel_Idle = 0, + k_EDeviceActivityLevel_UserInteraction = 1, + k_EDeviceActivityLevel_UserInteraction_Timeout = 2, + k_EDeviceActivityLevel_Standby = 3, +} +public enum EVRButtonId +{ + k_EButton_System = 0, + k_EButton_ApplicationMenu = 1, + k_EButton_Grip = 2, + k_EButton_DPad_Left = 3, + k_EButton_DPad_Up = 4, + k_EButton_DPad_Right = 5, + k_EButton_DPad_Down = 6, + k_EButton_A = 7, + k_EButton_ProximitySensor = 31, + k_EButton_Axis0 = 32, + k_EButton_Axis1 = 33, + k_EButton_Axis2 = 34, + k_EButton_Axis3 = 35, + k_EButton_Axis4 = 36, + k_EButton_SteamVR_Touchpad = 32, + k_EButton_SteamVR_Trigger = 33, + k_EButton_Dashboard_Back = 2, + k_EButton_Max = 64, +} +public enum EVRMouseButton +{ + Left = 1, + Right = 2, + Middle = 4, +} +public enum EVRControllerAxisType +{ + k_eControllerAxis_None = 0, + k_eControllerAxis_TrackPad = 1, + k_eControllerAxis_Joystick = 2, + k_eControllerAxis_Trigger = 3, +} +public enum EVRControllerEventOutputType +{ + ControllerEventOutput_OSEvents = 0, + ControllerEventOutput_VREvents = 1, +} +public enum ECollisionBoundsStyle +{ + COLLISION_BOUNDS_STYLE_BEGINNER = 0, + COLLISION_BOUNDS_STYLE_INTERMEDIATE = 1, + COLLISION_BOUNDS_STYLE_SQUARES = 2, + COLLISION_BOUNDS_STYLE_ADVANCED = 3, + COLLISION_BOUNDS_STYLE_NONE = 4, + COLLISION_BOUNDS_STYLE_COUNT = 5, +} +public enum EVROverlayError +{ + None = 0, + UnknownOverlay = 10, + InvalidHandle = 11, + PermissionDenied = 12, + OverlayLimitExceeded = 13, + WrongVisibilityType = 14, + KeyTooLong = 15, + NameTooLong = 16, + KeyInUse = 17, + WrongTransformType = 18, + InvalidTrackedDevice = 19, + InvalidParameter = 20, + ThumbnailCantBeDestroyed = 21, + ArrayTooSmall = 22, + RequestFailed = 23, + InvalidTexture = 24, + UnableToLoadFile = 25, + KeyboardAlreadyInUse = 26, + NoNeighbor = 27, +} +public enum EVRApplicationType +{ + VRApplication_Other = 0, + VRApplication_Scene = 1, + VRApplication_Overlay = 2, + VRApplication_Background = 3, + VRApplication_Utility = 4, + VRApplication_VRMonitor = 5, + VRApplication_SteamWatchdog = 6, + VRApplication_Max = 7, +} +public enum EVRFirmwareError +{ + None = 0, + Success = 1, + Fail = 2, +} +public enum EVRNotificationError +{ + OK = 0, + InvalidNotificationId = 100, + NotificationQueueFull = 101, + InvalidOverlayHandle = 102, + SystemWithUserValueAlreadyExists = 103, +} +public enum EVRInitError +{ + None = 0, + Unknown = 1, + Init_InstallationNotFound = 100, + Init_InstallationCorrupt = 101, + Init_VRClientDLLNotFound = 102, + Init_FileNotFound = 103, + Init_FactoryNotFound = 104, + Init_InterfaceNotFound = 105, + Init_InvalidInterface = 106, + Init_UserConfigDirectoryInvalid = 107, + Init_HmdNotFound = 108, + Init_NotInitialized = 109, + Init_PathRegistryNotFound = 110, + Init_NoConfigPath = 111, + Init_NoLogPath = 112, + Init_PathRegistryNotWritable = 113, + Init_AppInfoInitFailed = 114, + Init_Retry = 115, + Init_InitCanceledByUser = 116, + Init_AnotherAppLaunching = 117, + Init_SettingsInitFailed = 118, + Init_ShuttingDown = 119, + Init_TooManyObjects = 120, + Init_NoServerForBackgroundApp = 121, + Init_NotSupportedWithCompositor = 122, + Init_NotAvailableToUtilityApps = 123, + Init_Internal = 124, + Init_HmdDriverIdIsNone = 125, + Init_HmdNotFoundPresenceFailed = 126, + Init_VRMonitorNotFound = 127, + Init_VRMonitorStartupFailed = 128, + Init_LowPowerWatchdogNotSupported = 129, + Init_InvalidApplicationType = 130, + Init_NotAvailableToWatchdogApps = 131, + Init_WatchdogDisabledInSettings = 132, + Driver_Failed = 200, + Driver_Unknown = 201, + Driver_HmdUnknown = 202, + Driver_NotLoaded = 203, + Driver_RuntimeOutOfDate = 204, + Driver_HmdInUse = 205, + Driver_NotCalibrated = 206, + Driver_CalibrationInvalid = 207, + Driver_HmdDisplayNotFound = 208, + Driver_TrackedDeviceInterfaceUnknown = 209, + Driver_HmdDriverIdOutOfBounds = 211, + Driver_HmdDisplayMirrored = 212, + IPC_ServerInitFailed = 300, + IPC_ConnectFailed = 301, + IPC_SharedStateInitFailed = 302, + IPC_CompositorInitFailed = 303, + IPC_MutexInitFailed = 304, + IPC_Failed = 305, + IPC_CompositorConnectFailed = 306, + IPC_CompositorInvalidConnectResponse = 307, + IPC_ConnectFailedAfterMultipleAttempts = 308, + Compositor_Failed = 400, + Compositor_D3D11HardwareRequired = 401, + Compositor_FirmwareRequiresUpdate = 402, + Compositor_OverlayInitFailed = 403, + Compositor_ScreenshotsInitFailed = 404, + VendorSpecific_UnableToConnectToOculusRuntime = 1000, + VendorSpecific_HmdFound_CantOpenDevice = 1101, + VendorSpecific_HmdFound_UnableToRequestConfigStart = 1102, + VendorSpecific_HmdFound_NoStoredConfig = 1103, + VendorSpecific_HmdFound_ConfigTooBig = 1104, + VendorSpecific_HmdFound_ConfigTooSmall = 1105, + VendorSpecific_HmdFound_UnableToInitZLib = 1106, + VendorSpecific_HmdFound_CantReadFirmwareVersion = 1107, + VendorSpecific_HmdFound_UnableToSendUserDataStart = 1108, + VendorSpecific_HmdFound_UnableToGetUserDataStart = 1109, + VendorSpecific_HmdFound_UnableToGetUserDataNext = 1110, + VendorSpecific_HmdFound_UserDataAddressRange = 1111, + VendorSpecific_HmdFound_UserDataError = 1112, + VendorSpecific_HmdFound_ConfigFailedSanityCheck = 1113, + Steam_SteamInstallationNotFound = 2000, +} +public enum EVRScreenshotType +{ + None = 0, + Mono = 1, + Stereo = 2, + Cubemap = 3, + MonoPanorama = 4, + StereoPanorama = 5, +} +public enum EVRScreenshotPropertyFilenames +{ + Preview = 0, + VR = 1, +} +public enum EVRTrackedCameraError +{ + None = 0, + OperationFailed = 100, + InvalidHandle = 101, + InvalidFrameHeaderVersion = 102, + OutOfHandles = 103, + IPCFailure = 104, + NotSupportedForThisDevice = 105, + SharedMemoryFailure = 106, + FrameBufferingFailure = 107, + StreamSetupFailure = 108, + InvalidGLTextureId = 109, + InvalidSharedTextureHandle = 110, + FailedToGetGLTextureId = 111, + SharedTextureFailure = 112, + NoFrameAvailable = 113, + InvalidArgument = 114, + InvalidFrameBufferSize = 115, +} +public enum EVRTrackedCameraFrameType +{ + Distorted = 0, + Undistorted = 1, + MaximumUndistorted = 2, + MAX_CAMERA_FRAME_TYPES = 3, +} +public enum EVRApplicationError +{ + None = 0, + AppKeyAlreadyExists = 100, + NoManifest = 101, + NoApplication = 102, + InvalidIndex = 103, + UnknownApplication = 104, + IPCFailed = 105, + ApplicationAlreadyRunning = 106, + InvalidManifest = 107, + InvalidApplication = 108, + LaunchFailed = 109, + ApplicationAlreadyStarting = 110, + LaunchInProgress = 111, + OldApplicationQuitting = 112, + TransitionAborted = 113, + IsTemplate = 114, + BufferTooSmall = 200, + PropertyNotSet = 201, + UnknownProperty = 202, + InvalidParameter = 203, +} +public enum EVRApplicationProperty +{ + Name_String = 0, + LaunchType_String = 11, + WorkingDirectory_String = 12, + BinaryPath_String = 13, + Arguments_String = 14, + URL_String = 15, + Description_String = 50, + NewsURL_String = 51, + ImagePath_String = 52, + Source_String = 53, + IsDashboardOverlay_Bool = 60, + IsTemplate_Bool = 61, + IsInstanced_Bool = 62, + LastLaunchTime_Uint64 = 70, +} +public enum EVRApplicationTransitionState +{ + VRApplicationTransition_None = 0, + VRApplicationTransition_OldAppQuitSent = 10, + VRApplicationTransition_WaitingForExternalLaunch = 11, + VRApplicationTransition_NewAppLaunched = 20, +} +public enum ChaperoneCalibrationState +{ + OK = 1, + Warning = 100, + Warning_BaseStationMayHaveMoved = 101, + Warning_BaseStationRemoved = 102, + Warning_SeatedBoundsInvalid = 103, + Error = 200, + Error_BaseStationUninitalized = 201, + Error_BaseStationConflict = 202, + Error_PlayAreaInvalid = 203, + Error_CollisionBoundsInvalid = 204, +} +public enum EChaperoneConfigFile +{ + Live = 1, + Temp = 2, +} +public enum EChaperoneImportFlags +{ + EChaperoneImport_BoundsOnly = 1, +} +public enum EVRCompositorError +{ + None = 0, + RequestFailed = 1, + IncompatibleVersion = 100, + DoNotHaveFocus = 101, + InvalidTexture = 102, + IsNotSceneApplication = 103, + TextureIsOnWrongDevice = 104, + TextureUsesUnsupportedFormat = 105, + SharedTexturesNotSupported = 106, + IndexOutOfRange = 107, +} +public enum VROverlayInputMethod +{ + None = 0, + Mouse = 1, +} +public enum VROverlayTransformType +{ + VROverlayTransform_Absolute = 0, + VROverlayTransform_TrackedDeviceRelative = 1, + VROverlayTransform_SystemOverlay = 2, + VROverlayTransform_TrackedComponent = 3, +} +public enum VROverlayFlags +{ + None = 0, + Curved = 1, + RGSS4X = 2, + NoDashboardTab = 3, + AcceptsGamepadEvents = 4, + ShowGamepadFocus = 5, + SendVRScrollEvents = 6, + SendVRTouchpadEvents = 7, + ShowTouchPadScrollWheel = 8, + TransferOwnershipToInternalProcess = 9, + SideBySide_Parallel = 10, + SideBySide_Crossed = 11, + Panorama = 12, + StereoPanorama = 13, + SortWithNonSceneOverlays = 14, +} +public enum EGamepadTextInputMode +{ + k_EGamepadTextInputModeNormal = 0, + k_EGamepadTextInputModePassword = 1, + k_EGamepadTextInputModeSubmit = 2, +} +public enum EGamepadTextInputLineMode +{ + k_EGamepadTextInputLineModeSingleLine = 0, + k_EGamepadTextInputLineModeMultipleLines = 1, +} +public enum EOverlayDirection +{ + Up = 0, + Down = 1, + Left = 2, + Right = 3, + Count = 4, +} +public enum EVRRenderModelError +{ + None = 0, + Loading = 100, + NotSupported = 200, + InvalidArg = 300, + InvalidModel = 301, + NoShapes = 302, + MultipleShapes = 303, + TooManyVertices = 304, + MultipleTextures = 305, + BufferTooSmall = 306, + NotEnoughNormals = 307, + NotEnoughTexCoords = 308, + InvalidTexture = 400, +} +public enum EVRComponentProperty +{ + IsStatic = 1, + IsVisible = 2, + IsTouched = 4, + IsPressed = 8, + IsScrolled = 16, +} +public enum EVRNotificationType +{ + Transient = 0, + Persistent = 1, + Transient_SystemWithUserValue = 2, +} +public enum EVRNotificationStyle +{ + None = 0, + Application = 100, + Contact_Disabled = 200, + Contact_Enabled = 201, + Contact_Active = 202, +} +public enum EVRSettingsError +{ + None = 0, + IPCFailed = 1, + WriteFailed = 2, + ReadFailed = 3, + JsonParseFailed = 4, + UnsetSettingHasNoDefault = 5, +} +public enum EVRScreenshotError +{ + None = 0, + RequestFailed = 1, + IncompatibleVersion = 100, + NotFound = 101, + BufferTooSmall = 102, + ScreenshotAlreadyInProgress = 108, +} + +[StructLayout(LayoutKind.Explicit)] public struct VREvent_Data_t +{ + [FieldOffset(0)] public VREvent_Reserved_t reserved; + [FieldOffset(0)] public VREvent_Controller_t controller; + [FieldOffset(0)] public VREvent_Mouse_t mouse; + [FieldOffset(0)] public VREvent_Scroll_t scroll; + [FieldOffset(0)] public VREvent_Process_t process; + [FieldOffset(0)] public VREvent_Notification_t notification; + [FieldOffset(0)] public VREvent_Overlay_t overlay; + [FieldOffset(0)] public VREvent_Status_t status; + [FieldOffset(0)] public VREvent_Ipd_t ipd; + [FieldOffset(0)] public VREvent_Chaperone_t chaperone; + [FieldOffset(0)] public VREvent_PerformanceTest_t performanceTest; + [FieldOffset(0)] public VREvent_TouchPadMove_t touchPadMove; + [FieldOffset(0)] public VREvent_SeatedZeroPoseReset_t seatedZeroPoseReset; + [FieldOffset(0)] public VREvent_Screenshot_t screenshot; + [FieldOffset(0)] public VREvent_Keyboard_t keyboard; // This has to be at the end due to a mono bug +} + +[StructLayout(LayoutKind.Sequential)] public struct HmdMatrix34_t +{ + public float m0; //float[3][4] + public float m1; + public float m2; + public float m3; + public float m4; + public float m5; + public float m6; + public float m7; + public float m8; + public float m9; + public float m10; + public float m11; +} +[StructLayout(LayoutKind.Sequential)] public struct HmdMatrix44_t +{ + public float m0; //float[4][4] + public float m1; + public float m2; + public float m3; + public float m4; + public float m5; + public float m6; + public float m7; + public float m8; + public float m9; + public float m10; + public float m11; + public float m12; + public float m13; + public float m14; + public float m15; +} +[StructLayout(LayoutKind.Sequential)] public struct HmdVector3_t +{ + public float v0; //float[3] + public float v1; + public float v2; +} +[StructLayout(LayoutKind.Sequential)] public struct HmdVector4_t +{ + public float v0; //float[4] + public float v1; + public float v2; + public float v3; +} +[StructLayout(LayoutKind.Sequential)] public struct HmdVector3d_t +{ + public double v0; //double[3] + public double v1; + public double v2; +} +[StructLayout(LayoutKind.Sequential)] public struct HmdVector2_t +{ + public float v0; //float[2] + public float v1; +} +[StructLayout(LayoutKind.Sequential)] public struct HmdQuaternion_t +{ + public double w; + public double x; + public double y; + public double z; +} +[StructLayout(LayoutKind.Sequential)] public struct HmdColor_t +{ + public float r; + public float g; + public float b; + public float a; +} +[StructLayout(LayoutKind.Sequential)] public struct HmdQuad_t +{ + public HmdVector3_t vCorners0; //HmdVector3_t[4] + public HmdVector3_t vCorners1; + public HmdVector3_t vCorners2; + public HmdVector3_t vCorners3; +} +[StructLayout(LayoutKind.Sequential)] public struct HmdRect2_t +{ + public HmdVector2_t vTopLeft; + public HmdVector2_t vBottomRight; +} +[StructLayout(LayoutKind.Sequential)] public struct DistortionCoordinates_t +{ + public float rfRed0; //float[2] + public float rfRed1; + public float rfGreen0; //float[2] + public float rfGreen1; + public float rfBlue0; //float[2] + public float rfBlue1; +} +[StructLayout(LayoutKind.Sequential)] public struct Texture_t +{ + public IntPtr handle; // void * + public EGraphicsAPIConvention eType; + public EColorSpace eColorSpace; +} +[StructLayout(LayoutKind.Sequential)] public struct TrackedDevicePose_t +{ + public HmdMatrix34_t mDeviceToAbsoluteTracking; + public HmdVector3_t vVelocity; + public HmdVector3_t vAngularVelocity; + public ETrackingResult eTrackingResult; + [MarshalAs(UnmanagedType.I1)] + public bool bPoseIsValid; + [MarshalAs(UnmanagedType.I1)] + public bool bDeviceIsConnected; +} +[StructLayout(LayoutKind.Sequential)] public struct VRTextureBounds_t +{ + public float uMin; + public float vMin; + public float uMax; + public float vMax; +} +[StructLayout(LayoutKind.Sequential)] public struct VulkanData_t +{ + public ulong m_nImage; + public IntPtr m_pDevice; // struct VkDevice_T * + public IntPtr m_pPhysicalDevice; // struct VkPhysicalDevice_T * + public IntPtr m_pInstance; // struct VkInstance_T * + public IntPtr m_pQueue; // struct VkQueue_T * + public uint m_nQueueFamilyIndex; + public uint m_nWidth; + public uint m_nHeight; + public uint m_nFormat; + public uint m_nSampleCount; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_Controller_t +{ + public uint button; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_Mouse_t +{ + public float x; + public float y; + public uint button; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_Scroll_t +{ + public float xdelta; + public float ydelta; + public uint repeatCount; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_TouchPadMove_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool bFingerDown; + public float flSecondsFingerDown; + public float fValueXFirst; + public float fValueYFirst; + public float fValueXRaw; + public float fValueYRaw; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_Notification_t +{ + public ulong ulUserValue; + public uint notificationId; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_Process_t +{ + public uint pid; + public uint oldPid; + [MarshalAs(UnmanagedType.I1)] + public bool bForced; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_Overlay_t +{ + public ulong overlayHandle; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_Status_t +{ + public uint statusState; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_Keyboard_t +{ + public byte cNewInput0,cNewInput1,cNewInput2,cNewInput3,cNewInput4,cNewInput5,cNewInput6,cNewInput7; + public ulong uUserValue; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_Ipd_t +{ + public float ipdMeters; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_Chaperone_t +{ + public ulong m_nPreviousUniverse; + public ulong m_nCurrentUniverse; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_Reserved_t +{ + public ulong reserved0; + public ulong reserved1; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_PerformanceTest_t +{ + public uint m_nFidelityLevel; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_SeatedZeroPoseReset_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool bResetBySystemMenu; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_Screenshot_t +{ + public uint handle; + public uint type; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_ScreenshotProgress_t +{ + public float progress; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_ApplicationLaunch_t +{ + public uint pid; + public uint unArgsHandle; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_EditingCameraSurface_t +{ + public ulong overlayHandle; + public uint nVisualMode; +} +[StructLayout(LayoutKind.Sequential)] public struct VREvent_t +{ + public uint eventType; + public uint trackedDeviceIndex; + public float eventAgeSeconds; + public VREvent_Data_t data; +} +[StructLayout(LayoutKind.Sequential)] public struct HiddenAreaMesh_t +{ + public IntPtr pVertexData; // const struct vr::HmdVector2_t * + public uint unTriangleCount; +} +[StructLayout(LayoutKind.Sequential)] public struct VRControllerAxis_t +{ + public float x; + public float y; +} +[StructLayout(LayoutKind.Sequential)] public struct VRControllerState_t +{ + public uint unPacketNum; + public ulong ulButtonPressed; + public ulong ulButtonTouched; + public VRControllerAxis_t rAxis0; //VRControllerAxis_t[5] + public VRControllerAxis_t rAxis1; + public VRControllerAxis_t rAxis2; + public VRControllerAxis_t rAxis3; + public VRControllerAxis_t rAxis4; +} +[StructLayout(LayoutKind.Sequential)] public struct Compositor_OverlaySettings +{ + public uint size; + [MarshalAs(UnmanagedType.I1)] + public bool curved; + [MarshalAs(UnmanagedType.I1)] + public bool antialias; + public float scale; + public float distance; + public float alpha; + public float uOffset; + public float vOffset; + public float uScale; + public float vScale; + public float gridDivs; + public float gridWidth; + public float gridScale; + public HmdMatrix44_t transform; +} +[StructLayout(LayoutKind.Sequential)] public struct CameraVideoStreamFrameHeader_t +{ + public EVRTrackedCameraFrameType eFrameType; + public uint nWidth; + public uint nHeight; + public uint nBytesPerPixel; + public uint nFrameSequence; + public TrackedDevicePose_t standingTrackedDevicePose; +} +[StructLayout(LayoutKind.Sequential)] public struct AppOverrideKeys_t +{ + public IntPtr pchKey; // const char * + public IntPtr pchValue; // const char * +} +[StructLayout(LayoutKind.Sequential)] public struct Compositor_FrameTiming +{ + public uint m_nSize; + public uint m_nFrameIndex; + public uint m_nNumFramePresents; + public uint m_nNumDroppedFrames; + public uint m_nReprojectionFlags; + public double m_flSystemTimeInSeconds; + public float m_flPreSubmitGpuMs; + public float m_flPostSubmitGpuMs; + public float m_flTotalRenderGpuMs; + public float m_flCompositorRenderGpuMs; + public float m_flCompositorRenderCpuMs; + public float m_flCompositorIdleCpuMs; + public float m_flClientFrameIntervalMs; + public float m_flPresentCallCpuMs; + public float m_flWaitForPresentCpuMs; + public float m_flSubmitFrameMs; + public float m_flWaitGetPosesCalledMs; + public float m_flNewPosesReadyMs; + public float m_flNewFrameReadyMs; + public float m_flCompositorUpdateStartMs; + public float m_flCompositorUpdateEndMs; + public float m_flCompositorRenderStartMs; + public TrackedDevicePose_t m_HmdPose; +} +[StructLayout(LayoutKind.Sequential)] public struct Compositor_CumulativeStats +{ + public uint m_nPid; + public uint m_nNumFramePresents; + public uint m_nNumDroppedFrames; + public uint m_nNumReprojectedFrames; + public uint m_nNumFramePresentsOnStartup; + public uint m_nNumDroppedFramesOnStartup; + public uint m_nNumReprojectedFramesOnStartup; + public uint m_nNumLoading; + public uint m_nNumFramePresentsLoading; + public uint m_nNumDroppedFramesLoading; + public uint m_nNumReprojectedFramesLoading; + public uint m_nNumTimedOut; + public uint m_nNumFramePresentsTimedOut; + public uint m_nNumDroppedFramesTimedOut; + public uint m_nNumReprojectedFramesTimedOut; +} +[StructLayout(LayoutKind.Sequential)] public struct VROverlayIntersectionParams_t +{ + public HmdVector3_t vSource; + public HmdVector3_t vDirection; + public ETrackingUniverseOrigin eOrigin; +} +[StructLayout(LayoutKind.Sequential)] public struct VROverlayIntersectionResults_t +{ + public HmdVector3_t vPoint; + public HmdVector3_t vNormal; + public HmdVector2_t vUVs; + public float fDistance; +} +[StructLayout(LayoutKind.Sequential)] public struct RenderModel_ComponentState_t +{ + public HmdMatrix34_t mTrackingToComponentRenderModel; + public HmdMatrix34_t mTrackingToComponentLocal; + public uint uProperties; +} +[StructLayout(LayoutKind.Sequential)] public struct RenderModel_Vertex_t +{ + public HmdVector3_t vPosition; + public HmdVector3_t vNormal; + public float rfTextureCoord0; //float[2] + public float rfTextureCoord1; +} +[StructLayout(LayoutKind.Sequential)] public struct RenderModel_TextureMap_t +{ + public char unWidth; + public char unHeight; + public IntPtr rubTextureMapData; // const uint8_t * +} +[StructLayout(LayoutKind.Sequential)] public struct RenderModel_t +{ + public IntPtr rVertexData; // const struct vr::RenderModel_Vertex_t * + public uint unVertexCount; + public IntPtr rIndexData; // const uint16_t * + public uint unTriangleCount; + public int diffuseTextureId; +} +[StructLayout(LayoutKind.Sequential)] public struct RenderModel_ControllerMode_State_t +{ + [MarshalAs(UnmanagedType.I1)] + public bool bScrollWheelVisible; +} +[StructLayout(LayoutKind.Sequential)] public struct NotificationBitmap_t +{ + public IntPtr m_pImageData; // void * + public int m_nWidth; + public int m_nHeight; + public int m_nBytesPerPixel; +} +[StructLayout(LayoutKind.Sequential)] public struct COpenVRContext +{ + public IntPtr m_pVRSystem; // class vr::IVRSystem * + public IntPtr m_pVRChaperone; // class vr::IVRChaperone * + public IntPtr m_pVRChaperoneSetup; // class vr::IVRChaperoneSetup * + public IntPtr m_pVRCompositor; // class vr::IVRCompositor * + public IntPtr m_pVROverlay; // class vr::IVROverlay * + public IntPtr m_pVRResources; // class vr::IVRResources * + public IntPtr m_pVRRenderModels; // class vr::IVRRenderModels * + public IntPtr m_pVRExtendedDisplay; // class vr::IVRExtendedDisplay * + public IntPtr m_pVRSettings; // class vr::IVRSettings * + public IntPtr m_pVRApplications; // class vr::IVRApplications * + public IntPtr m_pVRTrackedCamera; // class vr::IVRTrackedCamera * + public IntPtr m_pVRScreenshots; // class vr::IVRScreenshots * +} + +public class OpenVR +{ + + public static uint InitInternal(ref EVRInitError peError, EVRApplicationType eApplicationType) + { + return OpenVRInterop.InitInternal(ref peError, eApplicationType); + } + + public static void ShutdownInternal() + { + OpenVRInterop.ShutdownInternal(); + } + + public static bool IsHmdPresent() + { + return OpenVRInterop.IsHmdPresent(); + } + + public static bool IsRuntimeInstalled() + { + return OpenVRInterop.IsRuntimeInstalled(); + } + + public static string GetStringForHmdError(EVRInitError error) + { + return Marshal.PtrToStringAnsi(OpenVRInterop.GetStringForHmdError(error)); + } + + public static IntPtr GetGenericInterface(string pchInterfaceVersion, ref EVRInitError peError) + { + return OpenVRInterop.GetGenericInterface(pchInterfaceVersion, ref peError); + } + + public static bool IsInterfaceVersionValid(string pchInterfaceVersion) + { + return OpenVRInterop.IsInterfaceVersionValid(pchInterfaceVersion); + } + + public static uint GetInitToken() + { + return OpenVRInterop.GetInitToken(); + } + + public const uint k_unTrackingStringSize = 32; + public const uint k_unMaxDriverDebugResponseSize = 32768; + public const uint k_unTrackedDeviceIndex_Hmd = 0; + public const uint k_unMaxTrackedDeviceCount = 16; + public const uint k_unTrackedDeviceIndexOther = 4294967294; + public const uint k_unTrackedDeviceIndexInvalid = 4294967295; + public const uint k_unMaxPropertyStringSize = 32768; + public const uint k_unControllerStateAxisCount = 5; + public const ulong k_ulOverlayHandleInvalid = 0; + public const uint k_unScreenshotHandleInvalid = 0; + public const string IVRSystem_Version = "IVRSystem_012"; + public const string IVRExtendedDisplay_Version = "IVRExtendedDisplay_001"; + public const string IVRTrackedCamera_Version = "IVRTrackedCamera_003"; + public const uint k_unMaxApplicationKeyLength = 128; + public const string k_pch_MimeType_HomeApp = "vr/home"; + public const string k_pch_MimeType_GameTheater = "vr/game_theater"; + public const string IVRApplications_Version = "IVRApplications_006"; + public const string IVRChaperone_Version = "IVRChaperone_003"; + public const string IVRChaperoneSetup_Version = "IVRChaperoneSetup_005"; + public const string IVRCompositor_Version = "IVRCompositor_016"; + public const uint k_unVROverlayMaxKeyLength = 128; + public const uint k_unVROverlayMaxNameLength = 128; + public const uint k_unMaxOverlayCount = 64; + public const string IVROverlay_Version = "IVROverlay_013"; + public const string k_pch_Controller_Component_GDC2015 = "gdc2015"; + public const string k_pch_Controller_Component_Base = "base"; + public const string k_pch_Controller_Component_Tip = "tip"; + public const string k_pch_Controller_Component_HandGrip = "handgrip"; + public const string k_pch_Controller_Component_Status = "status"; + public const string IVRRenderModels_Version = "IVRRenderModels_005"; + public const uint k_unNotificationTextMaxSize = 256; + public const string IVRNotifications_Version = "IVRNotifications_002"; + public const uint k_unMaxSettingsKeyLength = 128; + public const string IVRSettings_Version = "IVRSettings_002"; + public const string k_pch_SteamVR_Section = "steamvr"; + public const string k_pch_SteamVR_RequireHmd_String = "requireHmd"; + public const string k_pch_SteamVR_ForcedDriverKey_String = "forcedDriver"; + public const string k_pch_SteamVR_ForcedHmdKey_String = "forcedHmd"; + public const string k_pch_SteamVR_DisplayDebug_Bool = "displayDebug"; + public const string k_pch_SteamVR_DebugProcessPipe_String = "debugProcessPipe"; + public const string k_pch_SteamVR_EnableDistortion_Bool = "enableDistortion"; + public const string k_pch_SteamVR_DisplayDebugX_Int32 = "displayDebugX"; + public const string k_pch_SteamVR_DisplayDebugY_Int32 = "displayDebugY"; + public const string k_pch_SteamVR_SendSystemButtonToAllApps_Bool = "sendSystemButtonToAllApps"; + public const string k_pch_SteamVR_LogLevel_Int32 = "loglevel"; + public const string k_pch_SteamVR_IPD_Float = "ipd"; + public const string k_pch_SteamVR_Background_String = "background"; + public const string k_pch_SteamVR_BackgroundCameraHeight_Float = "backgroundCameraHeight"; + public const string k_pch_SteamVR_BackgroundDomeRadius_Float = "backgroundDomeRadius"; + public const string k_pch_SteamVR_Environment_String = "environment"; + public const string k_pch_SteamVR_GridColor_String = "gridColor"; + public const string k_pch_SteamVR_PlayAreaColor_String = "playAreaColor"; + public const string k_pch_SteamVR_ShowStage_Bool = "showStage"; + public const string k_pch_SteamVR_ActivateMultipleDrivers_Bool = "activateMultipleDrivers"; + public const string k_pch_SteamVR_DirectMode_Bool = "directMode"; + public const string k_pch_SteamVR_DirectModeEdidVid_Int32 = "directModeEdidVid"; + public const string k_pch_SteamVR_DirectModeEdidPid_Int32 = "directModeEdidPid"; + public const string k_pch_SteamVR_UsingSpeakers_Bool = "usingSpeakers"; + public const string k_pch_SteamVR_SpeakersForwardYawOffsetDegrees_Float = "speakersForwardYawOffsetDegrees"; + public const string k_pch_SteamVR_BaseStationPowerManagement_Bool = "basestationPowerManagement"; + public const string k_pch_SteamVR_NeverKillProcesses_Bool = "neverKillProcesses"; + public const string k_pch_SteamVR_RenderTargetMultiplier_Float = "renderTargetMultiplier"; + public const string k_pch_SteamVR_AllowReprojection_Bool = "allowReprojection"; + public const string k_pch_SteamVR_ForceReprojection_Bool = "forceReprojection"; + public const string k_pch_SteamVR_ForceFadeOnBadTracking_Bool = "forceFadeOnBadTracking"; + public const string k_pch_SteamVR_DefaultMirrorView_Int32 = "defaultMirrorView"; + public const string k_pch_SteamVR_ShowMirrorView_Bool = "showMirrorView"; + public const string k_pch_SteamVR_MirrorViewGeometry_String = "mirrorViewGeometry"; + public const string k_pch_SteamVR_StartMonitorFromAppLaunch = "startMonitorFromAppLaunch"; + public const string k_pch_SteamVR_EnableHomeApp = "enableHomeApp"; + public const string k_pch_SteamVR_SetInitialDefaultHomeApp = "setInitialDefaultHomeApp"; + public const string k_pch_SteamVR_CycleBackgroundImageTimeSec_Int32 = "CycleBackgroundImageTimeSec"; + public const string k_pch_SteamVR_RetailDemo_Bool = "retailDemo"; + public const string k_pch_Lighthouse_Section = "driver_lighthouse"; + public const string k_pch_Lighthouse_DisableIMU_Bool = "disableimu"; + public const string k_pch_Lighthouse_UseDisambiguation_String = "usedisambiguation"; + public const string k_pch_Lighthouse_DisambiguationDebug_Int32 = "disambiguationdebug"; + public const string k_pch_Lighthouse_PrimaryBasestation_Int32 = "primarybasestation"; + public const string k_pch_Lighthouse_DBHistory_Bool = "dbhistory"; + public const string k_pch_Null_Section = "driver_null"; + public const string k_pch_Null_EnableNullDriver_Bool = "enable"; + public const string k_pch_Null_SerialNumber_String = "serialNumber"; + public const string k_pch_Null_ModelNumber_String = "modelNumber"; + public const string k_pch_Null_WindowX_Int32 = "windowX"; + public const string k_pch_Null_WindowY_Int32 = "windowY"; + public const string k_pch_Null_WindowWidth_Int32 = "windowWidth"; + public const string k_pch_Null_WindowHeight_Int32 = "windowHeight"; + public const string k_pch_Null_RenderWidth_Int32 = "renderWidth"; + public const string k_pch_Null_RenderHeight_Int32 = "renderHeight"; + public const string k_pch_Null_SecondsFromVsyncToPhotons_Float = "secondsFromVsyncToPhotons"; + public const string k_pch_Null_DisplayFrequency_Float = "displayFrequency"; + public const string k_pch_UserInterface_Section = "userinterface"; + public const string k_pch_UserInterface_StatusAlwaysOnTop_Bool = "StatusAlwaysOnTop"; + public const string k_pch_UserInterface_Screenshots_Bool = "screenshots"; + public const string k_pch_UserInterface_ScreenshotType_Int = "screenshotType"; + public const string k_pch_Notifications_Section = "notifications"; + public const string k_pch_Notifications_DoNotDisturb_Bool = "DoNotDisturb"; + public const string k_pch_Keyboard_Section = "keyboard"; + public const string k_pch_Keyboard_TutorialCompletions = "TutorialCompletions"; + public const string k_pch_Keyboard_ScaleX = "ScaleX"; + public const string k_pch_Keyboard_ScaleY = "ScaleY"; + public const string k_pch_Keyboard_OffsetLeftX = "OffsetLeftX"; + public const string k_pch_Keyboard_OffsetRightX = "OffsetRightX"; + public const string k_pch_Keyboard_OffsetY = "OffsetY"; + public const string k_pch_Keyboard_Smoothing = "Smoothing"; + public const string k_pch_Perf_Section = "perfcheck"; + public const string k_pch_Perf_HeuristicActive_Bool = "heuristicActive"; + public const string k_pch_Perf_NotifyInHMD_Bool = "warnInHMD"; + public const string k_pch_Perf_NotifyOnlyOnce_Bool = "warnOnlyOnce"; + public const string k_pch_Perf_AllowTimingStore_Bool = "allowTimingStore"; + public const string k_pch_Perf_SaveTimingsOnExit_Bool = "saveTimingsOnExit"; + public const string k_pch_Perf_TestData_Float = "perfTestData"; + public const string k_pch_CollisionBounds_Section = "collisionBounds"; + public const string k_pch_CollisionBounds_Style_Int32 = "CollisionBoundsStyle"; + public const string k_pch_CollisionBounds_GroundPerimeterOn_Bool = "CollisionBoundsGroundPerimeterOn"; + public const string k_pch_CollisionBounds_CenterMarkerOn_Bool = "CollisionBoundsCenterMarkerOn"; + public const string k_pch_CollisionBounds_PlaySpaceOn_Bool = "CollisionBoundsPlaySpaceOn"; + public const string k_pch_CollisionBounds_FadeDistance_Float = "CollisionBoundsFadeDistance"; + public const string k_pch_CollisionBounds_ColorGammaR_Int32 = "CollisionBoundsColorGammaR"; + public const string k_pch_CollisionBounds_ColorGammaG_Int32 = "CollisionBoundsColorGammaG"; + public const string k_pch_CollisionBounds_ColorGammaB_Int32 = "CollisionBoundsColorGammaB"; + public const string k_pch_CollisionBounds_ColorGammaA_Int32 = "CollisionBoundsColorGammaA"; + public const string k_pch_Camera_Section = "camera"; + public const string k_pch_Camera_EnableCamera_Bool = "enableCamera"; + public const string k_pch_Camera_EnableCameraInDashboard_Bool = "enableCameraInDashboard"; + public const string k_pch_Camera_EnableCameraForCollisionBounds_Bool = "enableCameraForCollisionBounds"; + public const string k_pch_Camera_EnableCameraForRoomView_Bool = "enableCameraForRoomView"; + public const string k_pch_Camera_BoundsColorGammaR_Int32 = "cameraBoundsColorGammaR"; + public const string k_pch_Camera_BoundsColorGammaG_Int32 = "cameraBoundsColorGammaG"; + public const string k_pch_Camera_BoundsColorGammaB_Int32 = "cameraBoundsColorGammaB"; + public const string k_pch_Camera_BoundsColorGammaA_Int32 = "cameraBoundsColorGammaA"; + public const string k_pch_Camera_BoundsStrength_Int32 = "cameraBoundsStrength"; + public const string k_pch_audio_Section = "audio"; + public const string k_pch_audio_OnPlaybackDevice_String = "onPlaybackDevice"; + public const string k_pch_audio_OnRecordDevice_String = "onRecordDevice"; + public const string k_pch_audio_OnPlaybackMirrorDevice_String = "onPlaybackMirrorDevice"; + public const string k_pch_audio_OffPlaybackDevice_String = "offPlaybackDevice"; + public const string k_pch_audio_OffRecordDevice_String = "offRecordDevice"; + public const string k_pch_audio_VIVEHDMIGain = "viveHDMIGain"; + public const string k_pch_Power_Section = "power"; + public const string k_pch_Power_PowerOffOnExit_Bool = "powerOffOnExit"; + public const string k_pch_Power_TurnOffScreensTimeout_Float = "turnOffScreensTimeout"; + public const string k_pch_Power_TurnOffControllersTimeout_Float = "turnOffControllersTimeout"; + public const string k_pch_Power_ReturnToWatchdogTimeout_Float = "returnToWatchdogTimeout"; + public const string k_pch_Power_AutoLaunchSteamVROnButtonPress = "autoLaunchSteamVROnButtonPress"; + public const string k_pch_Dashboard_Section = "dashboard"; + public const string k_pch_Dashboard_EnableDashboard_Bool = "enableDashboard"; + public const string k_pch_Dashboard_ArcadeMode_Bool = "arcadeMode"; + public const string k_pch_modelskin_Section = "modelskins"; + public const string IVRScreenshots_Version = "IVRScreenshots_001"; + public const string IVRResources_Version = "IVRResources_001"; + + static uint VRToken { get; set; } + + const string FnTable_Prefix = "FnTable:"; + + class COpenVRContext + { + public COpenVRContext() { Clear(); } + + public void Clear() + { + m_pVRSystem = null; + m_pVRChaperone = null; + m_pVRChaperoneSetup = null; + m_pVRCompositor = null; + m_pVROverlay = null; + m_pVRRenderModels = null; + m_pVRExtendedDisplay = null; + m_pVRSettings = null; + m_pVRApplications = null; + m_pVRScreenshots = null; + m_pVRTrackedCamera = null; + } + + void CheckClear() + { + if (VRToken != GetInitToken()) + { + Clear(); + VRToken = GetInitToken(); + } + } + + public CVRSystem VRSystem() + { + CheckClear(); + if (m_pVRSystem == null) + { + var eError = EVRInitError.None; + var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRSystem_Version, ref eError); + if (pInterface != IntPtr.Zero && eError == EVRInitError.None) + m_pVRSystem = new CVRSystem(pInterface); + } + return m_pVRSystem; + } + + public CVRChaperone VRChaperone() + { + CheckClear(); + if (m_pVRChaperone == null) + { + var eError = EVRInitError.None; + var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRChaperone_Version, ref eError); + if (pInterface != IntPtr.Zero && eError == EVRInitError.None) + m_pVRChaperone = new CVRChaperone(pInterface); + } + return m_pVRChaperone; + } + + public CVRChaperoneSetup VRChaperoneSetup() + { + CheckClear(); + if (m_pVRChaperoneSetup == null) + { + var eError = EVRInitError.None; + var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRChaperoneSetup_Version, ref eError); + if (pInterface != IntPtr.Zero && eError == EVRInitError.None) + m_pVRChaperoneSetup = new CVRChaperoneSetup(pInterface); + } + return m_pVRChaperoneSetup; + } + + public CVRCompositor VRCompositor() + { + CheckClear(); + if (m_pVRCompositor == null) + { + var eError = EVRInitError.None; + var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRCompositor_Version, ref eError); + if (pInterface != IntPtr.Zero && eError == EVRInitError.None) + m_pVRCompositor = new CVRCompositor(pInterface); + } + return m_pVRCompositor; + } + + public CVROverlay VROverlay() + { + CheckClear(); + if (m_pVROverlay == null) + { + var eError = EVRInitError.None; + var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVROverlay_Version, ref eError); + if (pInterface != IntPtr.Zero && eError == EVRInitError.None) + m_pVROverlay = new CVROverlay(pInterface); + } + return m_pVROverlay; + } + + public CVRRenderModels VRRenderModels() + { + CheckClear(); + if (m_pVRRenderModels == null) + { + var eError = EVRInitError.None; + var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRRenderModels_Version, ref eError); + if (pInterface != IntPtr.Zero && eError == EVRInitError.None) + m_pVRRenderModels = new CVRRenderModels(pInterface); + } + return m_pVRRenderModels; + } + + public CVRExtendedDisplay VRExtendedDisplay() + { + CheckClear(); + if (m_pVRExtendedDisplay == null) + { + var eError = EVRInitError.None; + var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRExtendedDisplay_Version, ref eError); + if (pInterface != IntPtr.Zero && eError == EVRInitError.None) + m_pVRExtendedDisplay = new CVRExtendedDisplay(pInterface); + } + return m_pVRExtendedDisplay; + } + + public CVRSettings VRSettings() + { + CheckClear(); + if (m_pVRSettings == null) + { + var eError = EVRInitError.None; + var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRSettings_Version, ref eError); + if (pInterface != IntPtr.Zero && eError == EVRInitError.None) + m_pVRSettings = new CVRSettings(pInterface); + } + return m_pVRSettings; + } + + public CVRApplications VRApplications() + { + CheckClear(); + if (m_pVRApplications == null) + { + var eError = EVRInitError.None; + var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRApplications_Version, ref eError); + if (pInterface != IntPtr.Zero && eError == EVRInitError.None) + m_pVRApplications = new CVRApplications(pInterface); + } + return m_pVRApplications; + } + + public CVRScreenshots VRScreenshots() + { + CheckClear(); + if (m_pVRScreenshots == null) + { + var eError = EVRInitError.None; + var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRScreenshots_Version, ref eError); + if (pInterface != IntPtr.Zero && eError == EVRInitError.None) + m_pVRScreenshots = new CVRScreenshots(pInterface); + } + return m_pVRScreenshots; + } + + public CVRTrackedCamera VRTrackedCamera() + { + CheckClear(); + if (m_pVRTrackedCamera == null) + { + var eError = EVRInitError.None; + var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRTrackedCamera_Version, ref eError); + if (pInterface != IntPtr.Zero && eError == EVRInitError.None) + m_pVRTrackedCamera = new CVRTrackedCamera(pInterface); + } + return m_pVRTrackedCamera; + } + + private CVRSystem m_pVRSystem; + private CVRChaperone m_pVRChaperone; + private CVRChaperoneSetup m_pVRChaperoneSetup; + private CVRCompositor m_pVRCompositor; + private CVROverlay m_pVROverlay; + private CVRRenderModels m_pVRRenderModels; + private CVRExtendedDisplay m_pVRExtendedDisplay; + private CVRSettings m_pVRSettings; + private CVRApplications m_pVRApplications; + private CVRScreenshots m_pVRScreenshots; + private CVRTrackedCamera m_pVRTrackedCamera; + }; + + private static COpenVRContext _OpenVRInternal_ModuleContext = null; + static COpenVRContext OpenVRInternal_ModuleContext + { + get + { + if (_OpenVRInternal_ModuleContext == null) + _OpenVRInternal_ModuleContext = new COpenVRContext(); + return _OpenVRInternal_ModuleContext; + } + } + + public static CVRSystem System { get { return OpenVRInternal_ModuleContext.VRSystem(); } } + public static CVRChaperone Chaperone { get { return OpenVRInternal_ModuleContext.VRChaperone(); } } + public static CVRChaperoneSetup ChaperoneSetup { get { return OpenVRInternal_ModuleContext.VRChaperoneSetup(); } } + public static CVRCompositor Compositor { get { return OpenVRInternal_ModuleContext.VRCompositor(); } } + public static CVROverlay Overlay { get { return OpenVRInternal_ModuleContext.VROverlay(); } } + public static CVRRenderModels RenderModels { get { return OpenVRInternal_ModuleContext.VRRenderModels(); } } + public static CVRExtendedDisplay ExtendedDisplay { get { return OpenVRInternal_ModuleContext.VRExtendedDisplay(); } } + public static CVRSettings Settings { get { return OpenVRInternal_ModuleContext.VRSettings(); } } + public static CVRApplications Applications { get { return OpenVRInternal_ModuleContext.VRApplications(); } } + public static CVRScreenshots Screenshots { get { return OpenVRInternal_ModuleContext.VRScreenshots(); } } + public static CVRTrackedCamera TrackedCamera { get { return OpenVRInternal_ModuleContext.VRTrackedCamera(); } } + + /** Finds the active installation of vrclient.dll and initializes it */ + public static CVRSystem Init(ref EVRInitError peError, EVRApplicationType eApplicationType = EVRApplicationType.VRApplication_Scene) + { + VRToken = InitInternal(ref peError, eApplicationType); + OpenVRInternal_ModuleContext.Clear(); + + if (peError != EVRInitError.None) + return null; + + bool bInterfaceValid = IsInterfaceVersionValid(IVRSystem_Version); + if (!bInterfaceValid) + { + ShutdownInternal(); + peError = EVRInitError.Init_InterfaceNotFound; + return null; + } + + return OpenVR.System; + } + + /** unloads vrclient.dll. Any interface pointers from the interface are + * invalid after this point */ + public static void Shutdown() + { + ShutdownInternal(); + } + +} + + + +} + diff --git a/third-party/openvr/include/openvr_api.json b/third-party/openvr/include/openvr_api.json new file mode 100644 index 0000000..832e864 --- /dev/null +++ b/third-party/openvr/include/openvr_api.json @@ -0,0 +1,3582 @@ +{"typedefs":[{"typedef": "vr::glSharedTextureHandle_t","type": "void *"} +,{"typedef": "vr::glInt_t","type": "int32_t"} +,{"typedef": "vr::glUInt_t","type": "uint32_t"} +,{"typedef": "vr::SharedTextureHandle_t","type": "uint64_t"} +,{"typedef": "vr::TrackedDeviceIndex_t","type": "uint32_t"} +,{"typedef": "vr::VREvent_Data_t","type": "union VREvent_Data_t"} +,{"typedef": "vr::VRControllerState_t","type": "struct vr::VRControllerState001_t"} +,{"typedef": "vr::VROverlayHandle_t","type": "uint64_t"} +,{"typedef": "vr::TrackedCameraHandle_t","type": "uint64_t"} +,{"typedef": "vr::ScreenshotHandle_t","type": "uint32_t"} +,{"typedef": "vr::VRComponentProperties","type": "uint32_t"} +,{"typedef": "vr::TextureID_t","type": "int32_t"} +,{"typedef": "vr::VRNotificationId","type": "uint32_t"} +,{"typedef": "vr::HmdError","type": "enum vr::EVRInitError"} +,{"typedef": "vr::Hmd_Eye","type": "enum vr::EVREye"} +,{"typedef": "vr::GraphicsAPIConvention","type": "enum vr::EGraphicsAPIConvention"} +,{"typedef": "vr::ColorSpace","type": "enum vr::EColorSpace"} +,{"typedef": "vr::HmdTrackingResult","type": "enum vr::ETrackingResult"} +,{"typedef": "vr::TrackedDeviceClass","type": "enum vr::ETrackedDeviceClass"} +,{"typedef": "vr::TrackingUniverseOrigin","type": "enum vr::ETrackingUniverseOrigin"} +,{"typedef": "vr::TrackedDeviceProperty","type": "enum vr::ETrackedDeviceProperty"} +,{"typedef": "vr::TrackedPropertyError","type": "enum vr::ETrackedPropertyError"} +,{"typedef": "vr::VRSubmitFlags_t","type": "enum vr::EVRSubmitFlags"} +,{"typedef": "vr::VRState_t","type": "enum vr::EVRState"} +,{"typedef": "vr::CollisionBoundsStyle_t","type": "enum vr::ECollisionBoundsStyle"} +,{"typedef": "vr::VROverlayError","type": "enum vr::EVROverlayError"} +,{"typedef": "vr::VRFirmwareError","type": "enum vr::EVRFirmwareError"} +,{"typedef": "vr::VRCompositorError","type": "enum vr::EVRCompositorError"} +,{"typedef": "vr::VRScreenshotsError","type": "enum vr::EVRScreenshotError"} +], +"enums":[ + {"enumname": "vr::EVREye","values": [ + {"name": "Eye_Left","value": "0"} + ,{"name": "Eye_Right","value": "1"} +]} +, {"enumname": "vr::EGraphicsAPIConvention","values": [ + {"name": "API_DirectX","value": "0"} + ,{"name": "API_OpenGL","value": "1"} +]} +, {"enumname": "vr::EColorSpace","values": [ + {"name": "ColorSpace_Auto","value": "0"} + ,{"name": "ColorSpace_Gamma","value": "1"} + ,{"name": "ColorSpace_Linear","value": "2"} +]} +, {"enumname": "vr::ETrackingResult","values": [ + {"name": "TrackingResult_Uninitialized","value": "1"} + ,{"name": "TrackingResult_Calibrating_InProgress","value": "100"} + ,{"name": "TrackingResult_Calibrating_OutOfRange","value": "101"} + ,{"name": "TrackingResult_Running_OK","value": "200"} + ,{"name": "TrackingResult_Running_OutOfRange","value": "201"} +]} +, {"enumname": "vr::ETrackedDeviceClass","values": [ + {"name": "TrackedDeviceClass_Invalid","value": "0"} + ,{"name": "TrackedDeviceClass_HMD","value": "1"} + ,{"name": "TrackedDeviceClass_Controller","value": "2"} + ,{"name": "TrackedDeviceClass_TrackingReference","value": "4"} + ,{"name": "TrackedDeviceClass_Count","value": "5"} + ,{"name": "TrackedDeviceClass_Other","value": "1000"} +]} +, {"enumname": "vr::ETrackedControllerRole","values": [ + {"name": "TrackedControllerRole_Invalid","value": "0"} + ,{"name": "TrackedControllerRole_LeftHand","value": "1"} + ,{"name": "TrackedControllerRole_RightHand","value": "2"} +]} +, {"enumname": "vr::ETrackingUniverseOrigin","values": [ + {"name": "TrackingUniverseSeated","value": "0"} + ,{"name": "TrackingUniverseStanding","value": "1"} + ,{"name": "TrackingUniverseRawAndUncalibrated","value": "2"} +]} +, {"enumname": "vr::ETrackedDeviceProperty","values": [ + {"name": "Prop_TrackingSystemName_String","value": "1000"} + ,{"name": "Prop_ModelNumber_String","value": "1001"} + ,{"name": "Prop_SerialNumber_String","value": "1002"} + ,{"name": "Prop_RenderModelName_String","value": "1003"} + ,{"name": "Prop_WillDriftInYaw_Bool","value": "1004"} + ,{"name": "Prop_ManufacturerName_String","value": "1005"} + ,{"name": "Prop_TrackingFirmwareVersion_String","value": "1006"} + ,{"name": "Prop_HardwareRevision_String","value": "1007"} + ,{"name": "Prop_AllWirelessDongleDescriptions_String","value": "1008"} + ,{"name": "Prop_ConnectedWirelessDongle_String","value": "1009"} + ,{"name": "Prop_DeviceIsWireless_Bool","value": "1010"} + ,{"name": "Prop_DeviceIsCharging_Bool","value": "1011"} + ,{"name": "Prop_DeviceBatteryPercentage_Float","value": "1012"} + ,{"name": "Prop_StatusDisplayTransform_Matrix34","value": "1013"} + ,{"name": "Prop_Firmware_UpdateAvailable_Bool","value": "1014"} + ,{"name": "Prop_Firmware_ManualUpdate_Bool","value": "1015"} + ,{"name": "Prop_Firmware_ManualUpdateURL_String","value": "1016"} + ,{"name": "Prop_HardwareRevision_Uint64","value": "1017"} + ,{"name": "Prop_FirmwareVersion_Uint64","value": "1018"} + ,{"name": "Prop_FPGAVersion_Uint64","value": "1019"} + ,{"name": "Prop_VRCVersion_Uint64","value": "1020"} + ,{"name": "Prop_RadioVersion_Uint64","value": "1021"} + ,{"name": "Prop_DongleVersion_Uint64","value": "1022"} + ,{"name": "Prop_BlockServerShutdown_Bool","value": "1023"} + ,{"name": "Prop_CanUnifyCoordinateSystemWithHmd_Bool","value": "1024"} + ,{"name": "Prop_ContainsProximitySensor_Bool","value": "1025"} + ,{"name": "Prop_DeviceProvidesBatteryStatus_Bool","value": "1026"} + ,{"name": "Prop_DeviceCanPowerOff_Bool","value": "1027"} + ,{"name": "Prop_Firmware_ProgrammingTarget_String","value": "1028"} + ,{"name": "Prop_DeviceClass_Int32","value": "1029"} + ,{"name": "Prop_HasCamera_Bool","value": "1030"} + ,{"name": "Prop_DriverVersion_String","value": "1031"} + ,{"name": "Prop_Firmware_ForceUpdateRequired_Bool","value": "1032"} + ,{"name": "Prop_ReportsTimeSinceVSync_Bool","value": "2000"} + ,{"name": "Prop_SecondsFromVsyncToPhotons_Float","value": "2001"} + ,{"name": "Prop_DisplayFrequency_Float","value": "2002"} + ,{"name": "Prop_UserIpdMeters_Float","value": "2003"} + ,{"name": "Prop_CurrentUniverseId_Uint64","value": "2004"} + ,{"name": "Prop_PreviousUniverseId_Uint64","value": "2005"} + ,{"name": "Prop_DisplayFirmwareVersion_Uint64","value": "2006"} + ,{"name": "Prop_IsOnDesktop_Bool","value": "2007"} + ,{"name": "Prop_DisplayMCType_Int32","value": "2008"} + ,{"name": "Prop_DisplayMCOffset_Float","value": "2009"} + ,{"name": "Prop_DisplayMCScale_Float","value": "2010"} + ,{"name": "Prop_EdidVendorID_Int32","value": "2011"} + ,{"name": "Prop_DisplayMCImageLeft_String","value": "2012"} + ,{"name": "Prop_DisplayMCImageRight_String","value": "2013"} + ,{"name": "Prop_DisplayGCBlackClamp_Float","value": "2014"} + ,{"name": "Prop_EdidProductID_Int32","value": "2015"} + ,{"name": "Prop_CameraToHeadTransform_Matrix34","value": "2016"} + ,{"name": "Prop_DisplayGCType_Int32","value": "2017"} + ,{"name": "Prop_DisplayGCOffset_Float","value": "2018"} + ,{"name": "Prop_DisplayGCScale_Float","value": "2019"} + ,{"name": "Prop_DisplayGCPrescale_Float","value": "2020"} + ,{"name": "Prop_DisplayGCImage_String","value": "2021"} + ,{"name": "Prop_LensCenterLeftU_Float","value": "2022"} + ,{"name": "Prop_LensCenterLeftV_Float","value": "2023"} + ,{"name": "Prop_LensCenterRightU_Float","value": "2024"} + ,{"name": "Prop_LensCenterRightV_Float","value": "2025"} + ,{"name": "Prop_UserHeadToEyeDepthMeters_Float","value": "2026"} + ,{"name": "Prop_CameraFirmwareVersion_Uint64","value": "2027"} + ,{"name": "Prop_CameraFirmwareDescription_String","value": "2028"} + ,{"name": "Prop_DisplayFPGAVersion_Uint64","value": "2029"} + ,{"name": "Prop_DisplayBootloaderVersion_Uint64","value": "2030"} + ,{"name": "Prop_DisplayHardwareVersion_Uint64","value": "2031"} + ,{"name": "Prop_AudioFirmwareVersion_Uint64","value": "2032"} + ,{"name": "Prop_CameraCompatibilityMode_Int32","value": "2033"} + ,{"name": "Prop_ScreenshotHorizontalFieldOfViewDegrees_Float","value": "2034"} + ,{"name": "Prop_ScreenshotVerticalFieldOfViewDegrees_Float","value": "2035"} + ,{"name": "Prop_DisplaySuppressed_Bool","value": "2036"} + ,{"name": "Prop_AttachedDeviceId_String","value": "3000"} + ,{"name": "Prop_SupportedButtons_Uint64","value": "3001"} + ,{"name": "Prop_Axis0Type_Int32","value": "3002"} + ,{"name": "Prop_Axis1Type_Int32","value": "3003"} + ,{"name": "Prop_Axis2Type_Int32","value": "3004"} + ,{"name": "Prop_Axis3Type_Int32","value": "3005"} + ,{"name": "Prop_Axis4Type_Int32","value": "3006"} + ,{"name": "Prop_ControllerRoleHint_Int32","value": "3007"} + ,{"name": "Prop_FieldOfViewLeftDegrees_Float","value": "4000"} + ,{"name": "Prop_FieldOfViewRightDegrees_Float","value": "4001"} + ,{"name": "Prop_FieldOfViewTopDegrees_Float","value": "4002"} + ,{"name": "Prop_FieldOfViewBottomDegrees_Float","value": "4003"} + ,{"name": "Prop_TrackingRangeMinimumMeters_Float","value": "4004"} + ,{"name": "Prop_TrackingRangeMaximumMeters_Float","value": "4005"} + ,{"name": "Prop_ModeLabel_String","value": "4006"} + ,{"name": "Prop_IconPathName_String","value": "5000"} + ,{"name": "Prop_NamedIconPathDeviceOff_String","value": "5001"} + ,{"name": "Prop_NamedIconPathDeviceSearching_String","value": "5002"} + ,{"name": "Prop_NamedIconPathDeviceSearchingAlert_String","value": "5003"} + ,{"name": "Prop_NamedIconPathDeviceReady_String","value": "5004"} + ,{"name": "Prop_NamedIconPathDeviceReadyAlert_String","value": "5005"} + ,{"name": "Prop_NamedIconPathDeviceNotReady_String","value": "5006"} + ,{"name": "Prop_NamedIconPathDeviceStandby_String","value": "5007"} + ,{"name": "Prop_NamedIconPathDeviceAlertLow_String","value": "5008"} + ,{"name": "Prop_VendorSpecific_Reserved_Start","value": "10000"} + ,{"name": "Prop_VendorSpecific_Reserved_End","value": "10999"} +]} +, {"enumname": "vr::ETrackedPropertyError","values": [ + {"name": "TrackedProp_Success","value": "0"} + ,{"name": "TrackedProp_WrongDataType","value": "1"} + ,{"name": "TrackedProp_WrongDeviceClass","value": "2"} + ,{"name": "TrackedProp_BufferTooSmall","value": "3"} + ,{"name": "TrackedProp_UnknownProperty","value": "4"} + ,{"name": "TrackedProp_InvalidDevice","value": "5"} + ,{"name": "TrackedProp_CouldNotContactServer","value": "6"} + ,{"name": "TrackedProp_ValueNotProvidedByDevice","value": "7"} + ,{"name": "TrackedProp_StringExceedsMaximumLength","value": "8"} + ,{"name": "TrackedProp_NotYetAvailable","value": "9"} +]} +, {"enumname": "vr::EVRSubmitFlags","values": [ + {"name": "Submit_Default","value": "0"} + ,{"name": "Submit_LensDistortionAlreadyApplied","value": "1"} + ,{"name": "Submit_GlRenderBuffer","value": "2"} + ,{"name": "Submit_VulkanTexture","value": "4"} +]} +, {"enumname": "vr::EVRState","values": [ + {"name": "VRState_Undefined","value": "-1"} + ,{"name": "VRState_Off","value": "0"} + ,{"name": "VRState_Searching","value": "1"} + ,{"name": "VRState_Searching_Alert","value": "2"} + ,{"name": "VRState_Ready","value": "3"} + ,{"name": "VRState_Ready_Alert","value": "4"} + ,{"name": "VRState_NotReady","value": "5"} + ,{"name": "VRState_Standby","value": "6"} + ,{"name": "VRState_Ready_Alert_Low","value": "7"} +]} +, {"enumname": "vr::EVREventType","values": [ + {"name": "VREvent_None","value": "0"} + ,{"name": "VREvent_TrackedDeviceActivated","value": "100"} + ,{"name": "VREvent_TrackedDeviceDeactivated","value": "101"} + ,{"name": "VREvent_TrackedDeviceUpdated","value": "102"} + ,{"name": "VREvent_TrackedDeviceUserInteractionStarted","value": "103"} + ,{"name": "VREvent_TrackedDeviceUserInteractionEnded","value": "104"} + ,{"name": "VREvent_IpdChanged","value": "105"} + ,{"name": "VREvent_EnterStandbyMode","value": "106"} + ,{"name": "VREvent_LeaveStandbyMode","value": "107"} + ,{"name": "VREvent_TrackedDeviceRoleChanged","value": "108"} + ,{"name": "VREvent_WatchdogWakeUpRequested","value": "109"} + ,{"name": "VREvent_LensDistortionChanged","value": "110"} + ,{"name": "VREvent_ButtonPress","value": "200"} + ,{"name": "VREvent_ButtonUnpress","value": "201"} + ,{"name": "VREvent_ButtonTouch","value": "202"} + ,{"name": "VREvent_ButtonUntouch","value": "203"} + ,{"name": "VREvent_MouseMove","value": "300"} + ,{"name": "VREvent_MouseButtonDown","value": "301"} + ,{"name": "VREvent_MouseButtonUp","value": "302"} + ,{"name": "VREvent_FocusEnter","value": "303"} + ,{"name": "VREvent_FocusLeave","value": "304"} + ,{"name": "VREvent_Scroll","value": "305"} + ,{"name": "VREvent_TouchPadMove","value": "306"} + ,{"name": "VREvent_OverlayFocusChanged","value": "307"} + ,{"name": "VREvent_InputFocusCaptured","value": "400"} + ,{"name": "VREvent_InputFocusReleased","value": "401"} + ,{"name": "VREvent_SceneFocusLost","value": "402"} + ,{"name": "VREvent_SceneFocusGained","value": "403"} + ,{"name": "VREvent_SceneApplicationChanged","value": "404"} + ,{"name": "VREvent_SceneFocusChanged","value": "405"} + ,{"name": "VREvent_InputFocusChanged","value": "406"} + ,{"name": "VREvent_SceneApplicationSecondaryRenderingStarted","value": "407"} + ,{"name": "VREvent_HideRenderModels","value": "410"} + ,{"name": "VREvent_ShowRenderModels","value": "411"} + ,{"name": "VREvent_OverlayShown","value": "500"} + ,{"name": "VREvent_OverlayHidden","value": "501"} + ,{"name": "VREvent_DashboardActivated","value": "502"} + ,{"name": "VREvent_DashboardDeactivated","value": "503"} + ,{"name": "VREvent_DashboardThumbSelected","value": "504"} + ,{"name": "VREvent_DashboardRequested","value": "505"} + ,{"name": "VREvent_ResetDashboard","value": "506"} + ,{"name": "VREvent_RenderToast","value": "507"} + ,{"name": "VREvent_ImageLoaded","value": "508"} + ,{"name": "VREvent_ShowKeyboard","value": "509"} + ,{"name": "VREvent_HideKeyboard","value": "510"} + ,{"name": "VREvent_OverlayGamepadFocusGained","value": "511"} + ,{"name": "VREvent_OverlayGamepadFocusLost","value": "512"} + ,{"name": "VREvent_OverlaySharedTextureChanged","value": "513"} + ,{"name": "VREvent_DashboardGuideButtonDown","value": "514"} + ,{"name": "VREvent_DashboardGuideButtonUp","value": "515"} + ,{"name": "VREvent_ScreenshotTriggered","value": "516"} + ,{"name": "VREvent_ImageFailed","value": "517"} + ,{"name": "VREvent_DashboardOverlayCreated","value": "518"} + ,{"name": "VREvent_RequestScreenshot","value": "520"} + ,{"name": "VREvent_ScreenshotTaken","value": "521"} + ,{"name": "VREvent_ScreenshotFailed","value": "522"} + ,{"name": "VREvent_SubmitScreenshotToDashboard","value": "523"} + ,{"name": "VREvent_ScreenshotProgressToDashboard","value": "524"} + ,{"name": "VREvent_Notification_Shown","value": "600"} + ,{"name": "VREvent_Notification_Hidden","value": "601"} + ,{"name": "VREvent_Notification_BeginInteraction","value": "602"} + ,{"name": "VREvent_Notification_Destroyed","value": "603"} + ,{"name": "VREvent_Quit","value": "700"} + ,{"name": "VREvent_ProcessQuit","value": "701"} + ,{"name": "VREvent_QuitAborted_UserPrompt","value": "702"} + ,{"name": "VREvent_QuitAcknowledged","value": "703"} + ,{"name": "VREvent_DriverRequestedQuit","value": "704"} + ,{"name": "VREvent_ChaperoneDataHasChanged","value": "800"} + ,{"name": "VREvent_ChaperoneUniverseHasChanged","value": "801"} + ,{"name": "VREvent_ChaperoneTempDataHasChanged","value": "802"} + ,{"name": "VREvent_ChaperoneSettingsHaveChanged","value": "803"} + ,{"name": "VREvent_SeatedZeroPoseReset","value": "804"} + ,{"name": "VREvent_AudioSettingsHaveChanged","value": "820"} + ,{"name": "VREvent_BackgroundSettingHasChanged","value": "850"} + ,{"name": "VREvent_CameraSettingsHaveChanged","value": "851"} + ,{"name": "VREvent_ReprojectionSettingHasChanged","value": "852"} + ,{"name": "VREvent_ModelSkinSettingsHaveChanged","value": "853"} + ,{"name": "VREvent_EnvironmentSettingsHaveChanged","value": "854"} + ,{"name": "VREvent_PowerSettingsHaveChanged","value": "855"} + ,{"name": "VREvent_StatusUpdate","value": "900"} + ,{"name": "VREvent_MCImageUpdated","value": "1000"} + ,{"name": "VREvent_FirmwareUpdateStarted","value": "1100"} + ,{"name": "VREvent_FirmwareUpdateFinished","value": "1101"} + ,{"name": "VREvent_KeyboardClosed","value": "1200"} + ,{"name": "VREvent_KeyboardCharInput","value": "1201"} + ,{"name": "VREvent_KeyboardDone","value": "1202"} + ,{"name": "VREvent_ApplicationTransitionStarted","value": "1300"} + ,{"name": "VREvent_ApplicationTransitionAborted","value": "1301"} + ,{"name": "VREvent_ApplicationTransitionNewAppStarted","value": "1302"} + ,{"name": "VREvent_ApplicationListUpdated","value": "1303"} + ,{"name": "VREvent_ApplicationMimeTypeLoad","value": "1304"} + ,{"name": "VREvent_Compositor_MirrorWindowShown","value": "1400"} + ,{"name": "VREvent_Compositor_MirrorWindowHidden","value": "1401"} + ,{"name": "VREvent_Compositor_ChaperoneBoundsShown","value": "1410"} + ,{"name": "VREvent_Compositor_ChaperoneBoundsHidden","value": "1411"} + ,{"name": "VREvent_TrackedCamera_StartVideoStream","value": "1500"} + ,{"name": "VREvent_TrackedCamera_StopVideoStream","value": "1501"} + ,{"name": "VREvent_TrackedCamera_PauseVideoStream","value": "1502"} + ,{"name": "VREvent_TrackedCamera_ResumeVideoStream","value": "1503"} + ,{"name": "VREvent_TrackedCamera_EditingSurface","value": "1550"} + ,{"name": "VREvent_PerformanceTest_EnableCapture","value": "1600"} + ,{"name": "VREvent_PerformanceTest_DisableCapture","value": "1601"} + ,{"name": "VREvent_PerformanceTest_FidelityLevel","value": "1602"} + ,{"name": "VREvent_VendorSpecific_Reserved_Start","value": "10000"} + ,{"name": "VREvent_VendorSpecific_Reserved_End","value": "19999"} +]} +, {"enumname": "vr::EDeviceActivityLevel","values": [ + {"name": "k_EDeviceActivityLevel_Unknown","value": "-1"} + ,{"name": "k_EDeviceActivityLevel_Idle","value": "0"} + ,{"name": "k_EDeviceActivityLevel_UserInteraction","value": "1"} + ,{"name": "k_EDeviceActivityLevel_UserInteraction_Timeout","value": "2"} + ,{"name": "k_EDeviceActivityLevel_Standby","value": "3"} +]} +, {"enumname": "vr::EVRButtonId","values": [ + {"name": "k_EButton_System","value": "0"} + ,{"name": "k_EButton_ApplicationMenu","value": "1"} + ,{"name": "k_EButton_Grip","value": "2"} + ,{"name": "k_EButton_DPad_Left","value": "3"} + ,{"name": "k_EButton_DPad_Up","value": "4"} + ,{"name": "k_EButton_DPad_Right","value": "5"} + ,{"name": "k_EButton_DPad_Down","value": "6"} + ,{"name": "k_EButton_A","value": "7"} + ,{"name": "k_EButton_ProximitySensor","value": "31"} + ,{"name": "k_EButton_Axis0","value": "32"} + ,{"name": "k_EButton_Axis1","value": "33"} + ,{"name": "k_EButton_Axis2","value": "34"} + ,{"name": "k_EButton_Axis3","value": "35"} + ,{"name": "k_EButton_Axis4","value": "36"} + ,{"name": "k_EButton_SteamVR_Touchpad","value": "32"} + ,{"name": "k_EButton_SteamVR_Trigger","value": "33"} + ,{"name": "k_EButton_Dashboard_Back","value": "2"} + ,{"name": "k_EButton_Max","value": "64"} +]} +, {"enumname": "vr::EVRMouseButton","values": [ + {"name": "VRMouseButton_Left","value": "1"} + ,{"name": "VRMouseButton_Right","value": "2"} + ,{"name": "VRMouseButton_Middle","value": "4"} +]} +, {"enumname": "vr::EVRControllerAxisType","values": [ + {"name": "k_eControllerAxis_None","value": "0"} + ,{"name": "k_eControllerAxis_TrackPad","value": "1"} + ,{"name": "k_eControllerAxis_Joystick","value": "2"} + ,{"name": "k_eControllerAxis_Trigger","value": "3"} +]} +, {"enumname": "vr::EVRControllerEventOutputType","values": [ + {"name": "ControllerEventOutput_OSEvents","value": "0"} + ,{"name": "ControllerEventOutput_VREvents","value": "1"} +]} +, {"enumname": "vr::ECollisionBoundsStyle","values": [ + {"name": "COLLISION_BOUNDS_STYLE_BEGINNER","value": "0"} + ,{"name": "COLLISION_BOUNDS_STYLE_INTERMEDIATE","value": "1"} + ,{"name": "COLLISION_BOUNDS_STYLE_SQUARES","value": "2"} + ,{"name": "COLLISION_BOUNDS_STYLE_ADVANCED","value": "3"} + ,{"name": "COLLISION_BOUNDS_STYLE_NONE","value": "4"} + ,{"name": "COLLISION_BOUNDS_STYLE_COUNT","value": "5"} +]} +, {"enumname": "vr::EVROverlayError","values": [ + {"name": "VROverlayError_None","value": "0"} + ,{"name": "VROverlayError_UnknownOverlay","value": "10"} + ,{"name": "VROverlayError_InvalidHandle","value": "11"} + ,{"name": "VROverlayError_PermissionDenied","value": "12"} + ,{"name": "VROverlayError_OverlayLimitExceeded","value": "13"} + ,{"name": "VROverlayError_WrongVisibilityType","value": "14"} + ,{"name": "VROverlayError_KeyTooLong","value": "15"} + ,{"name": "VROverlayError_NameTooLong","value": "16"} + ,{"name": "VROverlayError_KeyInUse","value": "17"} + ,{"name": "VROverlayError_WrongTransformType","value": "18"} + ,{"name": "VROverlayError_InvalidTrackedDevice","value": "19"} + ,{"name": "VROverlayError_InvalidParameter","value": "20"} + ,{"name": "VROverlayError_ThumbnailCantBeDestroyed","value": "21"} + ,{"name": "VROverlayError_ArrayTooSmall","value": "22"} + ,{"name": "VROverlayError_RequestFailed","value": "23"} + ,{"name": "VROverlayError_InvalidTexture","value": "24"} + ,{"name": "VROverlayError_UnableToLoadFile","value": "25"} + ,{"name": "VROverlayError_KeyboardAlreadyInUse","value": "26"} + ,{"name": "VROverlayError_NoNeighbor","value": "27"} +]} +, {"enumname": "vr::EVRApplicationType","values": [ + {"name": "VRApplication_Other","value": "0"} + ,{"name": "VRApplication_Scene","value": "1"} + ,{"name": "VRApplication_Overlay","value": "2"} + ,{"name": "VRApplication_Background","value": "3"} + ,{"name": "VRApplication_Utility","value": "4"} + ,{"name": "VRApplication_VRMonitor","value": "5"} + ,{"name": "VRApplication_SteamWatchdog","value": "6"} + ,{"name": "VRApplication_Max","value": "7"} +]} +, {"enumname": "vr::EVRFirmwareError","values": [ + {"name": "VRFirmwareError_None","value": "0"} + ,{"name": "VRFirmwareError_Success","value": "1"} + ,{"name": "VRFirmwareError_Fail","value": "2"} +]} +, {"enumname": "vr::EVRNotificationError","values": [ + {"name": "VRNotificationError_OK","value": "0"} + ,{"name": "VRNotificationError_InvalidNotificationId","value": "100"} + ,{"name": "VRNotificationError_NotificationQueueFull","value": "101"} + ,{"name": "VRNotificationError_InvalidOverlayHandle","value": "102"} + ,{"name": "VRNotificationError_SystemWithUserValueAlreadyExists","value": "103"} +]} +, {"enumname": "vr::EVRInitError","values": [ + {"name": "VRInitError_None","value": "0"} + ,{"name": "VRInitError_Unknown","value": "1"} + ,{"name": "VRInitError_Init_InstallationNotFound","value": "100"} + ,{"name": "VRInitError_Init_InstallationCorrupt","value": "101"} + ,{"name": "VRInitError_Init_VRClientDLLNotFound","value": "102"} + ,{"name": "VRInitError_Init_FileNotFound","value": "103"} + ,{"name": "VRInitError_Init_FactoryNotFound","value": "104"} + ,{"name": "VRInitError_Init_InterfaceNotFound","value": "105"} + ,{"name": "VRInitError_Init_InvalidInterface","value": "106"} + ,{"name": "VRInitError_Init_UserConfigDirectoryInvalid","value": "107"} + ,{"name": "VRInitError_Init_HmdNotFound","value": "108"} + ,{"name": "VRInitError_Init_NotInitialized","value": "109"} + ,{"name": "VRInitError_Init_PathRegistryNotFound","value": "110"} + ,{"name": "VRInitError_Init_NoConfigPath","value": "111"} + ,{"name": "VRInitError_Init_NoLogPath","value": "112"} + ,{"name": "VRInitError_Init_PathRegistryNotWritable","value": "113"} + ,{"name": "VRInitError_Init_AppInfoInitFailed","value": "114"} + ,{"name": "VRInitError_Init_Retry","value": "115"} + ,{"name": "VRInitError_Init_InitCanceledByUser","value": "116"} + ,{"name": "VRInitError_Init_AnotherAppLaunching","value": "117"} + ,{"name": "VRInitError_Init_SettingsInitFailed","value": "118"} + ,{"name": "VRInitError_Init_ShuttingDown","value": "119"} + ,{"name": "VRInitError_Init_TooManyObjects","value": "120"} + ,{"name": "VRInitError_Init_NoServerForBackgroundApp","value": "121"} + ,{"name": "VRInitError_Init_NotSupportedWithCompositor","value": "122"} + ,{"name": "VRInitError_Init_NotAvailableToUtilityApps","value": "123"} + ,{"name": "VRInitError_Init_Internal","value": "124"} + ,{"name": "VRInitError_Init_HmdDriverIdIsNone","value": "125"} + ,{"name": "VRInitError_Init_HmdNotFoundPresenceFailed","value": "126"} + ,{"name": "VRInitError_Init_VRMonitorNotFound","value": "127"} + ,{"name": "VRInitError_Init_VRMonitorStartupFailed","value": "128"} + ,{"name": "VRInitError_Init_LowPowerWatchdogNotSupported","value": "129"} + ,{"name": "VRInitError_Init_InvalidApplicationType","value": "130"} + ,{"name": "VRInitError_Init_NotAvailableToWatchdogApps","value": "131"} + ,{"name": "VRInitError_Init_WatchdogDisabledInSettings","value": "132"} + ,{"name": "VRInitError_Driver_Failed","value": "200"} + ,{"name": "VRInitError_Driver_Unknown","value": "201"} + ,{"name": "VRInitError_Driver_HmdUnknown","value": "202"} + ,{"name": "VRInitError_Driver_NotLoaded","value": "203"} + ,{"name": "VRInitError_Driver_RuntimeOutOfDate","value": "204"} + ,{"name": "VRInitError_Driver_HmdInUse","value": "205"} + ,{"name": "VRInitError_Driver_NotCalibrated","value": "206"} + ,{"name": "VRInitError_Driver_CalibrationInvalid","value": "207"} + ,{"name": "VRInitError_Driver_HmdDisplayNotFound","value": "208"} + ,{"name": "VRInitError_Driver_TrackedDeviceInterfaceUnknown","value": "209"} + ,{"name": "VRInitError_Driver_HmdDriverIdOutOfBounds","value": "211"} + ,{"name": "VRInitError_Driver_HmdDisplayMirrored","value": "212"} + ,{"name": "VRInitError_IPC_ServerInitFailed","value": "300"} + ,{"name": "VRInitError_IPC_ConnectFailed","value": "301"} + ,{"name": "VRInitError_IPC_SharedStateInitFailed","value": "302"} + ,{"name": "VRInitError_IPC_CompositorInitFailed","value": "303"} + ,{"name": "VRInitError_IPC_MutexInitFailed","value": "304"} + ,{"name": "VRInitError_IPC_Failed","value": "305"} + ,{"name": "VRInitError_IPC_CompositorConnectFailed","value": "306"} + ,{"name": "VRInitError_IPC_CompositorInvalidConnectResponse","value": "307"} + ,{"name": "VRInitError_IPC_ConnectFailedAfterMultipleAttempts","value": "308"} + ,{"name": "VRInitError_Compositor_Failed","value": "400"} + ,{"name": "VRInitError_Compositor_D3D11HardwareRequired","value": "401"} + ,{"name": "VRInitError_Compositor_FirmwareRequiresUpdate","value": "402"} + ,{"name": "VRInitError_Compositor_OverlayInitFailed","value": "403"} + ,{"name": "VRInitError_Compositor_ScreenshotsInitFailed","value": "404"} + ,{"name": "VRInitError_VendorSpecific_UnableToConnectToOculusRuntime","value": "1000"} + ,{"name": "VRInitError_VendorSpecific_HmdFound_CantOpenDevice","value": "1101"} + ,{"name": "VRInitError_VendorSpecific_HmdFound_UnableToRequestConfigStart","value": "1102"} + ,{"name": "VRInitError_VendorSpecific_HmdFound_NoStoredConfig","value": "1103"} + ,{"name": "VRInitError_VendorSpecific_HmdFound_ConfigTooBig","value": "1104"} + ,{"name": "VRInitError_VendorSpecific_HmdFound_ConfigTooSmall","value": "1105"} + ,{"name": "VRInitError_VendorSpecific_HmdFound_UnableToInitZLib","value": "1106"} + ,{"name": "VRInitError_VendorSpecific_HmdFound_CantReadFirmwareVersion","value": "1107"} + ,{"name": "VRInitError_VendorSpecific_HmdFound_UnableToSendUserDataStart","value": "1108"} + ,{"name": "VRInitError_VendorSpecific_HmdFound_UnableToGetUserDataStart","value": "1109"} + ,{"name": "VRInitError_VendorSpecific_HmdFound_UnableToGetUserDataNext","value": "1110"} + ,{"name": "VRInitError_VendorSpecific_HmdFound_UserDataAddressRange","value": "1111"} + ,{"name": "VRInitError_VendorSpecific_HmdFound_UserDataError","value": "1112"} + ,{"name": "VRInitError_VendorSpecific_HmdFound_ConfigFailedSanityCheck","value": "1113"} + ,{"name": "VRInitError_Steam_SteamInstallationNotFound","value": "2000"} +]} +, {"enumname": "vr::EVRScreenshotType","values": [ + {"name": "VRScreenshotType_None","value": "0"} + ,{"name": "VRScreenshotType_Mono","value": "1"} + ,{"name": "VRScreenshotType_Stereo","value": "2"} + ,{"name": "VRScreenshotType_Cubemap","value": "3"} + ,{"name": "VRScreenshotType_MonoPanorama","value": "4"} + ,{"name": "VRScreenshotType_StereoPanorama","value": "5"} +]} +, {"enumname": "vr::EVRScreenshotPropertyFilenames","values": [ + {"name": "VRScreenshotPropertyFilenames_Preview","value": "0"} + ,{"name": "VRScreenshotPropertyFilenames_VR","value": "1"} +]} +, {"enumname": "vr::EVRTrackedCameraError","values": [ + {"name": "VRTrackedCameraError_None","value": "0"} + ,{"name": "VRTrackedCameraError_OperationFailed","value": "100"} + ,{"name": "VRTrackedCameraError_InvalidHandle","value": "101"} + ,{"name": "VRTrackedCameraError_InvalidFrameHeaderVersion","value": "102"} + ,{"name": "VRTrackedCameraError_OutOfHandles","value": "103"} + ,{"name": "VRTrackedCameraError_IPCFailure","value": "104"} + ,{"name": "VRTrackedCameraError_NotSupportedForThisDevice","value": "105"} + ,{"name": "VRTrackedCameraError_SharedMemoryFailure","value": "106"} + ,{"name": "VRTrackedCameraError_FrameBufferingFailure","value": "107"} + ,{"name": "VRTrackedCameraError_StreamSetupFailure","value": "108"} + ,{"name": "VRTrackedCameraError_InvalidGLTextureId","value": "109"} + ,{"name": "VRTrackedCameraError_InvalidSharedTextureHandle","value": "110"} + ,{"name": "VRTrackedCameraError_FailedToGetGLTextureId","value": "111"} + ,{"name": "VRTrackedCameraError_SharedTextureFailure","value": "112"} + ,{"name": "VRTrackedCameraError_NoFrameAvailable","value": "113"} + ,{"name": "VRTrackedCameraError_InvalidArgument","value": "114"} + ,{"name": "VRTrackedCameraError_InvalidFrameBufferSize","value": "115"} +]} +, {"enumname": "vr::EVRTrackedCameraFrameType","values": [ + {"name": "VRTrackedCameraFrameType_Distorted","value": "0"} + ,{"name": "VRTrackedCameraFrameType_Undistorted","value": "1"} + ,{"name": "VRTrackedCameraFrameType_MaximumUndistorted","value": "2"} + ,{"name": "MAX_CAMERA_FRAME_TYPES","value": "3"} +]} +, {"enumname": "vr::EVRApplicationError","values": [ + {"name": "VRApplicationError_None","value": "0"} + ,{"name": "VRApplicationError_AppKeyAlreadyExists","value": "100"} + ,{"name": "VRApplicationError_NoManifest","value": "101"} + ,{"name": "VRApplicationError_NoApplication","value": "102"} + ,{"name": "VRApplicationError_InvalidIndex","value": "103"} + ,{"name": "VRApplicationError_UnknownApplication","value": "104"} + ,{"name": "VRApplicationError_IPCFailed","value": "105"} + ,{"name": "VRApplicationError_ApplicationAlreadyRunning","value": "106"} + ,{"name": "VRApplicationError_InvalidManifest","value": "107"} + ,{"name": "VRApplicationError_InvalidApplication","value": "108"} + ,{"name": "VRApplicationError_LaunchFailed","value": "109"} + ,{"name": "VRApplicationError_ApplicationAlreadyStarting","value": "110"} + ,{"name": "VRApplicationError_LaunchInProgress","value": "111"} + ,{"name": "VRApplicationError_OldApplicationQuitting","value": "112"} + ,{"name": "VRApplicationError_TransitionAborted","value": "113"} + ,{"name": "VRApplicationError_IsTemplate","value": "114"} + ,{"name": "VRApplicationError_BufferTooSmall","value": "200"} + ,{"name": "VRApplicationError_PropertyNotSet","value": "201"} + ,{"name": "VRApplicationError_UnknownProperty","value": "202"} + ,{"name": "VRApplicationError_InvalidParameter","value": "203"} +]} +, {"enumname": "vr::EVRApplicationProperty","values": [ + {"name": "VRApplicationProperty_Name_String","value": "0"} + ,{"name": "VRApplicationProperty_LaunchType_String","value": "11"} + ,{"name": "VRApplicationProperty_WorkingDirectory_String","value": "12"} + ,{"name": "VRApplicationProperty_BinaryPath_String","value": "13"} + ,{"name": "VRApplicationProperty_Arguments_String","value": "14"} + ,{"name": "VRApplicationProperty_URL_String","value": "15"} + ,{"name": "VRApplicationProperty_Description_String","value": "50"} + ,{"name": "VRApplicationProperty_NewsURL_String","value": "51"} + ,{"name": "VRApplicationProperty_ImagePath_String","value": "52"} + ,{"name": "VRApplicationProperty_Source_String","value": "53"} + ,{"name": "VRApplicationProperty_IsDashboardOverlay_Bool","value": "60"} + ,{"name": "VRApplicationProperty_IsTemplate_Bool","value": "61"} + ,{"name": "VRApplicationProperty_IsInstanced_Bool","value": "62"} + ,{"name": "VRApplicationProperty_LastLaunchTime_Uint64","value": "70"} +]} +, {"enumname": "vr::EVRApplicationTransitionState","values": [ + {"name": "VRApplicationTransition_None","value": "0"} + ,{"name": "VRApplicationTransition_OldAppQuitSent","value": "10"} + ,{"name": "VRApplicationTransition_WaitingForExternalLaunch","value": "11"} + ,{"name": "VRApplicationTransition_NewAppLaunched","value": "20"} +]} +, {"enumname": "vr::ChaperoneCalibrationState","values": [ + {"name": "ChaperoneCalibrationState_OK","value": "1"} + ,{"name": "ChaperoneCalibrationState_Warning","value": "100"} + ,{"name": "ChaperoneCalibrationState_Warning_BaseStationMayHaveMoved","value": "101"} + ,{"name": "ChaperoneCalibrationState_Warning_BaseStationRemoved","value": "102"} + ,{"name": "ChaperoneCalibrationState_Warning_SeatedBoundsInvalid","value": "103"} + ,{"name": "ChaperoneCalibrationState_Error","value": "200"} + ,{"name": "ChaperoneCalibrationState_Error_BaseStationUninitalized","value": "201"} + ,{"name": "ChaperoneCalibrationState_Error_BaseStationConflict","value": "202"} + ,{"name": "ChaperoneCalibrationState_Error_PlayAreaInvalid","value": "203"} + ,{"name": "ChaperoneCalibrationState_Error_CollisionBoundsInvalid","value": "204"} +]} +, {"enumname": "vr::EChaperoneConfigFile","values": [ + {"name": "EChaperoneConfigFile_Live","value": "1"} + ,{"name": "EChaperoneConfigFile_Temp","value": "2"} +]} +, {"enumname": "vr::EChaperoneImportFlags","values": [ + {"name": "EChaperoneImport_BoundsOnly","value": "1"} +]} +, {"enumname": "vr::EVRCompositorError","values": [ + {"name": "VRCompositorError_None","value": "0"} + ,{"name": "VRCompositorError_RequestFailed","value": "1"} + ,{"name": "VRCompositorError_IncompatibleVersion","value": "100"} + ,{"name": "VRCompositorError_DoNotHaveFocus","value": "101"} + ,{"name": "VRCompositorError_InvalidTexture","value": "102"} + ,{"name": "VRCompositorError_IsNotSceneApplication","value": "103"} + ,{"name": "VRCompositorError_TextureIsOnWrongDevice","value": "104"} + ,{"name": "VRCompositorError_TextureUsesUnsupportedFormat","value": "105"} + ,{"name": "VRCompositorError_SharedTexturesNotSupported","value": "106"} + ,{"name": "VRCompositorError_IndexOutOfRange","value": "107"} +]} +, {"enumname": "vr::VROverlayInputMethod","values": [ + {"name": "VROverlayInputMethod_None","value": "0"} + ,{"name": "VROverlayInputMethod_Mouse","value": "1"} +]} +, {"enumname": "vr::VROverlayTransformType","values": [ + {"name": "VROverlayTransform_Absolute","value": "0"} + ,{"name": "VROverlayTransform_TrackedDeviceRelative","value": "1"} + ,{"name": "VROverlayTransform_SystemOverlay","value": "2"} + ,{"name": "VROverlayTransform_TrackedComponent","value": "3"} +]} +, {"enumname": "vr::VROverlayFlags","values": [ + {"name": "VROverlayFlags_None","value": "0"} + ,{"name": "VROverlayFlags_Curved","value": "1"} + ,{"name": "VROverlayFlags_RGSS4X","value": "2"} + ,{"name": "VROverlayFlags_NoDashboardTab","value": "3"} + ,{"name": "VROverlayFlags_AcceptsGamepadEvents","value": "4"} + ,{"name": "VROverlayFlags_ShowGamepadFocus","value": "5"} + ,{"name": "VROverlayFlags_SendVRScrollEvents","value": "6"} + ,{"name": "VROverlayFlags_SendVRTouchpadEvents","value": "7"} + ,{"name": "VROverlayFlags_ShowTouchPadScrollWheel","value": "8"} + ,{"name": "VROverlayFlags_TransferOwnershipToInternalProcess","value": "9"} + ,{"name": "VROverlayFlags_SideBySide_Parallel","value": "10"} + ,{"name": "VROverlayFlags_SideBySide_Crossed","value": "11"} + ,{"name": "VROverlayFlags_Panorama","value": "12"} + ,{"name": "VROverlayFlags_StereoPanorama","value": "13"} + ,{"name": "VROverlayFlags_SortWithNonSceneOverlays","value": "14"} +]} +, {"enumname": "vr::EGamepadTextInputMode","values": [ + {"name": "k_EGamepadTextInputModeNormal","value": "0"} + ,{"name": "k_EGamepadTextInputModePassword","value": "1"} + ,{"name": "k_EGamepadTextInputModeSubmit","value": "2"} +]} +, {"enumname": "vr::EGamepadTextInputLineMode","values": [ + {"name": "k_EGamepadTextInputLineModeSingleLine","value": "0"} + ,{"name": "k_EGamepadTextInputLineModeMultipleLines","value": "1"} +]} +, {"enumname": "vr::EOverlayDirection","values": [ + {"name": "OverlayDirection_Up","value": "0"} + ,{"name": "OverlayDirection_Down","value": "1"} + ,{"name": "OverlayDirection_Left","value": "2"} + ,{"name": "OverlayDirection_Right","value": "3"} + ,{"name": "OverlayDirection_Count","value": "4"} +]} +, {"enumname": "vr::EVRRenderModelError","values": [ + {"name": "VRRenderModelError_None","value": "0"} + ,{"name": "VRRenderModelError_Loading","value": "100"} + ,{"name": "VRRenderModelError_NotSupported","value": "200"} + ,{"name": "VRRenderModelError_InvalidArg","value": "300"} + ,{"name": "VRRenderModelError_InvalidModel","value": "301"} + ,{"name": "VRRenderModelError_NoShapes","value": "302"} + ,{"name": "VRRenderModelError_MultipleShapes","value": "303"} + ,{"name": "VRRenderModelError_TooManyVertices","value": "304"} + ,{"name": "VRRenderModelError_MultipleTextures","value": "305"} + ,{"name": "VRRenderModelError_BufferTooSmall","value": "306"} + ,{"name": "VRRenderModelError_NotEnoughNormals","value": "307"} + ,{"name": "VRRenderModelError_NotEnoughTexCoords","value": "308"} + ,{"name": "VRRenderModelError_InvalidTexture","value": "400"} +]} +, {"enumname": "vr::EVRComponentProperty","values": [ + {"name": "VRComponentProperty_IsStatic","value": "1"} + ,{"name": "VRComponentProperty_IsVisible","value": "2"} + ,{"name": "VRComponentProperty_IsTouched","value": "4"} + ,{"name": "VRComponentProperty_IsPressed","value": "8"} + ,{"name": "VRComponentProperty_IsScrolled","value": "16"} +]} +, {"enumname": "vr::EVRNotificationType","values": [ + {"name": "EVRNotificationType_Transient","value": "0"} + ,{"name": "EVRNotificationType_Persistent","value": "1"} + ,{"name": "EVRNotificationType_Transient_SystemWithUserValue","value": "2"} +]} +, {"enumname": "vr::EVRNotificationStyle","values": [ + {"name": "EVRNotificationStyle_None","value": "0"} + ,{"name": "EVRNotificationStyle_Application","value": "100"} + ,{"name": "EVRNotificationStyle_Contact_Disabled","value": "200"} + ,{"name": "EVRNotificationStyle_Contact_Enabled","value": "201"} + ,{"name": "EVRNotificationStyle_Contact_Active","value": "202"} +]} +, {"enumname": "vr::EVRSettingsError","values": [ + {"name": "VRSettingsError_None","value": "0"} + ,{"name": "VRSettingsError_IPCFailed","value": "1"} + ,{"name": "VRSettingsError_WriteFailed","value": "2"} + ,{"name": "VRSettingsError_ReadFailed","value": "3"} + ,{"name": "VRSettingsError_JsonParseFailed","value": "4"} + ,{"name": "VRSettingsError_UnsetSettingHasNoDefault","value": "5"} +]} +, {"enumname": "vr::EVRScreenshotError","values": [ + {"name": "VRScreenshotError_None","value": "0"} + ,{"name": "VRScreenshotError_RequestFailed","value": "1"} + ,{"name": "VRScreenshotError_IncompatibleVersion","value": "100"} + ,{"name": "VRScreenshotError_NotFound","value": "101"} + ,{"name": "VRScreenshotError_BufferTooSmall","value": "102"} + ,{"name": "VRScreenshotError_ScreenshotAlreadyInProgress","value": "108"} +]} +], +"consts":[{ + "constname": "k_unTrackingStringSize","consttype": "const uint32_t", "constval": "32"} +,{ + "constname": "k_unMaxDriverDebugResponseSize","consttype": "const uint32_t", "constval": "32768"} +,{ + "constname": "k_unTrackedDeviceIndex_Hmd","consttype": "const uint32_t", "constval": "0"} +,{ + "constname": "k_unMaxTrackedDeviceCount","consttype": "const uint32_t", "constval": "16"} +,{ + "constname": "k_unTrackedDeviceIndexOther","consttype": "const uint32_t", "constval": "4294967294"} +,{ + "constname": "k_unTrackedDeviceIndexInvalid","consttype": "const uint32_t", "constval": "4294967295"} +,{ + "constname": "k_unMaxPropertyStringSize","consttype": "const uint32_t", "constval": "32768"} +,{ + "constname": "k_unControllerStateAxisCount","consttype": "const uint32_t", "constval": "5"} +,{ + "constname": "k_ulOverlayHandleInvalid","consttype": "const VROverlayHandle_t", "constval": "0"} +,{ + "constname": "k_unScreenshotHandleInvalid","consttype": "const uint32_t", "constval": "0"} +,{ + "constname": "IVRSystem_Version","consttype": "const char *const", "constval": "IVRSystem_012"} +,{ + "constname": "IVRExtendedDisplay_Version","consttype": "const char *const", "constval": "IVRExtendedDisplay_001"} +,{ + "constname": "IVRTrackedCamera_Version","consttype": "const char *const", "constval": "IVRTrackedCamera_003"} +,{ + "constname": "k_unMaxApplicationKeyLength","consttype": "const uint32_t", "constval": "128"} +,{ + "constname": "k_pch_MimeType_HomeApp","consttype": "const char *const", "constval": "vr/home"} +,{ + "constname": "k_pch_MimeType_GameTheater","consttype": "const char *const", "constval": "vr/game_theater"} +,{ + "constname": "IVRApplications_Version","consttype": "const char *const", "constval": "IVRApplications_006"} +,{ + "constname": "IVRChaperone_Version","consttype": "const char *const", "constval": "IVRChaperone_003"} +,{ + "constname": "IVRChaperoneSetup_Version","consttype": "const char *const", "constval": "IVRChaperoneSetup_005"} +,{ + "constname": "IVRCompositor_Version","consttype": "const char *const", "constval": "IVRCompositor_016"} +,{ + "constname": "k_unVROverlayMaxKeyLength","consttype": "const uint32_t", "constval": "128"} +,{ + "constname": "k_unVROverlayMaxNameLength","consttype": "const uint32_t", "constval": "128"} +,{ + "constname": "k_unMaxOverlayCount","consttype": "const uint32_t", "constval": "64"} +,{ + "constname": "IVROverlay_Version","consttype": "const char *const", "constval": "IVROverlay_013"} +,{ + "constname": "k_pch_Controller_Component_GDC2015","consttype": "const char *const", "constval": "gdc2015"} +,{ + "constname": "k_pch_Controller_Component_Base","consttype": "const char *const", "constval": "base"} +,{ + "constname": "k_pch_Controller_Component_Tip","consttype": "const char *const", "constval": "tip"} +,{ + "constname": "k_pch_Controller_Component_HandGrip","consttype": "const char *const", "constval": "handgrip"} +,{ + "constname": "k_pch_Controller_Component_Status","consttype": "const char *const", "constval": "status"} +,{ + "constname": "IVRRenderModels_Version","consttype": "const char *const", "constval": "IVRRenderModels_005"} +,{ + "constname": "k_unNotificationTextMaxSize","consttype": "const uint32_t", "constval": "256"} +,{ + "constname": "IVRNotifications_Version","consttype": "const char *const", "constval": "IVRNotifications_002"} +,{ + "constname": "k_unMaxSettingsKeyLength","consttype": "const uint32_t", "constval": "128"} +,{ + "constname": "IVRSettings_Version","consttype": "const char *const", "constval": "IVRSettings_002"} +,{ + "constname": "k_pch_SteamVR_Section","consttype": "const char *const", "constval": "steamvr"} +,{ + "constname": "k_pch_SteamVR_RequireHmd_String","consttype": "const char *const", "constval": "requireHmd"} +,{ + "constname": "k_pch_SteamVR_ForcedDriverKey_String","consttype": "const char *const", "constval": "forcedDriver"} +,{ + "constname": "k_pch_SteamVR_ForcedHmdKey_String","consttype": "const char *const", "constval": "forcedHmd"} +,{ + "constname": "k_pch_SteamVR_DisplayDebug_Bool","consttype": "const char *const", "constval": "displayDebug"} +,{ + "constname": "k_pch_SteamVR_DebugProcessPipe_String","consttype": "const char *const", "constval": "debugProcessPipe"} +,{ + "constname": "k_pch_SteamVR_EnableDistortion_Bool","consttype": "const char *const", "constval": "enableDistortion"} +,{ + "constname": "k_pch_SteamVR_DisplayDebugX_Int32","consttype": "const char *const", "constval": "displayDebugX"} +,{ + "constname": "k_pch_SteamVR_DisplayDebugY_Int32","consttype": "const char *const", "constval": "displayDebugY"} +,{ + "constname": "k_pch_SteamVR_SendSystemButtonToAllApps_Bool","consttype": "const char *const", "constval": "sendSystemButtonToAllApps"} +,{ + "constname": "k_pch_SteamVR_LogLevel_Int32","consttype": "const char *const", "constval": "loglevel"} +,{ + "constname": "k_pch_SteamVR_IPD_Float","consttype": "const char *const", "constval": "ipd"} +,{ + "constname": "k_pch_SteamVR_Background_String","consttype": "const char *const", "constval": "background"} +,{ + "constname": "k_pch_SteamVR_BackgroundCameraHeight_Float","consttype": "const char *const", "constval": "backgroundCameraHeight"} +,{ + "constname": "k_pch_SteamVR_BackgroundDomeRadius_Float","consttype": "const char *const", "constval": "backgroundDomeRadius"} +,{ + "constname": "k_pch_SteamVR_Environment_String","consttype": "const char *const", "constval": "environment"} +,{ + "constname": "k_pch_SteamVR_GridColor_String","consttype": "const char *const", "constval": "gridColor"} +,{ + "constname": "k_pch_SteamVR_PlayAreaColor_String","consttype": "const char *const", "constval": "playAreaColor"} +,{ + "constname": "k_pch_SteamVR_ShowStage_Bool","consttype": "const char *const", "constval": "showStage"} +,{ + "constname": "k_pch_SteamVR_ActivateMultipleDrivers_Bool","consttype": "const char *const", "constval": "activateMultipleDrivers"} +,{ + "constname": "k_pch_SteamVR_DirectMode_Bool","consttype": "const char *const", "constval": "directMode"} +,{ + "constname": "k_pch_SteamVR_DirectModeEdidVid_Int32","consttype": "const char *const", "constval": "directModeEdidVid"} +,{ + "constname": "k_pch_SteamVR_DirectModeEdidPid_Int32","consttype": "const char *const", "constval": "directModeEdidPid"} +,{ + "constname": "k_pch_SteamVR_UsingSpeakers_Bool","consttype": "const char *const", "constval": "usingSpeakers"} +,{ + "constname": "k_pch_SteamVR_SpeakersForwardYawOffsetDegrees_Float","consttype": "const char *const", "constval": "speakersForwardYawOffsetDegrees"} +,{ + "constname": "k_pch_SteamVR_BaseStationPowerManagement_Bool","consttype": "const char *const", "constval": "basestationPowerManagement"} +,{ + "constname": "k_pch_SteamVR_NeverKillProcesses_Bool","consttype": "const char *const", "constval": "neverKillProcesses"} +,{ + "constname": "k_pch_SteamVR_RenderTargetMultiplier_Float","consttype": "const char *const", "constval": "renderTargetMultiplier"} +,{ + "constname": "k_pch_SteamVR_AllowReprojection_Bool","consttype": "const char *const", "constval": "allowReprojection"} +,{ + "constname": "k_pch_SteamVR_ForceReprojection_Bool","consttype": "const char *const", "constval": "forceReprojection"} +,{ + "constname": "k_pch_SteamVR_ForceFadeOnBadTracking_Bool","consttype": "const char *const", "constval": "forceFadeOnBadTracking"} +,{ + "constname": "k_pch_SteamVR_DefaultMirrorView_Int32","consttype": "const char *const", "constval": "defaultMirrorView"} +,{ + "constname": "k_pch_SteamVR_ShowMirrorView_Bool","consttype": "const char *const", "constval": "showMirrorView"} +,{ + "constname": "k_pch_SteamVR_MirrorViewGeometry_String","consttype": "const char *const", "constval": "mirrorViewGeometry"} +,{ + "constname": "k_pch_SteamVR_StartMonitorFromAppLaunch","consttype": "const char *const", "constval": "startMonitorFromAppLaunch"} +,{ + "constname": "k_pch_SteamVR_EnableHomeApp","consttype": "const char *const", "constval": "enableHomeApp"} +,{ + "constname": "k_pch_SteamVR_SetInitialDefaultHomeApp","consttype": "const char *const", "constval": "setInitialDefaultHomeApp"} +,{ + "constname": "k_pch_SteamVR_CycleBackgroundImageTimeSec_Int32","consttype": "const char *const", "constval": "CycleBackgroundImageTimeSec"} +,{ + "constname": "k_pch_SteamVR_RetailDemo_Bool","consttype": "const char *const", "constval": "retailDemo"} +,{ + "constname": "k_pch_Lighthouse_Section","consttype": "const char *const", "constval": "driver_lighthouse"} +,{ + "constname": "k_pch_Lighthouse_DisableIMU_Bool","consttype": "const char *const", "constval": "disableimu"} +,{ + "constname": "k_pch_Lighthouse_UseDisambiguation_String","consttype": "const char *const", "constval": "usedisambiguation"} +,{ + "constname": "k_pch_Lighthouse_DisambiguationDebug_Int32","consttype": "const char *const", "constval": "disambiguationdebug"} +,{ + "constname": "k_pch_Lighthouse_PrimaryBasestation_Int32","consttype": "const char *const", "constval": "primarybasestation"} +,{ + "constname": "k_pch_Lighthouse_DBHistory_Bool","consttype": "const char *const", "constval": "dbhistory"} +,{ + "constname": "k_pch_Null_Section","consttype": "const char *const", "constval": "driver_null"} +,{ + "constname": "k_pch_Null_EnableNullDriver_Bool","consttype": "const char *const", "constval": "enable"} +,{ + "constname": "k_pch_Null_SerialNumber_String","consttype": "const char *const", "constval": "serialNumber"} +,{ + "constname": "k_pch_Null_ModelNumber_String","consttype": "const char *const", "constval": "modelNumber"} +,{ + "constname": "k_pch_Null_WindowX_Int32","consttype": "const char *const", "constval": "windowX"} +,{ + "constname": "k_pch_Null_WindowY_Int32","consttype": "const char *const", "constval": "windowY"} +,{ + "constname": "k_pch_Null_WindowWidth_Int32","consttype": "const char *const", "constval": "windowWidth"} +,{ + "constname": "k_pch_Null_WindowHeight_Int32","consttype": "const char *const", "constval": "windowHeight"} +,{ + "constname": "k_pch_Null_RenderWidth_Int32","consttype": "const char *const", "constval": "renderWidth"} +,{ + "constname": "k_pch_Null_RenderHeight_Int32","consttype": "const char *const", "constval": "renderHeight"} +,{ + "constname": "k_pch_Null_SecondsFromVsyncToPhotons_Float","consttype": "const char *const", "constval": "secondsFromVsyncToPhotons"} +,{ + "constname": "k_pch_Null_DisplayFrequency_Float","consttype": "const char *const", "constval": "displayFrequency"} +,{ + "constname": "k_pch_UserInterface_Section","consttype": "const char *const", "constval": "userinterface"} +,{ + "constname": "k_pch_UserInterface_StatusAlwaysOnTop_Bool","consttype": "const char *const", "constval": "StatusAlwaysOnTop"} +,{ + "constname": "k_pch_UserInterface_Screenshots_Bool","consttype": "const char *const", "constval": "screenshots"} +,{ + "constname": "k_pch_UserInterface_ScreenshotType_Int","consttype": "const char *const", "constval": "screenshotType"} +,{ + "constname": "k_pch_Notifications_Section","consttype": "const char *const", "constval": "notifications"} +,{ + "constname": "k_pch_Notifications_DoNotDisturb_Bool","consttype": "const char *const", "constval": "DoNotDisturb"} +,{ + "constname": "k_pch_Keyboard_Section","consttype": "const char *const", "constval": "keyboard"} +,{ + "constname": "k_pch_Keyboard_TutorialCompletions","consttype": "const char *const", "constval": "TutorialCompletions"} +,{ + "constname": "k_pch_Keyboard_ScaleX","consttype": "const char *const", "constval": "ScaleX"} +,{ + "constname": "k_pch_Keyboard_ScaleY","consttype": "const char *const", "constval": "ScaleY"} +,{ + "constname": "k_pch_Keyboard_OffsetLeftX","consttype": "const char *const", "constval": "OffsetLeftX"} +,{ + "constname": "k_pch_Keyboard_OffsetRightX","consttype": "const char *const", "constval": "OffsetRightX"} +,{ + "constname": "k_pch_Keyboard_OffsetY","consttype": "const char *const", "constval": "OffsetY"} +,{ + "constname": "k_pch_Keyboard_Smoothing","consttype": "const char *const", "constval": "Smoothing"} +,{ + "constname": "k_pch_Perf_Section","consttype": "const char *const", "constval": "perfcheck"} +,{ + "constname": "k_pch_Perf_HeuristicActive_Bool","consttype": "const char *const", "constval": "heuristicActive"} +,{ + "constname": "k_pch_Perf_NotifyInHMD_Bool","consttype": "const char *const", "constval": "warnInHMD"} +,{ + "constname": "k_pch_Perf_NotifyOnlyOnce_Bool","consttype": "const char *const", "constval": "warnOnlyOnce"} +,{ + "constname": "k_pch_Perf_AllowTimingStore_Bool","consttype": "const char *const", "constval": "allowTimingStore"} +,{ + "constname": "k_pch_Perf_SaveTimingsOnExit_Bool","consttype": "const char *const", "constval": "saveTimingsOnExit"} +,{ + "constname": "k_pch_Perf_TestData_Float","consttype": "const char *const", "constval": "perfTestData"} +,{ + "constname": "k_pch_CollisionBounds_Section","consttype": "const char *const", "constval": "collisionBounds"} +,{ + "constname": "k_pch_CollisionBounds_Style_Int32","consttype": "const char *const", "constval": "CollisionBoundsStyle"} +,{ + "constname": "k_pch_CollisionBounds_GroundPerimeterOn_Bool","consttype": "const char *const", "constval": "CollisionBoundsGroundPerimeterOn"} +,{ + "constname": "k_pch_CollisionBounds_CenterMarkerOn_Bool","consttype": "const char *const", "constval": "CollisionBoundsCenterMarkerOn"} +,{ + "constname": "k_pch_CollisionBounds_PlaySpaceOn_Bool","consttype": "const char *const", "constval": "CollisionBoundsPlaySpaceOn"} +,{ + "constname": "k_pch_CollisionBounds_FadeDistance_Float","consttype": "const char *const", "constval": "CollisionBoundsFadeDistance"} +,{ + "constname": "k_pch_CollisionBounds_ColorGammaR_Int32","consttype": "const char *const", "constval": "CollisionBoundsColorGammaR"} +,{ + "constname": "k_pch_CollisionBounds_ColorGammaG_Int32","consttype": "const char *const", "constval": "CollisionBoundsColorGammaG"} +,{ + "constname": "k_pch_CollisionBounds_ColorGammaB_Int32","consttype": "const char *const", "constval": "CollisionBoundsColorGammaB"} +,{ + "constname": "k_pch_CollisionBounds_ColorGammaA_Int32","consttype": "const char *const", "constval": "CollisionBoundsColorGammaA"} +,{ + "constname": "k_pch_Camera_Section","consttype": "const char *const", "constval": "camera"} +,{ + "constname": "k_pch_Camera_EnableCamera_Bool","consttype": "const char *const", "constval": "enableCamera"} +,{ + "constname": "k_pch_Camera_EnableCameraInDashboard_Bool","consttype": "const char *const", "constval": "enableCameraInDashboard"} +,{ + "constname": "k_pch_Camera_EnableCameraForCollisionBounds_Bool","consttype": "const char *const", "constval": "enableCameraForCollisionBounds"} +,{ + "constname": "k_pch_Camera_EnableCameraForRoomView_Bool","consttype": "const char *const", "constval": "enableCameraForRoomView"} +,{ + "constname": "k_pch_Camera_BoundsColorGammaR_Int32","consttype": "const char *const", "constval": "cameraBoundsColorGammaR"} +,{ + "constname": "k_pch_Camera_BoundsColorGammaG_Int32","consttype": "const char *const", "constval": "cameraBoundsColorGammaG"} +,{ + "constname": "k_pch_Camera_BoundsColorGammaB_Int32","consttype": "const char *const", "constval": "cameraBoundsColorGammaB"} +,{ + "constname": "k_pch_Camera_BoundsColorGammaA_Int32","consttype": "const char *const", "constval": "cameraBoundsColorGammaA"} +,{ + "constname": "k_pch_Camera_BoundsStrength_Int32","consttype": "const char *const", "constval": "cameraBoundsStrength"} +,{ + "constname": "k_pch_audio_Section","consttype": "const char *const", "constval": "audio"} +,{ + "constname": "k_pch_audio_OnPlaybackDevice_String","consttype": "const char *const", "constval": "onPlaybackDevice"} +,{ + "constname": "k_pch_audio_OnRecordDevice_String","consttype": "const char *const", "constval": "onRecordDevice"} +,{ + "constname": "k_pch_audio_OnPlaybackMirrorDevice_String","consttype": "const char *const", "constval": "onPlaybackMirrorDevice"} +,{ + "constname": "k_pch_audio_OffPlaybackDevice_String","consttype": "const char *const", "constval": "offPlaybackDevice"} +,{ + "constname": "k_pch_audio_OffRecordDevice_String","consttype": "const char *const", "constval": "offRecordDevice"} +,{ + "constname": "k_pch_audio_VIVEHDMIGain","consttype": "const char *const", "constval": "viveHDMIGain"} +,{ + "constname": "k_pch_Power_Section","consttype": "const char *const", "constval": "power"} +,{ + "constname": "k_pch_Power_PowerOffOnExit_Bool","consttype": "const char *const", "constval": "powerOffOnExit"} +,{ + "constname": "k_pch_Power_TurnOffScreensTimeout_Float","consttype": "const char *const", "constval": "turnOffScreensTimeout"} +,{ + "constname": "k_pch_Power_TurnOffControllersTimeout_Float","consttype": "const char *const", "constval": "turnOffControllersTimeout"} +,{ + "constname": "k_pch_Power_ReturnToWatchdogTimeout_Float","consttype": "const char *const", "constval": "returnToWatchdogTimeout"} +,{ + "constname": "k_pch_Power_AutoLaunchSteamVROnButtonPress","consttype": "const char *const", "constval": "autoLaunchSteamVROnButtonPress"} +,{ + "constname": "k_pch_Dashboard_Section","consttype": "const char *const", "constval": "dashboard"} +,{ + "constname": "k_pch_Dashboard_EnableDashboard_Bool","consttype": "const char *const", "constval": "enableDashboard"} +,{ + "constname": "k_pch_Dashboard_ArcadeMode_Bool","consttype": "const char *const", "constval": "arcadeMode"} +,{ + "constname": "k_pch_modelskin_Section","consttype": "const char *const", "constval": "modelskins"} +,{ + "constname": "IVRScreenshots_Version","consttype": "const char *const", "constval": "IVRScreenshots_001"} +,{ + "constname": "IVRResources_Version","consttype": "const char *const", "constval": "IVRResources_001"} +], +"structs":[{"struct": "vr::HmdMatrix34_t","fields": [ +{ "fieldname": "m", "fieldtype": "float [3][4]"}]} +,{"struct": "vr::HmdMatrix44_t","fields": [ +{ "fieldname": "m", "fieldtype": "float [4][4]"}]} +,{"struct": "vr::HmdVector3_t","fields": [ +{ "fieldname": "v", "fieldtype": "float [3]"}]} +,{"struct": "vr::HmdVector4_t","fields": [ +{ "fieldname": "v", "fieldtype": "float [4]"}]} +,{"struct": "vr::HmdVector3d_t","fields": [ +{ "fieldname": "v", "fieldtype": "double [3]"}]} +,{"struct": "vr::HmdVector2_t","fields": [ +{ "fieldname": "v", "fieldtype": "float [2]"}]} +,{"struct": "vr::HmdQuaternion_t","fields": [ +{ "fieldname": "w", "fieldtype": "double"}, +{ "fieldname": "x", "fieldtype": "double"}, +{ "fieldname": "y", "fieldtype": "double"}, +{ "fieldname": "z", "fieldtype": "double"}]} +,{"struct": "vr::HmdColor_t","fields": [ +{ "fieldname": "r", "fieldtype": "float"}, +{ "fieldname": "g", "fieldtype": "float"}, +{ "fieldname": "b", "fieldtype": "float"}, +{ "fieldname": "a", "fieldtype": "float"}]} +,{"struct": "vr::HmdQuad_t","fields": [ +{ "fieldname": "vCorners", "fieldtype": "struct vr::HmdVector3_t [4]"}]} +,{"struct": "vr::HmdRect2_t","fields": [ +{ "fieldname": "vTopLeft", "fieldtype": "struct vr::HmdVector2_t"}, +{ "fieldname": "vBottomRight", "fieldtype": "struct vr::HmdVector2_t"}]} +,{"struct": "vr::DistortionCoordinates_t","fields": [ +{ "fieldname": "rfRed", "fieldtype": "float [2]"}, +{ "fieldname": "rfGreen", "fieldtype": "float [2]"}, +{ "fieldname": "rfBlue", "fieldtype": "float [2]"}]} +,{"struct": "vr::Texture_t","fields": [ +{ "fieldname": "handle", "fieldtype": "void *"}, +{ "fieldname": "eType", "fieldtype": "enum vr::EGraphicsAPIConvention"}, +{ "fieldname": "eColorSpace", "fieldtype": "enum vr::EColorSpace"}]} +,{"struct": "vr::TrackedDevicePose_t","fields": [ +{ "fieldname": "mDeviceToAbsoluteTracking", "fieldtype": "struct vr::HmdMatrix34_t"}, +{ "fieldname": "vVelocity", "fieldtype": "struct vr::HmdVector3_t"}, +{ "fieldname": "vAngularVelocity", "fieldtype": "struct vr::HmdVector3_t"}, +{ "fieldname": "eTrackingResult", "fieldtype": "enum vr::ETrackingResult"}, +{ "fieldname": "bPoseIsValid", "fieldtype": "_Bool"}, +{ "fieldname": "bDeviceIsConnected", "fieldtype": "_Bool"}]} +,{"struct": "vr::VRTextureBounds_t","fields": [ +{ "fieldname": "uMin", "fieldtype": "float"}, +{ "fieldname": "vMin", "fieldtype": "float"}, +{ "fieldname": "uMax", "fieldtype": "float"}, +{ "fieldname": "vMax", "fieldtype": "float"}]} +,{"struct": "vr::VulkanData_t","fields": [ +{ "fieldname": "m_nImage", "fieldtype": "uint64_t"}, +{ "fieldname": "m_pDevice", "fieldtype": "struct VkDevice_T *"}, +{ "fieldname": "m_pPhysicalDevice", "fieldtype": "struct VkPhysicalDevice_T *"}, +{ "fieldname": "m_pInstance", "fieldtype": "struct VkInstance_T *"}, +{ "fieldname": "m_pQueue", "fieldtype": "struct VkQueue_T *"}, +{ "fieldname": "m_nQueueFamilyIndex", "fieldtype": "uint32_t"}, +{ "fieldname": "m_nWidth", "fieldtype": "uint32_t"}, +{ "fieldname": "m_nHeight", "fieldtype": "uint32_t"}, +{ "fieldname": "m_nFormat", "fieldtype": "uint32_t"}, +{ "fieldname": "m_nSampleCount", "fieldtype": "uint32_t"}]} +,{"struct": "vr::VREvent_Controller_t","fields": [ +{ "fieldname": "button", "fieldtype": "uint32_t"}]} +,{"struct": "vr::VREvent_Mouse_t","fields": [ +{ "fieldname": "x", "fieldtype": "float"}, +{ "fieldname": "y", "fieldtype": "float"}, +{ "fieldname": "button", "fieldtype": "uint32_t"}]} +,{"struct": "vr::VREvent_Scroll_t","fields": [ +{ "fieldname": "xdelta", "fieldtype": "float"}, +{ "fieldname": "ydelta", "fieldtype": "float"}, +{ "fieldname": "repeatCount", "fieldtype": "uint32_t"}]} +,{"struct": "vr::VREvent_TouchPadMove_t","fields": [ +{ "fieldname": "bFingerDown", "fieldtype": "_Bool"}, +{ "fieldname": "flSecondsFingerDown", "fieldtype": "float"}, +{ "fieldname": "fValueXFirst", "fieldtype": "float"}, +{ "fieldname": "fValueYFirst", "fieldtype": "float"}, +{ "fieldname": "fValueXRaw", "fieldtype": "float"}, +{ "fieldname": "fValueYRaw", "fieldtype": "float"}]} +,{"struct": "vr::VREvent_Notification_t","fields": [ +{ "fieldname": "ulUserValue", "fieldtype": "uint64_t"}, +{ "fieldname": "notificationId", "fieldtype": "uint32_t"}]} +,{"struct": "vr::VREvent_Process_t","fields": [ +{ "fieldname": "pid", "fieldtype": "uint32_t"}, +{ "fieldname": "oldPid", "fieldtype": "uint32_t"}, +{ "fieldname": "bForced", "fieldtype": "_Bool"}]} +,{"struct": "vr::VREvent_Overlay_t","fields": [ +{ "fieldname": "overlayHandle", "fieldtype": "uint64_t"}]} +,{"struct": "vr::VREvent_Status_t","fields": [ +{ "fieldname": "statusState", "fieldtype": "uint32_t"}]} +,{"struct": "vr::VREvent_Keyboard_t","fields": [ +{ "fieldname": "cNewInput", "fieldtype": "char [8]"}, +{ "fieldname": "uUserValue", "fieldtype": "uint64_t"}]} +,{"struct": "vr::VREvent_Ipd_t","fields": [ +{ "fieldname": "ipdMeters", "fieldtype": "float"}]} +,{"struct": "vr::VREvent_Chaperone_t","fields": [ +{ "fieldname": "m_nPreviousUniverse", "fieldtype": "uint64_t"}, +{ "fieldname": "m_nCurrentUniverse", "fieldtype": "uint64_t"}]} +,{"struct": "vr::VREvent_Reserved_t","fields": [ +{ "fieldname": "reserved0", "fieldtype": "uint64_t"}, +{ "fieldname": "reserved1", "fieldtype": "uint64_t"}]} +,{"struct": "vr::VREvent_PerformanceTest_t","fields": [ +{ "fieldname": "m_nFidelityLevel", "fieldtype": "uint32_t"}]} +,{"struct": "vr::VREvent_SeatedZeroPoseReset_t","fields": [ +{ "fieldname": "bResetBySystemMenu", "fieldtype": "_Bool"}]} +,{"struct": "vr::VREvent_Screenshot_t","fields": [ +{ "fieldname": "handle", "fieldtype": "uint32_t"}, +{ "fieldname": "type", "fieldtype": "uint32_t"}]} +,{"struct": "vr::VREvent_ScreenshotProgress_t","fields": [ +{ "fieldname": "progress", "fieldtype": "float"}]} +,{"struct": "vr::VREvent_ApplicationLaunch_t","fields": [ +{ "fieldname": "pid", "fieldtype": "uint32_t"}, +{ "fieldname": "unArgsHandle", "fieldtype": "uint32_t"}]} +,{"struct": "vr::VREvent_EditingCameraSurface_t","fields": [ +{ "fieldname": "overlayHandle", "fieldtype": "uint64_t"}, +{ "fieldname": "nVisualMode", "fieldtype": "uint32_t"}]} +,{"struct": "vr::(anonymous)","fields": [ +{ "fieldname": "reserved", "fieldtype": "struct vr::VREvent_Reserved_t"}, +{ "fieldname": "controller", "fieldtype": "struct vr::VREvent_Controller_t"}, +{ "fieldname": "mouse", "fieldtype": "struct vr::VREvent_Mouse_t"}, +{ "fieldname": "scroll", "fieldtype": "struct vr::VREvent_Scroll_t"}, +{ "fieldname": "process", "fieldtype": "struct vr::VREvent_Process_t"}, +{ "fieldname": "notification", "fieldtype": "struct vr::VREvent_Notification_t"}, +{ "fieldname": "overlay", "fieldtype": "struct vr::VREvent_Overlay_t"}, +{ "fieldname": "status", "fieldtype": "struct vr::VREvent_Status_t"}, +{ "fieldname": "keyboard", "fieldtype": "struct vr::VREvent_Keyboard_t"}, +{ "fieldname": "ipd", "fieldtype": "struct vr::VREvent_Ipd_t"}, +{ "fieldname": "chaperone", "fieldtype": "struct vr::VREvent_Chaperone_t"}, +{ "fieldname": "performanceTest", "fieldtype": "struct vr::VREvent_PerformanceTest_t"}, +{ "fieldname": "touchPadMove", "fieldtype": "struct vr::VREvent_TouchPadMove_t"}, +{ "fieldname": "seatedZeroPoseReset", "fieldtype": "struct vr::VREvent_SeatedZeroPoseReset_t"}, +{ "fieldname": "screenshot", "fieldtype": "struct vr::VREvent_Screenshot_t"}, +{ "fieldname": "screenshotProgress", "fieldtype": "struct vr::VREvent_ScreenshotProgress_t"}, +{ "fieldname": "applicationLaunch", "fieldtype": "struct vr::VREvent_ApplicationLaunch_t"}, +{ "fieldname": "cameraSurface", "fieldtype": "struct vr::VREvent_EditingCameraSurface_t"}]} +,{"struct": "vr::VREvent_t","fields": [ +{ "fieldname": "eventType", "fieldtype": "uint32_t"}, +{ "fieldname": "trackedDeviceIndex", "fieldtype": "TrackedDeviceIndex_t"}, +{ "fieldname": "eventAgeSeconds", "fieldtype": "float"}, +{ "fieldname": "data", "fieldtype": "VREvent_Data_t"}]} +,{"struct": "vr::HiddenAreaMesh_t","fields": [ +{ "fieldname": "pVertexData", "fieldtype": "const struct vr::HmdVector2_t *"}, +{ "fieldname": "unTriangleCount", "fieldtype": "uint32_t"}]} +,{"struct": "vr::VRControllerAxis_t","fields": [ +{ "fieldname": "x", "fieldtype": "float"}, +{ "fieldname": "y", "fieldtype": "float"}]} +,{"struct": "vr::VRControllerState001_t","fields": [ +{ "fieldname": "unPacketNum", "fieldtype": "uint32_t"}, +{ "fieldname": "ulButtonPressed", "fieldtype": "uint64_t"}, +{ "fieldname": "ulButtonTouched", "fieldtype": "uint64_t"}, +{ "fieldname": "rAxis", "fieldtype": "struct vr::VRControllerAxis_t [5]"}]} +,{"struct": "vr::Compositor_OverlaySettings","fields": [ +{ "fieldname": "size", "fieldtype": "uint32_t"}, +{ "fieldname": "curved", "fieldtype": "_Bool"}, +{ "fieldname": "antialias", "fieldtype": "_Bool"}, +{ "fieldname": "scale", "fieldtype": "float"}, +{ "fieldname": "distance", "fieldtype": "float"}, +{ "fieldname": "alpha", "fieldtype": "float"}, +{ "fieldname": "uOffset", "fieldtype": "float"}, +{ "fieldname": "vOffset", "fieldtype": "float"}, +{ "fieldname": "uScale", "fieldtype": "float"}, +{ "fieldname": "vScale", "fieldtype": "float"}, +{ "fieldname": "gridDivs", "fieldtype": "float"}, +{ "fieldname": "gridWidth", "fieldtype": "float"}, +{ "fieldname": "gridScale", "fieldtype": "float"}, +{ "fieldname": "transform", "fieldtype": "struct vr::HmdMatrix44_t"}]} +,{"struct": "vr::CameraVideoStreamFrameHeader_t","fields": [ +{ "fieldname": "eFrameType", "fieldtype": "enum vr::EVRTrackedCameraFrameType"}, +{ "fieldname": "nWidth", "fieldtype": "uint32_t"}, +{ "fieldname": "nHeight", "fieldtype": "uint32_t"}, +{ "fieldname": "nBytesPerPixel", "fieldtype": "uint32_t"}, +{ "fieldname": "nFrameSequence", "fieldtype": "uint32_t"}, +{ "fieldname": "standingTrackedDevicePose", "fieldtype": "struct vr::TrackedDevicePose_t"}]} +,{"struct": "vr::AppOverrideKeys_t","fields": [ +{ "fieldname": "pchKey", "fieldtype": "const char *"}, +{ "fieldname": "pchValue", "fieldtype": "const char *"}]} +,{"struct": "vr::Compositor_FrameTiming","fields": [ +{ "fieldname": "m_nSize", "fieldtype": "uint32_t"}, +{ "fieldname": "m_nFrameIndex", "fieldtype": "uint32_t"}, +{ "fieldname": "m_nNumFramePresents", "fieldtype": "uint32_t"}, +{ "fieldname": "m_nNumDroppedFrames", "fieldtype": "uint32_t"}, +{ "fieldname": "m_nReprojectionFlags", "fieldtype": "uint32_t"}, +{ "fieldname": "m_flSystemTimeInSeconds", "fieldtype": "double"}, +{ "fieldname": "m_flPreSubmitGpuMs", "fieldtype": "float"}, +{ "fieldname": "m_flPostSubmitGpuMs", "fieldtype": "float"}, +{ "fieldname": "m_flTotalRenderGpuMs", "fieldtype": "float"}, +{ "fieldname": "m_flCompositorRenderGpuMs", "fieldtype": "float"}, +{ "fieldname": "m_flCompositorRenderCpuMs", "fieldtype": "float"}, +{ "fieldname": "m_flCompositorIdleCpuMs", "fieldtype": "float"}, +{ "fieldname": "m_flClientFrameIntervalMs", "fieldtype": "float"}, +{ "fieldname": "m_flPresentCallCpuMs", "fieldtype": "float"}, +{ "fieldname": "m_flWaitForPresentCpuMs", "fieldtype": "float"}, +{ "fieldname": "m_flSubmitFrameMs", "fieldtype": "float"}, +{ "fieldname": "m_flWaitGetPosesCalledMs", "fieldtype": "float"}, +{ "fieldname": "m_flNewPosesReadyMs", "fieldtype": "float"}, +{ "fieldname": "m_flNewFrameReadyMs", "fieldtype": "float"}, +{ "fieldname": "m_flCompositorUpdateStartMs", "fieldtype": "float"}, +{ "fieldname": "m_flCompositorUpdateEndMs", "fieldtype": "float"}, +{ "fieldname": "m_flCompositorRenderStartMs", "fieldtype": "float"}, +{ "fieldname": "m_HmdPose", "fieldtype": "vr::TrackedDevicePose_t"}]} +,{"struct": "vr::Compositor_CumulativeStats","fields": [ +{ "fieldname": "m_nPid", "fieldtype": "uint32_t"}, +{ "fieldname": "m_nNumFramePresents", "fieldtype": "uint32_t"}, +{ "fieldname": "m_nNumDroppedFrames", "fieldtype": "uint32_t"}, +{ "fieldname": "m_nNumReprojectedFrames", "fieldtype": "uint32_t"}, +{ "fieldname": "m_nNumFramePresentsOnStartup", "fieldtype": "uint32_t"}, +{ "fieldname": "m_nNumDroppedFramesOnStartup", "fieldtype": "uint32_t"}, +{ "fieldname": "m_nNumReprojectedFramesOnStartup", "fieldtype": "uint32_t"}, +{ "fieldname": "m_nNumLoading", "fieldtype": "uint32_t"}, +{ "fieldname": "m_nNumFramePresentsLoading", "fieldtype": "uint32_t"}, +{ "fieldname": "m_nNumDroppedFramesLoading", "fieldtype": "uint32_t"}, +{ "fieldname": "m_nNumReprojectedFramesLoading", "fieldtype": "uint32_t"}, +{ "fieldname": "m_nNumTimedOut", "fieldtype": "uint32_t"}, +{ "fieldname": "m_nNumFramePresentsTimedOut", "fieldtype": "uint32_t"}, +{ "fieldname": "m_nNumDroppedFramesTimedOut", "fieldtype": "uint32_t"}, +{ "fieldname": "m_nNumReprojectedFramesTimedOut", "fieldtype": "uint32_t"}]} +,{"struct": "vr::VROverlayIntersectionParams_t","fields": [ +{ "fieldname": "vSource", "fieldtype": "struct vr::HmdVector3_t"}, +{ "fieldname": "vDirection", "fieldtype": "struct vr::HmdVector3_t"}, +{ "fieldname": "eOrigin", "fieldtype": "enum vr::ETrackingUniverseOrigin"}]} +,{"struct": "vr::VROverlayIntersectionResults_t","fields": [ +{ "fieldname": "vPoint", "fieldtype": "struct vr::HmdVector3_t"}, +{ "fieldname": "vNormal", "fieldtype": "struct vr::HmdVector3_t"}, +{ "fieldname": "vUVs", "fieldtype": "struct vr::HmdVector2_t"}, +{ "fieldname": "fDistance", "fieldtype": "float"}]} +,{"struct": "vr::RenderModel_ComponentState_t","fields": [ +{ "fieldname": "mTrackingToComponentRenderModel", "fieldtype": "struct vr::HmdMatrix34_t"}, +{ "fieldname": "mTrackingToComponentLocal", "fieldtype": "struct vr::HmdMatrix34_t"}, +{ "fieldname": "uProperties", "fieldtype": "VRComponentProperties"}]} +,{"struct": "vr::RenderModel_Vertex_t","fields": [ +{ "fieldname": "vPosition", "fieldtype": "struct vr::HmdVector3_t"}, +{ "fieldname": "vNormal", "fieldtype": "struct vr::HmdVector3_t"}, +{ "fieldname": "rfTextureCoord", "fieldtype": "float [2]"}]} +,{"struct": "vr::RenderModel_TextureMap_t","fields": [ +{ "fieldname": "unWidth", "fieldtype": "uint16_t"}, +{ "fieldname": "unHeight", "fieldtype": "uint16_t"}, +{ "fieldname": "rubTextureMapData", "fieldtype": "const uint8_t *"}]} +,{"struct": "vr::RenderModel_t","fields": [ +{ "fieldname": "rVertexData", "fieldtype": "const struct vr::RenderModel_Vertex_t *"}, +{ "fieldname": "unVertexCount", "fieldtype": "uint32_t"}, +{ "fieldname": "rIndexData", "fieldtype": "const uint16_t *"}, +{ "fieldname": "unTriangleCount", "fieldtype": "uint32_t"}, +{ "fieldname": "diffuseTextureId", "fieldtype": "TextureID_t"}]} +,{"struct": "vr::RenderModel_ControllerMode_State_t","fields": [ +{ "fieldname": "bScrollWheelVisible", "fieldtype": "_Bool"}]} +,{"struct": "vr::NotificationBitmap_t","fields": [ +{ "fieldname": "m_pImageData", "fieldtype": "void *"}, +{ "fieldname": "m_nWidth", "fieldtype": "int32_t"}, +{ "fieldname": "m_nHeight", "fieldtype": "int32_t"}, +{ "fieldname": "m_nBytesPerPixel", "fieldtype": "int32_t"}]} +,{"struct": "vr::COpenVRContext","fields": [ +{ "fieldname": "m_pVRSystem", "fieldtype": "class vr::IVRSystem *"}, +{ "fieldname": "m_pVRChaperone", "fieldtype": "class vr::IVRChaperone *"}, +{ "fieldname": "m_pVRChaperoneSetup", "fieldtype": "class vr::IVRChaperoneSetup *"}, +{ "fieldname": "m_pVRCompositor", "fieldtype": "class vr::IVRCompositor *"}, +{ "fieldname": "m_pVROverlay", "fieldtype": "class vr::IVROverlay *"}, +{ "fieldname": "m_pVRResources", "fieldtype": "class vr::IVRResources *"}, +{ "fieldname": "m_pVRRenderModels", "fieldtype": "class vr::IVRRenderModels *"}, +{ "fieldname": "m_pVRExtendedDisplay", "fieldtype": "class vr::IVRExtendedDisplay *"}, +{ "fieldname": "m_pVRSettings", "fieldtype": "class vr::IVRSettings *"}, +{ "fieldname": "m_pVRApplications", "fieldtype": "class vr::IVRApplications *"}, +{ "fieldname": "m_pVRTrackedCamera", "fieldtype": "class vr::IVRTrackedCamera *"}, +{ "fieldname": "m_pVRScreenshots", "fieldtype": "class vr::IVRScreenshots *"}]} +], +"methods":[{ + "classname": "vr::IVRSystem", + "methodname": "GetRecommendedRenderTargetSize", + "returntype": "void", + "params": [ +{ "paramname": "pnWidth" ,"paramtype": "uint32_t *"}, +{ "paramname": "pnHeight" ,"paramtype": "uint32_t *"} + ] +} +,{ + "classname": "vr::IVRSystem", + "methodname": "GetProjectionMatrix", + "returntype": "struct vr::HmdMatrix44_t", + "params": [ +{ "paramname": "eEye" ,"paramtype": "vr::EVREye"}, +{ "paramname": "fNearZ" ,"paramtype": "float"}, +{ "paramname": "fFarZ" ,"paramtype": "float"}, +{ "paramname": "eProjType" ,"paramtype": "vr::EGraphicsAPIConvention"} + ] +} +,{ + "classname": "vr::IVRSystem", + "methodname": "GetProjectionRaw", + "returntype": "void", + "params": [ +{ "paramname": "eEye" ,"paramtype": "vr::EVREye"}, +{ "paramname": "pfLeft" ,"paramtype": "float *"}, +{ "paramname": "pfRight" ,"paramtype": "float *"}, +{ "paramname": "pfTop" ,"paramtype": "float *"}, +{ "paramname": "pfBottom" ,"paramtype": "float *"} + ] +} +,{ + "classname": "vr::IVRSystem", + "methodname": "ComputeDistortion", + "returntype": "struct vr::DistortionCoordinates_t", + "params": [ +{ "paramname": "eEye" ,"paramtype": "vr::EVREye"}, +{ "paramname": "fU" ,"paramtype": "float"}, +{ "paramname": "fV" ,"paramtype": "float"} + ] +} +,{ + "classname": "vr::IVRSystem", + "methodname": "GetEyeToHeadTransform", + "returntype": "struct vr::HmdMatrix34_t", + "params": [ +{ "paramname": "eEye" ,"paramtype": "vr::EVREye"} + ] +} +,{ + "classname": "vr::IVRSystem", + "methodname": "GetTimeSinceLastVsync", + "returntype": "bool", + "params": [ +{ "paramname": "pfSecondsSinceLastVsync" ,"paramtype": "float *"}, +{ "paramname": "pulFrameCounter" ,"paramtype": "uint64_t *"} + ] +} +,{ + "classname": "vr::IVRSystem", + "methodname": "GetD3D9AdapterIndex", + "returntype": "int32_t" +} +,{ + "classname": "vr::IVRSystem", + "methodname": "GetDXGIOutputInfo", + "returntype": "void", + "params": [ +{ "paramname": "pnAdapterIndex" ,"paramtype": "int32_t *"} + ] +} +,{ + "classname": "vr::IVRSystem", + "methodname": "IsDisplayOnDesktop", + "returntype": "bool" +} +,{ + "classname": "vr::IVRSystem", + "methodname": "SetDisplayVisibility", + "returntype": "bool", + "params": [ +{ "paramname": "bIsVisibleOnDesktop" ,"paramtype": "bool"} + ] +} +,{ + "classname": "vr::IVRSystem", + "methodname": "GetDeviceToAbsoluteTrackingPose", + "returntype": "void", + "params": [ +{ "paramname": "eOrigin" ,"paramtype": "vr::ETrackingUniverseOrigin"}, +{ "paramname": "fPredictedSecondsToPhotonsFromNow" ,"paramtype": "float"}, +{ "paramname": "pTrackedDevicePoseArray" ,"array_count": "unTrackedDevicePoseArrayCount" ,"paramtype": "struct vr::TrackedDevicePose_t *"}, +{ "paramname": "unTrackedDevicePoseArrayCount" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVRSystem", + "methodname": "ResetSeatedZeroPose", + "returntype": "void" +} +,{ + "classname": "vr::IVRSystem", + "methodname": "GetSeatedZeroPoseToStandingAbsoluteTrackingPose", + "returntype": "struct vr::HmdMatrix34_t" +} +,{ + "classname": "vr::IVRSystem", + "methodname": "GetRawZeroPoseToStandingAbsoluteTrackingPose", + "returntype": "struct vr::HmdMatrix34_t" +} +,{ + "classname": "vr::IVRSystem", + "methodname": "GetSortedTrackedDeviceIndicesOfClass", + "returntype": "uint32_t", + "params": [ +{ "paramname": "eTrackedDeviceClass" ,"paramtype": "vr::ETrackedDeviceClass"}, +{ "paramname": "punTrackedDeviceIndexArray" ,"array_count": "unTrackedDeviceIndexArrayCount" ,"paramtype": "vr::TrackedDeviceIndex_t *"}, +{ "paramname": "unTrackedDeviceIndexArrayCount" ,"paramtype": "uint32_t"}, +{ "paramname": "unRelativeToTrackedDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"} + ] +} +,{ + "classname": "vr::IVRSystem", + "methodname": "GetTrackedDeviceActivityLevel", + "returntype": "vr::EDeviceActivityLevel", + "params": [ +{ "paramname": "unDeviceId" ,"paramtype": "vr::TrackedDeviceIndex_t"} + ] +} +,{ + "classname": "vr::IVRSystem", + "methodname": "ApplyTransform", + "returntype": "void", + "params": [ +{ "paramname": "pOutputPose" ,"paramtype": "struct vr::TrackedDevicePose_t *"}, +{ "paramname": "pTrackedDevicePose" ,"paramtype": "const struct vr::TrackedDevicePose_t *"}, +{ "paramname": "pTransform" ,"paramtype": "const struct vr::HmdMatrix34_t *"} + ] +} +,{ + "classname": "vr::IVRSystem", + "methodname": "GetTrackedDeviceIndexForControllerRole", + "returntype": "vr::TrackedDeviceIndex_t", + "params": [ +{ "paramname": "unDeviceType" ,"paramtype": "vr::ETrackedControllerRole"} + ] +} +,{ + "classname": "vr::IVRSystem", + "methodname": "GetControllerRoleForTrackedDeviceIndex", + "returntype": "vr::ETrackedControllerRole", + "params": [ +{ "paramname": "unDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"} + ] +} +,{ + "classname": "vr::IVRSystem", + "methodname": "GetTrackedDeviceClass", + "returntype": "vr::ETrackedDeviceClass", + "params": [ +{ "paramname": "unDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"} + ] +} +,{ + "classname": "vr::IVRSystem", + "methodname": "IsTrackedDeviceConnected", + "returntype": "bool", + "params": [ +{ "paramname": "unDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"} + ] +} +,{ + "classname": "vr::IVRSystem", + "methodname": "GetBoolTrackedDeviceProperty", + "returntype": "bool", + "params": [ +{ "paramname": "unDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"}, +{ "paramname": "prop" ,"paramtype": "vr::ETrackedDeviceProperty"}, +{ "paramname": "pError" ,"paramtype": "vr::ETrackedPropertyError *"} + ] +} +,{ + "classname": "vr::IVRSystem", + "methodname": "GetFloatTrackedDeviceProperty", + "returntype": "float", + "params": [ +{ "paramname": "unDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"}, +{ "paramname": "prop" ,"paramtype": "vr::ETrackedDeviceProperty"}, +{ "paramname": "pError" ,"paramtype": "vr::ETrackedPropertyError *"} + ] +} +,{ + "classname": "vr::IVRSystem", + "methodname": "GetInt32TrackedDeviceProperty", + "returntype": "int32_t", + "params": [ +{ "paramname": "unDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"}, +{ "paramname": "prop" ,"paramtype": "vr::ETrackedDeviceProperty"}, +{ "paramname": "pError" ,"paramtype": "vr::ETrackedPropertyError *"} + ] +} +,{ + "classname": "vr::IVRSystem", + "methodname": "GetUint64TrackedDeviceProperty", + "returntype": "uint64_t", + "params": [ +{ "paramname": "unDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"}, +{ "paramname": "prop" ,"paramtype": "vr::ETrackedDeviceProperty"}, +{ "paramname": "pError" ,"paramtype": "vr::ETrackedPropertyError *"} + ] +} +,{ + "classname": "vr::IVRSystem", + "methodname": "GetMatrix34TrackedDeviceProperty", + "returntype": "struct vr::HmdMatrix34_t", + "params": [ +{ "paramname": "unDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"}, +{ "paramname": "prop" ,"paramtype": "vr::ETrackedDeviceProperty"}, +{ "paramname": "pError" ,"paramtype": "vr::ETrackedPropertyError *"} + ] +} +,{ + "classname": "vr::IVRSystem", + "methodname": "GetStringTrackedDeviceProperty", + "returntype": "uint32_t", + "params": [ +{ "paramname": "unDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"}, +{ "paramname": "prop" ,"paramtype": "vr::ETrackedDeviceProperty"}, +{ "paramname": "pchValue" ,"out_string": " " ,"paramtype": "char *"}, +{ "paramname": "unBufferSize" ,"paramtype": "uint32_t"}, +{ "paramname": "pError" ,"paramtype": "vr::ETrackedPropertyError *"} + ] +} +,{ + "classname": "vr::IVRSystem", + "methodname": "GetPropErrorNameFromEnum", + "returntype": "const char *", + "params": [ +{ "paramname": "error" ,"paramtype": "vr::ETrackedPropertyError"} + ] +} +,{ + "classname": "vr::IVRSystem", + "methodname": "PollNextEvent", + "returntype": "bool", + "params": [ +{ "paramname": "pEvent" ,"paramtype": "struct vr::VREvent_t *"}, +{ "paramname": "uncbVREvent" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVRSystem", + "methodname": "PollNextEventWithPose", + "returntype": "bool", + "params": [ +{ "paramname": "eOrigin" ,"paramtype": "vr::ETrackingUniverseOrigin"}, +{ "paramname": "pEvent" ,"paramtype": "struct vr::VREvent_t *"}, +{ "paramname": "uncbVREvent" ,"paramtype": "uint32_t"}, +{ "paramname": "pTrackedDevicePose" ,"paramtype": "vr::TrackedDevicePose_t *"} + ] +} +,{ + "classname": "vr::IVRSystem", + "methodname": "GetEventTypeNameFromEnum", + "returntype": "const char *", + "params": [ +{ "paramname": "eType" ,"paramtype": "vr::EVREventType"} + ] +} +,{ + "classname": "vr::IVRSystem", + "methodname": "GetHiddenAreaMesh", + "returntype": "struct vr::HiddenAreaMesh_t", + "params": [ +{ "paramname": "eEye" ,"paramtype": "vr::EVREye"} + ] +} +,{ + "classname": "vr::IVRSystem", + "methodname": "GetControllerState", + "returntype": "bool", + "params": [ +{ "paramname": "unControllerDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"}, +{ "paramname": "pControllerState" ,"paramtype": "vr::VRControllerState_t *"} + ] +} +,{ + "classname": "vr::IVRSystem", + "methodname": "GetControllerStateWithPose", + "returntype": "bool", + "params": [ +{ "paramname": "eOrigin" ,"paramtype": "vr::ETrackingUniverseOrigin"}, +{ "paramname": "unControllerDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"}, +{ "paramname": "pControllerState" ,"paramtype": "vr::VRControllerState_t *"}, +{ "paramname": "pTrackedDevicePose" ,"paramtype": "struct vr::TrackedDevicePose_t *"} + ] +} +,{ + "classname": "vr::IVRSystem", + "methodname": "TriggerHapticPulse", + "returntype": "void", + "params": [ +{ "paramname": "unControllerDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"}, +{ "paramname": "unAxisId" ,"paramtype": "uint32_t"}, +{ "paramname": "usDurationMicroSec" ,"paramtype": "unsigned short"} + ] +} +,{ + "classname": "vr::IVRSystem", + "methodname": "GetButtonIdNameFromEnum", + "returntype": "const char *", + "params": [ +{ "paramname": "eButtonId" ,"paramtype": "vr::EVRButtonId"} + ] +} +,{ + "classname": "vr::IVRSystem", + "methodname": "GetControllerAxisTypeNameFromEnum", + "returntype": "const char *", + "params": [ +{ "paramname": "eAxisType" ,"paramtype": "vr::EVRControllerAxisType"} + ] +} +,{ + "classname": "vr::IVRSystem", + "methodname": "CaptureInputFocus", + "returntype": "bool" +} +,{ + "classname": "vr::IVRSystem", + "methodname": "ReleaseInputFocus", + "returntype": "void" +} +,{ + "classname": "vr::IVRSystem", + "methodname": "IsInputFocusCapturedByAnotherProcess", + "returntype": "bool" +} +,{ + "classname": "vr::IVRSystem", + "methodname": "DriverDebugRequest", + "returntype": "uint32_t", + "params": [ +{ "paramname": "unDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"}, +{ "paramname": "pchRequest" ,"paramtype": "const char *"}, +{ "paramname": "pchResponseBuffer" ,"paramtype": "char *"}, +{ "paramname": "unResponseBufferSize" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVRSystem", + "methodname": "PerformFirmwareUpdate", + "returntype": "vr::EVRFirmwareError", + "params": [ +{ "paramname": "unDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"} + ] +} +,{ + "classname": "vr::IVRSystem", + "methodname": "AcknowledgeQuit_Exiting", + "returntype": "void" +} +,{ + "classname": "vr::IVRSystem", + "methodname": "AcknowledgeQuit_UserPrompt", + "returntype": "void" +} +,{ + "classname": "vr::IVRExtendedDisplay", + "methodname": "GetWindowBounds", + "returntype": "void", + "params": [ +{ "paramname": "pnX" ,"paramtype": "int32_t *"}, +{ "paramname": "pnY" ,"paramtype": "int32_t *"}, +{ "paramname": "pnWidth" ,"paramtype": "uint32_t *"}, +{ "paramname": "pnHeight" ,"paramtype": "uint32_t *"} + ] +} +,{ + "classname": "vr::IVRExtendedDisplay", + "methodname": "GetEyeOutputViewport", + "returntype": "void", + "params": [ +{ "paramname": "eEye" ,"paramtype": "vr::EVREye"}, +{ "paramname": "pnX" ,"paramtype": "uint32_t *"}, +{ "paramname": "pnY" ,"paramtype": "uint32_t *"}, +{ "paramname": "pnWidth" ,"paramtype": "uint32_t *"}, +{ "paramname": "pnHeight" ,"paramtype": "uint32_t *"} + ] +} +,{ + "classname": "vr::IVRExtendedDisplay", + "methodname": "GetDXGIOutputInfo", + "returntype": "void", + "params": [ +{ "paramname": "pnAdapterIndex" ,"paramtype": "int32_t *"}, +{ "paramname": "pnAdapterOutputIndex" ,"paramtype": "int32_t *"} + ] +} +,{ + "classname": "vr::IVRTrackedCamera", + "methodname": "GetCameraErrorNameFromEnum", + "returntype": "const char *", + "params": [ +{ "paramname": "eCameraError" ,"paramtype": "vr::EVRTrackedCameraError"} + ] +} +,{ + "classname": "vr::IVRTrackedCamera", + "methodname": "HasCamera", + "returntype": "vr::EVRTrackedCameraError", + "params": [ +{ "paramname": "nDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"}, +{ "paramname": "pHasCamera" ,"paramtype": "bool *"} + ] +} +,{ + "classname": "vr::IVRTrackedCamera", + "methodname": "GetCameraFrameSize", + "returntype": "vr::EVRTrackedCameraError", + "params": [ +{ "paramname": "nDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"}, +{ "paramname": "eFrameType" ,"paramtype": "vr::EVRTrackedCameraFrameType"}, +{ "paramname": "pnWidth" ,"paramtype": "uint32_t *"}, +{ "paramname": "pnHeight" ,"paramtype": "uint32_t *"}, +{ "paramname": "pnFrameBufferSize" ,"paramtype": "uint32_t *"} + ] +} +,{ + "classname": "vr::IVRTrackedCamera", + "methodname": "GetCameraIntrinisics", + "returntype": "vr::EVRTrackedCameraError", + "params": [ +{ "paramname": "nDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"}, +{ "paramname": "eFrameType" ,"paramtype": "vr::EVRTrackedCameraFrameType"}, +{ "paramname": "pFocalLength" ,"paramtype": "vr::HmdVector2_t *"}, +{ "paramname": "pCenter" ,"paramtype": "vr::HmdVector2_t *"} + ] +} +,{ + "classname": "vr::IVRTrackedCamera", + "methodname": "GetCameraProjection", + "returntype": "vr::EVRTrackedCameraError", + "params": [ +{ "paramname": "nDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"}, +{ "paramname": "eFrameType" ,"paramtype": "vr::EVRTrackedCameraFrameType"}, +{ "paramname": "flZNear" ,"paramtype": "float"}, +{ "paramname": "flZFar" ,"paramtype": "float"}, +{ "paramname": "pProjection" ,"paramtype": "vr::HmdMatrix44_t *"} + ] +} +,{ + "classname": "vr::IVRTrackedCamera", + "methodname": "AcquireVideoStreamingService", + "returntype": "vr::EVRTrackedCameraError", + "params": [ +{ "paramname": "nDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"}, +{ "paramname": "pHandle" ,"paramtype": "vr::TrackedCameraHandle_t *"} + ] +} +,{ + "classname": "vr::IVRTrackedCamera", + "methodname": "ReleaseVideoStreamingService", + "returntype": "vr::EVRTrackedCameraError", + "params": [ +{ "paramname": "hTrackedCamera" ,"paramtype": "vr::TrackedCameraHandle_t"} + ] +} +,{ + "classname": "vr::IVRTrackedCamera", + "methodname": "GetVideoStreamFrameBuffer", + "returntype": "vr::EVRTrackedCameraError", + "params": [ +{ "paramname": "hTrackedCamera" ,"paramtype": "vr::TrackedCameraHandle_t"}, +{ "paramname": "eFrameType" ,"paramtype": "vr::EVRTrackedCameraFrameType"}, +{ "paramname": "pFrameBuffer" ,"paramtype": "void *"}, +{ "paramname": "nFrameBufferSize" ,"paramtype": "uint32_t"}, +{ "paramname": "pFrameHeader" ,"paramtype": "vr::CameraVideoStreamFrameHeader_t *"}, +{ "paramname": "nFrameHeaderSize" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVRTrackedCamera", + "methodname": "GetVideoStreamTextureSize", + "returntype": "vr::EVRTrackedCameraError", + "params": [ +{ "paramname": "nDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"}, +{ "paramname": "eFrameType" ,"paramtype": "vr::EVRTrackedCameraFrameType"}, +{ "paramname": "pTextureBounds" ,"paramtype": "vr::VRTextureBounds_t *"}, +{ "paramname": "pnWidth" ,"paramtype": "uint32_t *"}, +{ "paramname": "pnHeight" ,"paramtype": "uint32_t *"} + ] +} +,{ + "classname": "vr::IVRTrackedCamera", + "methodname": "GetVideoStreamTextureD3D11", + "returntype": "vr::EVRTrackedCameraError", + "params": [ +{ "paramname": "hTrackedCamera" ,"paramtype": "vr::TrackedCameraHandle_t"}, +{ "paramname": "eFrameType" ,"paramtype": "vr::EVRTrackedCameraFrameType"}, +{ "paramname": "pD3D11DeviceOrResource" ,"paramtype": "void *"}, +{ "paramname": "ppD3D11ShaderResourceView" ,"paramtype": "void **"}, +{ "paramname": "pFrameHeader" ,"paramtype": "vr::CameraVideoStreamFrameHeader_t *"}, +{ "paramname": "nFrameHeaderSize" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVRTrackedCamera", + "methodname": "GetVideoStreamTextureGL", + "returntype": "vr::EVRTrackedCameraError", + "params": [ +{ "paramname": "hTrackedCamera" ,"paramtype": "vr::TrackedCameraHandle_t"}, +{ "paramname": "eFrameType" ,"paramtype": "vr::EVRTrackedCameraFrameType"}, +{ "paramname": "pglTextureId" ,"paramtype": "vr::glUInt_t *"}, +{ "paramname": "pFrameHeader" ,"paramtype": "vr::CameraVideoStreamFrameHeader_t *"}, +{ "paramname": "nFrameHeaderSize" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVRTrackedCamera", + "methodname": "ReleaseVideoStreamTextureGL", + "returntype": "vr::EVRTrackedCameraError", + "params": [ +{ "paramname": "hTrackedCamera" ,"paramtype": "vr::TrackedCameraHandle_t"}, +{ "paramname": "glTextureId" ,"paramtype": "vr::glUInt_t"} + ] +} +,{ + "classname": "vr::IVRApplications", + "methodname": "AddApplicationManifest", + "returntype": "vr::EVRApplicationError", + "params": [ +{ "paramname": "pchApplicationManifestFullPath" ,"paramtype": "const char *"}, +{ "paramname": "bTemporary" ,"paramtype": "bool"} + ] +} +,{ + "classname": "vr::IVRApplications", + "methodname": "RemoveApplicationManifest", + "returntype": "vr::EVRApplicationError", + "params": [ +{ "paramname": "pchApplicationManifestFullPath" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "vr::IVRApplications", + "methodname": "IsApplicationInstalled", + "returntype": "bool", + "params": [ +{ "paramname": "pchAppKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "vr::IVRApplications", + "methodname": "GetApplicationCount", + "returntype": "uint32_t" +} +,{ + "classname": "vr::IVRApplications", + "methodname": "GetApplicationKeyByIndex", + "returntype": "vr::EVRApplicationError", + "params": [ +{ "paramname": "unApplicationIndex" ,"paramtype": "uint32_t"}, +{ "paramname": "pchAppKeyBuffer" ,"out_string": " " ,"paramtype": "char *"}, +{ "paramname": "unAppKeyBufferLen" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVRApplications", + "methodname": "GetApplicationKeyByProcessId", + "returntype": "vr::EVRApplicationError", + "params": [ +{ "paramname": "unProcessId" ,"paramtype": "uint32_t"}, +{ "paramname": "pchAppKeyBuffer" ,"paramtype": "char *"}, +{ "paramname": "unAppKeyBufferLen" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVRApplications", + "methodname": "LaunchApplication", + "returntype": "vr::EVRApplicationError", + "params": [ +{ "paramname": "pchAppKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "vr::IVRApplications", + "methodname": "LaunchTemplateApplication", + "returntype": "vr::EVRApplicationError", + "params": [ +{ "paramname": "pchTemplateAppKey" ,"paramtype": "const char *"}, +{ "paramname": "pchNewAppKey" ,"paramtype": "const char *"}, +{ "paramname": "pKeys" ,"array_count": "unKeys" ,"paramtype": "const struct vr::AppOverrideKeys_t *"}, +{ "paramname": "unKeys" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVRApplications", + "methodname": "LaunchApplicationFromMimeType", + "returntype": "vr::EVRApplicationError", + "params": [ +{ "paramname": "pchMimeType" ,"paramtype": "const char *"}, +{ "paramname": "pchArgs" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "vr::IVRApplications", + "methodname": "LaunchDashboardOverlay", + "returntype": "vr::EVRApplicationError", + "params": [ +{ "paramname": "pchAppKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "vr::IVRApplications", + "methodname": "CancelApplicationLaunch", + "returntype": "bool", + "params": [ +{ "paramname": "pchAppKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "vr::IVRApplications", + "methodname": "IdentifyApplication", + "returntype": "vr::EVRApplicationError", + "params": [ +{ "paramname": "unProcessId" ,"paramtype": "uint32_t"}, +{ "paramname": "pchAppKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "vr::IVRApplications", + "methodname": "GetApplicationProcessId", + "returntype": "uint32_t", + "params": [ +{ "paramname": "pchAppKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "vr::IVRApplications", + "methodname": "GetApplicationsErrorNameFromEnum", + "returntype": "const char *", + "params": [ +{ "paramname": "error" ,"paramtype": "vr::EVRApplicationError"} + ] +} +,{ + "classname": "vr::IVRApplications", + "methodname": "GetApplicationPropertyString", + "returntype": "uint32_t", + "params": [ +{ "paramname": "pchAppKey" ,"paramtype": "const char *"}, +{ "paramname": "eProperty" ,"paramtype": "vr::EVRApplicationProperty"}, +{ "paramname": "pchPropertyValueBuffer" ,"out_string": " " ,"paramtype": "char *"}, +{ "paramname": "unPropertyValueBufferLen" ,"paramtype": "uint32_t"}, +{ "paramname": "peError" ,"paramtype": "vr::EVRApplicationError *"} + ] +} +,{ + "classname": "vr::IVRApplications", + "methodname": "GetApplicationPropertyBool", + "returntype": "bool", + "params": [ +{ "paramname": "pchAppKey" ,"paramtype": "const char *"}, +{ "paramname": "eProperty" ,"paramtype": "vr::EVRApplicationProperty"}, +{ "paramname": "peError" ,"paramtype": "vr::EVRApplicationError *"} + ] +} +,{ + "classname": "vr::IVRApplications", + "methodname": "GetApplicationPropertyUint64", + "returntype": "uint64_t", + "params": [ +{ "paramname": "pchAppKey" ,"paramtype": "const char *"}, +{ "paramname": "eProperty" ,"paramtype": "vr::EVRApplicationProperty"}, +{ "paramname": "peError" ,"paramtype": "vr::EVRApplicationError *"} + ] +} +,{ + "classname": "vr::IVRApplications", + "methodname": "SetApplicationAutoLaunch", + "returntype": "vr::EVRApplicationError", + "params": [ +{ "paramname": "pchAppKey" ,"paramtype": "const char *"}, +{ "paramname": "bAutoLaunch" ,"paramtype": "bool"} + ] +} +,{ + "classname": "vr::IVRApplications", + "methodname": "GetApplicationAutoLaunch", + "returntype": "bool", + "params": [ +{ "paramname": "pchAppKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "vr::IVRApplications", + "methodname": "SetDefaultApplicationForMimeType", + "returntype": "vr::EVRApplicationError", + "params": [ +{ "paramname": "pchAppKey" ,"paramtype": "const char *"}, +{ "paramname": "pchMimeType" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "vr::IVRApplications", + "methodname": "GetDefaultApplicationForMimeType", + "returntype": "bool", + "params": [ +{ "paramname": "pchMimeType" ,"paramtype": "const char *"}, +{ "paramname": "pchAppKeyBuffer" ,"paramtype": "char *"}, +{ "paramname": "unAppKeyBufferLen" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVRApplications", + "methodname": "GetApplicationSupportedMimeTypes", + "returntype": "bool", + "params": [ +{ "paramname": "pchAppKey" ,"paramtype": "const char *"}, +{ "paramname": "pchMimeTypesBuffer" ,"paramtype": "char *"}, +{ "paramname": "unMimeTypesBuffer" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVRApplications", + "methodname": "GetApplicationsThatSupportMimeType", + "returntype": "uint32_t", + "params": [ +{ "paramname": "pchMimeType" ,"paramtype": "const char *"}, +{ "paramname": "pchAppKeysThatSupportBuffer" ,"paramtype": "char *"}, +{ "paramname": "unAppKeysThatSupportBuffer" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVRApplications", + "methodname": "GetApplicationLaunchArguments", + "returntype": "uint32_t", + "params": [ +{ "paramname": "unHandle" ,"paramtype": "uint32_t"}, +{ "paramname": "pchArgs" ,"paramtype": "char *"}, +{ "paramname": "unArgs" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVRApplications", + "methodname": "GetStartingApplication", + "returntype": "vr::EVRApplicationError", + "params": [ +{ "paramname": "pchAppKeyBuffer" ,"paramtype": "char *"}, +{ "paramname": "unAppKeyBufferLen" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVRApplications", + "methodname": "GetTransitionState", + "returntype": "vr::EVRApplicationTransitionState" +} +,{ + "classname": "vr::IVRApplications", + "methodname": "PerformApplicationPrelaunchCheck", + "returntype": "vr::EVRApplicationError", + "params": [ +{ "paramname": "pchAppKey" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "vr::IVRApplications", + "methodname": "GetApplicationsTransitionStateNameFromEnum", + "returntype": "const char *", + "params": [ +{ "paramname": "state" ,"paramtype": "vr::EVRApplicationTransitionState"} + ] +} +,{ + "classname": "vr::IVRApplications", + "methodname": "IsQuitUserPromptRequested", + "returntype": "bool" +} +,{ + "classname": "vr::IVRApplications", + "methodname": "LaunchInternalProcess", + "returntype": "vr::EVRApplicationError", + "params": [ +{ "paramname": "pchBinaryPath" ,"paramtype": "const char *"}, +{ "paramname": "pchArguments" ,"paramtype": "const char *"}, +{ "paramname": "pchWorkingDirectory" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "vr::IVRChaperone", + "methodname": "GetCalibrationState", + "returntype": "vr::ChaperoneCalibrationState" +} +,{ + "classname": "vr::IVRChaperone", + "methodname": "GetPlayAreaSize", + "returntype": "bool", + "params": [ +{ "paramname": "pSizeX" ,"paramtype": "float *"}, +{ "paramname": "pSizeZ" ,"paramtype": "float *"} + ] +} +,{ + "classname": "vr::IVRChaperone", + "methodname": "GetPlayAreaRect", + "returntype": "bool", + "params": [ +{ "paramname": "rect" ,"paramtype": "struct vr::HmdQuad_t *"} + ] +} +,{ + "classname": "vr::IVRChaperone", + "methodname": "ReloadInfo", + "returntype": "void" +} +,{ + "classname": "vr::IVRChaperone", + "methodname": "SetSceneColor", + "returntype": "void", + "params": [ +{ "paramname": "color" ,"paramtype": "struct vr::HmdColor_t"} + ] +} +,{ + "classname": "vr::IVRChaperone", + "methodname": "GetBoundsColor", + "returntype": "void", + "params": [ +{ "paramname": "pOutputColorArray" ,"paramtype": "struct vr::HmdColor_t *"}, +{ "paramname": "nNumOutputColors" ,"paramtype": "int"}, +{ "paramname": "flCollisionBoundsFadeDistance" ,"paramtype": "float"}, +{ "paramname": "pOutputCameraColor" ,"paramtype": "struct vr::HmdColor_t *"} + ] +} +,{ + "classname": "vr::IVRChaperone", + "methodname": "AreBoundsVisible", + "returntype": "bool" +} +,{ + "classname": "vr::IVRChaperone", + "methodname": "ForceBoundsVisible", + "returntype": "void", + "params": [ +{ "paramname": "bForce" ,"paramtype": "bool"} + ] +} +,{ + "classname": "vr::IVRChaperoneSetup", + "methodname": "CommitWorkingCopy", + "returntype": "bool", + "params": [ +{ "paramname": "configFile" ,"paramtype": "vr::EChaperoneConfigFile"} + ] +} +,{ + "classname": "vr::IVRChaperoneSetup", + "methodname": "RevertWorkingCopy", + "returntype": "void" +} +,{ + "classname": "vr::IVRChaperoneSetup", + "methodname": "GetWorkingPlayAreaSize", + "returntype": "bool", + "params": [ +{ "paramname": "pSizeX" ,"paramtype": "float *"}, +{ "paramname": "pSizeZ" ,"paramtype": "float *"} + ] +} +,{ + "classname": "vr::IVRChaperoneSetup", + "methodname": "GetWorkingPlayAreaRect", + "returntype": "bool", + "params": [ +{ "paramname": "rect" ,"paramtype": "struct vr::HmdQuad_t *"} + ] +} +,{ + "classname": "vr::IVRChaperoneSetup", + "methodname": "GetWorkingCollisionBoundsInfo", + "returntype": "bool", + "params": [ +{ "paramname": "pQuadsBuffer" ,"out_array_count": "punQuadsCount" ,"paramtype": "struct vr::HmdQuad_t *"}, +{ "paramname": "punQuadsCount" ,"paramtype": "uint32_t *"} + ] +} +,{ + "classname": "vr::IVRChaperoneSetup", + "methodname": "GetLiveCollisionBoundsInfo", + "returntype": "bool", + "params": [ +{ "paramname": "pQuadsBuffer" ,"out_array_count": "punQuadsCount" ,"paramtype": "struct vr::HmdQuad_t *"}, +{ "paramname": "punQuadsCount" ,"paramtype": "uint32_t *"} + ] +} +,{ + "classname": "vr::IVRChaperoneSetup", + "methodname": "GetWorkingSeatedZeroPoseToRawTrackingPose", + "returntype": "bool", + "params": [ +{ "paramname": "pmatSeatedZeroPoseToRawTrackingPose" ,"paramtype": "struct vr::HmdMatrix34_t *"} + ] +} +,{ + "classname": "vr::IVRChaperoneSetup", + "methodname": "GetWorkingStandingZeroPoseToRawTrackingPose", + "returntype": "bool", + "params": [ +{ "paramname": "pmatStandingZeroPoseToRawTrackingPose" ,"paramtype": "struct vr::HmdMatrix34_t *"} + ] +} +,{ + "classname": "vr::IVRChaperoneSetup", + "methodname": "SetWorkingPlayAreaSize", + "returntype": "void", + "params": [ +{ "paramname": "sizeX" ,"paramtype": "float"}, +{ "paramname": "sizeZ" ,"paramtype": "float"} + ] +} +,{ + "classname": "vr::IVRChaperoneSetup", + "methodname": "SetWorkingCollisionBoundsInfo", + "returntype": "void", + "params": [ +{ "paramname": "pQuadsBuffer" ,"array_count": "unQuadsCount" ,"paramtype": "struct vr::HmdQuad_t *"}, +{ "paramname": "unQuadsCount" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVRChaperoneSetup", + "methodname": "SetWorkingSeatedZeroPoseToRawTrackingPose", + "returntype": "void", + "params": [ +{ "paramname": "pMatSeatedZeroPoseToRawTrackingPose" ,"paramtype": "const struct vr::HmdMatrix34_t *"} + ] +} +,{ + "classname": "vr::IVRChaperoneSetup", + "methodname": "SetWorkingStandingZeroPoseToRawTrackingPose", + "returntype": "void", + "params": [ +{ "paramname": "pMatStandingZeroPoseToRawTrackingPose" ,"paramtype": "const struct vr::HmdMatrix34_t *"} + ] +} +,{ + "classname": "vr::IVRChaperoneSetup", + "methodname": "ReloadFromDisk", + "returntype": "void", + "params": [ +{ "paramname": "configFile" ,"paramtype": "vr::EChaperoneConfigFile"} + ] +} +,{ + "classname": "vr::IVRChaperoneSetup", + "methodname": "GetLiveSeatedZeroPoseToRawTrackingPose", + "returntype": "bool", + "params": [ +{ "paramname": "pmatSeatedZeroPoseToRawTrackingPose" ,"paramtype": "struct vr::HmdMatrix34_t *"} + ] +} +,{ + "classname": "vr::IVRChaperoneSetup", + "methodname": "SetWorkingCollisionBoundsTagsInfo", + "returntype": "void", + "params": [ +{ "paramname": "pTagsBuffer" ,"array_count": "unTagCount" ,"paramtype": "uint8_t *"}, +{ "paramname": "unTagCount" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVRChaperoneSetup", + "methodname": "GetLiveCollisionBoundsTagsInfo", + "returntype": "bool", + "params": [ +{ "paramname": "pTagsBuffer" ,"out_array_count": "punTagCount" ,"paramtype": "uint8_t *"}, +{ "paramname": "punTagCount" ,"paramtype": "uint32_t *"} + ] +} +,{ + "classname": "vr::IVRChaperoneSetup", + "methodname": "SetWorkingPhysicalBoundsInfo", + "returntype": "bool", + "params": [ +{ "paramname": "pQuadsBuffer" ,"array_count": "unQuadsCount" ,"paramtype": "struct vr::HmdQuad_t *"}, +{ "paramname": "unQuadsCount" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVRChaperoneSetup", + "methodname": "GetLivePhysicalBoundsInfo", + "returntype": "bool", + "params": [ +{ "paramname": "pQuadsBuffer" ,"out_array_count": "punQuadsCount" ,"paramtype": "struct vr::HmdQuad_t *"}, +{ "paramname": "punQuadsCount" ,"paramtype": "uint32_t *"} + ] +} +,{ + "classname": "vr::IVRChaperoneSetup", + "methodname": "ExportLiveToBuffer", + "returntype": "bool", + "params": [ +{ "paramname": "pBuffer" ,"out_string": " " ,"paramtype": "char *"}, +{ "paramname": "pnBufferLength" ,"paramtype": "uint32_t *"} + ] +} +,{ + "classname": "vr::IVRChaperoneSetup", + "methodname": "ImportFromBufferToWorking", + "returntype": "bool", + "params": [ +{ "paramname": "pBuffer" ,"paramtype": "const char *"}, +{ "paramname": "nImportFlags" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "SetTrackingSpace", + "returntype": "void", + "params": [ +{ "paramname": "eOrigin" ,"paramtype": "vr::ETrackingUniverseOrigin"} + ] +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "GetTrackingSpace", + "returntype": "vr::ETrackingUniverseOrigin" +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "WaitGetPoses", + "returntype": "vr::EVRCompositorError", + "params": [ +{ "paramname": "pRenderPoseArray" ,"array_count": "unRenderPoseArrayCount" ,"paramtype": "struct vr::TrackedDevicePose_t *"}, +{ "paramname": "unRenderPoseArrayCount" ,"paramtype": "uint32_t"}, +{ "paramname": "pGamePoseArray" ,"array_count": "unGamePoseArrayCount" ,"paramtype": "struct vr::TrackedDevicePose_t *"}, +{ "paramname": "unGamePoseArrayCount" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "GetLastPoses", + "returntype": "vr::EVRCompositorError", + "params": [ +{ "paramname": "pRenderPoseArray" ,"array_count": "unRenderPoseArrayCount" ,"paramtype": "struct vr::TrackedDevicePose_t *"}, +{ "paramname": "unRenderPoseArrayCount" ,"paramtype": "uint32_t"}, +{ "paramname": "pGamePoseArray" ,"array_count": "unGamePoseArrayCount" ,"paramtype": "struct vr::TrackedDevicePose_t *"}, +{ "paramname": "unGamePoseArrayCount" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "GetLastPoseForTrackedDeviceIndex", + "returntype": "vr::EVRCompositorError", + "params": [ +{ "paramname": "unDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"}, +{ "paramname": "pOutputPose" ,"paramtype": "struct vr::TrackedDevicePose_t *"}, +{ "paramname": "pOutputGamePose" ,"paramtype": "struct vr::TrackedDevicePose_t *"} + ] +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "Submit", + "returntype": "vr::EVRCompositorError", + "params": [ +{ "paramname": "eEye" ,"paramtype": "vr::EVREye"}, +{ "paramname": "pTexture" ,"paramtype": "const struct vr::Texture_t *"}, +{ "paramname": "pBounds" ,"paramtype": "const struct vr::VRTextureBounds_t *"}, +{ "paramname": "nSubmitFlags" ,"paramtype": "vr::EVRSubmitFlags"} + ] +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "ClearLastSubmittedFrame", + "returntype": "void" +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "PostPresentHandoff", + "returntype": "void" +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "GetFrameTiming", + "returntype": "bool", + "params": [ +{ "paramname": "pTiming" ,"paramtype": "struct vr::Compositor_FrameTiming *"}, +{ "paramname": "unFramesAgo" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "GetFrameTimeRemaining", + "returntype": "float" +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "GetCumulativeStats", + "returntype": "void", + "params": [ +{ "paramname": "pStats" ,"paramtype": "struct vr::Compositor_CumulativeStats *"}, +{ "paramname": "nStatsSizeInBytes" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "FadeToColor", + "returntype": "void", + "params": [ +{ "paramname": "fSeconds" ,"paramtype": "float"}, +{ "paramname": "fRed" ,"paramtype": "float"}, +{ "paramname": "fGreen" ,"paramtype": "float"}, +{ "paramname": "fBlue" ,"paramtype": "float"}, +{ "paramname": "fAlpha" ,"paramtype": "float"}, +{ "paramname": "bBackground" ,"paramtype": "bool"} + ] +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "FadeGrid", + "returntype": "void", + "params": [ +{ "paramname": "fSeconds" ,"paramtype": "float"}, +{ "paramname": "bFadeIn" ,"paramtype": "bool"} + ] +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "SetSkyboxOverride", + "returntype": "vr::EVRCompositorError", + "params": [ +{ "paramname": "pTextures" ,"array_count": "unTextureCount" ,"paramtype": "const struct vr::Texture_t *"}, +{ "paramname": "unTextureCount" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "ClearSkyboxOverride", + "returntype": "void" +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "CompositorBringToFront", + "returntype": "void" +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "CompositorGoToBack", + "returntype": "void" +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "CompositorQuit", + "returntype": "void" +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "IsFullscreen", + "returntype": "bool" +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "GetCurrentSceneFocusProcess", + "returntype": "uint32_t" +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "GetLastFrameRenderer", + "returntype": "uint32_t" +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "CanRenderScene", + "returntype": "bool" +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "ShowMirrorWindow", + "returntype": "void" +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "HideMirrorWindow", + "returntype": "void" +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "IsMirrorWindowVisible", + "returntype": "bool" +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "CompositorDumpImages", + "returntype": "void" +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "ShouldAppRenderWithLowResources", + "returntype": "bool" +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "ForceInterleavedReprojectionOn", + "returntype": "void", + "params": [ +{ "paramname": "bOverride" ,"paramtype": "bool"} + ] +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "ForceReconnectProcess", + "returntype": "void" +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "SuspendRendering", + "returntype": "void", + "params": [ +{ "paramname": "bSuspend" ,"paramtype": "bool"} + ] +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "GetMirrorTextureD3D11", + "returntype": "vr::EVRCompositorError", + "params": [ +{ "paramname": "eEye" ,"paramtype": "vr::EVREye"}, +{ "paramname": "pD3D11DeviceOrResource" ,"paramtype": "void *"}, +{ "paramname": "ppD3D11ShaderResourceView" ,"paramtype": "void **"} + ] +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "GetMirrorTextureGL", + "returntype": "vr::EVRCompositorError", + "params": [ +{ "paramname": "eEye" ,"paramtype": "vr::EVREye"}, +{ "paramname": "pglTextureId" ,"paramtype": "vr::glUInt_t *"}, +{ "paramname": "pglSharedTextureHandle" ,"paramtype": "vr::glSharedTextureHandle_t *"} + ] +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "ReleaseSharedGLTexture", + "returntype": "bool", + "params": [ +{ "paramname": "glTextureId" ,"paramtype": "vr::glUInt_t"}, +{ "paramname": "glSharedTextureHandle" ,"paramtype": "vr::glSharedTextureHandle_t"} + ] +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "LockGLSharedTextureForAccess", + "returntype": "void", + "params": [ +{ "paramname": "glSharedTextureHandle" ,"paramtype": "vr::glSharedTextureHandle_t"} + ] +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "UnlockGLSharedTextureForAccess", + "returntype": "void", + "params": [ +{ "paramname": "glSharedTextureHandle" ,"paramtype": "vr::glSharedTextureHandle_t"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "FindOverlay", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "pchOverlayKey" ,"paramtype": "const char *"}, +{ "paramname": "pOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t *"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "CreateOverlay", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "pchOverlayKey" ,"paramtype": "const char *"}, +{ "paramname": "pchOverlayFriendlyName" ,"paramtype": "const char *"}, +{ "paramname": "pOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t *"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "DestroyOverlay", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "SetHighQualityOverlay", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "GetHighQualityOverlay", + "returntype": "vr::VROverlayHandle_t" +} +,{ + "classname": "vr::IVROverlay", + "methodname": "GetOverlayKey", + "returntype": "uint32_t", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "pchValue" ,"out_string": " " ,"paramtype": "char *"}, +{ "paramname": "unBufferSize" ,"paramtype": "uint32_t"}, +{ "paramname": "pError" ,"paramtype": "vr::EVROverlayError *"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "GetOverlayName", + "returntype": "uint32_t", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "pchValue" ,"out_string": " " ,"paramtype": "char *"}, +{ "paramname": "unBufferSize" ,"paramtype": "uint32_t"}, +{ "paramname": "pError" ,"paramtype": "vr::EVROverlayError *"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "GetOverlayImageData", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "pvBuffer" ,"paramtype": "void *"}, +{ "paramname": "unBufferSize" ,"paramtype": "uint32_t"}, +{ "paramname": "punWidth" ,"paramtype": "uint32_t *"}, +{ "paramname": "punHeight" ,"paramtype": "uint32_t *"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "GetOverlayErrorNameFromEnum", + "returntype": "const char *", + "params": [ +{ "paramname": "error" ,"paramtype": "vr::EVROverlayError"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "SetOverlayRenderingPid", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "unPID" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "GetOverlayRenderingPid", + "returntype": "uint32_t", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "SetOverlayFlag", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "eOverlayFlag" ,"paramtype": "vr::VROverlayFlags"}, +{ "paramname": "bEnabled" ,"paramtype": "bool"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "GetOverlayFlag", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "eOverlayFlag" ,"paramtype": "vr::VROverlayFlags"}, +{ "paramname": "pbEnabled" ,"paramtype": "bool *"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "SetOverlayColor", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "fRed" ,"paramtype": "float"}, +{ "paramname": "fGreen" ,"paramtype": "float"}, +{ "paramname": "fBlue" ,"paramtype": "float"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "GetOverlayColor", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "pfRed" ,"paramtype": "float *"}, +{ "paramname": "pfGreen" ,"paramtype": "float *"}, +{ "paramname": "pfBlue" ,"paramtype": "float *"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "SetOverlayAlpha", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "fAlpha" ,"paramtype": "float"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "GetOverlayAlpha", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "pfAlpha" ,"paramtype": "float *"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "SetOverlayTexelAspect", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "fTexelAspect" ,"paramtype": "float"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "GetOverlayTexelAspect", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "pfTexelAspect" ,"paramtype": "float *"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "SetOverlaySortOrder", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "unSortOrder" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "GetOverlaySortOrder", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "punSortOrder" ,"paramtype": "uint32_t *"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "SetOverlayWidthInMeters", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "fWidthInMeters" ,"paramtype": "float"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "GetOverlayWidthInMeters", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "pfWidthInMeters" ,"paramtype": "float *"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "SetOverlayAutoCurveDistanceRangeInMeters", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "fMinDistanceInMeters" ,"paramtype": "float"}, +{ "paramname": "fMaxDistanceInMeters" ,"paramtype": "float"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "GetOverlayAutoCurveDistanceRangeInMeters", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "pfMinDistanceInMeters" ,"paramtype": "float *"}, +{ "paramname": "pfMaxDistanceInMeters" ,"paramtype": "float *"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "SetOverlayTextureColorSpace", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "eTextureColorSpace" ,"paramtype": "vr::EColorSpace"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "GetOverlayTextureColorSpace", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "peTextureColorSpace" ,"paramtype": "vr::EColorSpace *"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "SetOverlayTextureBounds", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "pOverlayTextureBounds" ,"paramtype": "const struct vr::VRTextureBounds_t *"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "GetOverlayTextureBounds", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "pOverlayTextureBounds" ,"paramtype": "struct vr::VRTextureBounds_t *"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "GetOverlayTransformType", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "peTransformType" ,"paramtype": "vr::VROverlayTransformType *"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "SetOverlayTransformAbsolute", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "eTrackingOrigin" ,"paramtype": "vr::ETrackingUniverseOrigin"}, +{ "paramname": "pmatTrackingOriginToOverlayTransform" ,"paramtype": "const struct vr::HmdMatrix34_t *"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "GetOverlayTransformAbsolute", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "peTrackingOrigin" ,"paramtype": "vr::ETrackingUniverseOrigin *"}, +{ "paramname": "pmatTrackingOriginToOverlayTransform" ,"paramtype": "struct vr::HmdMatrix34_t *"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "SetOverlayTransformTrackedDeviceRelative", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "unTrackedDevice" ,"paramtype": "vr::TrackedDeviceIndex_t"}, +{ "paramname": "pmatTrackedDeviceToOverlayTransform" ,"paramtype": "const struct vr::HmdMatrix34_t *"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "GetOverlayTransformTrackedDeviceRelative", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "punTrackedDevice" ,"paramtype": "vr::TrackedDeviceIndex_t *"}, +{ "paramname": "pmatTrackedDeviceToOverlayTransform" ,"paramtype": "struct vr::HmdMatrix34_t *"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "SetOverlayTransformTrackedDeviceComponent", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "unDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"}, +{ "paramname": "pchComponentName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "GetOverlayTransformTrackedDeviceComponent", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "punDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t *"}, +{ "paramname": "pchComponentName" ,"paramtype": "char *"}, +{ "paramname": "unComponentNameSize" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "ShowOverlay", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "HideOverlay", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "IsOverlayVisible", + "returntype": "bool", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "GetTransformForOverlayCoordinates", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "eTrackingOrigin" ,"paramtype": "vr::ETrackingUniverseOrigin"}, +{ "paramname": "coordinatesInOverlay" ,"paramtype": "struct vr::HmdVector2_t"}, +{ "paramname": "pmatTransform" ,"paramtype": "struct vr::HmdMatrix34_t *"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "PollNextOverlayEvent", + "returntype": "bool", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "pEvent" ,"paramtype": "struct vr::VREvent_t *"}, +{ "paramname": "uncbVREvent" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "GetOverlayInputMethod", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "peInputMethod" ,"paramtype": "vr::VROverlayInputMethod *"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "SetOverlayInputMethod", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "eInputMethod" ,"paramtype": "vr::VROverlayInputMethod"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "GetOverlayMouseScale", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "pvecMouseScale" ,"paramtype": "struct vr::HmdVector2_t *"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "SetOverlayMouseScale", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "pvecMouseScale" ,"paramtype": "const struct vr::HmdVector2_t *"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "ComputeOverlayIntersection", + "returntype": "bool", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "pParams" ,"paramtype": "const struct vr::VROverlayIntersectionParams_t *"}, +{ "paramname": "pResults" ,"paramtype": "struct vr::VROverlayIntersectionResults_t *"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "HandleControllerOverlayInteractionAsMouse", + "returntype": "bool", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "unControllerDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "IsHoverTargetOverlay", + "returntype": "bool", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "GetGamepadFocusOverlay", + "returntype": "vr::VROverlayHandle_t" +} +,{ + "classname": "vr::IVROverlay", + "methodname": "SetGamepadFocusOverlay", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulNewFocusOverlay" ,"paramtype": "vr::VROverlayHandle_t"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "SetOverlayNeighbor", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "eDirection" ,"paramtype": "vr::EOverlayDirection"}, +{ "paramname": "ulFrom" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "ulTo" ,"paramtype": "vr::VROverlayHandle_t"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "MoveGamepadFocusToNeighbor", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "eDirection" ,"paramtype": "vr::EOverlayDirection"}, +{ "paramname": "ulFrom" ,"paramtype": "vr::VROverlayHandle_t"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "SetOverlayTexture", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "pTexture" ,"paramtype": "const struct vr::Texture_t *"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "ClearOverlayTexture", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "SetOverlayRaw", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "pvBuffer" ,"paramtype": "void *"}, +{ "paramname": "unWidth" ,"paramtype": "uint32_t"}, +{ "paramname": "unHeight" ,"paramtype": "uint32_t"}, +{ "paramname": "unDepth" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "SetOverlayFromFile", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "pchFilePath" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "GetOverlayTexture", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "pNativeTextureHandle" ,"paramtype": "void **"}, +{ "paramname": "pNativeTextureRef" ,"paramtype": "void *"}, +{ "paramname": "pWidth" ,"paramtype": "uint32_t *"}, +{ "paramname": "pHeight" ,"paramtype": "uint32_t *"}, +{ "paramname": "pNativeFormat" ,"paramtype": "uint32_t *"}, +{ "paramname": "pAPI" ,"paramtype": "vr::EGraphicsAPIConvention *"}, +{ "paramname": "pColorSpace" ,"paramtype": "vr::EColorSpace *"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "ReleaseNativeOverlayHandle", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "pNativeTextureHandle" ,"paramtype": "void *"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "GetOverlayTextureSize", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "pWidth" ,"paramtype": "uint32_t *"}, +{ "paramname": "pHeight" ,"paramtype": "uint32_t *"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "CreateDashboardOverlay", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "pchOverlayKey" ,"paramtype": "const char *"}, +{ "paramname": "pchOverlayFriendlyName" ,"paramtype": "const char *"}, +{ "paramname": "pMainHandle" ,"paramtype": "vr::VROverlayHandle_t *"}, +{ "paramname": "pThumbnailHandle" ,"paramtype": "vr::VROverlayHandle_t *"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "IsDashboardVisible", + "returntype": "bool" +} +,{ + "classname": "vr::IVROverlay", + "methodname": "IsActiveDashboardOverlay", + "returntype": "bool", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "SetDashboardOverlaySceneProcess", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "unProcessId" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "GetDashboardOverlaySceneProcess", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "punProcessId" ,"paramtype": "uint32_t *"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "ShowDashboard", + "returntype": "void", + "params": [ +{ "paramname": "pchOverlayToShow" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "GetPrimaryDashboardDevice", + "returntype": "vr::TrackedDeviceIndex_t" +} +,{ + "classname": "vr::IVROverlay", + "methodname": "ShowKeyboard", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "eInputMode" ,"paramtype": "vr::EGamepadTextInputMode"}, +{ "paramname": "eLineInputMode" ,"paramtype": "vr::EGamepadTextInputLineMode"}, +{ "paramname": "pchDescription" ,"paramtype": "const char *"}, +{ "paramname": "unCharMax" ,"paramtype": "uint32_t"}, +{ "paramname": "pchExistingText" ,"paramtype": "const char *"}, +{ "paramname": "bUseMinimalMode" ,"paramtype": "bool"}, +{ "paramname": "uUserValue" ,"paramtype": "uint64_t"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "ShowKeyboardForOverlay", + "returntype": "vr::EVROverlayError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "eInputMode" ,"paramtype": "vr::EGamepadTextInputMode"}, +{ "paramname": "eLineInputMode" ,"paramtype": "vr::EGamepadTextInputLineMode"}, +{ "paramname": "pchDescription" ,"paramtype": "const char *"}, +{ "paramname": "unCharMax" ,"paramtype": "uint32_t"}, +{ "paramname": "pchExistingText" ,"paramtype": "const char *"}, +{ "paramname": "bUseMinimalMode" ,"paramtype": "bool"}, +{ "paramname": "uUserValue" ,"paramtype": "uint64_t"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "GetKeyboardText", + "returntype": "uint32_t", + "params": [ +{ "paramname": "pchText" ,"out_string": " " ,"paramtype": "char *"}, +{ "paramname": "cchText" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "HideKeyboard", + "returntype": "void" +} +,{ + "classname": "vr::IVROverlay", + "methodname": "SetKeyboardTransformAbsolute", + "returntype": "void", + "params": [ +{ "paramname": "eTrackingOrigin" ,"paramtype": "vr::ETrackingUniverseOrigin"}, +{ "paramname": "pmatTrackingOriginToKeyboardTransform" ,"paramtype": "const struct vr::HmdMatrix34_t *"} + ] +} +,{ + "classname": "vr::IVROverlay", + "methodname": "SetKeyboardPositionForOverlay", + "returntype": "void", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "avoidRect" ,"paramtype": "struct vr::HmdRect2_t"} + ] +} +,{ + "classname": "vr::IVRRenderModels", + "methodname": "LoadRenderModel_Async", + "returntype": "vr::EVRRenderModelError", + "params": [ +{ "paramname": "pchRenderModelName" ,"paramtype": "const char *"}, +{ "paramname": "ppRenderModel" ,"paramtype": "struct vr::RenderModel_t **"} + ] +} +,{ + "classname": "vr::IVRRenderModels", + "methodname": "FreeRenderModel", + "returntype": "void", + "params": [ +{ "paramname": "pRenderModel" ,"paramtype": "struct vr::RenderModel_t *"} + ] +} +,{ + "classname": "vr::IVRRenderModels", + "methodname": "LoadTexture_Async", + "returntype": "vr::EVRRenderModelError", + "params": [ +{ "paramname": "textureId" ,"paramtype": "vr::TextureID_t"}, +{ "paramname": "ppTexture" ,"paramtype": "struct vr::RenderModel_TextureMap_t **"} + ] +} +,{ + "classname": "vr::IVRRenderModels", + "methodname": "FreeTexture", + "returntype": "void", + "params": [ +{ "paramname": "pTexture" ,"paramtype": "struct vr::RenderModel_TextureMap_t *"} + ] +} +,{ + "classname": "vr::IVRRenderModels", + "methodname": "LoadTextureD3D11_Async", + "returntype": "vr::EVRRenderModelError", + "params": [ +{ "paramname": "textureId" ,"paramtype": "vr::TextureID_t"}, +{ "paramname": "pD3D11Device" ,"paramtype": "void *"}, +{ "paramname": "ppD3D11Texture2D" ,"paramtype": "void **"} + ] +} +,{ + "classname": "vr::IVRRenderModels", + "methodname": "LoadIntoTextureD3D11_Async", + "returntype": "vr::EVRRenderModelError", + "params": [ +{ "paramname": "textureId" ,"paramtype": "vr::TextureID_t"}, +{ "paramname": "pDstTexture" ,"paramtype": "void *"} + ] +} +,{ + "classname": "vr::IVRRenderModels", + "methodname": "FreeTextureD3D11", + "returntype": "void", + "params": [ +{ "paramname": "pD3D11Texture2D" ,"paramtype": "void *"} + ] +} +,{ + "classname": "vr::IVRRenderModels", + "methodname": "GetRenderModelName", + "returntype": "uint32_t", + "params": [ +{ "paramname": "unRenderModelIndex" ,"paramtype": "uint32_t"}, +{ "paramname": "pchRenderModelName" ,"out_string": " " ,"paramtype": "char *"}, +{ "paramname": "unRenderModelNameLen" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVRRenderModels", + "methodname": "GetRenderModelCount", + "returntype": "uint32_t" +} +,{ + "classname": "vr::IVRRenderModels", + "methodname": "GetComponentCount", + "returntype": "uint32_t", + "params": [ +{ "paramname": "pchRenderModelName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "vr::IVRRenderModels", + "methodname": "GetComponentName", + "returntype": "uint32_t", + "params": [ +{ "paramname": "pchRenderModelName" ,"paramtype": "const char *"}, +{ "paramname": "unComponentIndex" ,"paramtype": "uint32_t"}, +{ "paramname": "pchComponentName" ,"out_string": " " ,"paramtype": "char *"}, +{ "paramname": "unComponentNameLen" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVRRenderModels", + "methodname": "GetComponentButtonMask", + "returntype": "uint64_t", + "params": [ +{ "paramname": "pchRenderModelName" ,"paramtype": "const char *"}, +{ "paramname": "pchComponentName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "vr::IVRRenderModels", + "methodname": "GetComponentRenderModelName", + "returntype": "uint32_t", + "params": [ +{ "paramname": "pchRenderModelName" ,"paramtype": "const char *"}, +{ "paramname": "pchComponentName" ,"paramtype": "const char *"}, +{ "paramname": "pchComponentRenderModelName" ,"out_string": " " ,"paramtype": "char *"}, +{ "paramname": "unComponentRenderModelNameLen" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVRRenderModels", + "methodname": "GetComponentState", + "returntype": "bool", + "params": [ +{ "paramname": "pchRenderModelName" ,"paramtype": "const char *"}, +{ "paramname": "pchComponentName" ,"paramtype": "const char *"}, +{ "paramname": "pControllerState" ,"paramtype": "const vr::VRControllerState_t *"}, +{ "paramname": "pState" ,"paramtype": "const struct vr::RenderModel_ControllerMode_State_t *"}, +{ "paramname": "pComponentState" ,"paramtype": "struct vr::RenderModel_ComponentState_t *"} + ] +} +,{ + "classname": "vr::IVRRenderModels", + "methodname": "RenderModelHasComponent", + "returntype": "bool", + "params": [ +{ "paramname": "pchRenderModelName" ,"paramtype": "const char *"}, +{ "paramname": "pchComponentName" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "vr::IVRRenderModels", + "methodname": "GetRenderModelThumbnailURL", + "returntype": "uint32_t", + "params": [ +{ "paramname": "pchRenderModelName" ,"paramtype": "const char *"}, +{ "paramname": "pchThumbnailURL" ,"out_string": " " ,"paramtype": "char *"}, +{ "paramname": "unThumbnailURLLen" ,"paramtype": "uint32_t"}, +{ "paramname": "peError" ,"paramtype": "vr::EVRRenderModelError *"} + ] +} +,{ + "classname": "vr::IVRRenderModels", + "methodname": "GetRenderModelOriginalPath", + "returntype": "uint32_t", + "params": [ +{ "paramname": "pchRenderModelName" ,"paramtype": "const char *"}, +{ "paramname": "pchOriginalPath" ,"out_string": " " ,"paramtype": "char *"}, +{ "paramname": "unOriginalPathLen" ,"paramtype": "uint32_t"}, +{ "paramname": "peError" ,"paramtype": "vr::EVRRenderModelError *"} + ] +} +,{ + "classname": "vr::IVRRenderModels", + "methodname": "GetRenderModelErrorNameFromEnum", + "returntype": "const char *", + "params": [ +{ "paramname": "error" ,"paramtype": "vr::EVRRenderModelError"} + ] +} +,{ + "classname": "vr::IVRNotifications", + "methodname": "CreateNotification", + "returntype": "vr::EVRNotificationError", + "params": [ +{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"}, +{ "paramname": "ulUserValue" ,"paramtype": "uint64_t"}, +{ "paramname": "type" ,"paramtype": "vr::EVRNotificationType"}, +{ "paramname": "pchText" ,"paramtype": "const char *"}, +{ "paramname": "style" ,"paramtype": "vr::EVRNotificationStyle"}, +{ "paramname": "pImage" ,"paramtype": "const struct vr::NotificationBitmap_t *"}, +{ "paramname": "pNotificationId" ,"paramtype": "vr::VRNotificationId *"} + ] +} +,{ + "classname": "vr::IVRNotifications", + "methodname": "RemoveNotification", + "returntype": "vr::EVRNotificationError", + "params": [ +{ "paramname": "notificationId" ,"paramtype": "vr::VRNotificationId"} + ] +} +,{ + "classname": "vr::IVRSettings", + "methodname": "GetSettingsErrorNameFromEnum", + "returntype": "const char *", + "params": [ +{ "paramname": "eError" ,"paramtype": "vr::EVRSettingsError"} + ] +} +,{ + "classname": "vr::IVRSettings", + "methodname": "Sync", + "returntype": "bool", + "params": [ +{ "paramname": "bForce" ,"paramtype": "bool"}, +{ "paramname": "peError" ,"paramtype": "vr::EVRSettingsError *"} + ] +} +,{ + "classname": "vr::IVRSettings", + "methodname": "SetBool", + "returntype": "void", + "params": [ +{ "paramname": "pchSection" ,"paramtype": "const char *"}, +{ "paramname": "pchSettingsKey" ,"paramtype": "const char *"}, +{ "paramname": "bValue" ,"paramtype": "bool"}, +{ "paramname": "peError" ,"paramtype": "vr::EVRSettingsError *"} + ] +} +,{ + "classname": "vr::IVRSettings", + "methodname": "SetInt32", + "returntype": "void", + "params": [ +{ "paramname": "pchSection" ,"paramtype": "const char *"}, +{ "paramname": "pchSettingsKey" ,"paramtype": "const char *"}, +{ "paramname": "nValue" ,"paramtype": "int32_t"}, +{ "paramname": "peError" ,"paramtype": "vr::EVRSettingsError *"} + ] +} +,{ + "classname": "vr::IVRSettings", + "methodname": "SetFloat", + "returntype": "void", + "params": [ +{ "paramname": "pchSection" ,"paramtype": "const char *"}, +{ "paramname": "pchSettingsKey" ,"paramtype": "const char *"}, +{ "paramname": "flValue" ,"paramtype": "float"}, +{ "paramname": "peError" ,"paramtype": "vr::EVRSettingsError *"} + ] +} +,{ + "classname": "vr::IVRSettings", + "methodname": "SetString", + "returntype": "void", + "params": [ +{ "paramname": "pchSection" ,"paramtype": "const char *"}, +{ "paramname": "pchSettingsKey" ,"paramtype": "const char *"}, +{ "paramname": "pchValue" ,"paramtype": "const char *"}, +{ "paramname": "peError" ,"paramtype": "vr::EVRSettingsError *"} + ] +} +,{ + "classname": "vr::IVRSettings", + "methodname": "GetBool", + "returntype": "bool", + "params": [ +{ "paramname": "pchSection" ,"paramtype": "const char *"}, +{ "paramname": "pchSettingsKey" ,"paramtype": "const char *"}, +{ "paramname": "peError" ,"paramtype": "vr::EVRSettingsError *"} + ] +} +,{ + "classname": "vr::IVRSettings", + "methodname": "GetInt32", + "returntype": "int32_t", + "params": [ +{ "paramname": "pchSection" ,"paramtype": "const char *"}, +{ "paramname": "pchSettingsKey" ,"paramtype": "const char *"}, +{ "paramname": "peError" ,"paramtype": "vr::EVRSettingsError *"} + ] +} +,{ + "classname": "vr::IVRSettings", + "methodname": "GetFloat", + "returntype": "float", + "params": [ +{ "paramname": "pchSection" ,"paramtype": "const char *"}, +{ "paramname": "pchSettingsKey" ,"paramtype": "const char *"}, +{ "paramname": "peError" ,"paramtype": "vr::EVRSettingsError *"} + ] +} +,{ + "classname": "vr::IVRSettings", + "methodname": "GetString", + "returntype": "void", + "params": [ +{ "paramname": "pchSection" ,"paramtype": "const char *"}, +{ "paramname": "pchSettingsKey" ,"paramtype": "const char *"}, +{ "paramname": "pchValue" ,"out_string": " " ,"paramtype": "char *"}, +{ "paramname": "unValueLen" ,"paramtype": "uint32_t"}, +{ "paramname": "peError" ,"paramtype": "vr::EVRSettingsError *"} + ] +} +,{ + "classname": "vr::IVRSettings", + "methodname": "RemoveSection", + "returntype": "void", + "params": [ +{ "paramname": "pchSection" ,"paramtype": "const char *"}, +{ "paramname": "peError" ,"paramtype": "vr::EVRSettingsError *"} + ] +} +,{ + "classname": "vr::IVRSettings", + "methodname": "RemoveKeyInSection", + "returntype": "void", + "params": [ +{ "paramname": "pchSection" ,"paramtype": "const char *"}, +{ "paramname": "pchSettingsKey" ,"paramtype": "const char *"}, +{ "paramname": "peError" ,"paramtype": "vr::EVRSettingsError *"} + ] +} +,{ + "classname": "vr::IVRScreenshots", + "methodname": "RequestScreenshot", + "returntype": "vr::EVRScreenshotError", + "params": [ +{ "paramname": "pOutScreenshotHandle" ,"paramtype": "vr::ScreenshotHandle_t *"}, +{ "paramname": "type" ,"paramtype": "vr::EVRScreenshotType"}, +{ "paramname": "pchPreviewFilename" ,"paramtype": "const char *"}, +{ "paramname": "pchVRFilename" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "vr::IVRScreenshots", + "methodname": "HookScreenshot", + "returntype": "vr::EVRScreenshotError", + "params": [ +{ "paramname": "pSupportedTypes" ,"array_count": "numTypes" ,"paramtype": "const vr::EVRScreenshotType *"}, +{ "paramname": "numTypes" ,"paramtype": "int"} + ] +} +,{ + "classname": "vr::IVRScreenshots", + "methodname": "GetScreenshotPropertyType", + "returntype": "vr::EVRScreenshotType", + "params": [ +{ "paramname": "screenshotHandle" ,"paramtype": "vr::ScreenshotHandle_t"}, +{ "paramname": "pError" ,"paramtype": "vr::EVRScreenshotError *"} + ] +} +,{ + "classname": "vr::IVRScreenshots", + "methodname": "GetScreenshotPropertyFilename", + "returntype": "uint32_t", + "params": [ +{ "paramname": "screenshotHandle" ,"paramtype": "vr::ScreenshotHandle_t"}, +{ "paramname": "filenameType" ,"paramtype": "vr::EVRScreenshotPropertyFilenames"}, +{ "paramname": "pchFilename" ,"out_string": " " ,"paramtype": "char *"}, +{ "paramname": "cchFilename" ,"paramtype": "uint32_t"}, +{ "paramname": "pError" ,"paramtype": "vr::EVRScreenshotError *"} + ] +} +,{ + "classname": "vr::IVRScreenshots", + "methodname": "UpdateScreenshotProgress", + "returntype": "vr::EVRScreenshotError", + "params": [ +{ "paramname": "screenshotHandle" ,"paramtype": "vr::ScreenshotHandle_t"}, +{ "paramname": "flProgress" ,"paramtype": "float"} + ] +} +,{ + "classname": "vr::IVRScreenshots", + "methodname": "TakeStereoScreenshot", + "returntype": "vr::EVRScreenshotError", + "params": [ +{ "paramname": "pOutScreenshotHandle" ,"paramtype": "vr::ScreenshotHandle_t *"}, +{ "paramname": "pchPreviewFilename" ,"paramtype": "const char *"}, +{ "paramname": "pchVRFilename" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "vr::IVRScreenshots", + "methodname": "SubmitScreenshot", + "returntype": "vr::EVRScreenshotError", + "params": [ +{ "paramname": "screenshotHandle" ,"paramtype": "vr::ScreenshotHandle_t"}, +{ "paramname": "type" ,"paramtype": "vr::EVRScreenshotType"}, +{ "paramname": "pchSourcePreviewFilename" ,"paramtype": "const char *"}, +{ "paramname": "pchSourceVRFilename" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "vr::IVRResources", + "methodname": "LoadSharedResource", + "returntype": "uint32_t", + "params": [ +{ "paramname": "pchResourceName" ,"paramtype": "const char *"}, +{ "paramname": "pchBuffer" ,"paramtype": "char *"}, +{ "paramname": "unBufferLen" ,"paramtype": "uint32_t"} + ] +} +,{ + "classname": "vr::IVRResources", + "methodname": "GetResourceFullPath", + "returntype": "uint32_t", + "params": [ +{ "paramname": "pchResourceName" ,"paramtype": "const char *"}, +{ "paramname": "pchResourceTypeDirectory" ,"paramtype": "const char *"}, +{ "paramname": "pchPathBuffer" ,"paramtype": "char *"}, +{ "paramname": "unBufferLen" ,"paramtype": "uint32_t"} + ] +} +] +} \ No newline at end of file diff --git a/third-party/openvr/include/openvr_capi.h b/third-party/openvr/include/openvr_capi.h new file mode 100644 index 0000000..fae48f8 --- /dev/null +++ b/third-party/openvr/include/openvr_capi.h @@ -0,0 +1,1732 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Header for flatted SteamAPI. Use this for binding to other languages. +// This file is auto-generated, do not edit it. +// +//============================================================================= + +#ifndef __OPENVR_API_FLAT_H__ +#define __OPENVR_API_FLAT_H__ +#if defined( _WIN32 ) || defined( __clang__ ) +#pragma once +#endif + +#ifdef __cplusplus +#define EXTERN_C extern "C" +#else +#define EXTERN_C +#endif + +#define OPENVR_FNTABLE_CALLTYPE __stdcall + +// OPENVR API export macro +#if defined( _WIN32 ) && !defined( _X360 ) + #if defined( OPENVR_API_EXPORTS ) + #define S_API EXTERN_C __declspec( dllexport ) + #elif defined( OPENVR_API_NODLL ) + #define S_API EXTERN_C + #else + #define S_API extern "C" __declspec( dllimport ) + #endif // OPENVR_API_EXPORTS +#elif defined( __GNUC__ ) + #if defined( OPENVR_API_EXPORTS ) + #define S_API EXTERN_C __attribute__ ((visibility("default"))) + #else + #define S_API EXTERN_C + #endif // OPENVR_API_EXPORTS +#else // !WIN32 + #if defined( OPENVR_API_EXPORTS ) + #define S_API EXTERN_C + #else + #define S_API EXTERN_C + #endif // OPENVR_API_EXPORTS +#endif + +#include + +#if defined( __WIN32 ) +typedef char bool; +#endif + + +// OpenVR Constants + +static const unsigned int k_unTrackingStringSize = 32; +static const unsigned int k_unMaxDriverDebugResponseSize = 32768; +static const unsigned int k_unTrackedDeviceIndex_Hmd = 0; +static const unsigned int k_unMaxTrackedDeviceCount = 16; +static const unsigned int k_unTrackedDeviceIndexOther = 4294967294; +static const unsigned int k_unTrackedDeviceIndexInvalid = 4294967295; +static const unsigned int k_unMaxPropertyStringSize = 32768; +static const unsigned int k_unControllerStateAxisCount = 5; +static const unsigned long k_ulOverlayHandleInvalid = 0; +static const unsigned int k_unScreenshotHandleInvalid = 0; +static const char * IVRSystem_Version = "IVRSystem_012"; +static const char * IVRExtendedDisplay_Version = "IVRExtendedDisplay_001"; +static const char * IVRTrackedCamera_Version = "IVRTrackedCamera_003"; +static const unsigned int k_unMaxApplicationKeyLength = 128; +static const char * k_pch_MimeType_HomeApp = "vr/home"; +static const char * k_pch_MimeType_GameTheater = "vr/game_theater"; +static const char * IVRApplications_Version = "IVRApplications_006"; +static const char * IVRChaperone_Version = "IVRChaperone_003"; +static const char * IVRChaperoneSetup_Version = "IVRChaperoneSetup_005"; +static const char * IVRCompositor_Version = "IVRCompositor_016"; +static const unsigned int k_unVROverlayMaxKeyLength = 128; +static const unsigned int k_unVROverlayMaxNameLength = 128; +static const unsigned int k_unMaxOverlayCount = 64; +static const char * IVROverlay_Version = "IVROverlay_013"; +static const char * k_pch_Controller_Component_GDC2015 = "gdc2015"; +static const char * k_pch_Controller_Component_Base = "base"; +static const char * k_pch_Controller_Component_Tip = "tip"; +static const char * k_pch_Controller_Component_HandGrip = "handgrip"; +static const char * k_pch_Controller_Component_Status = "status"; +static const char * IVRRenderModels_Version = "IVRRenderModels_005"; +static const unsigned int k_unNotificationTextMaxSize = 256; +static const char * IVRNotifications_Version = "IVRNotifications_002"; +static const unsigned int k_unMaxSettingsKeyLength = 128; +static const char * IVRSettings_Version = "IVRSettings_002"; +static const char * k_pch_SteamVR_Section = "steamvr"; +static const char * k_pch_SteamVR_RequireHmd_String = "requireHmd"; +static const char * k_pch_SteamVR_ForcedDriverKey_String = "forcedDriver"; +static const char * k_pch_SteamVR_ForcedHmdKey_String = "forcedHmd"; +static const char * k_pch_SteamVR_DisplayDebug_Bool = "displayDebug"; +static const char * k_pch_SteamVR_DebugProcessPipe_String = "debugProcessPipe"; +static const char * k_pch_SteamVR_EnableDistortion_Bool = "enableDistortion"; +static const char * k_pch_SteamVR_DisplayDebugX_Int32 = "displayDebugX"; +static const char * k_pch_SteamVR_DisplayDebugY_Int32 = "displayDebugY"; +static const char * k_pch_SteamVR_SendSystemButtonToAllApps_Bool = "sendSystemButtonToAllApps"; +static const char * k_pch_SteamVR_LogLevel_Int32 = "loglevel"; +static const char * k_pch_SteamVR_IPD_Float = "ipd"; +static const char * k_pch_SteamVR_Background_String = "background"; +static const char * k_pch_SteamVR_BackgroundCameraHeight_Float = "backgroundCameraHeight"; +static const char * k_pch_SteamVR_BackgroundDomeRadius_Float = "backgroundDomeRadius"; +static const char * k_pch_SteamVR_Environment_String = "environment"; +static const char * k_pch_SteamVR_GridColor_String = "gridColor"; +static const char * k_pch_SteamVR_PlayAreaColor_String = "playAreaColor"; +static const char * k_pch_SteamVR_ShowStage_Bool = "showStage"; +static const char * k_pch_SteamVR_ActivateMultipleDrivers_Bool = "activateMultipleDrivers"; +static const char * k_pch_SteamVR_DirectMode_Bool = "directMode"; +static const char * k_pch_SteamVR_DirectModeEdidVid_Int32 = "directModeEdidVid"; +static const char * k_pch_SteamVR_DirectModeEdidPid_Int32 = "directModeEdidPid"; +static const char * k_pch_SteamVR_UsingSpeakers_Bool = "usingSpeakers"; +static const char * k_pch_SteamVR_SpeakersForwardYawOffsetDegrees_Float = "speakersForwardYawOffsetDegrees"; +static const char * k_pch_SteamVR_BaseStationPowerManagement_Bool = "basestationPowerManagement"; +static const char * k_pch_SteamVR_NeverKillProcesses_Bool = "neverKillProcesses"; +static const char * k_pch_SteamVR_RenderTargetMultiplier_Float = "renderTargetMultiplier"; +static const char * k_pch_SteamVR_AllowReprojection_Bool = "allowReprojection"; +static const char * k_pch_SteamVR_ForceReprojection_Bool = "forceReprojection"; +static const char * k_pch_SteamVR_ForceFadeOnBadTracking_Bool = "forceFadeOnBadTracking"; +static const char * k_pch_SteamVR_DefaultMirrorView_Int32 = "defaultMirrorView"; +static const char * k_pch_SteamVR_ShowMirrorView_Bool = "showMirrorView"; +static const char * k_pch_SteamVR_MirrorViewGeometry_String = "mirrorViewGeometry"; +static const char * k_pch_SteamVR_StartMonitorFromAppLaunch = "startMonitorFromAppLaunch"; +static const char * k_pch_SteamVR_EnableHomeApp = "enableHomeApp"; +static const char * k_pch_SteamVR_SetInitialDefaultHomeApp = "setInitialDefaultHomeApp"; +static const char * k_pch_SteamVR_CycleBackgroundImageTimeSec_Int32 = "CycleBackgroundImageTimeSec"; +static const char * k_pch_SteamVR_RetailDemo_Bool = "retailDemo"; +static const char * k_pch_Lighthouse_Section = "driver_lighthouse"; +static const char * k_pch_Lighthouse_DisableIMU_Bool = "disableimu"; +static const char * k_pch_Lighthouse_UseDisambiguation_String = "usedisambiguation"; +static const char * k_pch_Lighthouse_DisambiguationDebug_Int32 = "disambiguationdebug"; +static const char * k_pch_Lighthouse_PrimaryBasestation_Int32 = "primarybasestation"; +static const char * k_pch_Lighthouse_DBHistory_Bool = "dbhistory"; +static const char * k_pch_Null_Section = "driver_null"; +static const char * k_pch_Null_EnableNullDriver_Bool = "enable"; +static const char * k_pch_Null_SerialNumber_String = "serialNumber"; +static const char * k_pch_Null_ModelNumber_String = "modelNumber"; +static const char * k_pch_Null_WindowX_Int32 = "windowX"; +static const char * k_pch_Null_WindowY_Int32 = "windowY"; +static const char * k_pch_Null_WindowWidth_Int32 = "windowWidth"; +static const char * k_pch_Null_WindowHeight_Int32 = "windowHeight"; +static const char * k_pch_Null_RenderWidth_Int32 = "renderWidth"; +static const char * k_pch_Null_RenderHeight_Int32 = "renderHeight"; +static const char * k_pch_Null_SecondsFromVsyncToPhotons_Float = "secondsFromVsyncToPhotons"; +static const char * k_pch_Null_DisplayFrequency_Float = "displayFrequency"; +static const char * k_pch_UserInterface_Section = "userinterface"; +static const char * k_pch_UserInterface_StatusAlwaysOnTop_Bool = "StatusAlwaysOnTop"; +static const char * k_pch_UserInterface_Screenshots_Bool = "screenshots"; +static const char * k_pch_UserInterface_ScreenshotType_Int = "screenshotType"; +static const char * k_pch_Notifications_Section = "notifications"; +static const char * k_pch_Notifications_DoNotDisturb_Bool = "DoNotDisturb"; +static const char * k_pch_Keyboard_Section = "keyboard"; +static const char * k_pch_Keyboard_TutorialCompletions = "TutorialCompletions"; +static const char * k_pch_Keyboard_ScaleX = "ScaleX"; +static const char * k_pch_Keyboard_ScaleY = "ScaleY"; +static const char * k_pch_Keyboard_OffsetLeftX = "OffsetLeftX"; +static const char * k_pch_Keyboard_OffsetRightX = "OffsetRightX"; +static const char * k_pch_Keyboard_OffsetY = "OffsetY"; +static const char * k_pch_Keyboard_Smoothing = "Smoothing"; +static const char * k_pch_Perf_Section = "perfcheck"; +static const char * k_pch_Perf_HeuristicActive_Bool = "heuristicActive"; +static const char * k_pch_Perf_NotifyInHMD_Bool = "warnInHMD"; +static const char * k_pch_Perf_NotifyOnlyOnce_Bool = "warnOnlyOnce"; +static const char * k_pch_Perf_AllowTimingStore_Bool = "allowTimingStore"; +static const char * k_pch_Perf_SaveTimingsOnExit_Bool = "saveTimingsOnExit"; +static const char * k_pch_Perf_TestData_Float = "perfTestData"; +static const char * k_pch_CollisionBounds_Section = "collisionBounds"; +static const char * k_pch_CollisionBounds_Style_Int32 = "CollisionBoundsStyle"; +static const char * k_pch_CollisionBounds_GroundPerimeterOn_Bool = "CollisionBoundsGroundPerimeterOn"; +static const char * k_pch_CollisionBounds_CenterMarkerOn_Bool = "CollisionBoundsCenterMarkerOn"; +static const char * k_pch_CollisionBounds_PlaySpaceOn_Bool = "CollisionBoundsPlaySpaceOn"; +static const char * k_pch_CollisionBounds_FadeDistance_Float = "CollisionBoundsFadeDistance"; +static const char * k_pch_CollisionBounds_ColorGammaR_Int32 = "CollisionBoundsColorGammaR"; +static const char * k_pch_CollisionBounds_ColorGammaG_Int32 = "CollisionBoundsColorGammaG"; +static const char * k_pch_CollisionBounds_ColorGammaB_Int32 = "CollisionBoundsColorGammaB"; +static const char * k_pch_CollisionBounds_ColorGammaA_Int32 = "CollisionBoundsColorGammaA"; +static const char * k_pch_Camera_Section = "camera"; +static const char * k_pch_Camera_EnableCamera_Bool = "enableCamera"; +static const char * k_pch_Camera_EnableCameraInDashboard_Bool = "enableCameraInDashboard"; +static const char * k_pch_Camera_EnableCameraForCollisionBounds_Bool = "enableCameraForCollisionBounds"; +static const char * k_pch_Camera_EnableCameraForRoomView_Bool = "enableCameraForRoomView"; +static const char * k_pch_Camera_BoundsColorGammaR_Int32 = "cameraBoundsColorGammaR"; +static const char * k_pch_Camera_BoundsColorGammaG_Int32 = "cameraBoundsColorGammaG"; +static const char * k_pch_Camera_BoundsColorGammaB_Int32 = "cameraBoundsColorGammaB"; +static const char * k_pch_Camera_BoundsColorGammaA_Int32 = "cameraBoundsColorGammaA"; +static const char * k_pch_Camera_BoundsStrength_Int32 = "cameraBoundsStrength"; +static const char * k_pch_audio_Section = "audio"; +static const char * k_pch_audio_OnPlaybackDevice_String = "onPlaybackDevice"; +static const char * k_pch_audio_OnRecordDevice_String = "onRecordDevice"; +static const char * k_pch_audio_OnPlaybackMirrorDevice_String = "onPlaybackMirrorDevice"; +static const char * k_pch_audio_OffPlaybackDevice_String = "offPlaybackDevice"; +static const char * k_pch_audio_OffRecordDevice_String = "offRecordDevice"; +static const char * k_pch_audio_VIVEHDMIGain = "viveHDMIGain"; +static const char * k_pch_Power_Section = "power"; +static const char * k_pch_Power_PowerOffOnExit_Bool = "powerOffOnExit"; +static const char * k_pch_Power_TurnOffScreensTimeout_Float = "turnOffScreensTimeout"; +static const char * k_pch_Power_TurnOffControllersTimeout_Float = "turnOffControllersTimeout"; +static const char * k_pch_Power_ReturnToWatchdogTimeout_Float = "returnToWatchdogTimeout"; +static const char * k_pch_Power_AutoLaunchSteamVROnButtonPress = "autoLaunchSteamVROnButtonPress"; +static const char * k_pch_Dashboard_Section = "dashboard"; +static const char * k_pch_Dashboard_EnableDashboard_Bool = "enableDashboard"; +static const char * k_pch_Dashboard_ArcadeMode_Bool = "arcadeMode"; +static const char * k_pch_modelskin_Section = "modelskins"; +static const char * IVRScreenshots_Version = "IVRScreenshots_001"; +static const char * IVRResources_Version = "IVRResources_001"; + +// OpenVR Enums + +typedef enum EVREye +{ + EVREye_Eye_Left = 0, + EVREye_Eye_Right = 1, +} EVREye; + +typedef enum EGraphicsAPIConvention +{ + EGraphicsAPIConvention_API_DirectX = 0, + EGraphicsAPIConvention_API_OpenGL = 1, +} EGraphicsAPIConvention; + +typedef enum EColorSpace +{ + EColorSpace_ColorSpace_Auto = 0, + EColorSpace_ColorSpace_Gamma = 1, + EColorSpace_ColorSpace_Linear = 2, +} EColorSpace; + +typedef enum ETrackingResult +{ + ETrackingResult_TrackingResult_Uninitialized = 1, + ETrackingResult_TrackingResult_Calibrating_InProgress = 100, + ETrackingResult_TrackingResult_Calibrating_OutOfRange = 101, + ETrackingResult_TrackingResult_Running_OK = 200, + ETrackingResult_TrackingResult_Running_OutOfRange = 201, +} ETrackingResult; + +typedef enum ETrackedDeviceClass +{ + ETrackedDeviceClass_TrackedDeviceClass_Invalid = 0, + ETrackedDeviceClass_TrackedDeviceClass_HMD = 1, + ETrackedDeviceClass_TrackedDeviceClass_Controller = 2, + ETrackedDeviceClass_TrackedDeviceClass_TrackingReference = 4, + ETrackedDeviceClass_TrackedDeviceClass_Count = 5, + ETrackedDeviceClass_TrackedDeviceClass_Other = 1000, +} ETrackedDeviceClass; + +typedef enum ETrackedControllerRole +{ + ETrackedControllerRole_TrackedControllerRole_Invalid = 0, + ETrackedControllerRole_TrackedControllerRole_LeftHand = 1, + ETrackedControllerRole_TrackedControllerRole_RightHand = 2, +} ETrackedControllerRole; + +typedef enum ETrackingUniverseOrigin +{ + ETrackingUniverseOrigin_TrackingUniverseSeated = 0, + ETrackingUniverseOrigin_TrackingUniverseStanding = 1, + ETrackingUniverseOrigin_TrackingUniverseRawAndUncalibrated = 2, +} ETrackingUniverseOrigin; + +typedef enum ETrackedDeviceProperty +{ + ETrackedDeviceProperty_Prop_TrackingSystemName_String = 1000, + ETrackedDeviceProperty_Prop_ModelNumber_String = 1001, + ETrackedDeviceProperty_Prop_SerialNumber_String = 1002, + ETrackedDeviceProperty_Prop_RenderModelName_String = 1003, + ETrackedDeviceProperty_Prop_WillDriftInYaw_Bool = 1004, + ETrackedDeviceProperty_Prop_ManufacturerName_String = 1005, + ETrackedDeviceProperty_Prop_TrackingFirmwareVersion_String = 1006, + ETrackedDeviceProperty_Prop_HardwareRevision_String = 1007, + ETrackedDeviceProperty_Prop_AllWirelessDongleDescriptions_String = 1008, + ETrackedDeviceProperty_Prop_ConnectedWirelessDongle_String = 1009, + ETrackedDeviceProperty_Prop_DeviceIsWireless_Bool = 1010, + ETrackedDeviceProperty_Prop_DeviceIsCharging_Bool = 1011, + ETrackedDeviceProperty_Prop_DeviceBatteryPercentage_Float = 1012, + ETrackedDeviceProperty_Prop_StatusDisplayTransform_Matrix34 = 1013, + ETrackedDeviceProperty_Prop_Firmware_UpdateAvailable_Bool = 1014, + ETrackedDeviceProperty_Prop_Firmware_ManualUpdate_Bool = 1015, + ETrackedDeviceProperty_Prop_Firmware_ManualUpdateURL_String = 1016, + ETrackedDeviceProperty_Prop_HardwareRevision_Uint64 = 1017, + ETrackedDeviceProperty_Prop_FirmwareVersion_Uint64 = 1018, + ETrackedDeviceProperty_Prop_FPGAVersion_Uint64 = 1019, + ETrackedDeviceProperty_Prop_VRCVersion_Uint64 = 1020, + ETrackedDeviceProperty_Prop_RadioVersion_Uint64 = 1021, + ETrackedDeviceProperty_Prop_DongleVersion_Uint64 = 1022, + ETrackedDeviceProperty_Prop_BlockServerShutdown_Bool = 1023, + ETrackedDeviceProperty_Prop_CanUnifyCoordinateSystemWithHmd_Bool = 1024, + ETrackedDeviceProperty_Prop_ContainsProximitySensor_Bool = 1025, + ETrackedDeviceProperty_Prop_DeviceProvidesBatteryStatus_Bool = 1026, + ETrackedDeviceProperty_Prop_DeviceCanPowerOff_Bool = 1027, + ETrackedDeviceProperty_Prop_Firmware_ProgrammingTarget_String = 1028, + ETrackedDeviceProperty_Prop_DeviceClass_Int32 = 1029, + ETrackedDeviceProperty_Prop_HasCamera_Bool = 1030, + ETrackedDeviceProperty_Prop_DriverVersion_String = 1031, + ETrackedDeviceProperty_Prop_Firmware_ForceUpdateRequired_Bool = 1032, + ETrackedDeviceProperty_Prop_ReportsTimeSinceVSync_Bool = 2000, + ETrackedDeviceProperty_Prop_SecondsFromVsyncToPhotons_Float = 2001, + ETrackedDeviceProperty_Prop_DisplayFrequency_Float = 2002, + ETrackedDeviceProperty_Prop_UserIpdMeters_Float = 2003, + ETrackedDeviceProperty_Prop_CurrentUniverseId_Uint64 = 2004, + ETrackedDeviceProperty_Prop_PreviousUniverseId_Uint64 = 2005, + ETrackedDeviceProperty_Prop_DisplayFirmwareVersion_Uint64 = 2006, + ETrackedDeviceProperty_Prop_IsOnDesktop_Bool = 2007, + ETrackedDeviceProperty_Prop_DisplayMCType_Int32 = 2008, + ETrackedDeviceProperty_Prop_DisplayMCOffset_Float = 2009, + ETrackedDeviceProperty_Prop_DisplayMCScale_Float = 2010, + ETrackedDeviceProperty_Prop_EdidVendorID_Int32 = 2011, + ETrackedDeviceProperty_Prop_DisplayMCImageLeft_String = 2012, + ETrackedDeviceProperty_Prop_DisplayMCImageRight_String = 2013, + ETrackedDeviceProperty_Prop_DisplayGCBlackClamp_Float = 2014, + ETrackedDeviceProperty_Prop_EdidProductID_Int32 = 2015, + ETrackedDeviceProperty_Prop_CameraToHeadTransform_Matrix34 = 2016, + ETrackedDeviceProperty_Prop_DisplayGCType_Int32 = 2017, + ETrackedDeviceProperty_Prop_DisplayGCOffset_Float = 2018, + ETrackedDeviceProperty_Prop_DisplayGCScale_Float = 2019, + ETrackedDeviceProperty_Prop_DisplayGCPrescale_Float = 2020, + ETrackedDeviceProperty_Prop_DisplayGCImage_String = 2021, + ETrackedDeviceProperty_Prop_LensCenterLeftU_Float = 2022, + ETrackedDeviceProperty_Prop_LensCenterLeftV_Float = 2023, + ETrackedDeviceProperty_Prop_LensCenterRightU_Float = 2024, + ETrackedDeviceProperty_Prop_LensCenterRightV_Float = 2025, + ETrackedDeviceProperty_Prop_UserHeadToEyeDepthMeters_Float = 2026, + ETrackedDeviceProperty_Prop_CameraFirmwareVersion_Uint64 = 2027, + ETrackedDeviceProperty_Prop_CameraFirmwareDescription_String = 2028, + ETrackedDeviceProperty_Prop_DisplayFPGAVersion_Uint64 = 2029, + ETrackedDeviceProperty_Prop_DisplayBootloaderVersion_Uint64 = 2030, + ETrackedDeviceProperty_Prop_DisplayHardwareVersion_Uint64 = 2031, + ETrackedDeviceProperty_Prop_AudioFirmwareVersion_Uint64 = 2032, + ETrackedDeviceProperty_Prop_CameraCompatibilityMode_Int32 = 2033, + ETrackedDeviceProperty_Prop_ScreenshotHorizontalFieldOfViewDegrees_Float = 2034, + ETrackedDeviceProperty_Prop_ScreenshotVerticalFieldOfViewDegrees_Float = 2035, + ETrackedDeviceProperty_Prop_DisplaySuppressed_Bool = 2036, + ETrackedDeviceProperty_Prop_AttachedDeviceId_String = 3000, + ETrackedDeviceProperty_Prop_SupportedButtons_Uint64 = 3001, + ETrackedDeviceProperty_Prop_Axis0Type_Int32 = 3002, + ETrackedDeviceProperty_Prop_Axis1Type_Int32 = 3003, + ETrackedDeviceProperty_Prop_Axis2Type_Int32 = 3004, + ETrackedDeviceProperty_Prop_Axis3Type_Int32 = 3005, + ETrackedDeviceProperty_Prop_Axis4Type_Int32 = 3006, + ETrackedDeviceProperty_Prop_ControllerRoleHint_Int32 = 3007, + ETrackedDeviceProperty_Prop_FieldOfViewLeftDegrees_Float = 4000, + ETrackedDeviceProperty_Prop_FieldOfViewRightDegrees_Float = 4001, + ETrackedDeviceProperty_Prop_FieldOfViewTopDegrees_Float = 4002, + ETrackedDeviceProperty_Prop_FieldOfViewBottomDegrees_Float = 4003, + ETrackedDeviceProperty_Prop_TrackingRangeMinimumMeters_Float = 4004, + ETrackedDeviceProperty_Prop_TrackingRangeMaximumMeters_Float = 4005, + ETrackedDeviceProperty_Prop_ModeLabel_String = 4006, + ETrackedDeviceProperty_Prop_IconPathName_String = 5000, + ETrackedDeviceProperty_Prop_NamedIconPathDeviceOff_String = 5001, + ETrackedDeviceProperty_Prop_NamedIconPathDeviceSearching_String = 5002, + ETrackedDeviceProperty_Prop_NamedIconPathDeviceSearchingAlert_String = 5003, + ETrackedDeviceProperty_Prop_NamedIconPathDeviceReady_String = 5004, + ETrackedDeviceProperty_Prop_NamedIconPathDeviceReadyAlert_String = 5005, + ETrackedDeviceProperty_Prop_NamedIconPathDeviceNotReady_String = 5006, + ETrackedDeviceProperty_Prop_NamedIconPathDeviceStandby_String = 5007, + ETrackedDeviceProperty_Prop_NamedIconPathDeviceAlertLow_String = 5008, + ETrackedDeviceProperty_Prop_VendorSpecific_Reserved_Start = 10000, + ETrackedDeviceProperty_Prop_VendorSpecific_Reserved_End = 10999, +} ETrackedDeviceProperty; + +typedef enum ETrackedPropertyError +{ + ETrackedPropertyError_TrackedProp_Success = 0, + ETrackedPropertyError_TrackedProp_WrongDataType = 1, + ETrackedPropertyError_TrackedProp_WrongDeviceClass = 2, + ETrackedPropertyError_TrackedProp_BufferTooSmall = 3, + ETrackedPropertyError_TrackedProp_UnknownProperty = 4, + ETrackedPropertyError_TrackedProp_InvalidDevice = 5, + ETrackedPropertyError_TrackedProp_CouldNotContactServer = 6, + ETrackedPropertyError_TrackedProp_ValueNotProvidedByDevice = 7, + ETrackedPropertyError_TrackedProp_StringExceedsMaximumLength = 8, + ETrackedPropertyError_TrackedProp_NotYetAvailable = 9, +} ETrackedPropertyError; + +typedef enum EVRSubmitFlags +{ + EVRSubmitFlags_Submit_Default = 0, + EVRSubmitFlags_Submit_LensDistortionAlreadyApplied = 1, + EVRSubmitFlags_Submit_GlRenderBuffer = 2, + EVRSubmitFlags_Submit_VulkanTexture = 4, +} EVRSubmitFlags; + +typedef enum EVRState +{ + EVRState_VRState_Undefined = -1, + EVRState_VRState_Off = 0, + EVRState_VRState_Searching = 1, + EVRState_VRState_Searching_Alert = 2, + EVRState_VRState_Ready = 3, + EVRState_VRState_Ready_Alert = 4, + EVRState_VRState_NotReady = 5, + EVRState_VRState_Standby = 6, + EVRState_VRState_Ready_Alert_Low = 7, +} EVRState; + +typedef enum EVREventType +{ + EVREventType_VREvent_None = 0, + EVREventType_VREvent_TrackedDeviceActivated = 100, + EVREventType_VREvent_TrackedDeviceDeactivated = 101, + EVREventType_VREvent_TrackedDeviceUpdated = 102, + EVREventType_VREvent_TrackedDeviceUserInteractionStarted = 103, + EVREventType_VREvent_TrackedDeviceUserInteractionEnded = 104, + EVREventType_VREvent_IpdChanged = 105, + EVREventType_VREvent_EnterStandbyMode = 106, + EVREventType_VREvent_LeaveStandbyMode = 107, + EVREventType_VREvent_TrackedDeviceRoleChanged = 108, + EVREventType_VREvent_WatchdogWakeUpRequested = 109, + EVREventType_VREvent_LensDistortionChanged = 110, + EVREventType_VREvent_ButtonPress = 200, + EVREventType_VREvent_ButtonUnpress = 201, + EVREventType_VREvent_ButtonTouch = 202, + EVREventType_VREvent_ButtonUntouch = 203, + EVREventType_VREvent_MouseMove = 300, + EVREventType_VREvent_MouseButtonDown = 301, + EVREventType_VREvent_MouseButtonUp = 302, + EVREventType_VREvent_FocusEnter = 303, + EVREventType_VREvent_FocusLeave = 304, + EVREventType_VREvent_Scroll = 305, + EVREventType_VREvent_TouchPadMove = 306, + EVREventType_VREvent_OverlayFocusChanged = 307, + EVREventType_VREvent_InputFocusCaptured = 400, + EVREventType_VREvent_InputFocusReleased = 401, + EVREventType_VREvent_SceneFocusLost = 402, + EVREventType_VREvent_SceneFocusGained = 403, + EVREventType_VREvent_SceneApplicationChanged = 404, + EVREventType_VREvent_SceneFocusChanged = 405, + EVREventType_VREvent_InputFocusChanged = 406, + EVREventType_VREvent_SceneApplicationSecondaryRenderingStarted = 407, + EVREventType_VREvent_HideRenderModels = 410, + EVREventType_VREvent_ShowRenderModels = 411, + EVREventType_VREvent_OverlayShown = 500, + EVREventType_VREvent_OverlayHidden = 501, + EVREventType_VREvent_DashboardActivated = 502, + EVREventType_VREvent_DashboardDeactivated = 503, + EVREventType_VREvent_DashboardThumbSelected = 504, + EVREventType_VREvent_DashboardRequested = 505, + EVREventType_VREvent_ResetDashboard = 506, + EVREventType_VREvent_RenderToast = 507, + EVREventType_VREvent_ImageLoaded = 508, + EVREventType_VREvent_ShowKeyboard = 509, + EVREventType_VREvent_HideKeyboard = 510, + EVREventType_VREvent_OverlayGamepadFocusGained = 511, + EVREventType_VREvent_OverlayGamepadFocusLost = 512, + EVREventType_VREvent_OverlaySharedTextureChanged = 513, + EVREventType_VREvent_DashboardGuideButtonDown = 514, + EVREventType_VREvent_DashboardGuideButtonUp = 515, + EVREventType_VREvent_ScreenshotTriggered = 516, + EVREventType_VREvent_ImageFailed = 517, + EVREventType_VREvent_DashboardOverlayCreated = 518, + EVREventType_VREvent_RequestScreenshot = 520, + EVREventType_VREvent_ScreenshotTaken = 521, + EVREventType_VREvent_ScreenshotFailed = 522, + EVREventType_VREvent_SubmitScreenshotToDashboard = 523, + EVREventType_VREvent_ScreenshotProgressToDashboard = 524, + EVREventType_VREvent_Notification_Shown = 600, + EVREventType_VREvent_Notification_Hidden = 601, + EVREventType_VREvent_Notification_BeginInteraction = 602, + EVREventType_VREvent_Notification_Destroyed = 603, + EVREventType_VREvent_Quit = 700, + EVREventType_VREvent_ProcessQuit = 701, + EVREventType_VREvent_QuitAborted_UserPrompt = 702, + EVREventType_VREvent_QuitAcknowledged = 703, + EVREventType_VREvent_DriverRequestedQuit = 704, + EVREventType_VREvent_ChaperoneDataHasChanged = 800, + EVREventType_VREvent_ChaperoneUniverseHasChanged = 801, + EVREventType_VREvent_ChaperoneTempDataHasChanged = 802, + EVREventType_VREvent_ChaperoneSettingsHaveChanged = 803, + EVREventType_VREvent_SeatedZeroPoseReset = 804, + EVREventType_VREvent_AudioSettingsHaveChanged = 820, + EVREventType_VREvent_BackgroundSettingHasChanged = 850, + EVREventType_VREvent_CameraSettingsHaveChanged = 851, + EVREventType_VREvent_ReprojectionSettingHasChanged = 852, + EVREventType_VREvent_ModelSkinSettingsHaveChanged = 853, + EVREventType_VREvent_EnvironmentSettingsHaveChanged = 854, + EVREventType_VREvent_PowerSettingsHaveChanged = 855, + EVREventType_VREvent_StatusUpdate = 900, + EVREventType_VREvent_MCImageUpdated = 1000, + EVREventType_VREvent_FirmwareUpdateStarted = 1100, + EVREventType_VREvent_FirmwareUpdateFinished = 1101, + EVREventType_VREvent_KeyboardClosed = 1200, + EVREventType_VREvent_KeyboardCharInput = 1201, + EVREventType_VREvent_KeyboardDone = 1202, + EVREventType_VREvent_ApplicationTransitionStarted = 1300, + EVREventType_VREvent_ApplicationTransitionAborted = 1301, + EVREventType_VREvent_ApplicationTransitionNewAppStarted = 1302, + EVREventType_VREvent_ApplicationListUpdated = 1303, + EVREventType_VREvent_ApplicationMimeTypeLoad = 1304, + EVREventType_VREvent_Compositor_MirrorWindowShown = 1400, + EVREventType_VREvent_Compositor_MirrorWindowHidden = 1401, + EVREventType_VREvent_Compositor_ChaperoneBoundsShown = 1410, + EVREventType_VREvent_Compositor_ChaperoneBoundsHidden = 1411, + EVREventType_VREvent_TrackedCamera_StartVideoStream = 1500, + EVREventType_VREvent_TrackedCamera_StopVideoStream = 1501, + EVREventType_VREvent_TrackedCamera_PauseVideoStream = 1502, + EVREventType_VREvent_TrackedCamera_ResumeVideoStream = 1503, + EVREventType_VREvent_TrackedCamera_EditingSurface = 1550, + EVREventType_VREvent_PerformanceTest_EnableCapture = 1600, + EVREventType_VREvent_PerformanceTest_DisableCapture = 1601, + EVREventType_VREvent_PerformanceTest_FidelityLevel = 1602, + EVREventType_VREvent_VendorSpecific_Reserved_Start = 10000, + EVREventType_VREvent_VendorSpecific_Reserved_End = 19999, +} EVREventType; + +typedef enum EDeviceActivityLevel +{ + EDeviceActivityLevel_k_EDeviceActivityLevel_Unknown = -1, + EDeviceActivityLevel_k_EDeviceActivityLevel_Idle = 0, + EDeviceActivityLevel_k_EDeviceActivityLevel_UserInteraction = 1, + EDeviceActivityLevel_k_EDeviceActivityLevel_UserInteraction_Timeout = 2, + EDeviceActivityLevel_k_EDeviceActivityLevel_Standby = 3, +} EDeviceActivityLevel; + +typedef enum EVRButtonId +{ + EVRButtonId_k_EButton_System = 0, + EVRButtonId_k_EButton_ApplicationMenu = 1, + EVRButtonId_k_EButton_Grip = 2, + EVRButtonId_k_EButton_DPad_Left = 3, + EVRButtonId_k_EButton_DPad_Up = 4, + EVRButtonId_k_EButton_DPad_Right = 5, + EVRButtonId_k_EButton_DPad_Down = 6, + EVRButtonId_k_EButton_A = 7, + EVRButtonId_k_EButton_ProximitySensor = 31, + EVRButtonId_k_EButton_Axis0 = 32, + EVRButtonId_k_EButton_Axis1 = 33, + EVRButtonId_k_EButton_Axis2 = 34, + EVRButtonId_k_EButton_Axis3 = 35, + EVRButtonId_k_EButton_Axis4 = 36, + EVRButtonId_k_EButton_SteamVR_Touchpad = 32, + EVRButtonId_k_EButton_SteamVR_Trigger = 33, + EVRButtonId_k_EButton_Dashboard_Back = 2, + EVRButtonId_k_EButton_Max = 64, +} EVRButtonId; + +typedef enum EVRMouseButton +{ + EVRMouseButton_VRMouseButton_Left = 1, + EVRMouseButton_VRMouseButton_Right = 2, + EVRMouseButton_VRMouseButton_Middle = 4, +} EVRMouseButton; + +typedef enum EVRControllerAxisType +{ + EVRControllerAxisType_k_eControllerAxis_None = 0, + EVRControllerAxisType_k_eControllerAxis_TrackPad = 1, + EVRControllerAxisType_k_eControllerAxis_Joystick = 2, + EVRControllerAxisType_k_eControllerAxis_Trigger = 3, +} EVRControllerAxisType; + +typedef enum EVRControllerEventOutputType +{ + EVRControllerEventOutputType_ControllerEventOutput_OSEvents = 0, + EVRControllerEventOutputType_ControllerEventOutput_VREvents = 1, +} EVRControllerEventOutputType; + +typedef enum ECollisionBoundsStyle +{ + ECollisionBoundsStyle_COLLISION_BOUNDS_STYLE_BEGINNER = 0, + ECollisionBoundsStyle_COLLISION_BOUNDS_STYLE_INTERMEDIATE = 1, + ECollisionBoundsStyle_COLLISION_BOUNDS_STYLE_SQUARES = 2, + ECollisionBoundsStyle_COLLISION_BOUNDS_STYLE_ADVANCED = 3, + ECollisionBoundsStyle_COLLISION_BOUNDS_STYLE_NONE = 4, + ECollisionBoundsStyle_COLLISION_BOUNDS_STYLE_COUNT = 5, +} ECollisionBoundsStyle; + +typedef enum EVROverlayError +{ + EVROverlayError_VROverlayError_None = 0, + EVROverlayError_VROverlayError_UnknownOverlay = 10, + EVROverlayError_VROverlayError_InvalidHandle = 11, + EVROverlayError_VROverlayError_PermissionDenied = 12, + EVROverlayError_VROverlayError_OverlayLimitExceeded = 13, + EVROverlayError_VROverlayError_WrongVisibilityType = 14, + EVROverlayError_VROverlayError_KeyTooLong = 15, + EVROverlayError_VROverlayError_NameTooLong = 16, + EVROverlayError_VROverlayError_KeyInUse = 17, + EVROverlayError_VROverlayError_WrongTransformType = 18, + EVROverlayError_VROverlayError_InvalidTrackedDevice = 19, + EVROverlayError_VROverlayError_InvalidParameter = 20, + EVROverlayError_VROverlayError_ThumbnailCantBeDestroyed = 21, + EVROverlayError_VROverlayError_ArrayTooSmall = 22, + EVROverlayError_VROverlayError_RequestFailed = 23, + EVROverlayError_VROverlayError_InvalidTexture = 24, + EVROverlayError_VROverlayError_UnableToLoadFile = 25, + EVROverlayError_VROverlayError_KeyboardAlreadyInUse = 26, + EVROverlayError_VROverlayError_NoNeighbor = 27, +} EVROverlayError; + +typedef enum EVRApplicationType +{ + EVRApplicationType_VRApplication_Other = 0, + EVRApplicationType_VRApplication_Scene = 1, + EVRApplicationType_VRApplication_Overlay = 2, + EVRApplicationType_VRApplication_Background = 3, + EVRApplicationType_VRApplication_Utility = 4, + EVRApplicationType_VRApplication_VRMonitor = 5, + EVRApplicationType_VRApplication_SteamWatchdog = 6, + EVRApplicationType_VRApplication_Max = 7, +} EVRApplicationType; + +typedef enum EVRFirmwareError +{ + EVRFirmwareError_VRFirmwareError_None = 0, + EVRFirmwareError_VRFirmwareError_Success = 1, + EVRFirmwareError_VRFirmwareError_Fail = 2, +} EVRFirmwareError; + +typedef enum EVRNotificationError +{ + EVRNotificationError_VRNotificationError_OK = 0, + EVRNotificationError_VRNotificationError_InvalidNotificationId = 100, + EVRNotificationError_VRNotificationError_NotificationQueueFull = 101, + EVRNotificationError_VRNotificationError_InvalidOverlayHandle = 102, + EVRNotificationError_VRNotificationError_SystemWithUserValueAlreadyExists = 103, +} EVRNotificationError; + +typedef enum EVRInitError +{ + EVRInitError_VRInitError_None = 0, + EVRInitError_VRInitError_Unknown = 1, + EVRInitError_VRInitError_Init_InstallationNotFound = 100, + EVRInitError_VRInitError_Init_InstallationCorrupt = 101, + EVRInitError_VRInitError_Init_VRClientDLLNotFound = 102, + EVRInitError_VRInitError_Init_FileNotFound = 103, + EVRInitError_VRInitError_Init_FactoryNotFound = 104, + EVRInitError_VRInitError_Init_InterfaceNotFound = 105, + EVRInitError_VRInitError_Init_InvalidInterface = 106, + EVRInitError_VRInitError_Init_UserConfigDirectoryInvalid = 107, + EVRInitError_VRInitError_Init_HmdNotFound = 108, + EVRInitError_VRInitError_Init_NotInitialized = 109, + EVRInitError_VRInitError_Init_PathRegistryNotFound = 110, + EVRInitError_VRInitError_Init_NoConfigPath = 111, + EVRInitError_VRInitError_Init_NoLogPath = 112, + EVRInitError_VRInitError_Init_PathRegistryNotWritable = 113, + EVRInitError_VRInitError_Init_AppInfoInitFailed = 114, + EVRInitError_VRInitError_Init_Retry = 115, + EVRInitError_VRInitError_Init_InitCanceledByUser = 116, + EVRInitError_VRInitError_Init_AnotherAppLaunching = 117, + EVRInitError_VRInitError_Init_SettingsInitFailed = 118, + EVRInitError_VRInitError_Init_ShuttingDown = 119, + EVRInitError_VRInitError_Init_TooManyObjects = 120, + EVRInitError_VRInitError_Init_NoServerForBackgroundApp = 121, + EVRInitError_VRInitError_Init_NotSupportedWithCompositor = 122, + EVRInitError_VRInitError_Init_NotAvailableToUtilityApps = 123, + EVRInitError_VRInitError_Init_Internal = 124, + EVRInitError_VRInitError_Init_HmdDriverIdIsNone = 125, + EVRInitError_VRInitError_Init_HmdNotFoundPresenceFailed = 126, + EVRInitError_VRInitError_Init_VRMonitorNotFound = 127, + EVRInitError_VRInitError_Init_VRMonitorStartupFailed = 128, + EVRInitError_VRInitError_Init_LowPowerWatchdogNotSupported = 129, + EVRInitError_VRInitError_Init_InvalidApplicationType = 130, + EVRInitError_VRInitError_Init_NotAvailableToWatchdogApps = 131, + EVRInitError_VRInitError_Init_WatchdogDisabledInSettings = 132, + EVRInitError_VRInitError_Driver_Failed = 200, + EVRInitError_VRInitError_Driver_Unknown = 201, + EVRInitError_VRInitError_Driver_HmdUnknown = 202, + EVRInitError_VRInitError_Driver_NotLoaded = 203, + EVRInitError_VRInitError_Driver_RuntimeOutOfDate = 204, + EVRInitError_VRInitError_Driver_HmdInUse = 205, + EVRInitError_VRInitError_Driver_NotCalibrated = 206, + EVRInitError_VRInitError_Driver_CalibrationInvalid = 207, + EVRInitError_VRInitError_Driver_HmdDisplayNotFound = 208, + EVRInitError_VRInitError_Driver_TrackedDeviceInterfaceUnknown = 209, + EVRInitError_VRInitError_Driver_HmdDriverIdOutOfBounds = 211, + EVRInitError_VRInitError_Driver_HmdDisplayMirrored = 212, + EVRInitError_VRInitError_IPC_ServerInitFailed = 300, + EVRInitError_VRInitError_IPC_ConnectFailed = 301, + EVRInitError_VRInitError_IPC_SharedStateInitFailed = 302, + EVRInitError_VRInitError_IPC_CompositorInitFailed = 303, + EVRInitError_VRInitError_IPC_MutexInitFailed = 304, + EVRInitError_VRInitError_IPC_Failed = 305, + EVRInitError_VRInitError_IPC_CompositorConnectFailed = 306, + EVRInitError_VRInitError_IPC_CompositorInvalidConnectResponse = 307, + EVRInitError_VRInitError_IPC_ConnectFailedAfterMultipleAttempts = 308, + EVRInitError_VRInitError_Compositor_Failed = 400, + EVRInitError_VRInitError_Compositor_D3D11HardwareRequired = 401, + EVRInitError_VRInitError_Compositor_FirmwareRequiresUpdate = 402, + EVRInitError_VRInitError_Compositor_OverlayInitFailed = 403, + EVRInitError_VRInitError_Compositor_ScreenshotsInitFailed = 404, + EVRInitError_VRInitError_VendorSpecific_UnableToConnectToOculusRuntime = 1000, + EVRInitError_VRInitError_VendorSpecific_HmdFound_CantOpenDevice = 1101, + EVRInitError_VRInitError_VendorSpecific_HmdFound_UnableToRequestConfigStart = 1102, + EVRInitError_VRInitError_VendorSpecific_HmdFound_NoStoredConfig = 1103, + EVRInitError_VRInitError_VendorSpecific_HmdFound_ConfigTooBig = 1104, + EVRInitError_VRInitError_VendorSpecific_HmdFound_ConfigTooSmall = 1105, + EVRInitError_VRInitError_VendorSpecific_HmdFound_UnableToInitZLib = 1106, + EVRInitError_VRInitError_VendorSpecific_HmdFound_CantReadFirmwareVersion = 1107, + EVRInitError_VRInitError_VendorSpecific_HmdFound_UnableToSendUserDataStart = 1108, + EVRInitError_VRInitError_VendorSpecific_HmdFound_UnableToGetUserDataStart = 1109, + EVRInitError_VRInitError_VendorSpecific_HmdFound_UnableToGetUserDataNext = 1110, + EVRInitError_VRInitError_VendorSpecific_HmdFound_UserDataAddressRange = 1111, + EVRInitError_VRInitError_VendorSpecific_HmdFound_UserDataError = 1112, + EVRInitError_VRInitError_VendorSpecific_HmdFound_ConfigFailedSanityCheck = 1113, + EVRInitError_VRInitError_Steam_SteamInstallationNotFound = 2000, +} EVRInitError; + +typedef enum EVRScreenshotType +{ + EVRScreenshotType_VRScreenshotType_None = 0, + EVRScreenshotType_VRScreenshotType_Mono = 1, + EVRScreenshotType_VRScreenshotType_Stereo = 2, + EVRScreenshotType_VRScreenshotType_Cubemap = 3, + EVRScreenshotType_VRScreenshotType_MonoPanorama = 4, + EVRScreenshotType_VRScreenshotType_StereoPanorama = 5, +} EVRScreenshotType; + +typedef enum EVRScreenshotPropertyFilenames +{ + EVRScreenshotPropertyFilenames_VRScreenshotPropertyFilenames_Preview = 0, + EVRScreenshotPropertyFilenames_VRScreenshotPropertyFilenames_VR = 1, +} EVRScreenshotPropertyFilenames; + +typedef enum EVRTrackedCameraError +{ + EVRTrackedCameraError_VRTrackedCameraError_None = 0, + EVRTrackedCameraError_VRTrackedCameraError_OperationFailed = 100, + EVRTrackedCameraError_VRTrackedCameraError_InvalidHandle = 101, + EVRTrackedCameraError_VRTrackedCameraError_InvalidFrameHeaderVersion = 102, + EVRTrackedCameraError_VRTrackedCameraError_OutOfHandles = 103, + EVRTrackedCameraError_VRTrackedCameraError_IPCFailure = 104, + EVRTrackedCameraError_VRTrackedCameraError_NotSupportedForThisDevice = 105, + EVRTrackedCameraError_VRTrackedCameraError_SharedMemoryFailure = 106, + EVRTrackedCameraError_VRTrackedCameraError_FrameBufferingFailure = 107, + EVRTrackedCameraError_VRTrackedCameraError_StreamSetupFailure = 108, + EVRTrackedCameraError_VRTrackedCameraError_InvalidGLTextureId = 109, + EVRTrackedCameraError_VRTrackedCameraError_InvalidSharedTextureHandle = 110, + EVRTrackedCameraError_VRTrackedCameraError_FailedToGetGLTextureId = 111, + EVRTrackedCameraError_VRTrackedCameraError_SharedTextureFailure = 112, + EVRTrackedCameraError_VRTrackedCameraError_NoFrameAvailable = 113, + EVRTrackedCameraError_VRTrackedCameraError_InvalidArgument = 114, + EVRTrackedCameraError_VRTrackedCameraError_InvalidFrameBufferSize = 115, +} EVRTrackedCameraError; + +typedef enum EVRTrackedCameraFrameType +{ + EVRTrackedCameraFrameType_VRTrackedCameraFrameType_Distorted = 0, + EVRTrackedCameraFrameType_VRTrackedCameraFrameType_Undistorted = 1, + EVRTrackedCameraFrameType_VRTrackedCameraFrameType_MaximumUndistorted = 2, + EVRTrackedCameraFrameType_MAX_CAMERA_FRAME_TYPES = 3, +} EVRTrackedCameraFrameType; + +typedef enum EVRApplicationError +{ + EVRApplicationError_VRApplicationError_None = 0, + EVRApplicationError_VRApplicationError_AppKeyAlreadyExists = 100, + EVRApplicationError_VRApplicationError_NoManifest = 101, + EVRApplicationError_VRApplicationError_NoApplication = 102, + EVRApplicationError_VRApplicationError_InvalidIndex = 103, + EVRApplicationError_VRApplicationError_UnknownApplication = 104, + EVRApplicationError_VRApplicationError_IPCFailed = 105, + EVRApplicationError_VRApplicationError_ApplicationAlreadyRunning = 106, + EVRApplicationError_VRApplicationError_InvalidManifest = 107, + EVRApplicationError_VRApplicationError_InvalidApplication = 108, + EVRApplicationError_VRApplicationError_LaunchFailed = 109, + EVRApplicationError_VRApplicationError_ApplicationAlreadyStarting = 110, + EVRApplicationError_VRApplicationError_LaunchInProgress = 111, + EVRApplicationError_VRApplicationError_OldApplicationQuitting = 112, + EVRApplicationError_VRApplicationError_TransitionAborted = 113, + EVRApplicationError_VRApplicationError_IsTemplate = 114, + EVRApplicationError_VRApplicationError_BufferTooSmall = 200, + EVRApplicationError_VRApplicationError_PropertyNotSet = 201, + EVRApplicationError_VRApplicationError_UnknownProperty = 202, + EVRApplicationError_VRApplicationError_InvalidParameter = 203, +} EVRApplicationError; + +typedef enum EVRApplicationProperty +{ + EVRApplicationProperty_VRApplicationProperty_Name_String = 0, + EVRApplicationProperty_VRApplicationProperty_LaunchType_String = 11, + EVRApplicationProperty_VRApplicationProperty_WorkingDirectory_String = 12, + EVRApplicationProperty_VRApplicationProperty_BinaryPath_String = 13, + EVRApplicationProperty_VRApplicationProperty_Arguments_String = 14, + EVRApplicationProperty_VRApplicationProperty_URL_String = 15, + EVRApplicationProperty_VRApplicationProperty_Description_String = 50, + EVRApplicationProperty_VRApplicationProperty_NewsURL_String = 51, + EVRApplicationProperty_VRApplicationProperty_ImagePath_String = 52, + EVRApplicationProperty_VRApplicationProperty_Source_String = 53, + EVRApplicationProperty_VRApplicationProperty_IsDashboardOverlay_Bool = 60, + EVRApplicationProperty_VRApplicationProperty_IsTemplate_Bool = 61, + EVRApplicationProperty_VRApplicationProperty_IsInstanced_Bool = 62, + EVRApplicationProperty_VRApplicationProperty_LastLaunchTime_Uint64 = 70, +} EVRApplicationProperty; + +typedef enum EVRApplicationTransitionState +{ + EVRApplicationTransitionState_VRApplicationTransition_None = 0, + EVRApplicationTransitionState_VRApplicationTransition_OldAppQuitSent = 10, + EVRApplicationTransitionState_VRApplicationTransition_WaitingForExternalLaunch = 11, + EVRApplicationTransitionState_VRApplicationTransition_NewAppLaunched = 20, +} EVRApplicationTransitionState; + +typedef enum ChaperoneCalibrationState +{ + ChaperoneCalibrationState_OK = 1, + ChaperoneCalibrationState_Warning = 100, + ChaperoneCalibrationState_Warning_BaseStationMayHaveMoved = 101, + ChaperoneCalibrationState_Warning_BaseStationRemoved = 102, + ChaperoneCalibrationState_Warning_SeatedBoundsInvalid = 103, + ChaperoneCalibrationState_Error = 200, + ChaperoneCalibrationState_Error_BaseStationUninitalized = 201, + ChaperoneCalibrationState_Error_BaseStationConflict = 202, + ChaperoneCalibrationState_Error_PlayAreaInvalid = 203, + ChaperoneCalibrationState_Error_CollisionBoundsInvalid = 204, +} ChaperoneCalibrationState; + +typedef enum EChaperoneConfigFile +{ + EChaperoneConfigFile_Live = 1, + EChaperoneConfigFile_Temp = 2, +} EChaperoneConfigFile; + +typedef enum EChaperoneImportFlags +{ + EChaperoneImportFlags_EChaperoneImport_BoundsOnly = 1, +} EChaperoneImportFlags; + +typedef enum EVRCompositorError +{ + EVRCompositorError_VRCompositorError_None = 0, + EVRCompositorError_VRCompositorError_RequestFailed = 1, + EVRCompositorError_VRCompositorError_IncompatibleVersion = 100, + EVRCompositorError_VRCompositorError_DoNotHaveFocus = 101, + EVRCompositorError_VRCompositorError_InvalidTexture = 102, + EVRCompositorError_VRCompositorError_IsNotSceneApplication = 103, + EVRCompositorError_VRCompositorError_TextureIsOnWrongDevice = 104, + EVRCompositorError_VRCompositorError_TextureUsesUnsupportedFormat = 105, + EVRCompositorError_VRCompositorError_SharedTexturesNotSupported = 106, + EVRCompositorError_VRCompositorError_IndexOutOfRange = 107, +} EVRCompositorError; + +typedef enum VROverlayInputMethod +{ + VROverlayInputMethod_None = 0, + VROverlayInputMethod_Mouse = 1, +} VROverlayInputMethod; + +typedef enum VROverlayTransformType +{ + VROverlayTransformType_VROverlayTransform_Absolute = 0, + VROverlayTransformType_VROverlayTransform_TrackedDeviceRelative = 1, + VROverlayTransformType_VROverlayTransform_SystemOverlay = 2, + VROverlayTransformType_VROverlayTransform_TrackedComponent = 3, +} VROverlayTransformType; + +typedef enum VROverlayFlags +{ + VROverlayFlags_None = 0, + VROverlayFlags_Curved = 1, + VROverlayFlags_RGSS4X = 2, + VROverlayFlags_NoDashboardTab = 3, + VROverlayFlags_AcceptsGamepadEvents = 4, + VROverlayFlags_ShowGamepadFocus = 5, + VROverlayFlags_SendVRScrollEvents = 6, + VROverlayFlags_SendVRTouchpadEvents = 7, + VROverlayFlags_ShowTouchPadScrollWheel = 8, + VROverlayFlags_TransferOwnershipToInternalProcess = 9, + VROverlayFlags_SideBySide_Parallel = 10, + VROverlayFlags_SideBySide_Crossed = 11, + VROverlayFlags_Panorama = 12, + VROverlayFlags_StereoPanorama = 13, + VROverlayFlags_SortWithNonSceneOverlays = 14, +} VROverlayFlags; + +typedef enum EGamepadTextInputMode +{ + EGamepadTextInputMode_k_EGamepadTextInputModeNormal = 0, + EGamepadTextInputMode_k_EGamepadTextInputModePassword = 1, + EGamepadTextInputMode_k_EGamepadTextInputModeSubmit = 2, +} EGamepadTextInputMode; + +typedef enum EGamepadTextInputLineMode +{ + EGamepadTextInputLineMode_k_EGamepadTextInputLineModeSingleLine = 0, + EGamepadTextInputLineMode_k_EGamepadTextInputLineModeMultipleLines = 1, +} EGamepadTextInputLineMode; + +typedef enum EOverlayDirection +{ + EOverlayDirection_OverlayDirection_Up = 0, + EOverlayDirection_OverlayDirection_Down = 1, + EOverlayDirection_OverlayDirection_Left = 2, + EOverlayDirection_OverlayDirection_Right = 3, + EOverlayDirection_OverlayDirection_Count = 4, +} EOverlayDirection; + +typedef enum EVRRenderModelError +{ + EVRRenderModelError_VRRenderModelError_None = 0, + EVRRenderModelError_VRRenderModelError_Loading = 100, + EVRRenderModelError_VRRenderModelError_NotSupported = 200, + EVRRenderModelError_VRRenderModelError_InvalidArg = 300, + EVRRenderModelError_VRRenderModelError_InvalidModel = 301, + EVRRenderModelError_VRRenderModelError_NoShapes = 302, + EVRRenderModelError_VRRenderModelError_MultipleShapes = 303, + EVRRenderModelError_VRRenderModelError_TooManyVertices = 304, + EVRRenderModelError_VRRenderModelError_MultipleTextures = 305, + EVRRenderModelError_VRRenderModelError_BufferTooSmall = 306, + EVRRenderModelError_VRRenderModelError_NotEnoughNormals = 307, + EVRRenderModelError_VRRenderModelError_NotEnoughTexCoords = 308, + EVRRenderModelError_VRRenderModelError_InvalidTexture = 400, +} EVRRenderModelError; + +typedef enum EVRComponentProperty +{ + EVRComponentProperty_VRComponentProperty_IsStatic = 1, + EVRComponentProperty_VRComponentProperty_IsVisible = 2, + EVRComponentProperty_VRComponentProperty_IsTouched = 4, + EVRComponentProperty_VRComponentProperty_IsPressed = 8, + EVRComponentProperty_VRComponentProperty_IsScrolled = 16, +} EVRComponentProperty; + +typedef enum EVRNotificationType +{ + EVRNotificationType_Transient = 0, + EVRNotificationType_Persistent = 1, + EVRNotificationType_Transient_SystemWithUserValue = 2, +} EVRNotificationType; + +typedef enum EVRNotificationStyle +{ + EVRNotificationStyle_None = 0, + EVRNotificationStyle_Application = 100, + EVRNotificationStyle_Contact_Disabled = 200, + EVRNotificationStyle_Contact_Enabled = 201, + EVRNotificationStyle_Contact_Active = 202, +} EVRNotificationStyle; + +typedef enum EVRSettingsError +{ + EVRSettingsError_VRSettingsError_None = 0, + EVRSettingsError_VRSettingsError_IPCFailed = 1, + EVRSettingsError_VRSettingsError_WriteFailed = 2, + EVRSettingsError_VRSettingsError_ReadFailed = 3, + EVRSettingsError_VRSettingsError_JsonParseFailed = 4, + EVRSettingsError_VRSettingsError_UnsetSettingHasNoDefault = 5, +} EVRSettingsError; + +typedef enum EVRScreenshotError +{ + EVRScreenshotError_VRScreenshotError_None = 0, + EVRScreenshotError_VRScreenshotError_RequestFailed = 1, + EVRScreenshotError_VRScreenshotError_IncompatibleVersion = 100, + EVRScreenshotError_VRScreenshotError_NotFound = 101, + EVRScreenshotError_VRScreenshotError_BufferTooSmall = 102, + EVRScreenshotError_VRScreenshotError_ScreenshotAlreadyInProgress = 108, +} EVRScreenshotError; + + +// OpenVR typedefs + +typedef uint32_t TrackedDeviceIndex_t; +typedef uint32_t VRNotificationId; +typedef uint64_t VROverlayHandle_t; +typedef void * glSharedTextureHandle_t; +typedef int32_t glInt_t; +typedef uint32_t glUInt_t; +typedef uint64_t SharedTextureHandle_t; +typedef uint32_t TrackedDeviceIndex_t; +typedef uint64_t VROverlayHandle_t; +typedef uint64_t TrackedCameraHandle_t; +typedef uint32_t ScreenshotHandle_t; +typedef uint32_t VRComponentProperties; +typedef int32_t TextureID_t; +typedef uint32_t VRNotificationId; +typedef EVRInitError HmdError; +typedef EVREye Hmd_Eye; +typedef EGraphicsAPIConvention GraphicsAPIConvention; +typedef EColorSpace ColorSpace; +typedef ETrackingResult HmdTrackingResult; +typedef ETrackedDeviceClass TrackedDeviceClass; +typedef ETrackingUniverseOrigin TrackingUniverseOrigin; +typedef ETrackedDeviceProperty TrackedDeviceProperty; +typedef ETrackedPropertyError TrackedPropertyError; +typedef EVRSubmitFlags VRSubmitFlags_t; +typedef EVRState VRState_t; +typedef ECollisionBoundsStyle CollisionBoundsStyle_t; +typedef EVROverlayError VROverlayError; +typedef EVRFirmwareError VRFirmwareError; +typedef EVRCompositorError VRCompositorError; +typedef EVRScreenshotError VRScreenshotsError; + +// OpenVR Structs + +typedef struct HmdMatrix34_t +{ + float m[3][4]; //float[3][4] +} HmdMatrix34_t; + +typedef struct HmdMatrix44_t +{ + float m[4][4]; //float[4][4] +} HmdMatrix44_t; + +typedef struct HmdVector3_t +{ + float v[3]; //float[3] +} HmdVector3_t; + +typedef struct HmdVector4_t +{ + float v[4]; //float[4] +} HmdVector4_t; + +typedef struct HmdVector3d_t +{ + double v[3]; //double[3] +} HmdVector3d_t; + +typedef struct HmdVector2_t +{ + float v[2]; //float[2] +} HmdVector2_t; + +typedef struct HmdQuaternion_t +{ + double w; + double x; + double y; + double z; +} HmdQuaternion_t; + +typedef struct HmdColor_t +{ + float r; + float g; + float b; + float a; +} HmdColor_t; + +typedef struct HmdQuad_t +{ + struct HmdVector3_t vCorners[4]; //struct vr::HmdVector3_t[4] +} HmdQuad_t; + +typedef struct HmdRect2_t +{ + struct HmdVector2_t vTopLeft; + struct HmdVector2_t vBottomRight; +} HmdRect2_t; + +typedef struct DistortionCoordinates_t +{ + float rfRed[2]; //float[2] + float rfGreen[2]; //float[2] + float rfBlue[2]; //float[2] +} DistortionCoordinates_t; + +typedef struct Texture_t +{ + void * handle; // void * + enum EGraphicsAPIConvention eType; + enum EColorSpace eColorSpace; +} Texture_t; + +typedef struct TrackedDevicePose_t +{ + struct HmdMatrix34_t mDeviceToAbsoluteTracking; + struct HmdVector3_t vVelocity; + struct HmdVector3_t vAngularVelocity; + enum ETrackingResult eTrackingResult; + bool bPoseIsValid; + bool bDeviceIsConnected; +} TrackedDevicePose_t; + +typedef struct VRTextureBounds_t +{ + float uMin; + float vMin; + float uMax; + float vMax; +} VRTextureBounds_t; + +typedef struct VulkanData_t +{ + uint64_t m_nImage; + struct VkDevice_T * m_pDevice; // struct VkDevice_T * + struct VkPhysicalDevice_T * m_pPhysicalDevice; // struct VkPhysicalDevice_T * + struct VkInstance_T * m_pInstance; // struct VkInstance_T * + struct VkQueue_T * m_pQueue; // struct VkQueue_T * + uint32_t m_nQueueFamilyIndex; + uint32_t m_nWidth; + uint32_t m_nHeight; + uint32_t m_nFormat; + uint32_t m_nSampleCount; +} VulkanData_t; + +typedef struct VREvent_Controller_t +{ + uint32_t button; +} VREvent_Controller_t; + +typedef struct VREvent_Mouse_t +{ + float x; + float y; + uint32_t button; +} VREvent_Mouse_t; + +typedef struct VREvent_Scroll_t +{ + float xdelta; + float ydelta; + uint32_t repeatCount; +} VREvent_Scroll_t; + +typedef struct VREvent_TouchPadMove_t +{ + bool bFingerDown; + float flSecondsFingerDown; + float fValueXFirst; + float fValueYFirst; + float fValueXRaw; + float fValueYRaw; +} VREvent_TouchPadMove_t; + +typedef struct VREvent_Notification_t +{ + uint64_t ulUserValue; + uint32_t notificationId; +} VREvent_Notification_t; + +typedef struct VREvent_Process_t +{ + uint32_t pid; + uint32_t oldPid; + bool bForced; +} VREvent_Process_t; + +typedef struct VREvent_Overlay_t +{ + uint64_t overlayHandle; +} VREvent_Overlay_t; + +typedef struct VREvent_Status_t +{ + uint32_t statusState; +} VREvent_Status_t; + +typedef struct VREvent_Keyboard_t +{ + char * cNewInput[8]; //char[8] + uint64_t uUserValue; +} VREvent_Keyboard_t; + +typedef struct VREvent_Ipd_t +{ + float ipdMeters; +} VREvent_Ipd_t; + +typedef struct VREvent_Chaperone_t +{ + uint64_t m_nPreviousUniverse; + uint64_t m_nCurrentUniverse; +} VREvent_Chaperone_t; + +typedef struct VREvent_Reserved_t +{ + uint64_t reserved0; + uint64_t reserved1; +} VREvent_Reserved_t; + +typedef struct VREvent_PerformanceTest_t +{ + uint32_t m_nFidelityLevel; +} VREvent_PerformanceTest_t; + +typedef struct VREvent_SeatedZeroPoseReset_t +{ + bool bResetBySystemMenu; +} VREvent_SeatedZeroPoseReset_t; + +typedef struct VREvent_Screenshot_t +{ + uint32_t handle; + uint32_t type; +} VREvent_Screenshot_t; + +typedef struct VREvent_ScreenshotProgress_t +{ + float progress; +} VREvent_ScreenshotProgress_t; + +typedef struct VREvent_ApplicationLaunch_t +{ + uint32_t pid; + uint32_t unArgsHandle; +} VREvent_ApplicationLaunch_t; + +typedef struct VREvent_EditingCameraSurface_t +{ + uint64_t overlayHandle; + uint32_t nVisualMode; +} VREvent_EditingCameraSurface_t; + +typedef struct HiddenAreaMesh_t +{ + struct HmdVector2_t * pVertexData; // const struct vr::HmdVector2_t * + uint32_t unTriangleCount; +} HiddenAreaMesh_t; + +typedef struct VRControllerAxis_t +{ + float x; + float y; +} VRControllerAxis_t; + +typedef struct VRControllerState_t +{ + uint32_t unPacketNum; + uint64_t ulButtonPressed; + uint64_t ulButtonTouched; + struct VRControllerAxis_t rAxis[5]; //struct vr::VRControllerAxis_t[5] +} VRControllerState_t; + +typedef struct Compositor_OverlaySettings +{ + uint32_t size; + bool curved; + bool antialias; + float scale; + float distance; + float alpha; + float uOffset; + float vOffset; + float uScale; + float vScale; + float gridDivs; + float gridWidth; + float gridScale; + struct HmdMatrix44_t transform; +} Compositor_OverlaySettings; + +typedef struct CameraVideoStreamFrameHeader_t +{ + enum EVRTrackedCameraFrameType eFrameType; + uint32_t nWidth; + uint32_t nHeight; + uint32_t nBytesPerPixel; + uint32_t nFrameSequence; + struct TrackedDevicePose_t standingTrackedDevicePose; +} CameraVideoStreamFrameHeader_t; + +typedef struct AppOverrideKeys_t +{ + char * pchKey; // const char * + char * pchValue; // const char * +} AppOverrideKeys_t; + +typedef struct Compositor_FrameTiming +{ + uint32_t m_nSize; + uint32_t m_nFrameIndex; + uint32_t m_nNumFramePresents; + uint32_t m_nNumDroppedFrames; + uint32_t m_nReprojectionFlags; + double m_flSystemTimeInSeconds; + float m_flPreSubmitGpuMs; + float m_flPostSubmitGpuMs; + float m_flTotalRenderGpuMs; + float m_flCompositorRenderGpuMs; + float m_flCompositorRenderCpuMs; + float m_flCompositorIdleCpuMs; + float m_flClientFrameIntervalMs; + float m_flPresentCallCpuMs; + float m_flWaitForPresentCpuMs; + float m_flSubmitFrameMs; + float m_flWaitGetPosesCalledMs; + float m_flNewPosesReadyMs; + float m_flNewFrameReadyMs; + float m_flCompositorUpdateStartMs; + float m_flCompositorUpdateEndMs; + float m_flCompositorRenderStartMs; + TrackedDevicePose_t m_HmdPose; +} Compositor_FrameTiming; + +typedef struct Compositor_CumulativeStats +{ + uint32_t m_nPid; + uint32_t m_nNumFramePresents; + uint32_t m_nNumDroppedFrames; + uint32_t m_nNumReprojectedFrames; + uint32_t m_nNumFramePresentsOnStartup; + uint32_t m_nNumDroppedFramesOnStartup; + uint32_t m_nNumReprojectedFramesOnStartup; + uint32_t m_nNumLoading; + uint32_t m_nNumFramePresentsLoading; + uint32_t m_nNumDroppedFramesLoading; + uint32_t m_nNumReprojectedFramesLoading; + uint32_t m_nNumTimedOut; + uint32_t m_nNumFramePresentsTimedOut; + uint32_t m_nNumDroppedFramesTimedOut; + uint32_t m_nNumReprojectedFramesTimedOut; +} Compositor_CumulativeStats; + +typedef struct VROverlayIntersectionParams_t +{ + struct HmdVector3_t vSource; + struct HmdVector3_t vDirection; + enum ETrackingUniverseOrigin eOrigin; +} VROverlayIntersectionParams_t; + +typedef struct VROverlayIntersectionResults_t +{ + struct HmdVector3_t vPoint; + struct HmdVector3_t vNormal; + struct HmdVector2_t vUVs; + float fDistance; +} VROverlayIntersectionResults_t; + +typedef struct RenderModel_ComponentState_t +{ + struct HmdMatrix34_t mTrackingToComponentRenderModel; + struct HmdMatrix34_t mTrackingToComponentLocal; + VRComponentProperties uProperties; +} RenderModel_ComponentState_t; + +typedef struct RenderModel_Vertex_t +{ + struct HmdVector3_t vPosition; + struct HmdVector3_t vNormal; + float rfTextureCoord[2]; //float[2] +} RenderModel_Vertex_t; + +typedef struct RenderModel_TextureMap_t +{ + uint16_t unWidth; + uint16_t unHeight; + uint8_t * rubTextureMapData; // const uint8_t * +} RenderModel_TextureMap_t; + +typedef struct RenderModel_t +{ + struct RenderModel_Vertex_t * rVertexData; // const struct vr::RenderModel_Vertex_t * + uint32_t unVertexCount; + uint16_t * rIndexData; // const uint16_t * + uint32_t unTriangleCount; + TextureID_t diffuseTextureId; +} RenderModel_t; + +typedef struct RenderModel_ControllerMode_State_t +{ + bool bScrollWheelVisible; +} RenderModel_ControllerMode_State_t; + +typedef struct NotificationBitmap_t +{ + void * m_pImageData; // void * + int32_t m_nWidth; + int32_t m_nHeight; + int32_t m_nBytesPerPixel; +} NotificationBitmap_t; + +typedef struct COpenVRContext +{ + intptr_t m_pVRSystem; // class vr::IVRSystem * + intptr_t m_pVRChaperone; // class vr::IVRChaperone * + intptr_t m_pVRChaperoneSetup; // class vr::IVRChaperoneSetup * + intptr_t m_pVRCompositor; // class vr::IVRCompositor * + intptr_t m_pVROverlay; // class vr::IVROverlay * + intptr_t m_pVRResources; // class vr::IVRResources * + intptr_t m_pVRRenderModels; // class vr::IVRRenderModels * + intptr_t m_pVRExtendedDisplay; // class vr::IVRExtendedDisplay * + intptr_t m_pVRSettings; // class vr::IVRSettings * + intptr_t m_pVRApplications; // class vr::IVRApplications * + intptr_t m_pVRTrackedCamera; // class vr::IVRTrackedCamera * + intptr_t m_pVRScreenshots; // class vr::IVRScreenshots * +} COpenVRContext; + + +typedef union +{ + VREvent_Reserved_t reserved; + VREvent_Controller_t controller; + VREvent_Mouse_t mouse; + VREvent_Scroll_t scroll; + VREvent_Process_t process; + VREvent_Notification_t notification; + VREvent_Overlay_t overlay; + VREvent_Status_t status; + VREvent_Keyboard_t keyboard; + VREvent_Ipd_t ipd; + VREvent_Chaperone_t chaperone; + VREvent_PerformanceTest_t performanceTest; + VREvent_TouchPadMove_t touchPadMove; + VREvent_SeatedZeroPoseReset_t seatedZeroPoseReset; +} VREvent_Data_t; + +/** An event posted by the server to all running applications */ +struct VREvent_t +{ + uint32_t eventType; // EVREventType enum + TrackedDeviceIndex_t trackedDeviceIndex; + float eventAgeSeconds; + // event data must be the end of the struct as its size is variable + VREvent_Data_t data; +}; + + +// OpenVR Function Pointer Tables + +struct VR_IVRSystem_FnTable +{ + void (OPENVR_FNTABLE_CALLTYPE *GetRecommendedRenderTargetSize)(uint32_t * pnWidth, uint32_t * pnHeight); + struct HmdMatrix44_t (OPENVR_FNTABLE_CALLTYPE *GetProjectionMatrix)(EVREye eEye, float fNearZ, float fFarZ, EGraphicsAPIConvention eProjType); + void (OPENVR_FNTABLE_CALLTYPE *GetProjectionRaw)(EVREye eEye, float * pfLeft, float * pfRight, float * pfTop, float * pfBottom); + struct DistortionCoordinates_t (OPENVR_FNTABLE_CALLTYPE *ComputeDistortion)(EVREye eEye, float fU, float fV); + struct HmdMatrix34_t (OPENVR_FNTABLE_CALLTYPE *GetEyeToHeadTransform)(EVREye eEye); + bool (OPENVR_FNTABLE_CALLTYPE *GetTimeSinceLastVsync)(float * pfSecondsSinceLastVsync, uint64_t * pulFrameCounter); + int32_t (OPENVR_FNTABLE_CALLTYPE *GetD3D9AdapterIndex)(); + void (OPENVR_FNTABLE_CALLTYPE *GetDXGIOutputInfo)(int32_t * pnAdapterIndex); + bool (OPENVR_FNTABLE_CALLTYPE *IsDisplayOnDesktop)(); + bool (OPENVR_FNTABLE_CALLTYPE *SetDisplayVisibility)(bool bIsVisibleOnDesktop); + void (OPENVR_FNTABLE_CALLTYPE *GetDeviceToAbsoluteTrackingPose)(ETrackingUniverseOrigin eOrigin, float fPredictedSecondsToPhotonsFromNow, struct TrackedDevicePose_t * pTrackedDevicePoseArray, uint32_t unTrackedDevicePoseArrayCount); + void (OPENVR_FNTABLE_CALLTYPE *ResetSeatedZeroPose)(); + struct HmdMatrix34_t (OPENVR_FNTABLE_CALLTYPE *GetSeatedZeroPoseToStandingAbsoluteTrackingPose)(); + struct HmdMatrix34_t (OPENVR_FNTABLE_CALLTYPE *GetRawZeroPoseToStandingAbsoluteTrackingPose)(); + uint32_t (OPENVR_FNTABLE_CALLTYPE *GetSortedTrackedDeviceIndicesOfClass)(ETrackedDeviceClass eTrackedDeviceClass, TrackedDeviceIndex_t * punTrackedDeviceIndexArray, uint32_t unTrackedDeviceIndexArrayCount, TrackedDeviceIndex_t unRelativeToTrackedDeviceIndex); + EDeviceActivityLevel (OPENVR_FNTABLE_CALLTYPE *GetTrackedDeviceActivityLevel)(TrackedDeviceIndex_t unDeviceId); + void (OPENVR_FNTABLE_CALLTYPE *ApplyTransform)(struct TrackedDevicePose_t * pOutputPose, struct TrackedDevicePose_t * pTrackedDevicePose, struct HmdMatrix34_t * pTransform); + TrackedDeviceIndex_t (OPENVR_FNTABLE_CALLTYPE *GetTrackedDeviceIndexForControllerRole)(ETrackedControllerRole unDeviceType); + ETrackedControllerRole (OPENVR_FNTABLE_CALLTYPE *GetControllerRoleForTrackedDeviceIndex)(TrackedDeviceIndex_t unDeviceIndex); + ETrackedDeviceClass (OPENVR_FNTABLE_CALLTYPE *GetTrackedDeviceClass)(TrackedDeviceIndex_t unDeviceIndex); + bool (OPENVR_FNTABLE_CALLTYPE *IsTrackedDeviceConnected)(TrackedDeviceIndex_t unDeviceIndex); + bool (OPENVR_FNTABLE_CALLTYPE *GetBoolTrackedDeviceProperty)(TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, ETrackedPropertyError * pError); + float (OPENVR_FNTABLE_CALLTYPE *GetFloatTrackedDeviceProperty)(TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, ETrackedPropertyError * pError); + int32_t (OPENVR_FNTABLE_CALLTYPE *GetInt32TrackedDeviceProperty)(TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, ETrackedPropertyError * pError); + uint64_t (OPENVR_FNTABLE_CALLTYPE *GetUint64TrackedDeviceProperty)(TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, ETrackedPropertyError * pError); + struct HmdMatrix34_t (OPENVR_FNTABLE_CALLTYPE *GetMatrix34TrackedDeviceProperty)(TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, ETrackedPropertyError * pError); + uint32_t (OPENVR_FNTABLE_CALLTYPE *GetStringTrackedDeviceProperty)(TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, char * pchValue, uint32_t unBufferSize, ETrackedPropertyError * pError); + char * (OPENVR_FNTABLE_CALLTYPE *GetPropErrorNameFromEnum)(ETrackedPropertyError error); + bool (OPENVR_FNTABLE_CALLTYPE *PollNextEvent)(struct VREvent_t * pEvent, uint32_t uncbVREvent); + bool (OPENVR_FNTABLE_CALLTYPE *PollNextEventWithPose)(ETrackingUniverseOrigin eOrigin, struct VREvent_t * pEvent, uint32_t uncbVREvent, TrackedDevicePose_t * pTrackedDevicePose); + char * (OPENVR_FNTABLE_CALLTYPE *GetEventTypeNameFromEnum)(EVREventType eType); + struct HiddenAreaMesh_t (OPENVR_FNTABLE_CALLTYPE *GetHiddenAreaMesh)(EVREye eEye); + bool (OPENVR_FNTABLE_CALLTYPE *GetControllerState)(TrackedDeviceIndex_t unControllerDeviceIndex, VRControllerState_t * pControllerState); + bool (OPENVR_FNTABLE_CALLTYPE *GetControllerStateWithPose)(ETrackingUniverseOrigin eOrigin, TrackedDeviceIndex_t unControllerDeviceIndex, VRControllerState_t * pControllerState, struct TrackedDevicePose_t * pTrackedDevicePose); + void (OPENVR_FNTABLE_CALLTYPE *TriggerHapticPulse)(TrackedDeviceIndex_t unControllerDeviceIndex, uint32_t unAxisId, unsigned short usDurationMicroSec); + char * (OPENVR_FNTABLE_CALLTYPE *GetButtonIdNameFromEnum)(EVRButtonId eButtonId); + char * (OPENVR_FNTABLE_CALLTYPE *GetControllerAxisTypeNameFromEnum)(EVRControllerAxisType eAxisType); + bool (OPENVR_FNTABLE_CALLTYPE *CaptureInputFocus)(); + void (OPENVR_FNTABLE_CALLTYPE *ReleaseInputFocus)(); + bool (OPENVR_FNTABLE_CALLTYPE *IsInputFocusCapturedByAnotherProcess)(); + uint32_t (OPENVR_FNTABLE_CALLTYPE *DriverDebugRequest)(TrackedDeviceIndex_t unDeviceIndex, char * pchRequest, char * pchResponseBuffer, uint32_t unResponseBufferSize); + EVRFirmwareError (OPENVR_FNTABLE_CALLTYPE *PerformFirmwareUpdate)(TrackedDeviceIndex_t unDeviceIndex); + void (OPENVR_FNTABLE_CALLTYPE *AcknowledgeQuit_Exiting)(); + void (OPENVR_FNTABLE_CALLTYPE *AcknowledgeQuit_UserPrompt)(); +}; + +struct VR_IVRExtendedDisplay_FnTable +{ + void (OPENVR_FNTABLE_CALLTYPE *GetWindowBounds)(int32_t * pnX, int32_t * pnY, uint32_t * pnWidth, uint32_t * pnHeight); + void (OPENVR_FNTABLE_CALLTYPE *GetEyeOutputViewport)(EVREye eEye, uint32_t * pnX, uint32_t * pnY, uint32_t * pnWidth, uint32_t * pnHeight); + void (OPENVR_FNTABLE_CALLTYPE *GetDXGIOutputInfo)(int32_t * pnAdapterIndex, int32_t * pnAdapterOutputIndex); +}; + +struct VR_IVRTrackedCamera_FnTable +{ + char * (OPENVR_FNTABLE_CALLTYPE *GetCameraErrorNameFromEnum)(EVRTrackedCameraError eCameraError); + EVRTrackedCameraError (OPENVR_FNTABLE_CALLTYPE *HasCamera)(TrackedDeviceIndex_t nDeviceIndex, bool * pHasCamera); + EVRTrackedCameraError (OPENVR_FNTABLE_CALLTYPE *GetCameraFrameSize)(TrackedDeviceIndex_t nDeviceIndex, EVRTrackedCameraFrameType eFrameType, uint32_t * pnWidth, uint32_t * pnHeight, uint32_t * pnFrameBufferSize); + EVRTrackedCameraError (OPENVR_FNTABLE_CALLTYPE *GetCameraIntrinisics)(TrackedDeviceIndex_t nDeviceIndex, EVRTrackedCameraFrameType eFrameType, HmdVector2_t * pFocalLength, HmdVector2_t * pCenter); + EVRTrackedCameraError (OPENVR_FNTABLE_CALLTYPE *GetCameraProjection)(TrackedDeviceIndex_t nDeviceIndex, EVRTrackedCameraFrameType eFrameType, float flZNear, float flZFar, HmdMatrix44_t * pProjection); + EVRTrackedCameraError (OPENVR_FNTABLE_CALLTYPE *AcquireVideoStreamingService)(TrackedDeviceIndex_t nDeviceIndex, TrackedCameraHandle_t * pHandle); + EVRTrackedCameraError (OPENVR_FNTABLE_CALLTYPE *ReleaseVideoStreamingService)(TrackedCameraHandle_t hTrackedCamera); + EVRTrackedCameraError (OPENVR_FNTABLE_CALLTYPE *GetVideoStreamFrameBuffer)(TrackedCameraHandle_t hTrackedCamera, EVRTrackedCameraFrameType eFrameType, void * pFrameBuffer, uint32_t nFrameBufferSize, CameraVideoStreamFrameHeader_t * pFrameHeader, uint32_t nFrameHeaderSize); + EVRTrackedCameraError (OPENVR_FNTABLE_CALLTYPE *GetVideoStreamTextureSize)(TrackedDeviceIndex_t nDeviceIndex, EVRTrackedCameraFrameType eFrameType, VRTextureBounds_t * pTextureBounds, uint32_t * pnWidth, uint32_t * pnHeight); + EVRTrackedCameraError (OPENVR_FNTABLE_CALLTYPE *GetVideoStreamTextureD3D11)(TrackedCameraHandle_t hTrackedCamera, EVRTrackedCameraFrameType eFrameType, void * pD3D11DeviceOrResource, void ** ppD3D11ShaderResourceView, CameraVideoStreamFrameHeader_t * pFrameHeader, uint32_t nFrameHeaderSize); + EVRTrackedCameraError (OPENVR_FNTABLE_CALLTYPE *GetVideoStreamTextureGL)(TrackedCameraHandle_t hTrackedCamera, EVRTrackedCameraFrameType eFrameType, glUInt_t * pglTextureId, CameraVideoStreamFrameHeader_t * pFrameHeader, uint32_t nFrameHeaderSize); + EVRTrackedCameraError (OPENVR_FNTABLE_CALLTYPE *ReleaseVideoStreamTextureGL)(TrackedCameraHandle_t hTrackedCamera, glUInt_t glTextureId); +}; + +struct VR_IVRApplications_FnTable +{ + EVRApplicationError (OPENVR_FNTABLE_CALLTYPE *AddApplicationManifest)(char * pchApplicationManifestFullPath, bool bTemporary); + EVRApplicationError (OPENVR_FNTABLE_CALLTYPE *RemoveApplicationManifest)(char * pchApplicationManifestFullPath); + bool (OPENVR_FNTABLE_CALLTYPE *IsApplicationInstalled)(char * pchAppKey); + uint32_t (OPENVR_FNTABLE_CALLTYPE *GetApplicationCount)(); + EVRApplicationError (OPENVR_FNTABLE_CALLTYPE *GetApplicationKeyByIndex)(uint32_t unApplicationIndex, char * pchAppKeyBuffer, uint32_t unAppKeyBufferLen); + EVRApplicationError (OPENVR_FNTABLE_CALLTYPE *GetApplicationKeyByProcessId)(uint32_t unProcessId, char * pchAppKeyBuffer, uint32_t unAppKeyBufferLen); + EVRApplicationError (OPENVR_FNTABLE_CALLTYPE *LaunchApplication)(char * pchAppKey); + EVRApplicationError (OPENVR_FNTABLE_CALLTYPE *LaunchTemplateApplication)(char * pchTemplateAppKey, char * pchNewAppKey, struct AppOverrideKeys_t * pKeys, uint32_t unKeys); + EVRApplicationError (OPENVR_FNTABLE_CALLTYPE *LaunchApplicationFromMimeType)(char * pchMimeType, char * pchArgs); + EVRApplicationError (OPENVR_FNTABLE_CALLTYPE *LaunchDashboardOverlay)(char * pchAppKey); + bool (OPENVR_FNTABLE_CALLTYPE *CancelApplicationLaunch)(char * pchAppKey); + EVRApplicationError (OPENVR_FNTABLE_CALLTYPE *IdentifyApplication)(uint32_t unProcessId, char * pchAppKey); + uint32_t (OPENVR_FNTABLE_CALLTYPE *GetApplicationProcessId)(char * pchAppKey); + char * (OPENVR_FNTABLE_CALLTYPE *GetApplicationsErrorNameFromEnum)(EVRApplicationError error); + uint32_t (OPENVR_FNTABLE_CALLTYPE *GetApplicationPropertyString)(char * pchAppKey, EVRApplicationProperty eProperty, char * pchPropertyValueBuffer, uint32_t unPropertyValueBufferLen, EVRApplicationError * peError); + bool (OPENVR_FNTABLE_CALLTYPE *GetApplicationPropertyBool)(char * pchAppKey, EVRApplicationProperty eProperty, EVRApplicationError * peError); + uint64_t (OPENVR_FNTABLE_CALLTYPE *GetApplicationPropertyUint64)(char * pchAppKey, EVRApplicationProperty eProperty, EVRApplicationError * peError); + EVRApplicationError (OPENVR_FNTABLE_CALLTYPE *SetApplicationAutoLaunch)(char * pchAppKey, bool bAutoLaunch); + bool (OPENVR_FNTABLE_CALLTYPE *GetApplicationAutoLaunch)(char * pchAppKey); + EVRApplicationError (OPENVR_FNTABLE_CALLTYPE *SetDefaultApplicationForMimeType)(char * pchAppKey, char * pchMimeType); + bool (OPENVR_FNTABLE_CALLTYPE *GetDefaultApplicationForMimeType)(char * pchMimeType, char * pchAppKeyBuffer, uint32_t unAppKeyBufferLen); + bool (OPENVR_FNTABLE_CALLTYPE *GetApplicationSupportedMimeTypes)(char * pchAppKey, char * pchMimeTypesBuffer, uint32_t unMimeTypesBuffer); + uint32_t (OPENVR_FNTABLE_CALLTYPE *GetApplicationsThatSupportMimeType)(char * pchMimeType, char * pchAppKeysThatSupportBuffer, uint32_t unAppKeysThatSupportBuffer); + uint32_t (OPENVR_FNTABLE_CALLTYPE *GetApplicationLaunchArguments)(uint32_t unHandle, char * pchArgs, uint32_t unArgs); + EVRApplicationError (OPENVR_FNTABLE_CALLTYPE *GetStartingApplication)(char * pchAppKeyBuffer, uint32_t unAppKeyBufferLen); + EVRApplicationTransitionState (OPENVR_FNTABLE_CALLTYPE *GetTransitionState)(); + EVRApplicationError (OPENVR_FNTABLE_CALLTYPE *PerformApplicationPrelaunchCheck)(char * pchAppKey); + char * (OPENVR_FNTABLE_CALLTYPE *GetApplicationsTransitionStateNameFromEnum)(EVRApplicationTransitionState state); + bool (OPENVR_FNTABLE_CALLTYPE *IsQuitUserPromptRequested)(); + EVRApplicationError (OPENVR_FNTABLE_CALLTYPE *LaunchInternalProcess)(char * pchBinaryPath, char * pchArguments, char * pchWorkingDirectory); +}; + +struct VR_IVRChaperone_FnTable +{ + ChaperoneCalibrationState (OPENVR_FNTABLE_CALLTYPE *GetCalibrationState)(); + bool (OPENVR_FNTABLE_CALLTYPE *GetPlayAreaSize)(float * pSizeX, float * pSizeZ); + bool (OPENVR_FNTABLE_CALLTYPE *GetPlayAreaRect)(struct HmdQuad_t * rect); + void (OPENVR_FNTABLE_CALLTYPE *ReloadInfo)(); + void (OPENVR_FNTABLE_CALLTYPE *SetSceneColor)(struct HmdColor_t color); + void (OPENVR_FNTABLE_CALLTYPE *GetBoundsColor)(struct HmdColor_t * pOutputColorArray, int nNumOutputColors, float flCollisionBoundsFadeDistance, struct HmdColor_t * pOutputCameraColor); + bool (OPENVR_FNTABLE_CALLTYPE *AreBoundsVisible)(); + void (OPENVR_FNTABLE_CALLTYPE *ForceBoundsVisible)(bool bForce); +}; + +struct VR_IVRChaperoneSetup_FnTable +{ + bool (OPENVR_FNTABLE_CALLTYPE *CommitWorkingCopy)(EChaperoneConfigFile configFile); + void (OPENVR_FNTABLE_CALLTYPE *RevertWorkingCopy)(); + bool (OPENVR_FNTABLE_CALLTYPE *GetWorkingPlayAreaSize)(float * pSizeX, float * pSizeZ); + bool (OPENVR_FNTABLE_CALLTYPE *GetWorkingPlayAreaRect)(struct HmdQuad_t * rect); + bool (OPENVR_FNTABLE_CALLTYPE *GetWorkingCollisionBoundsInfo)(struct HmdQuad_t * pQuadsBuffer, uint32_t * punQuadsCount); + bool (OPENVR_FNTABLE_CALLTYPE *GetLiveCollisionBoundsInfo)(struct HmdQuad_t * pQuadsBuffer, uint32_t * punQuadsCount); + bool (OPENVR_FNTABLE_CALLTYPE *GetWorkingSeatedZeroPoseToRawTrackingPose)(struct HmdMatrix34_t * pmatSeatedZeroPoseToRawTrackingPose); + bool (OPENVR_FNTABLE_CALLTYPE *GetWorkingStandingZeroPoseToRawTrackingPose)(struct HmdMatrix34_t * pmatStandingZeroPoseToRawTrackingPose); + void (OPENVR_FNTABLE_CALLTYPE *SetWorkingPlayAreaSize)(float sizeX, float sizeZ); + void (OPENVR_FNTABLE_CALLTYPE *SetWorkingCollisionBoundsInfo)(struct HmdQuad_t * pQuadsBuffer, uint32_t unQuadsCount); + void (OPENVR_FNTABLE_CALLTYPE *SetWorkingSeatedZeroPoseToRawTrackingPose)(struct HmdMatrix34_t * pMatSeatedZeroPoseToRawTrackingPose); + void (OPENVR_FNTABLE_CALLTYPE *SetWorkingStandingZeroPoseToRawTrackingPose)(struct HmdMatrix34_t * pMatStandingZeroPoseToRawTrackingPose); + void (OPENVR_FNTABLE_CALLTYPE *ReloadFromDisk)(EChaperoneConfigFile configFile); + bool (OPENVR_FNTABLE_CALLTYPE *GetLiveSeatedZeroPoseToRawTrackingPose)(struct HmdMatrix34_t * pmatSeatedZeroPoseToRawTrackingPose); + void (OPENVR_FNTABLE_CALLTYPE *SetWorkingCollisionBoundsTagsInfo)(uint8_t * pTagsBuffer, uint32_t unTagCount); + bool (OPENVR_FNTABLE_CALLTYPE *GetLiveCollisionBoundsTagsInfo)(uint8_t * pTagsBuffer, uint32_t * punTagCount); + bool (OPENVR_FNTABLE_CALLTYPE *SetWorkingPhysicalBoundsInfo)(struct HmdQuad_t * pQuadsBuffer, uint32_t unQuadsCount); + bool (OPENVR_FNTABLE_CALLTYPE *GetLivePhysicalBoundsInfo)(struct HmdQuad_t * pQuadsBuffer, uint32_t * punQuadsCount); + bool (OPENVR_FNTABLE_CALLTYPE *ExportLiveToBuffer)(char * pBuffer, uint32_t * pnBufferLength); + bool (OPENVR_FNTABLE_CALLTYPE *ImportFromBufferToWorking)(char * pBuffer, uint32_t nImportFlags); +}; + +struct VR_IVRCompositor_FnTable +{ + void (OPENVR_FNTABLE_CALLTYPE *SetTrackingSpace)(ETrackingUniverseOrigin eOrigin); + ETrackingUniverseOrigin (OPENVR_FNTABLE_CALLTYPE *GetTrackingSpace)(); + EVRCompositorError (OPENVR_FNTABLE_CALLTYPE *WaitGetPoses)(struct TrackedDevicePose_t * pRenderPoseArray, uint32_t unRenderPoseArrayCount, struct TrackedDevicePose_t * pGamePoseArray, uint32_t unGamePoseArrayCount); + EVRCompositorError (OPENVR_FNTABLE_CALLTYPE *GetLastPoses)(struct TrackedDevicePose_t * pRenderPoseArray, uint32_t unRenderPoseArrayCount, struct TrackedDevicePose_t * pGamePoseArray, uint32_t unGamePoseArrayCount); + EVRCompositorError (OPENVR_FNTABLE_CALLTYPE *GetLastPoseForTrackedDeviceIndex)(TrackedDeviceIndex_t unDeviceIndex, struct TrackedDevicePose_t * pOutputPose, struct TrackedDevicePose_t * pOutputGamePose); + EVRCompositorError (OPENVR_FNTABLE_CALLTYPE *Submit)(EVREye eEye, struct Texture_t * pTexture, struct VRTextureBounds_t * pBounds, EVRSubmitFlags nSubmitFlags); + void (OPENVR_FNTABLE_CALLTYPE *ClearLastSubmittedFrame)(); + void (OPENVR_FNTABLE_CALLTYPE *PostPresentHandoff)(); + bool (OPENVR_FNTABLE_CALLTYPE *GetFrameTiming)(struct Compositor_FrameTiming * pTiming, uint32_t unFramesAgo); + float (OPENVR_FNTABLE_CALLTYPE *GetFrameTimeRemaining)(); + void (OPENVR_FNTABLE_CALLTYPE *GetCumulativeStats)(struct Compositor_CumulativeStats * pStats, uint32_t nStatsSizeInBytes); + void (OPENVR_FNTABLE_CALLTYPE *FadeToColor)(float fSeconds, float fRed, float fGreen, float fBlue, float fAlpha, bool bBackground); + void (OPENVR_FNTABLE_CALLTYPE *FadeGrid)(float fSeconds, bool bFadeIn); + EVRCompositorError (OPENVR_FNTABLE_CALLTYPE *SetSkyboxOverride)(struct Texture_t * pTextures, uint32_t unTextureCount); + void (OPENVR_FNTABLE_CALLTYPE *ClearSkyboxOverride)(); + void (OPENVR_FNTABLE_CALLTYPE *CompositorBringToFront)(); + void (OPENVR_FNTABLE_CALLTYPE *CompositorGoToBack)(); + void (OPENVR_FNTABLE_CALLTYPE *CompositorQuit)(); + bool (OPENVR_FNTABLE_CALLTYPE *IsFullscreen)(); + uint32_t (OPENVR_FNTABLE_CALLTYPE *GetCurrentSceneFocusProcess)(); + uint32_t (OPENVR_FNTABLE_CALLTYPE *GetLastFrameRenderer)(); + bool (OPENVR_FNTABLE_CALLTYPE *CanRenderScene)(); + void (OPENVR_FNTABLE_CALLTYPE *ShowMirrorWindow)(); + void (OPENVR_FNTABLE_CALLTYPE *HideMirrorWindow)(); + bool (OPENVR_FNTABLE_CALLTYPE *IsMirrorWindowVisible)(); + void (OPENVR_FNTABLE_CALLTYPE *CompositorDumpImages)(); + bool (OPENVR_FNTABLE_CALLTYPE *ShouldAppRenderWithLowResources)(); + void (OPENVR_FNTABLE_CALLTYPE *ForceInterleavedReprojectionOn)(bool bOverride); + void (OPENVR_FNTABLE_CALLTYPE *ForceReconnectProcess)(); + void (OPENVR_FNTABLE_CALLTYPE *SuspendRendering)(bool bSuspend); + EVRCompositorError (OPENVR_FNTABLE_CALLTYPE *GetMirrorTextureD3D11)(EVREye eEye, void * pD3D11DeviceOrResource, void ** ppD3D11ShaderResourceView); + EVRCompositorError (OPENVR_FNTABLE_CALLTYPE *GetMirrorTextureGL)(EVREye eEye, glUInt_t * pglTextureId, glSharedTextureHandle_t * pglSharedTextureHandle); + bool (OPENVR_FNTABLE_CALLTYPE *ReleaseSharedGLTexture)(glUInt_t glTextureId, glSharedTextureHandle_t glSharedTextureHandle); + void (OPENVR_FNTABLE_CALLTYPE *LockGLSharedTextureForAccess)(glSharedTextureHandle_t glSharedTextureHandle); + void (OPENVR_FNTABLE_CALLTYPE *UnlockGLSharedTextureForAccess)(glSharedTextureHandle_t glSharedTextureHandle); +}; + +struct VR_IVROverlay_FnTable +{ + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *FindOverlay)(char * pchOverlayKey, VROverlayHandle_t * pOverlayHandle); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *CreateOverlay)(char * pchOverlayKey, char * pchOverlayFriendlyName, VROverlayHandle_t * pOverlayHandle); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *DestroyOverlay)(VROverlayHandle_t ulOverlayHandle); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetHighQualityOverlay)(VROverlayHandle_t ulOverlayHandle); + VROverlayHandle_t (OPENVR_FNTABLE_CALLTYPE *GetHighQualityOverlay)(); + uint32_t (OPENVR_FNTABLE_CALLTYPE *GetOverlayKey)(VROverlayHandle_t ulOverlayHandle, char * pchValue, uint32_t unBufferSize, EVROverlayError * pError); + uint32_t (OPENVR_FNTABLE_CALLTYPE *GetOverlayName)(VROverlayHandle_t ulOverlayHandle, char * pchValue, uint32_t unBufferSize, EVROverlayError * pError); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayImageData)(VROverlayHandle_t ulOverlayHandle, void * pvBuffer, uint32_t unBufferSize, uint32_t * punWidth, uint32_t * punHeight); + char * (OPENVR_FNTABLE_CALLTYPE *GetOverlayErrorNameFromEnum)(EVROverlayError error); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayRenderingPid)(VROverlayHandle_t ulOverlayHandle, uint32_t unPID); + uint32_t (OPENVR_FNTABLE_CALLTYPE *GetOverlayRenderingPid)(VROverlayHandle_t ulOverlayHandle); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayFlag)(VROverlayHandle_t ulOverlayHandle, VROverlayFlags eOverlayFlag, bool bEnabled); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayFlag)(VROverlayHandle_t ulOverlayHandle, VROverlayFlags eOverlayFlag, bool * pbEnabled); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayColor)(VROverlayHandle_t ulOverlayHandle, float fRed, float fGreen, float fBlue); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayColor)(VROverlayHandle_t ulOverlayHandle, float * pfRed, float * pfGreen, float * pfBlue); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayAlpha)(VROverlayHandle_t ulOverlayHandle, float fAlpha); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayAlpha)(VROverlayHandle_t ulOverlayHandle, float * pfAlpha); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayTexelAspect)(VROverlayHandle_t ulOverlayHandle, float fTexelAspect); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayTexelAspect)(VROverlayHandle_t ulOverlayHandle, float * pfTexelAspect); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlaySortOrder)(VROverlayHandle_t ulOverlayHandle, uint32_t unSortOrder); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlaySortOrder)(VROverlayHandle_t ulOverlayHandle, uint32_t * punSortOrder); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayWidthInMeters)(VROverlayHandle_t ulOverlayHandle, float fWidthInMeters); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayWidthInMeters)(VROverlayHandle_t ulOverlayHandle, float * pfWidthInMeters); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayAutoCurveDistanceRangeInMeters)(VROverlayHandle_t ulOverlayHandle, float fMinDistanceInMeters, float fMaxDistanceInMeters); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayAutoCurveDistanceRangeInMeters)(VROverlayHandle_t ulOverlayHandle, float * pfMinDistanceInMeters, float * pfMaxDistanceInMeters); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayTextureColorSpace)(VROverlayHandle_t ulOverlayHandle, EColorSpace eTextureColorSpace); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayTextureColorSpace)(VROverlayHandle_t ulOverlayHandle, EColorSpace * peTextureColorSpace); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayTextureBounds)(VROverlayHandle_t ulOverlayHandle, struct VRTextureBounds_t * pOverlayTextureBounds); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayTextureBounds)(VROverlayHandle_t ulOverlayHandle, struct VRTextureBounds_t * pOverlayTextureBounds); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayTransformType)(VROverlayHandle_t ulOverlayHandle, VROverlayTransformType * peTransformType); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayTransformAbsolute)(VROverlayHandle_t ulOverlayHandle, ETrackingUniverseOrigin eTrackingOrigin, struct HmdMatrix34_t * pmatTrackingOriginToOverlayTransform); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayTransformAbsolute)(VROverlayHandle_t ulOverlayHandle, ETrackingUniverseOrigin * peTrackingOrigin, struct HmdMatrix34_t * pmatTrackingOriginToOverlayTransform); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayTransformTrackedDeviceRelative)(VROverlayHandle_t ulOverlayHandle, TrackedDeviceIndex_t unTrackedDevice, struct HmdMatrix34_t * pmatTrackedDeviceToOverlayTransform); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayTransformTrackedDeviceRelative)(VROverlayHandle_t ulOverlayHandle, TrackedDeviceIndex_t * punTrackedDevice, struct HmdMatrix34_t * pmatTrackedDeviceToOverlayTransform); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayTransformTrackedDeviceComponent)(VROverlayHandle_t ulOverlayHandle, TrackedDeviceIndex_t unDeviceIndex, char * pchComponentName); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayTransformTrackedDeviceComponent)(VROverlayHandle_t ulOverlayHandle, TrackedDeviceIndex_t * punDeviceIndex, char * pchComponentName, uint32_t unComponentNameSize); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *ShowOverlay)(VROverlayHandle_t ulOverlayHandle); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *HideOverlay)(VROverlayHandle_t ulOverlayHandle); + bool (OPENVR_FNTABLE_CALLTYPE *IsOverlayVisible)(VROverlayHandle_t ulOverlayHandle); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetTransformForOverlayCoordinates)(VROverlayHandle_t ulOverlayHandle, ETrackingUniverseOrigin eTrackingOrigin, struct HmdVector2_t coordinatesInOverlay, struct HmdMatrix34_t * pmatTransform); + bool (OPENVR_FNTABLE_CALLTYPE *PollNextOverlayEvent)(VROverlayHandle_t ulOverlayHandle, struct VREvent_t * pEvent, uint32_t uncbVREvent); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayInputMethod)(VROverlayHandle_t ulOverlayHandle, VROverlayInputMethod * peInputMethod); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayInputMethod)(VROverlayHandle_t ulOverlayHandle, VROverlayInputMethod eInputMethod); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayMouseScale)(VROverlayHandle_t ulOverlayHandle, struct HmdVector2_t * pvecMouseScale); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayMouseScale)(VROverlayHandle_t ulOverlayHandle, struct HmdVector2_t * pvecMouseScale); + bool (OPENVR_FNTABLE_CALLTYPE *ComputeOverlayIntersection)(VROverlayHandle_t ulOverlayHandle, struct VROverlayIntersectionParams_t * pParams, struct VROverlayIntersectionResults_t * pResults); + bool (OPENVR_FNTABLE_CALLTYPE *HandleControllerOverlayInteractionAsMouse)(VROverlayHandle_t ulOverlayHandle, TrackedDeviceIndex_t unControllerDeviceIndex); + bool (OPENVR_FNTABLE_CALLTYPE *IsHoverTargetOverlay)(VROverlayHandle_t ulOverlayHandle); + VROverlayHandle_t (OPENVR_FNTABLE_CALLTYPE *GetGamepadFocusOverlay)(); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetGamepadFocusOverlay)(VROverlayHandle_t ulNewFocusOverlay); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayNeighbor)(EOverlayDirection eDirection, VROverlayHandle_t ulFrom, VROverlayHandle_t ulTo); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *MoveGamepadFocusToNeighbor)(EOverlayDirection eDirection, VROverlayHandle_t ulFrom); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayTexture)(VROverlayHandle_t ulOverlayHandle, struct Texture_t * pTexture); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *ClearOverlayTexture)(VROverlayHandle_t ulOverlayHandle); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayRaw)(VROverlayHandle_t ulOverlayHandle, void * pvBuffer, uint32_t unWidth, uint32_t unHeight, uint32_t unDepth); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayFromFile)(VROverlayHandle_t ulOverlayHandle, char * pchFilePath); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayTexture)(VROverlayHandle_t ulOverlayHandle, void ** pNativeTextureHandle, void * pNativeTextureRef, uint32_t * pWidth, uint32_t * pHeight, uint32_t * pNativeFormat, EGraphicsAPIConvention * pAPI, EColorSpace * pColorSpace); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *ReleaseNativeOverlayHandle)(VROverlayHandle_t ulOverlayHandle, void * pNativeTextureHandle); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayTextureSize)(VROverlayHandle_t ulOverlayHandle, uint32_t * pWidth, uint32_t * pHeight); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *CreateDashboardOverlay)(char * pchOverlayKey, char * pchOverlayFriendlyName, VROverlayHandle_t * pMainHandle, VROverlayHandle_t * pThumbnailHandle); + bool (OPENVR_FNTABLE_CALLTYPE *IsDashboardVisible)(); + bool (OPENVR_FNTABLE_CALLTYPE *IsActiveDashboardOverlay)(VROverlayHandle_t ulOverlayHandle); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetDashboardOverlaySceneProcess)(VROverlayHandle_t ulOverlayHandle, uint32_t unProcessId); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetDashboardOverlaySceneProcess)(VROverlayHandle_t ulOverlayHandle, uint32_t * punProcessId); + void (OPENVR_FNTABLE_CALLTYPE *ShowDashboard)(char * pchOverlayToShow); + TrackedDeviceIndex_t (OPENVR_FNTABLE_CALLTYPE *GetPrimaryDashboardDevice)(); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *ShowKeyboard)(EGamepadTextInputMode eInputMode, EGamepadTextInputLineMode eLineInputMode, char * pchDescription, uint32_t unCharMax, char * pchExistingText, bool bUseMinimalMode, uint64_t uUserValue); + EVROverlayError (OPENVR_FNTABLE_CALLTYPE *ShowKeyboardForOverlay)(VROverlayHandle_t ulOverlayHandle, EGamepadTextInputMode eInputMode, EGamepadTextInputLineMode eLineInputMode, char * pchDescription, uint32_t unCharMax, char * pchExistingText, bool bUseMinimalMode, uint64_t uUserValue); + uint32_t (OPENVR_FNTABLE_CALLTYPE *GetKeyboardText)(char * pchText, uint32_t cchText); + void (OPENVR_FNTABLE_CALLTYPE *HideKeyboard)(); + void (OPENVR_FNTABLE_CALLTYPE *SetKeyboardTransformAbsolute)(ETrackingUniverseOrigin eTrackingOrigin, struct HmdMatrix34_t * pmatTrackingOriginToKeyboardTransform); + void (OPENVR_FNTABLE_CALLTYPE *SetKeyboardPositionForOverlay)(VROverlayHandle_t ulOverlayHandle, struct HmdRect2_t avoidRect); +}; + +struct VR_IVRRenderModels_FnTable +{ + EVRRenderModelError (OPENVR_FNTABLE_CALLTYPE *LoadRenderModel_Async)(char * pchRenderModelName, struct RenderModel_t ** ppRenderModel); + void (OPENVR_FNTABLE_CALLTYPE *FreeRenderModel)(struct RenderModel_t * pRenderModel); + EVRRenderModelError (OPENVR_FNTABLE_CALLTYPE *LoadTexture_Async)(TextureID_t textureId, struct RenderModel_TextureMap_t ** ppTexture); + void (OPENVR_FNTABLE_CALLTYPE *FreeTexture)(struct RenderModel_TextureMap_t * pTexture); + EVRRenderModelError (OPENVR_FNTABLE_CALLTYPE *LoadTextureD3D11_Async)(TextureID_t textureId, void * pD3D11Device, void ** ppD3D11Texture2D); + EVRRenderModelError (OPENVR_FNTABLE_CALLTYPE *LoadIntoTextureD3D11_Async)(TextureID_t textureId, void * pDstTexture); + void (OPENVR_FNTABLE_CALLTYPE *FreeTextureD3D11)(void * pD3D11Texture2D); + uint32_t (OPENVR_FNTABLE_CALLTYPE *GetRenderModelName)(uint32_t unRenderModelIndex, char * pchRenderModelName, uint32_t unRenderModelNameLen); + uint32_t (OPENVR_FNTABLE_CALLTYPE *GetRenderModelCount)(); + uint32_t (OPENVR_FNTABLE_CALLTYPE *GetComponentCount)(char * pchRenderModelName); + uint32_t (OPENVR_FNTABLE_CALLTYPE *GetComponentName)(char * pchRenderModelName, uint32_t unComponentIndex, char * pchComponentName, uint32_t unComponentNameLen); + uint64_t (OPENVR_FNTABLE_CALLTYPE *GetComponentButtonMask)(char * pchRenderModelName, char * pchComponentName); + uint32_t (OPENVR_FNTABLE_CALLTYPE *GetComponentRenderModelName)(char * pchRenderModelName, char * pchComponentName, char * pchComponentRenderModelName, uint32_t unComponentRenderModelNameLen); + bool (OPENVR_FNTABLE_CALLTYPE *GetComponentState)(char * pchRenderModelName, char * pchComponentName, VRControllerState_t * pControllerState, struct RenderModel_ControllerMode_State_t * pState, struct RenderModel_ComponentState_t * pComponentState); + bool (OPENVR_FNTABLE_CALLTYPE *RenderModelHasComponent)(char * pchRenderModelName, char * pchComponentName); + uint32_t (OPENVR_FNTABLE_CALLTYPE *GetRenderModelThumbnailURL)(char * pchRenderModelName, char * pchThumbnailURL, uint32_t unThumbnailURLLen, EVRRenderModelError * peError); + uint32_t (OPENVR_FNTABLE_CALLTYPE *GetRenderModelOriginalPath)(char * pchRenderModelName, char * pchOriginalPath, uint32_t unOriginalPathLen, EVRRenderModelError * peError); + char * (OPENVR_FNTABLE_CALLTYPE *GetRenderModelErrorNameFromEnum)(EVRRenderModelError error); +}; + +struct VR_IVRNotifications_FnTable +{ + EVRNotificationError (OPENVR_FNTABLE_CALLTYPE *CreateNotification)(VROverlayHandle_t ulOverlayHandle, uint64_t ulUserValue, EVRNotificationType type, char * pchText, EVRNotificationStyle style, struct NotificationBitmap_t * pImage, VRNotificationId * pNotificationId); + EVRNotificationError (OPENVR_FNTABLE_CALLTYPE *RemoveNotification)(VRNotificationId notificationId); +}; + +struct VR_IVRSettings_FnTable +{ + char * (OPENVR_FNTABLE_CALLTYPE *GetSettingsErrorNameFromEnum)(EVRSettingsError eError); + bool (OPENVR_FNTABLE_CALLTYPE *Sync)(bool bForce, EVRSettingsError * peError); + void (OPENVR_FNTABLE_CALLTYPE *SetBool)(char * pchSection, char * pchSettingsKey, bool bValue, EVRSettingsError * peError); + void (OPENVR_FNTABLE_CALLTYPE *SetInt32)(char * pchSection, char * pchSettingsKey, int32_t nValue, EVRSettingsError * peError); + void (OPENVR_FNTABLE_CALLTYPE *SetFloat)(char * pchSection, char * pchSettingsKey, float flValue, EVRSettingsError * peError); + void (OPENVR_FNTABLE_CALLTYPE *SetString)(char * pchSection, char * pchSettingsKey, char * pchValue, EVRSettingsError * peError); + bool (OPENVR_FNTABLE_CALLTYPE *GetBool)(char * pchSection, char * pchSettingsKey, EVRSettingsError * peError); + int32_t (OPENVR_FNTABLE_CALLTYPE *GetInt32)(char * pchSection, char * pchSettingsKey, EVRSettingsError * peError); + float (OPENVR_FNTABLE_CALLTYPE *GetFloat)(char * pchSection, char * pchSettingsKey, EVRSettingsError * peError); + void (OPENVR_FNTABLE_CALLTYPE *GetString)(char * pchSection, char * pchSettingsKey, char * pchValue, uint32_t unValueLen, EVRSettingsError * peError); + void (OPENVR_FNTABLE_CALLTYPE *RemoveSection)(char * pchSection, EVRSettingsError * peError); + void (OPENVR_FNTABLE_CALLTYPE *RemoveKeyInSection)(char * pchSection, char * pchSettingsKey, EVRSettingsError * peError); +}; + +struct VR_IVRScreenshots_FnTable +{ + EVRScreenshotError (OPENVR_FNTABLE_CALLTYPE *RequestScreenshot)(ScreenshotHandle_t * pOutScreenshotHandle, EVRScreenshotType type, char * pchPreviewFilename, char * pchVRFilename); + EVRScreenshotError (OPENVR_FNTABLE_CALLTYPE *HookScreenshot)(EVRScreenshotType * pSupportedTypes, int numTypes); + EVRScreenshotType (OPENVR_FNTABLE_CALLTYPE *GetScreenshotPropertyType)(ScreenshotHandle_t screenshotHandle, EVRScreenshotError * pError); + uint32_t (OPENVR_FNTABLE_CALLTYPE *GetScreenshotPropertyFilename)(ScreenshotHandle_t screenshotHandle, EVRScreenshotPropertyFilenames filenameType, char * pchFilename, uint32_t cchFilename, EVRScreenshotError * pError); + EVRScreenshotError (OPENVR_FNTABLE_CALLTYPE *UpdateScreenshotProgress)(ScreenshotHandle_t screenshotHandle, float flProgress); + EVRScreenshotError (OPENVR_FNTABLE_CALLTYPE *TakeStereoScreenshot)(ScreenshotHandle_t * pOutScreenshotHandle, char * pchPreviewFilename, char * pchVRFilename); + EVRScreenshotError (OPENVR_FNTABLE_CALLTYPE *SubmitScreenshot)(ScreenshotHandle_t screenshotHandle, EVRScreenshotType type, char * pchSourcePreviewFilename, char * pchSourceVRFilename); +}; + +struct VR_IVRResources_FnTable +{ + uint32_t (OPENVR_FNTABLE_CALLTYPE *LoadSharedResource)(char * pchResourceName, char * pchBuffer, uint32_t unBufferLen); + uint32_t (OPENVR_FNTABLE_CALLTYPE *GetResourceFullPath)(char * pchResourceName, char * pchResourceTypeDirectory, char * pchPathBuffer, uint32_t unBufferLen); +}; + + +#if 0 +// Global entry points +S_API intptr_t VR_InitInternal( EVRInitError *peError, EVRApplicationType eType ); +S_API void VR_ShutdownInternal(); +S_API bool VR_IsHmdPresent(); +S_API intptr_t VR_GetGenericInterface( const char *pchInterfaceVersion, EVRInitError *peError ); +S_API bool VR_IsRuntimeInstalled(); +S_API const char * VR_GetVRInitErrorAsSymbol( EVRInitError error ); +S_API const char * VR_GetVRInitErrorAsEnglishDescription( EVRInitError error ); +#endif + +#endif // __OPENVR_API_FLAT_H__ + + diff --git a/third-party/openvr/include/openvr_driver.h b/third-party/openvr/include/openvr_driver.h new file mode 100644 index 0000000..643c117 --- /dev/null +++ b/third-party/openvr/include/openvr_driver.h @@ -0,0 +1,1963 @@ +#pragma once + +// openvr_driver.h +//========= Copyright Valve Corporation ============// +// Dynamically generated file. Do not modify this file directly. + +#ifndef _OPENVR_DRIVER_API +#define _OPENVR_DRIVER_API + +#include + + + +// vrtypes.h +#ifndef _INCLUDE_VRTYPES_H +#define _INCLUDE_VRTYPES_H + +// Forward declarations to avoid requiring vulkan.h +struct VkDevice_T; +struct VkPhysicalDevice_T; +struct VkInstance_T; +struct VkQueue_T; + +namespace vr +{ + +#if defined(__linux__) || defined(__APPLE__) + // The 32-bit version of gcc has the alignment requirement for uint64 and double set to + // 4 meaning that even with #pragma pack(8) these types will only be four-byte aligned. + // The 64-bit version of gcc has the alignment requirement for these types set to + // 8 meaning that unless we use #pragma pack(4) our structures will get bigger. + // The 64-bit structure packing has to match the 32-bit structure packing for each platform. + #pragma pack( push, 4 ) +#else + #pragma pack( push, 8 ) +#endif + +typedef void* glSharedTextureHandle_t; +typedef int32_t glInt_t; +typedef uint32_t glUInt_t; + +// right-handed system +// +y is up +// +x is to the right +// -z is going away from you +// Distance unit is meters +struct HmdMatrix34_t +{ + float m[3][4]; +}; + +struct HmdMatrix44_t +{ + float m[4][4]; +}; + +struct HmdVector3_t +{ + float v[3]; +}; + +struct HmdVector4_t +{ + float v[4]; +}; + +struct HmdVector3d_t +{ + double v[3]; +}; + +struct HmdVector2_t +{ + float v[2]; +}; + +struct HmdQuaternion_t +{ + double w, x, y, z; +}; + +struct HmdColor_t +{ + float r, g, b, a; +}; + +struct HmdQuad_t +{ + HmdVector3_t vCorners[ 4 ]; +}; + +struct HmdRect2_t +{ + HmdVector2_t vTopLeft; + HmdVector2_t vBottomRight; +}; + +/** Used to return the post-distortion UVs for each color channel. +* UVs range from 0 to 1 with 0,0 in the upper left corner of the +* source render target. The 0,0 to 1,1 range covers a single eye. */ +struct DistortionCoordinates_t +{ + float rfRed[2]; + float rfGreen[2]; + float rfBlue[2]; +}; + +enum EVREye +{ + Eye_Left = 0, + Eye_Right = 1 +}; + +enum EGraphicsAPIConvention +{ + API_DirectX = 0, // Normalized Z goes from 0 at the viewer to 1 at the far clip plane + API_OpenGL = 1, // Normalized Z goes from 1 at the viewer to -1 at the far clip plane +}; + +enum EColorSpace +{ + ColorSpace_Auto = 0, // Assumes 'gamma' for 8-bit per component formats, otherwise 'linear'. This mirrors the DXGI formats which have _SRGB variants. + ColorSpace_Gamma = 1, // Texture data can be displayed directly on the display without any conversion (a.k.a. display native format). + ColorSpace_Linear = 2, // Same as gamma but has been converted to a linear representation using DXGI's sRGB conversion algorithm. +}; + +struct Texture_t +{ + void* handle; // Native d3d texture pointer or GL texture id. + EGraphicsAPIConvention eType; + EColorSpace eColorSpace; +}; + +// Handle to a shared texture (HANDLE on Windows obtained using OpenSharedResource). +typedef uint64_t SharedTextureHandle_t; +#define INVALID_SHARED_TEXTURE_HANDLE ((vr::SharedTextureHandle_t)0) + +enum ETrackingResult +{ + TrackingResult_Uninitialized = 1, + + TrackingResult_Calibrating_InProgress = 100, + TrackingResult_Calibrating_OutOfRange = 101, + + TrackingResult_Running_OK = 200, + TrackingResult_Running_OutOfRange = 201, +}; + +static const uint32_t k_unTrackingStringSize = 32; +static const uint32_t k_unMaxDriverDebugResponseSize = 32768; + +/** Used to pass device IDs to API calls */ +typedef uint32_t TrackedDeviceIndex_t; +static const uint32_t k_unTrackedDeviceIndex_Hmd = 0; +static const uint32_t k_unMaxTrackedDeviceCount = 16; +static const uint32_t k_unTrackedDeviceIndexOther = 0xFFFFFFFE; +static const uint32_t k_unTrackedDeviceIndexInvalid = 0xFFFFFFFF; + +/** Describes what kind of object is being tracked at a given ID */ +enum ETrackedDeviceClass +{ + TrackedDeviceClass_Invalid = 0, // the ID was not valid. + TrackedDeviceClass_HMD = 1, // Head-Mounted Displays + TrackedDeviceClass_Controller = 2, // Tracked controllers + TrackedDeviceClass_TrackingReference = 4, // Camera and base stations that serve as tracking reference points + + TrackedDeviceClass_Count, // This isn't a class that will ever be returned. It is used for allocating arrays and such + + TrackedDeviceClass_Other = 1000, +}; + + +/** Describes what specific role associated with a tracked device */ +enum ETrackedControllerRole +{ + TrackedControllerRole_Invalid = 0, // Invalid value for controller type + TrackedControllerRole_LeftHand = 1, // Tracked device associated with the left hand + TrackedControllerRole_RightHand = 2, // Tracked device associated with the right hand +}; + + +/** describes a single pose for a tracked object */ +struct TrackedDevicePose_t +{ + HmdMatrix34_t mDeviceToAbsoluteTracking; + HmdVector3_t vVelocity; // velocity in tracker space in m/s + HmdVector3_t vAngularVelocity; // angular velocity in radians/s (?) + ETrackingResult eTrackingResult; + bool bPoseIsValid; + + // This indicates that there is a device connected for this spot in the pose array. + // It could go from true to false if the user unplugs the device. + bool bDeviceIsConnected; +}; + +/** Identifies which style of tracking origin the application wants to use +* for the poses it is requesting */ +enum ETrackingUniverseOrigin +{ + TrackingUniverseSeated = 0, // Poses are provided relative to the seated zero pose + TrackingUniverseStanding = 1, // Poses are provided relative to the safe bounds configured by the user + TrackingUniverseRawAndUncalibrated = 2, // Poses are provided in the coordinate system defined by the driver. You probably don't want this one. +}; + + +/** Each entry in this enum represents a property that can be retrieved about a +* tracked device. Many fields are only valid for one ETrackedDeviceClass. */ +enum ETrackedDeviceProperty +{ + // general properties that apply to all device classes + Prop_TrackingSystemName_String = 1000, + Prop_ModelNumber_String = 1001, + Prop_SerialNumber_String = 1002, + Prop_RenderModelName_String = 1003, + Prop_WillDriftInYaw_Bool = 1004, + Prop_ManufacturerName_String = 1005, + Prop_TrackingFirmwareVersion_String = 1006, + Prop_HardwareRevision_String = 1007, + Prop_AllWirelessDongleDescriptions_String = 1008, + Prop_ConnectedWirelessDongle_String = 1009, + Prop_DeviceIsWireless_Bool = 1010, + Prop_DeviceIsCharging_Bool = 1011, + Prop_DeviceBatteryPercentage_Float = 1012, // 0 is empty, 1 is full + Prop_StatusDisplayTransform_Matrix34 = 1013, + Prop_Firmware_UpdateAvailable_Bool = 1014, + Prop_Firmware_ManualUpdate_Bool = 1015, + Prop_Firmware_ManualUpdateURL_String = 1016, + Prop_HardwareRevision_Uint64 = 1017, + Prop_FirmwareVersion_Uint64 = 1018, + Prop_FPGAVersion_Uint64 = 1019, + Prop_VRCVersion_Uint64 = 1020, + Prop_RadioVersion_Uint64 = 1021, + Prop_DongleVersion_Uint64 = 1022, + Prop_BlockServerShutdown_Bool = 1023, + Prop_CanUnifyCoordinateSystemWithHmd_Bool = 1024, + Prop_ContainsProximitySensor_Bool = 1025, + Prop_DeviceProvidesBatteryStatus_Bool = 1026, + Prop_DeviceCanPowerOff_Bool = 1027, + Prop_Firmware_ProgrammingTarget_String = 1028, + Prop_DeviceClass_Int32 = 1029, + Prop_HasCamera_Bool = 1030, + Prop_DriverVersion_String = 1031, + Prop_Firmware_ForceUpdateRequired_Bool = 1032, + + // Properties that are unique to TrackedDeviceClass_HMD + Prop_ReportsTimeSinceVSync_Bool = 2000, + Prop_SecondsFromVsyncToPhotons_Float = 2001, + Prop_DisplayFrequency_Float = 2002, + Prop_UserIpdMeters_Float = 2003, + Prop_CurrentUniverseId_Uint64 = 2004, + Prop_PreviousUniverseId_Uint64 = 2005, + Prop_DisplayFirmwareVersion_Uint64 = 2006, + Prop_IsOnDesktop_Bool = 2007, + Prop_DisplayMCType_Int32 = 2008, + Prop_DisplayMCOffset_Float = 2009, + Prop_DisplayMCScale_Float = 2010, + Prop_EdidVendorID_Int32 = 2011, + Prop_DisplayMCImageLeft_String = 2012, + Prop_DisplayMCImageRight_String = 2013, + Prop_DisplayGCBlackClamp_Float = 2014, + Prop_EdidProductID_Int32 = 2015, + Prop_CameraToHeadTransform_Matrix34 = 2016, + Prop_DisplayGCType_Int32 = 2017, + Prop_DisplayGCOffset_Float = 2018, + Prop_DisplayGCScale_Float = 2019, + Prop_DisplayGCPrescale_Float = 2020, + Prop_DisplayGCImage_String = 2021, + Prop_LensCenterLeftU_Float = 2022, + Prop_LensCenterLeftV_Float = 2023, + Prop_LensCenterRightU_Float = 2024, + Prop_LensCenterRightV_Float = 2025, + Prop_UserHeadToEyeDepthMeters_Float = 2026, + Prop_CameraFirmwareVersion_Uint64 = 2027, + Prop_CameraFirmwareDescription_String = 2028, + Prop_DisplayFPGAVersion_Uint64 = 2029, + Prop_DisplayBootloaderVersion_Uint64 = 2030, + Prop_DisplayHardwareVersion_Uint64 = 2031, + Prop_AudioFirmwareVersion_Uint64 = 2032, + Prop_CameraCompatibilityMode_Int32 = 2033, + Prop_ScreenshotHorizontalFieldOfViewDegrees_Float = 2034, + Prop_ScreenshotVerticalFieldOfViewDegrees_Float = 2035, + Prop_DisplaySuppressed_Bool = 2036, + + // Properties that are unique to TrackedDeviceClass_Controller + Prop_AttachedDeviceId_String = 3000, + Prop_SupportedButtons_Uint64 = 3001, + Prop_Axis0Type_Int32 = 3002, // Return value is of type EVRControllerAxisType + Prop_Axis1Type_Int32 = 3003, // Return value is of type EVRControllerAxisType + Prop_Axis2Type_Int32 = 3004, // Return value is of type EVRControllerAxisType + Prop_Axis3Type_Int32 = 3005, // Return value is of type EVRControllerAxisType + Prop_Axis4Type_Int32 = 3006, // Return value is of type EVRControllerAxisType + Prop_ControllerRoleHint_Int32 = 3007, // Return value is of type ETrackedControllerRole + + // Properties that are unique to TrackedDeviceClass_TrackingReference + Prop_FieldOfViewLeftDegrees_Float = 4000, + Prop_FieldOfViewRightDegrees_Float = 4001, + Prop_FieldOfViewTopDegrees_Float = 4002, + Prop_FieldOfViewBottomDegrees_Float = 4003, + Prop_TrackingRangeMinimumMeters_Float = 4004, + Prop_TrackingRangeMaximumMeters_Float = 4005, + Prop_ModeLabel_String = 4006, + + // Properties that are used for user interface like icons names + Prop_IconPathName_String = 5000, // usually a directory named "icons" + Prop_NamedIconPathDeviceOff_String = 5001, // PNG for static icon, or GIF for animation, 50x32 for headsets and 32x32 for others + Prop_NamedIconPathDeviceSearching_String = 5002, // PNG for static icon, or GIF for animation, 50x32 for headsets and 32x32 for others + Prop_NamedIconPathDeviceSearchingAlert_String = 5003, // PNG for static icon, or GIF for animation, 50x32 for headsets and 32x32 for others + Prop_NamedIconPathDeviceReady_String = 5004, // PNG for static icon, or GIF for animation, 50x32 for headsets and 32x32 for others + Prop_NamedIconPathDeviceReadyAlert_String = 5005, // PNG for static icon, or GIF for animation, 50x32 for headsets and 32x32 for others + Prop_NamedIconPathDeviceNotReady_String = 5006, // PNG for static icon, or GIF for animation, 50x32 for headsets and 32x32 for others + Prop_NamedIconPathDeviceStandby_String = 5007, // PNG for static icon, or GIF for animation, 50x32 for headsets and 32x32 for others + Prop_NamedIconPathDeviceAlertLow_String = 5008, // PNG for static icon, or GIF for animation, 50x32 for headsets and 32x32 for others + + // Vendors are free to expose private debug data in this reserved region + Prop_VendorSpecific_Reserved_Start = 10000, + Prop_VendorSpecific_Reserved_End = 10999, +}; + +/** No string property will ever be longer than this length */ +static const uint32_t k_unMaxPropertyStringSize = 32 * 1024; + +/** Used to return errors that occur when reading properties. */ +enum ETrackedPropertyError +{ + TrackedProp_Success = 0, + TrackedProp_WrongDataType = 1, + TrackedProp_WrongDeviceClass = 2, + TrackedProp_BufferTooSmall = 3, + TrackedProp_UnknownProperty = 4, + TrackedProp_InvalidDevice = 5, + TrackedProp_CouldNotContactServer = 6, + TrackedProp_ValueNotProvidedByDevice = 7, + TrackedProp_StringExceedsMaximumLength = 8, + TrackedProp_NotYetAvailable = 9, // The property value isn't known yet, but is expected soon. Call again later. +}; + +/** Allows the application to control what part of the provided texture will be used in the +* frame buffer. */ +struct VRTextureBounds_t +{ + float uMin, vMin; + float uMax, vMax; +}; + + +/** Allows the application to control how scene textures are used by the compositor when calling Submit. */ +enum EVRSubmitFlags +{ + // Simple render path. App submits rendered left and right eye images with no lens distortion correction applied. + Submit_Default = 0x00, + + // App submits final left and right eye images with lens distortion already applied (lens distortion makes the images appear + // barrel distorted with chromatic aberration correction applied). The app would have used the data returned by + // vr::IVRSystem::ComputeDistortion() to apply the correct distortion to the rendered images before calling Submit(). + Submit_LensDistortionAlreadyApplied = 0x01, + + // If the texture pointer passed in is actually a renderbuffer (e.g. for MSAA in OpenGL) then set this flag. + Submit_GlRenderBuffer = 0x02, + + // Handle is pointer to VulkanData_t + Submit_VulkanTexture = 0x04, +}; + +/** Data required for passing Vulkan textures to IVRCompositor::Submit. +* Be sure to call OpenVR_Shutdown before destroying these resources. */ +struct VulkanData_t +{ + uint64_t m_nImage; // VkImage + VkDevice_T *m_pDevice; + VkPhysicalDevice_T *m_pPhysicalDevice; + VkInstance_T *m_pInstance; + VkQueue_T *m_pQueue; + uint32_t m_nQueueFamilyIndex; + uint32_t m_nWidth, m_nHeight, m_nFormat, m_nSampleCount; +}; + + +/** Status of the overall system or tracked objects */ +enum EVRState +{ + VRState_Undefined = -1, + VRState_Off = 0, + VRState_Searching = 1, + VRState_Searching_Alert = 2, + VRState_Ready = 3, + VRState_Ready_Alert = 4, + VRState_NotReady = 5, + VRState_Standby = 6, + VRState_Ready_Alert_Low = 7, +}; + +/** The types of events that could be posted (and what the parameters mean for each event type) */ +enum EVREventType +{ + VREvent_None = 0, + + VREvent_TrackedDeviceActivated = 100, + VREvent_TrackedDeviceDeactivated = 101, + VREvent_TrackedDeviceUpdated = 102, + VREvent_TrackedDeviceUserInteractionStarted = 103, + VREvent_TrackedDeviceUserInteractionEnded = 104, + VREvent_IpdChanged = 105, + VREvent_EnterStandbyMode = 106, + VREvent_LeaveStandbyMode = 107, + VREvent_TrackedDeviceRoleChanged = 108, + VREvent_WatchdogWakeUpRequested = 109, + VREvent_LensDistortionChanged = 110, + + VREvent_ButtonPress = 200, // data is controller + VREvent_ButtonUnpress = 201, // data is controller + VREvent_ButtonTouch = 202, // data is controller + VREvent_ButtonUntouch = 203, // data is controller + + VREvent_MouseMove = 300, // data is mouse + VREvent_MouseButtonDown = 301, // data is mouse + VREvent_MouseButtonUp = 302, // data is mouse + VREvent_FocusEnter = 303, // data is overlay + VREvent_FocusLeave = 304, // data is overlay + VREvent_Scroll = 305, // data is mouse + VREvent_TouchPadMove = 306, // data is mouse + VREvent_OverlayFocusChanged = 307, // data is overlay, global event + + VREvent_InputFocusCaptured = 400, // data is process DEPRECATED + VREvent_InputFocusReleased = 401, // data is process DEPRECATED + VREvent_SceneFocusLost = 402, // data is process + VREvent_SceneFocusGained = 403, // data is process + VREvent_SceneApplicationChanged = 404, // data is process - The App actually drawing the scene changed (usually to or from the compositor) + VREvent_SceneFocusChanged = 405, // data is process - New app got access to draw the scene + VREvent_InputFocusChanged = 406, // data is process + VREvent_SceneApplicationSecondaryRenderingStarted = 407, // data is process + + VREvent_HideRenderModels = 410, // Sent to the scene application to request hiding render models temporarily + VREvent_ShowRenderModels = 411, // Sent to the scene application to request restoring render model visibility + + VREvent_OverlayShown = 500, + VREvent_OverlayHidden = 501, + VREvent_DashboardActivated = 502, + VREvent_DashboardDeactivated = 503, + VREvent_DashboardThumbSelected = 504, // Sent to the overlay manager - data is overlay + VREvent_DashboardRequested = 505, // Sent to the overlay manager - data is overlay + VREvent_ResetDashboard = 506, // Send to the overlay manager + VREvent_RenderToast = 507, // Send to the dashboard to render a toast - data is the notification ID + VREvent_ImageLoaded = 508, // Sent to overlays when a SetOverlayRaw or SetOverlayFromFile call finishes loading + VREvent_ShowKeyboard = 509, // Sent to keyboard renderer in the dashboard to invoke it + VREvent_HideKeyboard = 510, // Sent to keyboard renderer in the dashboard to hide it + VREvent_OverlayGamepadFocusGained = 511, // Sent to an overlay when IVROverlay::SetFocusOverlay is called on it + VREvent_OverlayGamepadFocusLost = 512, // Send to an overlay when it previously had focus and IVROverlay::SetFocusOverlay is called on something else + VREvent_OverlaySharedTextureChanged = 513, + VREvent_DashboardGuideButtonDown = 514, + VREvent_DashboardGuideButtonUp = 515, + VREvent_ScreenshotTriggered = 516, // Screenshot button combo was pressed, Dashboard should request a screenshot + VREvent_ImageFailed = 517, // Sent to overlays when a SetOverlayRaw or SetOverlayfromFail fails to load + VREvent_DashboardOverlayCreated = 518, + + // Screenshot API + VREvent_RequestScreenshot = 520, // Sent by vrclient application to compositor to take a screenshot + VREvent_ScreenshotTaken = 521, // Sent by compositor to the application that the screenshot has been taken + VREvent_ScreenshotFailed = 522, // Sent by compositor to the application that the screenshot failed to be taken + VREvent_SubmitScreenshotToDashboard = 523, // Sent by compositor to the dashboard that a completed screenshot was submitted + VREvent_ScreenshotProgressToDashboard = 524, // Sent by compositor to the dashboard that a completed screenshot was submitted + + VREvent_Notification_Shown = 600, + VREvent_Notification_Hidden = 601, + VREvent_Notification_BeginInteraction = 602, + VREvent_Notification_Destroyed = 603, + + VREvent_Quit = 700, // data is process + VREvent_ProcessQuit = 701, // data is process + VREvent_QuitAborted_UserPrompt = 702, // data is process + VREvent_QuitAcknowledged = 703, // data is process + VREvent_DriverRequestedQuit = 704, // The driver has requested that SteamVR shut down + + VREvent_ChaperoneDataHasChanged = 800, + VREvent_ChaperoneUniverseHasChanged = 801, + VREvent_ChaperoneTempDataHasChanged = 802, + VREvent_ChaperoneSettingsHaveChanged = 803, + VREvent_SeatedZeroPoseReset = 804, + + VREvent_AudioSettingsHaveChanged = 820, + + VREvent_BackgroundSettingHasChanged = 850, + VREvent_CameraSettingsHaveChanged = 851, + VREvent_ReprojectionSettingHasChanged = 852, + VREvent_ModelSkinSettingsHaveChanged = 853, + VREvent_EnvironmentSettingsHaveChanged = 854, + VREvent_PowerSettingsHaveChanged = 855, + + VREvent_StatusUpdate = 900, + + VREvent_MCImageUpdated = 1000, + + VREvent_FirmwareUpdateStarted = 1100, + VREvent_FirmwareUpdateFinished = 1101, + + VREvent_KeyboardClosed = 1200, + VREvent_KeyboardCharInput = 1201, + VREvent_KeyboardDone = 1202, // Sent when DONE button clicked on keyboard + + VREvent_ApplicationTransitionStarted = 1300, + VREvent_ApplicationTransitionAborted = 1301, + VREvent_ApplicationTransitionNewAppStarted = 1302, + VREvent_ApplicationListUpdated = 1303, + VREvent_ApplicationMimeTypeLoad = 1304, + + VREvent_Compositor_MirrorWindowShown = 1400, + VREvent_Compositor_MirrorWindowHidden = 1401, + VREvent_Compositor_ChaperoneBoundsShown = 1410, + VREvent_Compositor_ChaperoneBoundsHidden = 1411, + + VREvent_TrackedCamera_StartVideoStream = 1500, + VREvent_TrackedCamera_StopVideoStream = 1501, + VREvent_TrackedCamera_PauseVideoStream = 1502, + VREvent_TrackedCamera_ResumeVideoStream = 1503, + VREvent_TrackedCamera_EditingSurface = 1550, + + VREvent_PerformanceTest_EnableCapture = 1600, + VREvent_PerformanceTest_DisableCapture = 1601, + VREvent_PerformanceTest_FidelityLevel = 1602, + + // Vendors are free to expose private events in this reserved region + VREvent_VendorSpecific_Reserved_Start = 10000, + VREvent_VendorSpecific_Reserved_End = 19999, +}; + + +/** Level of Hmd activity */ +enum EDeviceActivityLevel +{ + k_EDeviceActivityLevel_Unknown = -1, + k_EDeviceActivityLevel_Idle = 0, + k_EDeviceActivityLevel_UserInteraction = 1, + k_EDeviceActivityLevel_UserInteraction_Timeout = 2, + k_EDeviceActivityLevel_Standby = 3, +}; + + +/** VR controller button and axis IDs */ +enum EVRButtonId +{ + k_EButton_System = 0, + k_EButton_ApplicationMenu = 1, + k_EButton_Grip = 2, + k_EButton_DPad_Left = 3, + k_EButton_DPad_Up = 4, + k_EButton_DPad_Right = 5, + k_EButton_DPad_Down = 6, + k_EButton_A = 7, + + k_EButton_ProximitySensor = 31, + + k_EButton_Axis0 = 32, + k_EButton_Axis1 = 33, + k_EButton_Axis2 = 34, + k_EButton_Axis3 = 35, + k_EButton_Axis4 = 36, + + // aliases for well known controllers + k_EButton_SteamVR_Touchpad = k_EButton_Axis0, + k_EButton_SteamVR_Trigger = k_EButton_Axis1, + + k_EButton_Dashboard_Back = k_EButton_Grip, + + k_EButton_Max = 64 +}; + +inline uint64_t ButtonMaskFromId( EVRButtonId id ) { return 1ull << id; } + +/** used for controller button events */ +struct VREvent_Controller_t +{ + uint32_t button; // EVRButtonId enum +}; + + +/** used for simulated mouse events in overlay space */ +enum EVRMouseButton +{ + VRMouseButton_Left = 0x0001, + VRMouseButton_Right = 0x0002, + VRMouseButton_Middle = 0x0004, +}; + + +/** used for simulated mouse events in overlay space */ +struct VREvent_Mouse_t +{ + float x, y; // co-ords are in GL space, bottom left of the texture is 0,0 + uint32_t button; // EVRMouseButton enum +}; + +/** used for simulated mouse wheel scroll in overlay space */ +struct VREvent_Scroll_t +{ + float xdelta, ydelta; // movement in fraction of the pad traversed since last delta, 1.0 for a full swipe + uint32_t repeatCount; +}; + +/** when in mouse input mode you can receive data from the touchpad, these events are only sent if the users finger + is on the touchpad (or just released from it) +**/ +struct VREvent_TouchPadMove_t +{ + // true if the users finger is detected on the touch pad + bool bFingerDown; + + // How long the finger has been down in seconds + float flSecondsFingerDown; + + // These values indicate the starting finger position (so you can do some basic swipe stuff) + float fValueXFirst; + float fValueYFirst; + + // This is the raw sampled coordinate without deadzoning + float fValueXRaw; + float fValueYRaw; +}; + +/** notification related events. Details will still change at this point */ +struct VREvent_Notification_t +{ + uint64_t ulUserValue; + uint32_t notificationId; +}; + +/** Used for events about processes */ +struct VREvent_Process_t +{ + uint32_t pid; + uint32_t oldPid; + bool bForced; +}; + + +/** Used for a few events about overlays */ +struct VREvent_Overlay_t +{ + uint64_t overlayHandle; +}; + + +/** Used for a few events about overlays */ +struct VREvent_Status_t +{ + uint32_t statusState; // EVRState enum +}; + +/** Used for keyboard events **/ +struct VREvent_Keyboard_t +{ + char cNewInput[8]; // Up to 11 bytes of new input + uint64_t uUserValue; // Possible flags about the new input +}; + +struct VREvent_Ipd_t +{ + float ipdMeters; +}; + +struct VREvent_Chaperone_t +{ + uint64_t m_nPreviousUniverse; + uint64_t m_nCurrentUniverse; +}; + +/** Not actually used for any events */ +struct VREvent_Reserved_t +{ + uint64_t reserved0; + uint64_t reserved1; +}; + +struct VREvent_PerformanceTest_t +{ + uint32_t m_nFidelityLevel; +}; + +struct VREvent_SeatedZeroPoseReset_t +{ + bool bResetBySystemMenu; +}; + +struct VREvent_Screenshot_t +{ + uint32_t handle; + uint32_t type; +}; + +struct VREvent_ScreenshotProgress_t +{ + float progress; +}; + +struct VREvent_ApplicationLaunch_t +{ + uint32_t pid; + uint32_t unArgsHandle; +}; + +struct VREvent_EditingCameraSurface_t +{ + uint64_t overlayHandle; + uint32_t nVisualMode; +}; + +/** If you change this you must manually update openvr_interop.cs.py */ +typedef union +{ + VREvent_Reserved_t reserved; + VREvent_Controller_t controller; + VREvent_Mouse_t mouse; + VREvent_Scroll_t scroll; + VREvent_Process_t process; + VREvent_Notification_t notification; + VREvent_Overlay_t overlay; + VREvent_Status_t status; + VREvent_Keyboard_t keyboard; + VREvent_Ipd_t ipd; + VREvent_Chaperone_t chaperone; + VREvent_PerformanceTest_t performanceTest; + VREvent_TouchPadMove_t touchPadMove; + VREvent_SeatedZeroPoseReset_t seatedZeroPoseReset; + VREvent_Screenshot_t screenshot; + VREvent_ScreenshotProgress_t screenshotProgress; + VREvent_ApplicationLaunch_t applicationLaunch; + VREvent_EditingCameraSurface_t cameraSurface; +} VREvent_Data_t; + +/** An event posted by the server to all running applications */ +struct VREvent_t +{ + uint32_t eventType; // EVREventType enum + TrackedDeviceIndex_t trackedDeviceIndex; + float eventAgeSeconds; + // event data must be the end of the struct as its size is variable + VREvent_Data_t data; +}; + + +/** The mesh to draw into the stencil (or depth) buffer to perform +* early stencil (or depth) kills of pixels that will never appear on the HMD. +* This mesh draws on all the pixels that will be hidden after distortion. +* +* If the HMD does not provide a visible area mesh pVertexData will be +* NULL and unTriangleCount will be 0. */ +struct HiddenAreaMesh_t +{ + const HmdVector2_t *pVertexData; + uint32_t unTriangleCount; +}; + + +/** Identifies what kind of axis is on the controller at index n. Read this type +* with pVRSystem->Get( nControllerDeviceIndex, Prop_Axis0Type_Int32 + n ); +*/ +enum EVRControllerAxisType +{ + k_eControllerAxis_None = 0, + k_eControllerAxis_TrackPad = 1, + k_eControllerAxis_Joystick = 2, + k_eControllerAxis_Trigger = 3, // Analog trigger data is in the X axis +}; + + +/** contains information about one axis on the controller */ +struct VRControllerAxis_t +{ + float x; // Ranges from -1.0 to 1.0 for joysticks and track pads. Ranges from 0.0 to 1.0 for triggers were 0 is fully released. + float y; // Ranges from -1.0 to 1.0 for joysticks and track pads. Is always 0.0 for triggers. +}; + + +/** the number of axes in the controller state */ +static const uint32_t k_unControllerStateAxisCount = 5; + + +/** Holds all the state of a controller at one moment in time. */ +struct VRControllerState001_t +{ + // If packet num matches that on your prior call, then the controller state hasn't been changed since + // your last call and there is no need to process it + uint32_t unPacketNum; + + // bit flags for each of the buttons. Use ButtonMaskFromId to turn an ID into a mask + uint64_t ulButtonPressed; + uint64_t ulButtonTouched; + + // Axis data for the controller's analog inputs + VRControllerAxis_t rAxis[ k_unControllerStateAxisCount ]; +}; + + +typedef VRControllerState001_t VRControllerState_t; + + +/** determines how to provide output to the application of various event processing functions. */ +enum EVRControllerEventOutputType +{ + ControllerEventOutput_OSEvents = 0, + ControllerEventOutput_VREvents = 1, +}; + + + +/** Collision Bounds Style */ +enum ECollisionBoundsStyle +{ + COLLISION_BOUNDS_STYLE_BEGINNER = 0, + COLLISION_BOUNDS_STYLE_INTERMEDIATE, + COLLISION_BOUNDS_STYLE_SQUARES, + COLLISION_BOUNDS_STYLE_ADVANCED, + COLLISION_BOUNDS_STYLE_NONE, + + COLLISION_BOUNDS_STYLE_COUNT +}; + +/** Allows the application to customize how the overlay appears in the compositor */ +struct Compositor_OverlaySettings +{ + uint32_t size; // sizeof(Compositor_OverlaySettings) + bool curved, antialias; + float scale, distance, alpha; + float uOffset, vOffset, uScale, vScale; + float gridDivs, gridWidth, gridScale; + HmdMatrix44_t transform; +}; + +/** used to refer to a single VR overlay */ +typedef uint64_t VROverlayHandle_t; + +static const VROverlayHandle_t k_ulOverlayHandleInvalid = 0; + +/** Errors that can occur around VR overlays */ +enum EVROverlayError +{ + VROverlayError_None = 0, + + VROverlayError_UnknownOverlay = 10, + VROverlayError_InvalidHandle = 11, + VROverlayError_PermissionDenied = 12, + VROverlayError_OverlayLimitExceeded = 13, // No more overlays could be created because the maximum number already exist + VROverlayError_WrongVisibilityType = 14, + VROverlayError_KeyTooLong = 15, + VROverlayError_NameTooLong = 16, + VROverlayError_KeyInUse = 17, + VROverlayError_WrongTransformType = 18, + VROverlayError_InvalidTrackedDevice = 19, + VROverlayError_InvalidParameter = 20, + VROverlayError_ThumbnailCantBeDestroyed = 21, + VROverlayError_ArrayTooSmall = 22, + VROverlayError_RequestFailed = 23, + VROverlayError_InvalidTexture = 24, + VROverlayError_UnableToLoadFile = 25, + VROverlayError_KeyboardAlreadyInUse = 26, + VROverlayError_NoNeighbor = 27, +}; + +/** enum values to pass in to VR_Init to identify whether the application will +* draw a 3D scene. */ +enum EVRApplicationType +{ + VRApplication_Other = 0, // Some other kind of application that isn't covered by the other entries + VRApplication_Scene = 1, // Application will submit 3D frames + VRApplication_Overlay = 2, // Application only interacts with overlays + VRApplication_Background = 3, // Application should not start SteamVR if it's not already running, and should not + // keep it running if everything else quits. + VRApplication_Utility = 4, // Init should not try to load any drivers. The application needs access to utility + // interfaces (like IVRSettings and IVRApplications) but not hardware. + VRApplication_VRMonitor = 5, // Reserved for vrmonitor + VRApplication_SteamWatchdog = 6,// Reserved for Steam + + VRApplication_Max +}; + + +/** error codes for firmware */ +enum EVRFirmwareError +{ + VRFirmwareError_None = 0, + VRFirmwareError_Success = 1, + VRFirmwareError_Fail = 2, +}; + + +/** error codes for notifications */ +enum EVRNotificationError +{ + VRNotificationError_OK = 0, + VRNotificationError_InvalidNotificationId = 100, + VRNotificationError_NotificationQueueFull = 101, + VRNotificationError_InvalidOverlayHandle = 102, + VRNotificationError_SystemWithUserValueAlreadyExists = 103, +}; + + +/** error codes returned by Vr_Init */ + +// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp +enum EVRInitError +{ + VRInitError_None = 0, + VRInitError_Unknown = 1, + + VRInitError_Init_InstallationNotFound = 100, + VRInitError_Init_InstallationCorrupt = 101, + VRInitError_Init_VRClientDLLNotFound = 102, + VRInitError_Init_FileNotFound = 103, + VRInitError_Init_FactoryNotFound = 104, + VRInitError_Init_InterfaceNotFound = 105, + VRInitError_Init_InvalidInterface = 106, + VRInitError_Init_UserConfigDirectoryInvalid = 107, + VRInitError_Init_HmdNotFound = 108, + VRInitError_Init_NotInitialized = 109, + VRInitError_Init_PathRegistryNotFound = 110, + VRInitError_Init_NoConfigPath = 111, + VRInitError_Init_NoLogPath = 112, + VRInitError_Init_PathRegistryNotWritable = 113, + VRInitError_Init_AppInfoInitFailed = 114, + VRInitError_Init_Retry = 115, // Used internally to cause retries to vrserver + VRInitError_Init_InitCanceledByUser = 116, // The calling application should silently exit. The user canceled app startup + VRInitError_Init_AnotherAppLaunching = 117, + VRInitError_Init_SettingsInitFailed = 118, + VRInitError_Init_ShuttingDown = 119, + VRInitError_Init_TooManyObjects = 120, + VRInitError_Init_NoServerForBackgroundApp = 121, + VRInitError_Init_NotSupportedWithCompositor = 122, + VRInitError_Init_NotAvailableToUtilityApps = 123, + VRInitError_Init_Internal = 124, + VRInitError_Init_HmdDriverIdIsNone = 125, + VRInitError_Init_HmdNotFoundPresenceFailed = 126, + VRInitError_Init_VRMonitorNotFound = 127, + VRInitError_Init_VRMonitorStartupFailed = 128, + VRInitError_Init_LowPowerWatchdogNotSupported = 129, + VRInitError_Init_InvalidApplicationType = 130, + VRInitError_Init_NotAvailableToWatchdogApps = 131, + VRInitError_Init_WatchdogDisabledInSettings = 132, + + VRInitError_Driver_Failed = 200, + VRInitError_Driver_Unknown = 201, + VRInitError_Driver_HmdUnknown = 202, + VRInitError_Driver_NotLoaded = 203, + VRInitError_Driver_RuntimeOutOfDate = 204, + VRInitError_Driver_HmdInUse = 205, + VRInitError_Driver_NotCalibrated = 206, + VRInitError_Driver_CalibrationInvalid = 207, + VRInitError_Driver_HmdDisplayNotFound = 208, + VRInitError_Driver_TrackedDeviceInterfaceUnknown = 209, + // VRInitError_Driver_HmdDisplayNotFoundAfterFix = 210, // not needed: here for historic reasons + VRInitError_Driver_HmdDriverIdOutOfBounds = 211, + VRInitError_Driver_HmdDisplayMirrored = 212, + + VRInitError_IPC_ServerInitFailed = 300, + VRInitError_IPC_ConnectFailed = 301, + VRInitError_IPC_SharedStateInitFailed = 302, + VRInitError_IPC_CompositorInitFailed = 303, + VRInitError_IPC_MutexInitFailed = 304, + VRInitError_IPC_Failed = 305, + VRInitError_IPC_CompositorConnectFailed = 306, + VRInitError_IPC_CompositorInvalidConnectResponse = 307, + VRInitError_IPC_ConnectFailedAfterMultipleAttempts = 308, + + VRInitError_Compositor_Failed = 400, + VRInitError_Compositor_D3D11HardwareRequired = 401, + VRInitError_Compositor_FirmwareRequiresUpdate = 402, + VRInitError_Compositor_OverlayInitFailed = 403, + VRInitError_Compositor_ScreenshotsInitFailed = 404, + + VRInitError_VendorSpecific_UnableToConnectToOculusRuntime = 1000, + + VRInitError_VendorSpecific_HmdFound_CantOpenDevice = 1101, + VRInitError_VendorSpecific_HmdFound_UnableToRequestConfigStart = 1102, + VRInitError_VendorSpecific_HmdFound_NoStoredConfig = 1103, + VRInitError_VendorSpecific_HmdFound_ConfigTooBig = 1104, + VRInitError_VendorSpecific_HmdFound_ConfigTooSmall = 1105, + VRInitError_VendorSpecific_HmdFound_UnableToInitZLib = 1106, + VRInitError_VendorSpecific_HmdFound_CantReadFirmwareVersion = 1107, + VRInitError_VendorSpecific_HmdFound_UnableToSendUserDataStart = 1108, + VRInitError_VendorSpecific_HmdFound_UnableToGetUserDataStart = 1109, + VRInitError_VendorSpecific_HmdFound_UnableToGetUserDataNext = 1110, + VRInitError_VendorSpecific_HmdFound_UserDataAddressRange = 1111, + VRInitError_VendorSpecific_HmdFound_UserDataError = 1112, + VRInitError_VendorSpecific_HmdFound_ConfigFailedSanityCheck = 1113, + + VRInitError_Steam_SteamInstallationNotFound = 2000, +}; + +enum EVRScreenshotType +{ + VRScreenshotType_None = 0, + VRScreenshotType_Mono = 1, // left eye only + VRScreenshotType_Stereo = 2, + VRScreenshotType_Cubemap = 3, + VRScreenshotType_MonoPanorama = 4, + VRScreenshotType_StereoPanorama = 5 +}; + +enum EVRScreenshotPropertyFilenames +{ + VRScreenshotPropertyFilenames_Preview = 0, + VRScreenshotPropertyFilenames_VR = 1, +}; + +enum EVRTrackedCameraError +{ + VRTrackedCameraError_None = 0, + VRTrackedCameraError_OperationFailed = 100, + VRTrackedCameraError_InvalidHandle = 101, + VRTrackedCameraError_InvalidFrameHeaderVersion = 102, + VRTrackedCameraError_OutOfHandles = 103, + VRTrackedCameraError_IPCFailure = 104, + VRTrackedCameraError_NotSupportedForThisDevice = 105, + VRTrackedCameraError_SharedMemoryFailure = 106, + VRTrackedCameraError_FrameBufferingFailure = 107, + VRTrackedCameraError_StreamSetupFailure = 108, + VRTrackedCameraError_InvalidGLTextureId = 109, + VRTrackedCameraError_InvalidSharedTextureHandle = 110, + VRTrackedCameraError_FailedToGetGLTextureId = 111, + VRTrackedCameraError_SharedTextureFailure = 112, + VRTrackedCameraError_NoFrameAvailable = 113, + VRTrackedCameraError_InvalidArgument = 114, + VRTrackedCameraError_InvalidFrameBufferSize = 115, +}; + +enum EVRTrackedCameraFrameType +{ + VRTrackedCameraFrameType_Distorted = 0, // This is the camera video frame size in pixels, still distorted. + VRTrackedCameraFrameType_Undistorted, // In pixels, an undistorted inscribed rectangle region without invalid regions. This size is subject to changes shortly. + VRTrackedCameraFrameType_MaximumUndistorted, // In pixels, maximum undistorted with invalid regions. Non zero alpha component identifies valid regions. + MAX_CAMERA_FRAME_TYPES +}; + +typedef uint64_t TrackedCameraHandle_t; +#define INVALID_TRACKED_CAMERA_HANDLE ((vr::TrackedCameraHandle_t)0) + +struct CameraVideoStreamFrameHeader_t +{ + EVRTrackedCameraFrameType eFrameType; + + uint32_t nWidth; + uint32_t nHeight; + uint32_t nBytesPerPixel; + + uint32_t nFrameSequence; + + TrackedDevicePose_t standingTrackedDevicePose; +}; + +// Screenshot types +typedef uint32_t ScreenshotHandle_t; + +static const uint32_t k_unScreenshotHandleInvalid = 0; + +#pragma pack( pop ) + +// figure out how to import from the VR API dll +#if defined(_WIN32) + +#ifdef VR_API_EXPORT +#define VR_INTERFACE extern "C" __declspec( dllexport ) +#else +#define VR_INTERFACE extern "C" __declspec( dllimport ) +#endif + +#elif defined(__GNUC__) || defined(COMPILER_GCC) || defined(__APPLE__) + +#ifdef VR_API_EXPORT +#define VR_INTERFACE extern "C" __attribute__((visibility("default"))) +#else +#define VR_INTERFACE extern "C" +#endif + +#else +#error "Unsupported Platform." +#endif + + +#if defined( _WIN32 ) +#define VR_CALLTYPE __cdecl +#else +#define VR_CALLTYPE +#endif + +} // namespace vr + +#endif // _INCLUDE_VRTYPES_H + + +// vrannotation.h +#ifdef API_GEN +# define VR_CLANG_ATTR(ATTR) __attribute__((annotate( ATTR ))) +#else +# define VR_CLANG_ATTR(ATTR) +#endif + +#define VR_METHOD_DESC(DESC) VR_CLANG_ATTR( "desc:" #DESC ";" ) +#define VR_IGNOREATTR() VR_CLANG_ATTR( "ignore" ) +#define VR_OUT_STRUCT() VR_CLANG_ATTR( "out_struct: ;" ) +#define VR_OUT_STRING() VR_CLANG_ATTR( "out_string: ;" ) +#define VR_OUT_ARRAY_CALL(COUNTER,FUNCTION,PARAMS) VR_CLANG_ATTR( "out_array_call:" #COUNTER "," #FUNCTION "," #PARAMS ";" ) +#define VR_OUT_ARRAY_COUNT(COUNTER) VR_CLANG_ATTR( "out_array_count:" #COUNTER ";" ) +#define VR_ARRAY_COUNT(COUNTER) VR_CLANG_ATTR( "array_count:" #COUNTER ";" ) +#define VR_ARRAY_COUNT_D(COUNTER, DESC) VR_CLANG_ATTR( "array_count:" #COUNTER ";desc:" #DESC ) +#define VR_BUFFER_COUNT(COUNTER) VR_CLANG_ATTR( "buffer_count:" #COUNTER ";" ) +#define VR_OUT_BUFFER_COUNT(COUNTER) VR_CLANG_ATTR( "out_buffer_count:" #COUNTER ";" ) +#define VR_OUT_STRING_COUNT(COUNTER) VR_CLANG_ATTR( "out_string_count:" #COUNTER ";" ) + +// vrtrackedcameratypes.h +#ifndef _VRTRACKEDCAMERATYPES_H +#define _VRTRACKEDCAMERATYPES_H + +namespace vr +{ + +#if defined(__linux__) || defined(__APPLE__) + // The 32-bit version of gcc has the alignment requirement for uint64 and double set to + // 4 meaning that even with #pragma pack(8) these types will only be four-byte aligned. + // The 64-bit version of gcc has the alignment requirement for these types set to + // 8 meaning that unless we use #pragma pack(4) our structures will get bigger. + // The 64-bit structure packing has to match the 32-bit structure packing for each platform. + #pragma pack( push, 4 ) +#else + #pragma pack( push, 8 ) +#endif + +enum ECameraVideoStreamFormat +{ + CVS_FORMAT_UNKNOWN = 0, + CVS_FORMAT_RAW10 = 1, // 10 bits per pixel + CVS_FORMAT_NV12 = 2, // 12 bits per pixel + CVS_FORMAT_RGB24 = 3, // 24 bits per pixel + CVS_MAX_FORMATS +}; + +enum ECameraCompatibilityMode +{ + CAMERA_COMPAT_MODE_BULK_DEFAULT = 0, + CAMERA_COMPAT_MODE_BULK_64K_DMA, + CAMERA_COMPAT_MODE_BULK_16K_DMA, + CAMERA_COMPAT_MODE_BULK_8K_DMA, + CAMERA_COMPAT_MODE_ISO_52FPS, + CAMERA_COMPAT_MODE_ISO_50FPS, + CAMERA_COMPAT_MODE_ISO_48FPS, + CAMERA_COMPAT_MODE_ISO_46FPS, + CAMERA_COMPAT_MODE_ISO_44FPS, + CAMERA_COMPAT_MODE_ISO_42FPS, + CAMERA_COMPAT_MODE_ISO_40FPS, + CAMERA_COMPAT_MODE_ISO_35FPS, + CAMERA_COMPAT_MODE_ISO_30FPS, + MAX_CAMERA_COMPAT_MODES +}; + +#ifdef _MSC_VER +#define VR_CAMERA_DECL_ALIGN( x ) __declspec( align( x ) ) +#else +#define VR_CAMERA_DECL_ALIGN( x ) // +#endif + +#define MAX_CAMERA_FRAME_SHARED_HANDLES 4 + +VR_CAMERA_DECL_ALIGN( 8 ) struct CameraVideoStreamFrame_t +{ + ECameraVideoStreamFormat m_nStreamFormat; + + uint32_t m_nWidth; + uint32_t m_nHeight; + + uint32_t m_nImageDataSize; // Based on stream format, width, height + + uint32_t m_nFrameSequence; // Starts from 0 when stream starts. + + uint32_t m_nBufferIndex; // Identifies which buffer the image data is hosted + uint32_t m_nBufferCount; // Total number of configured buffers + + uint32_t m_nExposureTime; + + uint32_t m_nISPFrameTimeStamp; // Driver provided time stamp per driver centric time base + uint32_t m_nISPReferenceTimeStamp; + uint32_t m_nSyncCounter; + + uint32_t m_nCamSyncEvents; + uint32_t m_nISPSyncEvents; + + double m_flReferenceCamSyncTime; + + double m_flFrameElapsedTime; // Starts from 0 when stream starts. In seconds. + double m_flFrameDeliveryRate; + + double m_flFrameCaptureTime_DriverAbsolute; // In USB time, via AuxEvent + double m_flFrameCaptureTime_ServerRelative; // In System time within the server + uint64_t m_nFrameCaptureTicks_ServerAbsolute; // In system ticks within the server + double m_flFrameCaptureTime_ClientRelative; // At the client, relative to when the frame was exposed/captured. + + double m_flSyncMarkerError; + + TrackedDevicePose_t m_StandingTrackedDevicePose; // Supplied by HMD layer when used as a tracked camera + + uint64_t m_pImageData; +}; + +#pragma pack( pop ) + +} + +#endif // _VRTRACKEDCAMERATYPES_H +// ivrsettings.h +namespace vr +{ + enum EVRSettingsError + { + VRSettingsError_None = 0, + VRSettingsError_IPCFailed = 1, + VRSettingsError_WriteFailed = 2, + VRSettingsError_ReadFailed = 3, + VRSettingsError_JsonParseFailed = 4, + VRSettingsError_UnsetSettingHasNoDefault = 5, // This will be returned if the setting does not appear in the appropriate default file and has not been set + }; + + // The maximum length of a settings key + static const uint32_t k_unMaxSettingsKeyLength = 128; + + class IVRSettings + { + public: + virtual const char *GetSettingsErrorNameFromEnum( EVRSettingsError eError ) = 0; + + // Returns true if file sync occurred (force or settings dirty) + virtual bool Sync( bool bForce = false, EVRSettingsError *peError = nullptr ) = 0; + + virtual void SetBool( const char *pchSection, const char *pchSettingsKey, bool bValue, EVRSettingsError *peError = nullptr ) = 0; + virtual void SetInt32( const char *pchSection, const char *pchSettingsKey, int32_t nValue, EVRSettingsError *peError = nullptr ) = 0; + virtual void SetFloat( const char *pchSection, const char *pchSettingsKey, float flValue, EVRSettingsError *peError = nullptr ) = 0; + virtual void SetString( const char *pchSection, const char *pchSettingsKey, const char *pchValue, EVRSettingsError *peError = nullptr ) = 0; + + // Users of the system need to provide a proper default in default.vrsettings in the resources/settings/ directory + // of either the runtime or the driver_xxx directory. Otherwise the default will be false, 0, 0.0 or "" + virtual bool GetBool( const char *pchSection, const char *pchSettingsKey, EVRSettingsError *peError = nullptr ) = 0; + virtual int32_t GetInt32( const char *pchSection, const char *pchSettingsKey, EVRSettingsError *peError = nullptr ) = 0; + virtual float GetFloat( const char *pchSection, const char *pchSettingsKey, EVRSettingsError *peError = nullptr ) = 0; + virtual void GetString( const char *pchSection, const char *pchSettingsKey, VR_OUT_STRING() char *pchValue, uint32_t unValueLen, EVRSettingsError *peError = nullptr ) = 0; + + virtual void RemoveSection( const char *pchSection, EVRSettingsError *peError = nullptr ) = 0; + virtual void RemoveKeyInSection( const char *pchSection, const char *pchSettingsKey, EVRSettingsError *peError = nullptr ) = 0; + }; + + //----------------------------------------------------------------------------- + static const char * const IVRSettings_Version = "IVRSettings_002"; + + //----------------------------------------------------------------------------- + // steamvr keys + + static const char * const k_pch_SteamVR_Section = "steamvr"; + static const char * const k_pch_SteamVR_RequireHmd_String = "requireHmd"; + static const char * const k_pch_SteamVR_ForcedDriverKey_String = "forcedDriver"; + static const char * const k_pch_SteamVR_ForcedHmdKey_String = "forcedHmd"; + static const char * const k_pch_SteamVR_DisplayDebug_Bool = "displayDebug"; + static const char * const k_pch_SteamVR_DebugProcessPipe_String = "debugProcessPipe"; + static const char * const k_pch_SteamVR_EnableDistortion_Bool = "enableDistortion"; + static const char * const k_pch_SteamVR_DisplayDebugX_Int32 = "displayDebugX"; + static const char * const k_pch_SteamVR_DisplayDebugY_Int32 = "displayDebugY"; + static const char * const k_pch_SteamVR_SendSystemButtonToAllApps_Bool= "sendSystemButtonToAllApps"; + static const char * const k_pch_SteamVR_LogLevel_Int32 = "loglevel"; + static const char * const k_pch_SteamVR_IPD_Float = "ipd"; + static const char * const k_pch_SteamVR_Background_String = "background"; + static const char * const k_pch_SteamVR_BackgroundCameraHeight_Float = "backgroundCameraHeight"; + static const char * const k_pch_SteamVR_BackgroundDomeRadius_Float = "backgroundDomeRadius"; + static const char * const k_pch_SteamVR_Environment_String = "environment"; + static const char * const k_pch_SteamVR_GridColor_String = "gridColor"; + static const char * const k_pch_SteamVR_PlayAreaColor_String = "playAreaColor"; + static const char * const k_pch_SteamVR_ShowStage_Bool = "showStage"; + static const char * const k_pch_SteamVR_ActivateMultipleDrivers_Bool = "activateMultipleDrivers"; + static const char * const k_pch_SteamVR_DirectMode_Bool = "directMode"; + static const char * const k_pch_SteamVR_DirectModeEdidVid_Int32 = "directModeEdidVid"; + static const char * const k_pch_SteamVR_DirectModeEdidPid_Int32 = "directModeEdidPid"; + static const char * const k_pch_SteamVR_UsingSpeakers_Bool = "usingSpeakers"; + static const char * const k_pch_SteamVR_SpeakersForwardYawOffsetDegrees_Float = "speakersForwardYawOffsetDegrees"; + static const char * const k_pch_SteamVR_BaseStationPowerManagement_Bool = "basestationPowerManagement"; + static const char * const k_pch_SteamVR_NeverKillProcesses_Bool = "neverKillProcesses"; + static const char * const k_pch_SteamVR_RenderTargetMultiplier_Float = "renderTargetMultiplier"; + static const char * const k_pch_SteamVR_AllowReprojection_Bool = "allowReprojection"; + static const char * const k_pch_SteamVR_ForceReprojection_Bool = "forceReprojection"; + static const char * const k_pch_SteamVR_ForceFadeOnBadTracking_Bool = "forceFadeOnBadTracking"; + static const char * const k_pch_SteamVR_DefaultMirrorView_Int32 = "defaultMirrorView"; + static const char * const k_pch_SteamVR_ShowMirrorView_Bool = "showMirrorView"; + static const char * const k_pch_SteamVR_MirrorViewGeometry_String = "mirrorViewGeometry"; + static const char * const k_pch_SteamVR_StartMonitorFromAppLaunch = "startMonitorFromAppLaunch"; + static const char * const k_pch_SteamVR_EnableHomeApp = "enableHomeApp"; + static const char * const k_pch_SteamVR_SetInitialDefaultHomeApp = "setInitialDefaultHomeApp"; + static const char * const k_pch_SteamVR_CycleBackgroundImageTimeSec_Int32 = "CycleBackgroundImageTimeSec"; + static const char * const k_pch_SteamVR_RetailDemo_Bool = "retailDemo"; + + + //----------------------------------------------------------------------------- + // lighthouse keys + + static const char * const k_pch_Lighthouse_Section = "driver_lighthouse"; + static const char * const k_pch_Lighthouse_DisableIMU_Bool = "disableimu"; + static const char * const k_pch_Lighthouse_UseDisambiguation_String = "usedisambiguation"; + static const char * const k_pch_Lighthouse_DisambiguationDebug_Int32 = "disambiguationdebug"; + + static const char * const k_pch_Lighthouse_PrimaryBasestation_Int32 = "primarybasestation"; + static const char * const k_pch_Lighthouse_DBHistory_Bool = "dbhistory"; + + //----------------------------------------------------------------------------- + // null keys + + static const char * const k_pch_Null_Section = "driver_null"; + static const char * const k_pch_Null_EnableNullDriver_Bool = "enable"; + static const char * const k_pch_Null_SerialNumber_String = "serialNumber"; + static const char * const k_pch_Null_ModelNumber_String = "modelNumber"; + static const char * const k_pch_Null_WindowX_Int32 = "windowX"; + static const char * const k_pch_Null_WindowY_Int32 = "windowY"; + static const char * const k_pch_Null_WindowWidth_Int32 = "windowWidth"; + static const char * const k_pch_Null_WindowHeight_Int32 = "windowHeight"; + static const char * const k_pch_Null_RenderWidth_Int32 = "renderWidth"; + static const char * const k_pch_Null_RenderHeight_Int32 = "renderHeight"; + static const char * const k_pch_Null_SecondsFromVsyncToPhotons_Float = "secondsFromVsyncToPhotons"; + static const char * const k_pch_Null_DisplayFrequency_Float = "displayFrequency"; + + //----------------------------------------------------------------------------- + // user interface keys + static const char * const k_pch_UserInterface_Section = "userinterface"; + static const char * const k_pch_UserInterface_StatusAlwaysOnTop_Bool = "StatusAlwaysOnTop"; + static const char * const k_pch_UserInterface_Screenshots_Bool = "screenshots"; + static const char * const k_pch_UserInterface_ScreenshotType_Int = "screenshotType"; + + //----------------------------------------------------------------------------- + // notification keys + static const char * const k_pch_Notifications_Section = "notifications"; + static const char * const k_pch_Notifications_DoNotDisturb_Bool = "DoNotDisturb"; + + //----------------------------------------------------------------------------- + // keyboard keys + static const char * const k_pch_Keyboard_Section = "keyboard"; + static const char * const k_pch_Keyboard_TutorialCompletions = "TutorialCompletions"; + static const char * const k_pch_Keyboard_ScaleX = "ScaleX"; + static const char * const k_pch_Keyboard_ScaleY = "ScaleY"; + static const char * const k_pch_Keyboard_OffsetLeftX = "OffsetLeftX"; + static const char * const k_pch_Keyboard_OffsetRightX = "OffsetRightX"; + static const char * const k_pch_Keyboard_OffsetY = "OffsetY"; + static const char * const k_pch_Keyboard_Smoothing = "Smoothing"; + + //----------------------------------------------------------------------------- + // perf keys + static const char * const k_pch_Perf_Section = "perfcheck"; + static const char * const k_pch_Perf_HeuristicActive_Bool = "heuristicActive"; + static const char * const k_pch_Perf_NotifyInHMD_Bool = "warnInHMD"; + static const char * const k_pch_Perf_NotifyOnlyOnce_Bool = "warnOnlyOnce"; + static const char * const k_pch_Perf_AllowTimingStore_Bool = "allowTimingStore"; + static const char * const k_pch_Perf_SaveTimingsOnExit_Bool = "saveTimingsOnExit"; + static const char * const k_pch_Perf_TestData_Float = "perfTestData"; + + //----------------------------------------------------------------------------- + // collision bounds keys + static const char * const k_pch_CollisionBounds_Section = "collisionBounds"; + static const char * const k_pch_CollisionBounds_Style_Int32 = "CollisionBoundsStyle"; + static const char * const k_pch_CollisionBounds_GroundPerimeterOn_Bool = "CollisionBoundsGroundPerimeterOn"; + static const char * const k_pch_CollisionBounds_CenterMarkerOn_Bool = "CollisionBoundsCenterMarkerOn"; + static const char * const k_pch_CollisionBounds_PlaySpaceOn_Bool = "CollisionBoundsPlaySpaceOn"; + static const char * const k_pch_CollisionBounds_FadeDistance_Float = "CollisionBoundsFadeDistance"; + static const char * const k_pch_CollisionBounds_ColorGammaR_Int32 = "CollisionBoundsColorGammaR"; + static const char * const k_pch_CollisionBounds_ColorGammaG_Int32 = "CollisionBoundsColorGammaG"; + static const char * const k_pch_CollisionBounds_ColorGammaB_Int32 = "CollisionBoundsColorGammaB"; + static const char * const k_pch_CollisionBounds_ColorGammaA_Int32 = "CollisionBoundsColorGammaA"; + + //----------------------------------------------------------------------------- + // camera keys + static const char * const k_pch_Camera_Section = "camera"; + static const char * const k_pch_Camera_EnableCamera_Bool = "enableCamera"; + static const char * const k_pch_Camera_EnableCameraInDashboard_Bool = "enableCameraInDashboard"; + static const char * const k_pch_Camera_EnableCameraForCollisionBounds_Bool = "enableCameraForCollisionBounds"; + static const char * const k_pch_Camera_EnableCameraForRoomView_Bool = "enableCameraForRoomView"; + static const char * const k_pch_Camera_BoundsColorGammaR_Int32 = "cameraBoundsColorGammaR"; + static const char * const k_pch_Camera_BoundsColorGammaG_Int32 = "cameraBoundsColorGammaG"; + static const char * const k_pch_Camera_BoundsColorGammaB_Int32 = "cameraBoundsColorGammaB"; + static const char * const k_pch_Camera_BoundsColorGammaA_Int32 = "cameraBoundsColorGammaA"; + static const char * const k_pch_Camera_BoundsStrength_Int32 = "cameraBoundsStrength"; + + //----------------------------------------------------------------------------- + // audio keys + static const char * const k_pch_audio_Section = "audio"; + static const char * const k_pch_audio_OnPlaybackDevice_String = "onPlaybackDevice"; + static const char * const k_pch_audio_OnRecordDevice_String = "onRecordDevice"; + static const char * const k_pch_audio_OnPlaybackMirrorDevice_String = "onPlaybackMirrorDevice"; + static const char * const k_pch_audio_OffPlaybackDevice_String = "offPlaybackDevice"; + static const char * const k_pch_audio_OffRecordDevice_String = "offRecordDevice"; + static const char * const k_pch_audio_VIVEHDMIGain = "viveHDMIGain"; + + //----------------------------------------------------------------------------- + // power management keys + static const char * const k_pch_Power_Section = "power"; + static const char * const k_pch_Power_PowerOffOnExit_Bool = "powerOffOnExit"; + static const char * const k_pch_Power_TurnOffScreensTimeout_Float = "turnOffScreensTimeout"; + static const char * const k_pch_Power_TurnOffControllersTimeout_Float = "turnOffControllersTimeout"; + static const char * const k_pch_Power_ReturnToWatchdogTimeout_Float = "returnToWatchdogTimeout"; + static const char * const k_pch_Power_AutoLaunchSteamVROnButtonPress = "autoLaunchSteamVROnButtonPress"; + + //----------------------------------------------------------------------------- + // dashboard keys + static const char * const k_pch_Dashboard_Section = "dashboard"; + static const char * const k_pch_Dashboard_EnableDashboard_Bool = "enableDashboard"; + static const char * const k_pch_Dashboard_ArcadeMode_Bool = "arcadeMode"; + + //----------------------------------------------------------------------------- + // model skin keys + static const char * const k_pch_modelskin_Section = "modelskins"; + +} // namespace vr + +// iservertrackeddevicedriver.h +namespace vr +{ + + +struct DriverPoseQuaternion_t +{ + double w, x, y, z; +}; + +struct DriverPose_t +{ + /* Time offset of this pose, in seconds from the actual time of the pose, + * relative to the time of the PoseUpdated() call made by the driver. + */ + double poseTimeOffset; + + /* Generally, the pose maintained by a driver + * is in an inertial coordinate system different + * from the world system of x+ right, y+ up, z+ back. + * Also, the driver is not usually tracking the "head" position, + * but instead an internal IMU or another reference point in the HMD. + * The following two transforms transform positions and orientations + * to app world space from driver world space, + * and to HMD head space from driver local body space. + * + * We maintain the driver pose state in its internal coordinate system, + * so we can do the pose prediction math without having to + * use angular acceleration. A driver's angular acceleration is generally not measured, + * and is instead calculated from successive samples of angular velocity. + * This leads to a noisy angular acceleration values, which are also + * lagged due to the filtering required to reduce noise to an acceptable level. + */ + vr::HmdQuaternion_t qWorldFromDriverRotation; + double vecWorldFromDriverTranslation[ 3 ]; + + vr::HmdQuaternion_t qDriverFromHeadRotation; + double vecDriverFromHeadTranslation[ 3 ]; + + /* State of driver pose, in meters and radians. */ + /* Position of the driver tracking reference in driver world space + * +[0] (x) is right + * +[1] (y) is up + * -[2] (z) is forward + */ + double vecPosition[ 3 ]; + + /* Velocity of the pose in meters/second */ + double vecVelocity[ 3 ]; + + /* Acceleration of the pose in meters/second */ + double vecAcceleration[ 3 ]; + + /* Orientation of the tracker, represented as a quaternion */ + vr::HmdQuaternion_t qRotation; + + /* Angular velocity of the pose in axis-angle + * representation. The direction is the angle of + * rotation and the magnitude is the angle around + * that axis in radians/second. */ + double vecAngularVelocity[ 3 ]; + + /* Angular acceleration of the pose in axis-angle + * representation. The direction is the angle of + * rotation and the magnitude is the angle around + * that axis in radians/second^2. */ + double vecAngularAcceleration[ 3 ]; + + ETrackingResult result; + + bool poseIsValid; + bool willDriftInYaw; + bool shouldApplyHeadModel; + bool deviceIsConnected; +}; + + +// ---------------------------------------------------------------------------------------------- +// Purpose: Represents a single tracked device in a driver +// ---------------------------------------------------------------------------------------------- +class ITrackedDeviceServerDriver +{ +public: + + // ------------------------------------ + // Management Methods + // ------------------------------------ + /** This is called before an HMD is returned to the application. It will always be + * called before any display or tracking methods. Memory and processor use by the + * ITrackedDeviceServerDriver object should be kept to a minimum until it is activated. + * The pose listener is guaranteed to be valid until Deactivate is called, but + * should not be used after that point. */ + virtual EVRInitError Activate( uint32_t unObjectId ) = 0; + + /** This is called when The VR system is switching from this Hmd being the active display + * to another Hmd being the active display. The driver should clean whatever memory + * and thread use it can when it is deactivated */ + virtual void Deactivate() = 0; + + /** Handles a request from the system to put this device into standby mode. What that means is defined per-device. */ + virtual void EnterStandby() = 0; + + /** Requests a component interface of the driver for device-specific functionality. The driver should return NULL + * if the requested interface or version is not supported. */ + virtual void *GetComponent( const char *pchComponentNameAndVersion ) = 0; + + /** A VR Client has made this debug request of the driver. The set of valid requests is entirely + * up to the driver and the client to figure out, as is the format of the response. Responses that + * exceed the length of the supplied buffer should be truncated and null terminated */ + virtual void DebugRequest( const char *pchRequest, char *pchResponseBuffer, uint32_t unResponseBufferSize ) = 0; + + // ------------------------------------ + // Tracking Methods + // ------------------------------------ + virtual DriverPose_t GetPose() = 0; + + // ------------------------------------ + // Property Methods + // ------------------------------------ + + /** Returns a bool property. If the property is not available this function will return false. */ + virtual bool GetBoolTrackedDeviceProperty( ETrackedDeviceProperty prop, ETrackedPropertyError *pError ) = 0; + + /** Returns a float property. If the property is not available this function will return 0. */ + virtual float GetFloatTrackedDeviceProperty( ETrackedDeviceProperty prop, ETrackedPropertyError *pError ) = 0; + + /** Returns an int property. If the property is not available this function will return 0. */ + virtual int32_t GetInt32TrackedDeviceProperty( ETrackedDeviceProperty prop, ETrackedPropertyError *pError ) = 0; + + /** Returns a uint64 property. If the property is not available this function will return 0. */ + virtual uint64_t GetUint64TrackedDeviceProperty( ETrackedDeviceProperty prop, ETrackedPropertyError *pError ) = 0; + + /** Returns a matrix property. If the device index is not valid or the property is not a matrix type, this function will return identity. */ + virtual HmdMatrix34_t GetMatrix34TrackedDeviceProperty( ETrackedDeviceProperty prop, ETrackedPropertyError *pError ) = 0; + + /** Returns a string property. If the property is not available this function will return 0 and pError will be + * set to an error. Otherwise it returns the length of the number of bytes necessary to hold this string including + * the trailing null. If the buffer is too small the error will be TrackedProp_BufferTooSmall. Strings will + * generally fit in buffers of k_unTrackingStringSize characters. Drivers may not return strings longer than + * k_unMaxPropertyStringSize. */ + virtual uint32_t GetStringTrackedDeviceProperty( ETrackedDeviceProperty prop, char *pchValue, uint32_t unBufferSize, ETrackedPropertyError *pError ) = 0; + +}; + + + +static const char *ITrackedDeviceServerDriver_Version = "ITrackedDeviceServerDriver_004"; + +} +// ivrdisplaycomponent.h +namespace vr +{ + + + // ---------------------------------------------------------------------------------------------- + // Purpose: The display component on a single tracked device + // ---------------------------------------------------------------------------------------------- + class IVRDisplayComponent + { + public: + + // ------------------------------------ + // Display Methods + // ------------------------------------ + + /** Size and position that the window needs to be on the VR display. */ + virtual void GetWindowBounds( int32_t *pnX, int32_t *pnY, uint32_t *pnWidth, uint32_t *pnHeight ) = 0; + + /** Returns true if the display is extending the desktop. */ + virtual bool IsDisplayOnDesktop( ) = 0; + + /** Returns true if the display is real and not a fictional display. */ + virtual bool IsDisplayRealDisplay( ) = 0; + + /** Suggested size for the intermediate render target that the distortion pulls from. */ + virtual void GetRecommendedRenderTargetSize( uint32_t *pnWidth, uint32_t *pnHeight ) = 0; + + /** Gets the viewport in the frame buffer to draw the output of the distortion into */ + virtual void GetEyeOutputViewport( EVREye eEye, uint32_t *pnX, uint32_t *pnY, uint32_t *pnWidth, uint32_t *pnHeight ) = 0; + + /** The components necessary to build your own projection matrix in case your + * application is doing something fancy like infinite Z */ + virtual void GetProjectionRaw( EVREye eEye, float *pfLeft, float *pfRight, float *pfTop, float *pfBottom ) = 0; + + /** Returns the result of the distortion function for the specified eye and input UVs. UVs go from 0,0 in + * the upper left of that eye's viewport and 1,1 in the lower right of that eye's viewport. */ + virtual DistortionCoordinates_t ComputeDistortion( EVREye eEye, float fU, float fV ) = 0; + + }; + + static const char *IVRDisplayComponent_Version = "IVRDisplayComponent_002"; + +} + +// ivrdriverdirectmodecomponent.h +namespace vr +{ + + + // ---------------------------------------------------------------------------------------------- + // Purpose: This component is used for drivers that implement direct mode entirely on their own + // without allowing the VR Compositor to own the window/device. Chances are you don't + // need to implement this component in your driver. + // ---------------------------------------------------------------------------------------------- + class IVRDriverDirectModeComponent + { + public: + + // ----------------------------------- + // Direct mode methods + // ----------------------------------- + + /** Specific to Oculus compositor support, textures supplied must be created using this method. */ + virtual void CreateSwapTextureSet( uint32_t unPid, uint32_t unFormat, uint32_t unWidth, uint32_t unHeight, vr::SharedTextureHandle_t( *pSharedTextureHandles )[ 3 ] ) {} + + /** Used to textures created using CreateSwapTextureSet. Only one of the set's handles needs to be used to destroy the entire set. */ + virtual void DestroySwapTextureSet( vr::SharedTextureHandle_t sharedTextureHandle ) {} + + /** Used to purge all texture sets for a given process. */ + virtual void DestroyAllSwapTextureSets( uint32_t unPid ) {} + + /** After Present returns, calls this to get the next index to use for rendering. */ + virtual void GetNextSwapTextureSetIndex( vr::SharedTextureHandle_t sharedTextureHandles[ 2 ], uint32_t( *pIndices )[ 2 ] ) {} + + /** Call once per layer to draw for this frame. One shared texture handle per eye. Textures must be created + * using CreateSwapTextureSet and should be alternated per frame. Call Present once all layers have been submitted. */ + virtual void SubmitLayer( vr::SharedTextureHandle_t sharedTextureHandles[ 2 ], const vr::VRTextureBounds_t( &bounds )[ 2 ], const vr::HmdMatrix34_t *pPose ) {} + + /** Submits queued layers for display. */ + virtual void Present( vr::SharedTextureHandle_t syncTexture ) {} + + }; + + static const char *IVRDriverDirectModeComponent_Version = "IVRDriverDirectModeComponent_002"; + +} + +// ivrcontrollercomponent.h +namespace vr +{ + + + // ---------------------------------------------------------------------------------------------- + // Purpose: Controller access on a single tracked device. + // ---------------------------------------------------------------------------------------------- + class IVRControllerComponent + { + public: + + // ------------------------------------ + // Controller Methods + // ------------------------------------ + + /** Gets the current state of a controller. */ + virtual VRControllerState_t GetControllerState( ) = 0; + + /** Returns a uint64 property. If the property is not available this function will return 0. */ + virtual bool TriggerHapticPulse( uint32_t unAxisId, uint16_t usPulseDurationMicroseconds ) = 0; + + }; + + + + static const char *IVRControllerComponent_Version = "IVRControllerComponent_001"; + +} +// ivrcameracomponent.h +namespace vr +{ + //----------------------------------------------------------------------------- + //----------------------------------------------------------------------------- + class ICameraVideoSinkCallback + { + public: + virtual void OnCameraVideoSinkCallback() = 0; + }; + + // ---------------------------------------------------------------------------------------------- + // Purpose: The camera on a single tracked device + // ---------------------------------------------------------------------------------------------- + class IVRCameraComponent + { + public: + // ------------------------------------ + // Camera Methods + // ------------------------------------ + virtual bool GetCameraFrameDimensions( vr::ECameraVideoStreamFormat nVideoStreamFormat, uint32_t *pWidth, uint32_t *pHeight ) = 0; + virtual bool GetCameraFrameBufferingRequirements( int *pDefaultFrameQueueSize, uint32_t *pFrameBufferDataSize ) = 0; + virtual bool SetCameraFrameBuffering( int nFrameBufferCount, void **ppFrameBuffers, uint32_t nFrameBufferDataSize ) = 0; + virtual bool SetCameraVideoStreamFormat( vr::ECameraVideoStreamFormat nVideoStreamFormat ) = 0; + virtual vr::ECameraVideoStreamFormat GetCameraVideoStreamFormat() = 0; + virtual bool StartVideoStream() = 0; + virtual void StopVideoStream() = 0; + virtual bool IsVideoStreamActive( bool *pbPaused, float *pflElapsedTime ) = 0; + virtual const vr::CameraVideoStreamFrame_t *GetVideoStreamFrame() = 0; + virtual void ReleaseVideoStreamFrame( const vr::CameraVideoStreamFrame_t *pFrameImage ) = 0; + virtual bool SetAutoExposure( bool bEnable ) = 0; + virtual bool PauseVideoStream() = 0; + virtual bool ResumeVideoStream() = 0; + virtual bool GetCameraDistortion( float flInputU, float flInputV, float *pflOutputU, float *pflOutputV ) = 0; + virtual bool GetCameraProjection( vr::EVRTrackedCameraFrameType eFrameType, float flZNear, float flZFar, vr::HmdMatrix44_t *pProjection ) = 0; + virtual bool SetFrameRate( int nISPFrameRate, int nSensorFrameRate ) = 0; + virtual bool SetCameraVideoSinkCallback( vr::ICameraVideoSinkCallback *pCameraVideoSinkCallback ) = 0; + virtual bool GetCameraCompatibilityMode( vr::ECameraCompatibilityMode *pCameraCompatibilityMode ) = 0; + virtual bool SetCameraCompatibilityMode( vr::ECameraCompatibilityMode nCameraCompatibilityMode ) = 0; + virtual bool GetCameraFrameBounds( vr::EVRTrackedCameraFrameType eFrameType, uint32_t *pLeft, uint32_t *pTop, uint32_t *pWidth, uint32_t *pHeight ) = 0; + virtual bool GetCameraIntrinsics( vr::EVRTrackedCameraFrameType eFrameType, HmdVector2_t *pFocalLength, HmdVector2_t *pCenter ) = 0; + }; + + static const char *IVRCameraComponent_Version = "IVRCameraComponent_002"; +} +// itrackeddevicedriverprovider.h +namespace vr +{ + +class ITrackedDeviceServerDriver; +struct TrackedDeviceDriverInfo_t; +struct DriverPose_t; + +class IDriverLog +{ +public: + /** Writes a log message to the log file prefixed with the driver name */ + virtual void Log( const char *pchLogMessage ) = 0; +}; + +/** This interface is provided by vrserver to allow the driver to notify +* the system when something changes about a device. These changes must +* not change the serial number or class of the device because those values +* are permanently associated with the device's index. */ +class IServerDriverHost +{ +public: + /** Notifies the server that a tracked device has been added. If this function returns true + * the server will call Activate on the device. If it returns false some kind of error + * has occurred and the device will not be activated. */ + virtual bool TrackedDeviceAdded( const char *pchDeviceSerialNumber ) = 0; + + /** Notifies the server that a tracked device's pose has been updated */ + virtual void TrackedDevicePoseUpdated( uint32_t unWhichDevice, const DriverPose_t & newPose ) = 0; + + /** Notifies the server that the property cache for the specified device should be invalidated */ + virtual void TrackedDevicePropertiesChanged( uint32_t unWhichDevice ) = 0; + + /** Notifies the server that vsync has occurred on the the display attached to the device. This is + * only permitted on devices of the HMD class. */ + virtual void VsyncEvent( double vsyncTimeOffsetSeconds ) = 0; + + /** notifies the server that the button was pressed */ + virtual void TrackedDeviceButtonPressed( uint32_t unWhichDevice, EVRButtonId eButtonId, double eventTimeOffset ) = 0; + + /** notifies the server that the button was unpressed */ + virtual void TrackedDeviceButtonUnpressed( uint32_t unWhichDevice, EVRButtonId eButtonId, double eventTimeOffset ) = 0; + + /** notifies the server that the button was pressed */ + virtual void TrackedDeviceButtonTouched( uint32_t unWhichDevice, EVRButtonId eButtonId, double eventTimeOffset ) = 0; + + /** notifies the server that the button was unpressed */ + virtual void TrackedDeviceButtonUntouched( uint32_t unWhichDevice, EVRButtonId eButtonId, double eventTimeOffset ) = 0; + + /** notifies the server than a controller axis changed */ + virtual void TrackedDeviceAxisUpdated( uint32_t unWhichDevice, uint32_t unWhichAxis, const VRControllerAxis_t & axisState ) = 0; + + /** Notifies the server that the MC image has been updated for the display attached to the device. This is + * only permitted on devices of the HMD class. */ + virtual void MCImageUpdated() = 0; + + /** always returns a pointer to a valid interface pointer of IVRSettings */ + virtual IVRSettings *GetSettings( const char *pchInterfaceVersion ) = 0; + + /** Notifies the server that the physical IPD adjustment has been moved on the HMD */ + virtual void PhysicalIpdSet( uint32_t unWhichDevice, float fPhysicalIpdMeters ) = 0; + + /** Notifies the server that the proximity sensor on the specified device */ + virtual void ProximitySensorState( uint32_t unWhichDevice, bool bProximitySensorTriggered ) = 0; + + /** Sends a vendor specific event (VREvent_VendorSpecific_Reserved_Start..VREvent_VendorSpecific_Reserved_End */ + virtual void VendorSpecificEvent( uint32_t unWhichDevice, vr::EVREventType eventType, const VREvent_Data_t & eventData, double eventTimeOffset ) = 0; + + /** Returns true if SteamVR is exiting */ + virtual bool IsExiting() = 0; +}; + + +/** This interface must be implemented in each driver. It will be loaded in vrserver.exe */ +class IServerTrackedDeviceProvider +{ +public: + /** initializes the driver. This will be called before any other methods are called. + * If Init returns anything other than VRInitError_None the driver DLL will be unloaded. + * + * pDriverHost will never be NULL, and will always be a pointer to a IServerDriverHost interface + * + * pchUserDriverConfigDir - The absolute path of the directory where the driver should store user + * config files. + * pchDriverInstallDir - The absolute path of the root directory for the driver. + */ + virtual EVRInitError Init( IDriverLog *pDriverLog, vr::IServerDriverHost *pDriverHost, const char *pchUserDriverConfigDir, const char *pchDriverInstallDir ) = 0; + + /** cleans up the driver right before it is unloaded */ + virtual void Cleanup() = 0; + + /** Returns the version of the ITrackedDeviceServerDriver interface used by this driver */ + virtual const char * const *GetInterfaceVersions() = 0; + + /** returns the number of HMDs that this driver manages that are physically connected. */ + virtual uint32_t GetTrackedDeviceCount() = 0; + + /** returns a single HMD */ + virtual ITrackedDeviceServerDriver *GetTrackedDeviceDriver( uint32_t unWhich ) = 0; + + /** returns a single HMD by ID */ + virtual ITrackedDeviceServerDriver* FindTrackedDeviceDriver( const char *pchId ) = 0; + + /** Allows the driver do to some work in the main loop of the server. */ + virtual void RunFrame() = 0; + + + // ------------ Power State Functions ----------------------- // + + /** Returns true if the driver wants to block Standby mode. */ + virtual bool ShouldBlockStandbyMode() = 0; + + /** Called when the system is entering Standby mode. The driver should switch itself into whatever sort of low-power + * state it has. */ + virtual void EnterStandby() = 0; + + /** Called when the system is leaving Standby mode. The driver should switch itself back to + full operation. */ + virtual void LeaveStandby() = 0; + +}; + + +static const char *IServerTrackedDeviceProvider_Version = "IServerTrackedDeviceProvider_003"; + + +/** This interface is provided by vrclient to allow the driver call back and query various information */ +class IClientDriverHost +{ +public: + /** Returns the device class of a tracked device. If there has not been a device connected in this slot + * since the application started this function will return TrackedDevice_Invalid. For previous detected + * devices the function will return the previously observed device class. + * + * To determine which devices exist on the system, just loop from 0 to k_unMaxTrackedDeviceCount and check + * the device class. Every device with something other than TrackedDevice_Invalid is associated with an + * actual tracked device. */ + virtual ETrackedDeviceClass GetTrackedDeviceClass( vr::TrackedDeviceIndex_t unDeviceIndex ) = 0; + + /** Returns true if there is a device connected in this slot. */ + virtual bool IsTrackedDeviceConnected( vr::TrackedDeviceIndex_t unDeviceIndex ) = 0; + + /** Returns a bool property. If the device index is not valid or the property is not a bool type this function will return false. */ + virtual bool GetBoolTrackedDeviceProperty( vr::TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, ETrackedPropertyError *pError = 0L ) = 0; + + /** Returns a float property. If the device index is not valid or the property is not a float type this function will return 0. */ + virtual float GetFloatTrackedDeviceProperty( vr::TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, ETrackedPropertyError *pError = 0L ) = 0; + + /** Returns an int property. If the device index is not valid or the property is not a int type this function will return 0. */ + virtual int32_t GetInt32TrackedDeviceProperty( vr::TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, ETrackedPropertyError *pError = 0L ) = 0; + + /** Returns a uint64 property. If the device index is not valid or the property is not a uint64 type this function will return 0. */ + virtual uint64_t GetUint64TrackedDeviceProperty( vr::TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, ETrackedPropertyError *pError = 0L ) = 0; + + /** Returns a string property. If the device index is not valid or the property is not a float type this function will + * return 0. Otherwise it returns the length of the number of bytes necessary to hold this string including the trailing + * null. Strings will generally fit in buffers of k_unTrackingStringSize characters. */ + virtual uint32_t GetStringTrackedDeviceProperty( vr::TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, char *pchValue, uint32_t unBufferSize, ETrackedPropertyError *pError = 0L ) = 0; + + /** always returns a pointer to a valid interface pointer of IVRSettings */ + virtual IVRSettings *GetSettings( const char *pchInterfaceVersion ) = 0; + + /** Client drivers in watchdog mode should call this when they have received a signal from hardware that should + * cause SteamVR to start */ + virtual void WatchdogWakeUp() = 0; +}; + + +/** Defines the mode that the client driver should start in. */ +enum EClientDriverMode +{ + ClientDriverMode_Normal = 0, + ClientDriverMode_Watchdog = 1, // client should return VRInitError_Init_LowPowerWatchdogNotSupported if it can't support this mode +}; + + +/** This interface must be implemented in each driver. It will be loaded in vrclient.dll */ +class IClientTrackedDeviceProvider +{ +public: + /** initializes the driver. This will be called before any other methods are called, + * except BIsHmdPresent(). BIsHmdPresent is called outside of the Init/Cleanup pair. + * If Init returns anything other than VRInitError_None the driver DLL will be unloaded. + * + * pDriverHost will never be NULL, and will always be a pointer to a IClientDriverHost interface + * + * pchUserDriverConfigDir - The absolute path of the directory where the driver should store user + * config files. + * pchDriverInstallDir - The absolute path of the root directory for the driver. + */ + virtual EVRInitError Init( EClientDriverMode eDriverMode, IDriverLog *pDriverLog, vr::IClientDriverHost *pDriverHost, const char *pchUserDriverConfigDir, const char *pchDriverInstallDir ) = 0; + + /** cleans up the driver right before it is unloaded */ + virtual void Cleanup() = 0; + + /** Called when the client needs to inform an application if an HMD is attached that uses + * this driver. This method should be as lightweight as possible and should have no side effects + * such as hooking process functions or leaving resources loaded. Init will not be called before + * this method and Cleanup will not be called after it. + */ + virtual bool BIsHmdPresent( const char *pchUserConfigDir ) = 0; + + /** called when the client inits an HMD to let the client driver know which one is in use */ + virtual EVRInitError SetDisplayId( const char *pchDisplayId ) = 0; + + /** Returns the stencil mesh information for the current HMD. If this HMD does not have a stencil mesh the vertex data and count will be + * NULL and 0 respectively. This mesh is meant to be rendered into the stencil buffer (or into the depth buffer setting nearz) before rendering + * each eye's view. The pixels covered by this mesh will never be seen by the user after the lens distortion is applied and based on visibility to the panels. + * This will improve perf by letting the GPU early-reject pixels the user will never see before running the pixel shader. + * NOTE: Render this mesh with backface culling disabled since the winding order of the vertices can be different per-HMD or per-eye. + */ + virtual HiddenAreaMesh_t GetHiddenAreaMesh( EVREye eEye ) = 0; + + /** Get the MC image for the current HMD. + * Returns the size in bytes of the buffer required to hold the specified resource. */ + virtual uint32_t GetMCImage( uint32_t *pImgWidth, uint32_t *pImgHeight, uint32_t *pChannels, void *pDataBuffer, uint32_t unBufferLen ) = 0; +}; + +static const char *IClientTrackedDeviceProvider_Version = "IClientTrackedDeviceProvider_004"; + +} + + + + +namespace vr +{ + static const char * const k_InterfaceVersions[] = + { + IVRSettings_Version, + ITrackedDeviceServerDriver_Version, + IVRDisplayComponent_Version, + IVRDriverDirectModeComponent_Version, + IVRControllerComponent_Version, + IVRCameraComponent_Version, + IServerTrackedDeviceProvider_Version, + IClientTrackedDeviceProvider_Version, + nullptr + }; +} +// End + +#endif // _OPENVR_DRIVER_API + + diff --git a/third-party/openvr/lib/linux32/libopenvr_api.so b/third-party/openvr/lib/linux32/libopenvr_api.so deleted file mode 100644 index 27da01c..0000000 Binary files a/third-party/openvr/lib/linux32/libopenvr_api.so and /dev/null differ diff --git a/third-party/openvr/lib/linux64/libopenvr_api.so b/third-party/openvr/lib/linux64/libopenvr_api.so index 16faae6..d8ddc31 100644 Binary files a/third-party/openvr/lib/linux64/libopenvr_api.so and b/third-party/openvr/lib/linux64/libopenvr_api.so differ diff --git a/third-party/openvr/lib/win32/openvr_api.lib b/third-party/openvr/lib/win32/openvr_api.lib index dd0ad21..8322d9c 100644 Binary files a/third-party/openvr/lib/win32/openvr_api.lib and b/third-party/openvr/lib/win32/openvr_api.lib differ diff --git a/third-party/openvr/lib/win64/openvr_api.lib b/third-party/openvr/lib/win64/openvr_api.lib index abb60cf..3ede696 100644 Binary files a/third-party/openvr/lib/win64/openvr_api.lib and b/third-party/openvr/lib/win64/openvr_api.lib differ diff --git a/ui/overlaywidget.ui b/ui/overlaywidget.ui deleted file mode 100644 index 7a99cf6..0000000 --- a/ui/overlaywidget.ui +++ /dev/null @@ -1,1817 +0,0 @@ - - - OverlayWidget - - - - 0 - 0 - 564 - 351 - - - - Hello World Overlay - - - /* Default widget settings*/ -QWidget { - background: rgb(27, 41, 57); - color: rgb(255, 255, 255); - font: 14pt; -} - -/* Default settings for TabWidget tabs */ -#TabWidget QTabBar::tab { - background: rgb(27, 41, 57); - color: rgb(255, 255, 255); - margin: 2px 1px 0px 1px; - border-style: solid; - border-color: rgb(200, 200, 200); - border-width: 1px 1px 0px 1px; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - padding: 2px; -} - -/* Settings for selected/hovered TabWidget tabs */ -#TabWidget QTabBar::tab:selected, QTabBar::tab:hover { - background: rgb(68, 111, 140); -} - -/* Settings for non-selected TabWidget tabs */ -#TabWidget QTabBar::tab:!selected { - /*margin-top: 4px; make non-selected tabs look smaller */ -} - -/* Default settings for TabWidget frame */ -#TabWidget::pane { - border: 2px solid rgb(200, 200, 200); -} - -/* Default button settings */ -QPushButton { - border: 1px solid rgb(200, 200, 200); - border-radius: 6px; - padding: 2px; - /* min-width: 80px*/; -} - -/* Disabled button settings */ -QPushButton:!enabled { - border: 1px solid rgb(100, 100, 100); - color: rgb(150, 150, 150); -} - -/* Settings for hovered buttons */ -QPushButton:hover { - background: rgb(68, 111, 140); -} -/* Settings for hovered and checked buttons */ -QPushButton:hover:checked { - background: rgb(66, 131, 176); -} - -/* Settings for pressed buttons */ -QPushButton:pressed { - background: rgb(44, 142, 210); -} - -/* Settings for checked buttons */ -QPushButton:checked { - background: rgb(44, 142, 210); -} - -/* Default horizontal slider settings */ -QSlider::groove:horizontal { - border: 1px solid #999999; - height: 8px; /* the groove expands to the size of the slider by default. by giving it a height, it has a fixed size */ - background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #B1B1B1, stop:1 #c4c4c4); - margin: 2px 0; -} -QSlider::handle:horizontal { - background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #b4b4b4, stop:1 #8f8f8f); - border: 1px solid #5c5c5c; - width: 8px; - margin: -4px 0; /* handle is placed by default on the contents rect of the groove. Expand outside the groove */ - border-radius: 3px; -} - -#FadeDistanceFrame, #ColorAlphaFrame, #SupersamplingFrame { - border: 1px solid rgb(200, 200, 200); - border-radius: 4px; -} - -#ChaperoneHelpLabel, #SteamVRHelpLabel { - font: 12pt; -} - -#FixFloorStatusLabel { - color: rgb(150, 150, 150); -} - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - 0 - - - - SteamVR - - - - 12 - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 2 - - - 2 - - - 2 - - - 2 - - - - - Supersampling* - - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - 1 - - - 40 - - - 5 - - - 10 - - - Qt::Horizontal - - - - - - - - 30 - 0 - - - - 1.0 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - - - - - 2 - - - 2 - - - 2 - - - 2 - - - - - Allow Reprojection* - - - true - - - - - - - Force Reprojection* - - - true - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - 6 - - - 2 - - - 2 - - - 2 - - - 2 - - - - - Reset - - - - - - - Restart SteamVR - - - - - - - - - - * Requires Restart - - - - - - - - Chaperone - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 12 - - - 4 - - - 4 - - - 4 - - - 4 - - - - - Center Marker* - - - true - - - - - - - Play Space* - - - true - - - - - - - Force Bounds - - - true - - - - - - - Flip Orientation - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Reset - - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 2 - - - 2 - - - 2 - - - 2 - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 2 - - - 2 - - - 2 - - - 2 - - - - - Fade Distance - - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - 200 - - - Qt::Horizontal - - - - - - - - 30 - 0 - - - - 0.01 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 2 - - - 2 - - - 2 - - - 2 - - - - - Chaperone Bounds Visibility - - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - 100 - - - Qt::Horizontal - - - - - - - - 30 - 0 - - - - 100% - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - 2 - - - 2 - - - 2 - - - 2 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Reload from Disk - - - - - - - - - - - 12 - 50 - false - false - - - - * Not always working in the SteamVR room. - - - true - - - - - - - - - - - Move Play Space - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 2 - - - 2 - - - 2 - - - 2 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - false - - - - 100 - 0 - - - - Standing - - - true - - - true - - - - - - - false - - - - 100 - 0 - - - - Seated - - - true - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 6 - - - 2 - - - 2 - - - 2 - - - 2 - - - - - - 0 - 0 - - - - - 210 - 0 - - - - X-Axis (Left/Right): - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 2 - - - 2 - - - 2 - - - 2 - - - - - < - - - - - - - - 0 - 0 - - - - - 50 - 0 - - - - 0.0 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - > - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 6 - - - 2 - - - 2 - - - 2 - - - 2 - - - - - - 0 - 0 - - - - - 210 - 0 - - - - Y-Axis (Down/Up): - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 2 - - - 2 - - - 2 - - - 2 - - - - - < - - - - - - - - 0 - 0 - - - - - 50 - 0 - - - - 0.0 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - > - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 2 - - - 2 - - - 2 - - - 2 - - - - - - 0 - 0 - - - - - 210 - 0 - - - - Z-Axis (Forth/Back): - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 2 - - - 2 - - - 2 - - - 2 - - - - - < - - - - - - - - 0 - 0 - - - - - 50 - 0 - - - - 0.0 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - > - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 2 - - - 2 - - - 2 - - - 2 - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - true - - - Rotation: - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - 0 - - - - - - - - - - - 6 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - -180 - - - 180 - - - 1 - - - Qt::Horizontal - - - - - - - Apply - - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Reset - - - - - - - - Fix Floor - - - - 20 - - - 20 - - - 20 - - - 20 - - - 20 - - - - - Place one controller on the ground and ensure good visibility to the base stations. - - - Qt::AlignCenter - - - true - - - - - - - true - - - - 0 - 50 - - - - - - - Qt::AlignCenter - - - - - - - - 0 - 50 - - - - Fix Floor - - - - - - - false - - - Undo Fix - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - Statistics - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 2 - - - 2 - - - 2 - - - 2 - - - - - HMD Distance Moved: - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - 0.0 m - - - - - - - Reset - - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 2 - - - 2 - - - 2 - - - 2 - - - - - HMD Rotations: - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - 0.0 CCW - - - - - - - Reset - - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 2 - - - 2 - - - 2 - - - 2 - - - - - Left Controller Max Speed: - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - 0.0 m/s - - - - - - - Reset - - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 2 - - - 2 - - - 2 - - - 2 - - - - - Right Controller Max Speed: - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - 0.0 m/s - - - - - - - Reset - - - - - - - - - - Qt::Vertical - - - - 20 - 111 - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 2 - - - 2 - - - 2 - - - 2 - - - - - Dropped Frames: - - - - - - - Qt::Horizontal - - - - 364 - 20 - - - - - - - - 0 - - - - - - - Reset - - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 2 - - - 2 - - - 2 - - - 2 - - - - - Reprojected Frames: - - - - - - - Qt::Horizontal - - - - 336 - 20 - - - - - - - - 0 - - - - - - - Reset - - - - - - - - - - - 2 - - - 2 - - - 2 - - - 2 - - - - - Timed Out: - - - - - - - Qt::Horizontal - - - - 418 - 20 - - - - - - - - 0 - - - - - - - Reset - - - - - - - - - - - Settings - - - - - - - - - Auto Start - - - true - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - v0.0 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - - - -