Inital commit of the Komplex Hub

This commit is contained in:
Digital Artifex
2026-06-02 15:11:36 -04:00
commit 15a625008e
2911 changed files with 655555 additions and 0 deletions
@@ -0,0 +1,50 @@
/****************************************************************************
**
** Copyright (C) 2023 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Quick Ultralite compatibility.
**
** $QT_BEGIN_LICENSE:GPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 or (at your option) 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.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-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.15
//! [AnimatedSpriteDirectory compatibility]
// Draws a sprite animation stored in a directory.
Item {
property int currentFrame: 0
property int frameDuration: 0
property int loops: -1 //-1 = AnimatedSpriteDirectory.Infinite
property bool running: true
property bool paused: false
property string sourcePath
signal finished
function advance() {}
function pause() {}
function restart() {}
function resume() {}
function start() {}
function stop() {}
}
//! [AnimatedSpriteDirectory compatibility]
@@ -0,0 +1,58 @@
/****************************************************************************
**
** Copyright (C) 2023 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Quick Ultralite compatibility.
**
** $QT_BEGIN_LICENSE:GPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 or (at your option) 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.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-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.12
import Qt5Compat.GraphicalEffects
//! [ColorizedImage compatibility]
// Displays a colorized image.
Item {
id: colorizedRoot
implicitHeight: img.implicitHeight
implicitWidth: img.implicitWidth
property alias color: colorize.color
property alias source: img.source
property alias fillMode: img.fillMode
property alias horizontalAlignment: img.horizontalAlignment
property alias verticalAlignment: img.verticalAlignment
Image {
id: img
anchors.fill: parent
visible: false
}
ColorOverlay {
id: colorize
anchors.fill: img
color: "transparent"
source: img
}
}
//! [ColorizedImage compatibility]
@@ -0,0 +1,37 @@
/****************************************************************************
**
** Copyright (C) 2023 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Quick Ultralite compatibility.
**
** $QT_BEGIN_LICENSE:GPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 or (at your option) 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.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-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.12
//! [ItemBuffer compatibility]
Item {
enum ExtraFlag { RedrawItemBufferFlag = 1 }
// property Transform transform; //in regular QML this property is already provided by QtQuick.Item
property bool useAlphaChannel;
}
//! [ItemBuffer compatibility]
@@ -0,0 +1,8 @@
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 qmltyperegistrar.
Module {}
@@ -0,0 +1,6 @@
<RCC>
<qresource prefix="/">
<file alias="/qt-project.org/imports/QtQuickUltralite/Extras">/home/parametheus/Projects/QtDesigner/KomplexHub/build/qml/QtQuickUltralite/Extras</file>
</qresource>
</RCC>
@@ -0,0 +1,50 @@
/****************************************************************************
**
** Copyright (C) 2023 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Quick Ultralite compatibility.
**
** $QT_BEGIN_LICENSE:GPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 or (at your option) 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.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-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
pragma Singleton
import QtQuick 2.12
//! [QulPerf compatibility]
// Holds information about application performance.
// This data is only available if Qt Quick Ultralite is compiled with QUL_ENABLE_PERFORMANCE_LOGGING.
// Properties will be updated every two seconds.
// All properties are read-only.
QtObject {
readonly property bool enabled: false
readonly property real fps: 0
readonly property real imageBlend: 0
readonly property real imageTransform: 0
readonly property int maxDirtyNodes: 0
readonly property real rectBlend: 0
readonly property real rectFill: 0
readonly property real rectRounded: 0
readonly property real repaint: 0
readonly property real textBlend: 0
readonly property real textLayout: 0
}
//! [QulPerf compatibility]
@@ -0,0 +1,35 @@
/****************************************************************************
**
** Copyright (C) 2023 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Quick Ultralite compatibility.
**
** $QT_BEGIN_LICENSE:GPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 or (at your option) 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.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-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.15
//! [StaticText compatibility]
// Enables optimized drawing of text.
Text {
}
//! [StaticText compatibility]
+23
View File
@@ -0,0 +1,23 @@
module QtQuickUltralite.Extras
linktarget QuickUltraLiteStudioExtrasplugin
optional plugin QuickUltraLiteStudioExtrasplugin
classname QtQuickUltralite_ExtrasPlugin
designersupported
typeinfo QuickUltraLiteStudioExtras.qmltypes
prefer :/qt-project.org/imports/QtQuickUltralite/Extras/
AnimatedSpriteDirectory 254.0 AnimatedSpriteDirectory.qml
AnimatedSpriteDirectory 1.0 AnimatedSpriteDirectory.qml
AnimatedSpriteDirectory 2.0 AnimatedSpriteDirectory.qml
ColorizedImage 254.0 ColorizedImage.qml
ColorizedImage 1.0 ColorizedImage.qml
ColorizedImage 2.0 ColorizedImage.qml
ItemBuffer 254.0 ItemBuffer.qml
ItemBuffer 1.0 ItemBuffer.qml
ItemBuffer 2.0 ItemBuffer.qml
StaticText 254.0 StaticText.qml
StaticText 1.0 StaticText.qml
StaticText 2.0 StaticText.qml
singleton QulPerf 254.0 QulPerf.qml
singleton QulPerf 1.0 QulPerf.qml
singleton QulPerf 2.0 QulPerf.qml
@@ -0,0 +1,43 @@
/****************************************************************************
**
** Copyright (C) 2021 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Quick Ultralite compatibility.
**
** $QT_BEGIN_LICENSE:GPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 or (at your option) 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.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-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.15
//! [Screen compatibility]
Rectangle {
id: wnd
property string outputDevice: "device"
property alias backgroundColor: wnd.color
property real defaultApplicationWidth: 0
property real defaultApplicationHeight: 0
visible: true
}
//! [Screen compatibility]
@@ -0,0 +1 @@
prefer :/qt-project.org/imports/QtQuickUltralite/Layers/
@@ -0,0 +1,35 @@
/****************************************************************************
**
** Copyright (C) 2021 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Quick Ultralite compatibility.
**
** $QT_BEGIN_LICENSE:GPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 or (at your option) 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.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-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.15
//! [ApplicationScreens compatibility]
Item {
}
//! [ApplicationScreens compatibility]
@@ -0,0 +1,49 @@
/****************************************************************************
**
** Copyright (C) 2021 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Quick Ultralite compatibility.
**
** $QT_BEGIN_LICENSE:GPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 or (at your option) 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.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-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.15
//! [ImageLayer compatibility]
Item {
enum RenderingHints {
OptimizeForSpeed,
OptimizeForSize,
StaticContents
}
property int platformId: 0
property int renderingHints: ImageLayer.RenderingHints.OptimizeForSpeed
property alias source: internalImage.source
Image {
id: internalImage
anchors.fill: parent
}
}
//! [ImageLayer compatibility]
@@ -0,0 +1,49 @@
/****************************************************************************
**
** Copyright (C) 2021 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Quick Ultralite compatibility.
**
** $QT_BEGIN_LICENSE:GPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 or (at your option) 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.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-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.15
//! [ItemLayer compatibility]
Item {
enum ColorDepth {
Bpp16, Bpp16Alpha, Bpp24, Bpp32, Bpp32Alpha
}
enum RenderingHints {
OptimizeForSpeed,
OptimizeForSize,
StaticContents
}
property int depth: ColorDepth.Bpp32
property int refreshInterval: 1
property int platformId: 0
property int renderingHints: RenderingHints.OptimizeForSpeed
}
//! [ItemLayer compatibility]
@@ -0,0 +1,8 @@
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 qmltyperegistrar.
Module {}
@@ -0,0 +1,6 @@
<RCC>
<qresource prefix="/">
<file alias="/qt-project.org/imports/QtQuickUltralite/Layers">/home/parametheus/Projects/QtDesigner/KomplexHub/build/qml/QtQuickUltralite/Layers</file>
</qresource>
</RCC>
@@ -0,0 +1,82 @@
/****************************************************************************
**
** Copyright (C) 2021 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Quick Ultralite compatibility.
**
** $QT_BEGIN_LICENSE:GPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 or (at your option) 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.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-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.15
import QtQuick.Window 2.2
//! [Screen compatibility]
Item {
id: root
property string outputDevice: "device"
property alias backgroundColor: wnd.color
property real defaultApplicationWidth: 0
property real defaultApplicationHeight: 0
onChildrenChanged: {
if (wnd.isAvailable)
wnd.reparenting()
}
Window {
id: wnd
visible: true
width: root.width
height: root.height
property bool reparentingBlock: false
property bool isAvailable: false
Component.onCompleted: {
reparenting()
isAvailable = true
}
function reparenting() {
if (reparentingBlock)
return;
reparentingBlock = true;
var result = [];
var rootChildren = root.children;
for (var i = 0; i < rootChildren.length; i++) {
if (rootChildren[i] !== wnd) {
result.push(rootChildren[i]);
}
}
wnd.data = result;
reparentingBlock = false;
}
}
}
//! [Screen compatibility]
@@ -0,0 +1,41 @@
/****************************************************************************
**
** Copyright (C) 2021 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Quick Ultralite compatibility.
**
** $QT_BEGIN_LICENSE:GPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 or (at your option) 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.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-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.15
//! [SpriteLayer compatibility]
Item {
enum ColorDepth {
Bpp8, Bpp16, Bpp16Alpha, Bpp24, Bpp32, Bpp32Alpha
}
property int depth: ColorDepth.Bpp32
property int platformId: 0
}
//! [SpriteLayer compatibility]
+26
View File
@@ -0,0 +1,26 @@
module QtQuickUltralite.Layers
linktarget QuickUltraLiteStudioLayersplugin
optional plugin QuickUltraLiteStudioLayersplugin
classname QtQuickUltralite_LayersPlugin
designersupported
typeinfo QuickUltraLiteStudioLayers.qmltypes
prefer :/qt-project.org/imports/QtQuickUltralite/Layers/
ApplicationScreens 254.0 ApplicationScreens.qml
ApplicationScreens 1.0 ApplicationScreens.qml
ApplicationScreens 2.0 ApplicationScreens.qml
ImageLayer 254.0 ImageLayer.qml
ImageLayer 1.0 ImageLayer.qml
ImageLayer 2.0 ImageLayer.qml
ItemLayer 254.0 ItemLayer.qml
ItemLayer 1.0 ItemLayer.qml
ItemLayer 2.0 ItemLayer.qml
Screen 254.0 Screen.qml
Screen 1.0 Screen.qml
Screen 2.0 Screen.qml
SpriteLayer 254.0 SpriteLayer.qml
SpriteLayer 1.0 SpriteLayer.qml
SpriteLayer 2.0 SpriteLayer.qml
Screen 254.0 +DesignMode/Screen.qml
Screen 1.0 +DesignMode/Screen.qml
Screen 2.0 +DesignMode/Screen.qml
@@ -0,0 +1,8 @@
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 qmltyperegistrar.
Module {}
@@ -0,0 +1,6 @@
<RCC>
<qresource prefix="/">
<file alias="/qt-project.org/imports/QtQuickUltralite/Profiling">/home/parametheus/Projects/QtDesigner/KomplexHub/build/qml/QtQuickUltralite/Profiling</file>
</qresource>
</RCC>
@@ -0,0 +1,69 @@
/******************************************************************************
**
** Copyright (C) 2023 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Quick Ultralite module.
**
** $QT_BEGIN_LICENSE:COMM$
**
** 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.
**
** $QT_END_LICENSE$
**
******************************************************************************/
import QtQuick 2.15
import QtQuickUltralite.Extras
Column {
id: root
onVisibleChanged: {
if (root.visible) {
console.log("Benchmark Results:");
console.log("Total frames: ", QulPerf.totalFrames);
console.log("Average fps: ", QulPerf.averageFps.toFixed(2));
console.log("Minimum fps: ", QulPerf.minimumFps.toFixed(1));
console.log("Max heap usage: ", QulPerf.maxHeapUsage, "Bytes");
console.log("Max stack usage: ", QulPerf.maxStackUsage, "Bytes");
console.log("Average CPU load:", QulPerf.averageCpuLoad.toFixed(1), "%");
}
}
Text {
color: "#ffb6c1"
text: "Total frames: " + QulPerf.totalFrames
}
Text {
color: "#ffb6c1"
text: "Average fps: " + QulPerf.averageFps.toFixed(2)
}
Text {
color: "#ffb6c1"
text: "Minimum fps: " + QulPerf.minimumFps.toFixed(1)
}
Text {
color: "#ffb6c1"
text: "Max heap usage: " + QulPerf.maxHeapUsage + " Bytes"
}
Text {
color: "#ffb6c1"
text: "Max stack usage: " + QulPerf.maxStackUsage + " Bytes"
}
Text {
color: "#ffb6c1"
text: "Average CPU load: " + QulPerf.averageCpuLoad.toFixed(1) + "%"
}
}
@@ -0,0 +1,11 @@
module QtQuickUltralite.Profiling
linktarget QuickUltraLiteStudioProfilingplugin
optional plugin QuickUltraLiteStudioProfilingplugin
classname QtQuickUltralite_ProfilingPlugin
designersupported
typeinfo QuickUltraLiteStudioProfiling.qmltypes
prefer :/qt-project.org/imports/QtQuickUltralite/Profiling/
QulPerfOverlay 254.0 QulPerfOverlay.qml
QulPerfOverlay 1.0 QulPerfOverlay.qml
QulPerfOverlay 2.0 QulPerfOverlay.qml
@@ -0,0 +1,244 @@
/****************************************************************************
**
** Copyright (C) 2023 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Quick Ultralite compatibility.
**
** $QT_BEGIN_LICENSE:GPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 or (at your option) 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.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-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.9
import QtQuick.Shapes 1.12
//! [ArcItem compatibility]
Shape {
id: root
implicitWidth: 100
implicitHeight: 100
// These properties are not supported in Qt Quick Ultralite:
// strokeStyle, dashPattern, dashOffset
property alias gradient: path.fillGradient
property alias strokeWidth: path.strokeWidth
property alias strokeColor: path.strokeColor
property alias joinStyle: path.joinStyle
property alias fillColor: path.fillColor
property alias capStyle: path.capStyle
property real begin: 0
property real end: 90
property real arcWidth: 10
property real alpha: root.clamp(root.sortedEnd() - root.sortedBegin(), 0, 359.9)
// antialiasing is enabled to have the same shape as Qt Quick Ultralite runtime
antialiasing: true
layer.enabled: root.antialiasing
layer.smooth: root.antialiasing
layer.samples: root.antialiasing ? 4 : 0
property bool outlineArc: false
property bool round: false
property bool roundEnd: root.round
property bool roundBegin: root.round
function clamp(num, min, max) {
return Math.max(min, Math.min(num, max))
}
function toRadians(degrees) {
return degrees * (Math.PI / 180.0)
}
function myCos(angleInDegrees) {
return Math.cos(root.toRadians(angleInDegrees))
}
function mySin(angleInDegrees) {
return Math.sin(root.toRadians(angleInDegrees))
}
function polarToCartesianX(centerX, centerY, radius, angleInDegrees) {
return centerX + radius * Math.cos(root.toRadians(angleInDegrees))
}
function polarToCartesianY(centerX, centerY, radius, angleInDegrees) {
return centerY + radius * Math.sin(root.toRadians(angleInDegrees))
}
function sortedBegin() {
return Math.min(root.begin, root.end)
}
function sortedEnd() {
return Math.min(Math.max(root.begin, root.end), root.sortedBegin() + 359.9)
}
function isArcFull() {
return root.alpha > 359.5
}
onAlphaChanged: {
if (root.__wasFull !== root.isArcFull())
root.constructArcItem()
root.__wasFull = root.isArcFull()
}
onOutlineArcChanged: root.constructArcItem()
onRoundChanged: root.constructArcItem()
onRoundBeginChanged: root.constructArcItem()
onRoundEndChanged: root.constructArcItem()
property bool __wasFull: false
property real maxArcWidth: Math.min(path.__xRadius, path.__yRadius)
ShapePath {
id: path
property real __xRadius: root.width / 2 - root.strokeWidth / 2
property real __yRadius: root.height / 2 - root.strokeWidth / 2
property real __arcWidth: Math.min(Math.min(path.__xRadius, path.__yRadius), root.arcWidth)
property real __xCenter: root.width / 2
property real __yCenter: root.height / 2
strokeColor: "red"
strokeWidth: 4
capStyle: ShapePath.FlatCap
startX: root.polarToCartesianX(path.__xCenter, path.__yCenter, path.__xRadius, root.sortedBegin() - 90)
startY: root.polarToCartesianY(path.__xCenter, path.__yCenter, path.__yRadius, root.sortedBegin() - 90)
}
function constructArcItem() {
root.clearPathElements()
// Outer arc
let outerArc = Qt.createQmlObject('import QtQuick 2.15; PathArc {}', path)
outerArc.x = Qt.binding(function() {
return root.polarToCartesianX(path.__xCenter, path.__yCenter, path.__xRadius, root.sortedEnd() - 90)
})
outerArc.y = Qt.binding(function() {
return root.polarToCartesianY(path.__xCenter, path.__yCenter, path.__yRadius, root.sortedEnd() - 90)
})
outerArc.radiusX = Qt.binding(function() { return path.__xRadius })
outerArc.radiusY = Qt.binding(function() { return path.__yRadius })
outerArc.useLargeArc = Qt.binding(function() { return root.alpha > 180 })
path.pathElements.push(outerArc)
// Straight end
if (!root.roundEnd && root.outlineArc && !root.isArcFull()) {
let pathLine = Qt.createQmlObject('import QtQuick 2.15; PathLine {}', path)
pathLine.relativeX = Qt.binding(function() {
return -path.__arcWidth * root.myCos(root.sortedEnd() - 90)
})
pathLine.relativeY = Qt.binding(function() {
return -path.__arcWidth * root.mySin(root.sortedEnd() - 90)
})
path.pathElements.push(pathLine)
}
// Round end
if (root.roundEnd && root.outlineArc && !root.isArcFull()) {
let pathArc = Qt.createQmlObject('import QtQuick 2.15; PathArc {}', path)
pathArc.relativeX = Qt.binding(function() {
return -path.__arcWidth * root.myCos(root.sortedEnd() - 90)
})
pathArc.relativeY = Qt.binding(function() {
return -path.__arcWidth * root.mySin(root.sortedEnd() - 90)
})
pathArc.radiusX = Qt.binding(function() { return path.__arcWidth / 2 })
pathArc.radiusY = Qt.binding(function() { return path.__arcWidth / 2 })
path.pathElements.push(pathArc)
}
// Open end
if (root.outlineArc && root.isArcFull()) {
let pathMove = Qt.createQmlObject('import QtQuick 2.15; PathMove {}', path)
pathMove.relativeX = Qt.binding(function() {
return -path.__arcWidth * root.myCos(root.sortedEnd() - 90)
})
pathMove.relativeY = Qt.binding(function() {
return -path.__arcWidth * root.mySin(root.sortedEnd() - 90)
})
path.pathElements.push(pathMove)
}
// Inner arc
if (root.outlineArc) {
let innerArc = Qt.createQmlObject('import QtQuick 2.15; PathArc {}', path)
innerArc.x = Qt.binding(function() {
return path.startX - path.__arcWidth * root.myCos(root.sortedBegin() - 90)
})
innerArc.y = Qt.binding(function() {
return path.startY - path.__arcWidth * root.mySin(root.sortedBegin() - 90)
})
innerArc.radiusX = Qt.binding(function() { return path.__xRadius - path.__arcWidth })
innerArc.radiusY = Qt.binding(function() { return path.__yRadius - path.__arcWidth })
innerArc.useLargeArc = Qt.binding(function() { return root.alpha > 180 })
innerArc.direction = PathArc.Counterclockwise
path.pathElements.push(innerArc)
}
// Straight begin
if (!root.roundBegin && root.outlineArc && !root.isArcFull()) {
let pathLine = Qt.createQmlObject('import QtQuick 2.15; PathLine {}', path)
pathLine.x = Qt.binding(function() { return path.startX })
pathLine.y = Qt.binding(function() { return path.startY })
path.pathElements.push(pathLine)
}
// Round begin
if (root.roundBegin && root.outlineArc && !root.isArcFull()) {
let pathArc = Qt.createQmlObject('import QtQuick 2.15; PathArc {}', path)
pathArc.x = Qt.binding(function() { return path.startX })
pathArc.y = Qt.binding(function() { return path.startY })
pathArc.radiusX = Qt.binding(function() { return path.__arcWidth / 2 })
pathArc.radiusY = Qt.binding(function() { return path.__arcWidth / 2 })
path.pathElements.push(pathArc)
}
// Open begin
if (root.outlineArc && root.isArcFull()) {
let pathMove = Qt.createQmlObject('import QtQuick 2.15; PathMove {}', path)
pathMove.x = Qt.binding(function() { return path.startX })
pathMove.y = Qt.binding(function() { return path.startY })
path.pathElements.push(pathMove)
}
}
function clearPathElements() {
for (var i = 0; i !== path.pathElements.length; ++i)
path.pathElements[i].destroy()
path.pathElements = []
}
Component.onCompleted: {
root.__wasFull = root.isArcFull()
root.constructArcItem()
}
}
//! [ArcItem compatibility]
@@ -0,0 +1,8 @@
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 qmltyperegistrar.
Module {}
@@ -0,0 +1,6 @@
<RCC>
<qresource prefix="/">
<file alias="/qt-project.org/imports/QtQuickUltralite/Studio/Components">/home/parametheus/Projects/QtDesigner/KomplexHub/build/qml/QtQuickUltralite/Studio/Components</file>
</qresource>
</RCC>
@@ -0,0 +1,10 @@
module QtQuickUltralite.Studio.Components
linktarget QuickUltraLiteStudioComponentsplugin
optional plugin QuickUltraLiteStudioComponentsplugin
classname QtQuickUltralite_Studio_ComponentsPlugin
designersupported
typeinfo QuickUltraLiteStudioComponents.qmltypes
prefer :/qt-project.org/imports/QtQuickUltralite/Studio/Components/
ArcItem 254.0 ArcItem.qml
ArcItem 1.0 ArcItem.qml