222 lines
6.8 KiB
QML
222 lines
6.8 KiB
QML
// Copyright (C) 2023 The Qt Company Ltd.
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
|
|
|
|
import QtQuick
|
|
import QtQuick.Controls
|
|
import QtQuick.Dialogs
|
|
import QtQuick.Layouts
|
|
|
|
Item {
|
|
id: root
|
|
width: 600
|
|
height: 400
|
|
|
|
component ResettablePropertySlider: RowLayout {
|
|
property alias setCheckBox: checkBox
|
|
property alias valueSlider: slider
|
|
|
|
CheckBox {
|
|
id: checkBox
|
|
text: "Set"
|
|
}
|
|
Slider {
|
|
id: slider
|
|
from: -100
|
|
value: 25
|
|
to: 200
|
|
enabled: checkBox.checked
|
|
|
|
Layout.fillWidth: true
|
|
}
|
|
}
|
|
|
|
RowLayout {
|
|
anchors.fill: parent
|
|
|
|
GridLayout {
|
|
columns: 2
|
|
rowSpacing: 10
|
|
|
|
Label {
|
|
text: "radius"
|
|
}
|
|
Slider {
|
|
id: radiusSlider
|
|
from: -100
|
|
value: 25
|
|
to: 200
|
|
}
|
|
|
|
Label {
|
|
text: "topLeftRadius"
|
|
}
|
|
ResettablePropertySlider {
|
|
id: topLeftRadiusSlider
|
|
}
|
|
|
|
Label {
|
|
text: "topRightRadius"
|
|
}
|
|
ResettablePropertySlider {
|
|
id: topRightRadiusSlider
|
|
}
|
|
|
|
Label {
|
|
text: "bottomLeftRadius"
|
|
}
|
|
ResettablePropertySlider {
|
|
id: bottomLeftRadiusSlider
|
|
}
|
|
|
|
Label {
|
|
text: "bottomRightRadius"
|
|
}
|
|
ResettablePropertySlider {
|
|
id: bottomRightRadiusSlider
|
|
}
|
|
|
|
Label {
|
|
text: "border.width"
|
|
}
|
|
Slider {
|
|
id: borderWidthSlider
|
|
from: 0
|
|
value: 15
|
|
to: 100
|
|
|
|
Layout.fillWidth: true
|
|
}
|
|
|
|
Label {
|
|
text: "border alpha"
|
|
}
|
|
Slider {
|
|
id: borderAlphaSlider
|
|
from: 0
|
|
value: 1
|
|
to: 1
|
|
|
|
Layout.fillWidth: true
|
|
}
|
|
|
|
Label {
|
|
text: "opacity"
|
|
}
|
|
Slider {
|
|
id: opacitySlider
|
|
from: 0
|
|
value: 1
|
|
to: 1
|
|
|
|
Layout.fillWidth: true
|
|
}
|
|
|
|
Label {
|
|
text: "gradient"
|
|
}
|
|
ComboBox {
|
|
id: gradientComboBox
|
|
model: ListModel {
|
|
id: model
|
|
ListElement { text: "NoGradient" }
|
|
ListElement { text: "LowFreq" }
|
|
ListElement { text: "HighFreq" }
|
|
}
|
|
|
|
Layout.fillWidth: true
|
|
|
|
readonly property var gradients: [undefined, lowFGrad, highFGrad]
|
|
|
|
property var lowFGrad: Gradient {
|
|
orientation: Qt.Horizontal
|
|
GradientStop { position: 0.0; color: "green" }
|
|
GradientStop { position: 0.33; color: "blue" }
|
|
GradientStop { position: 0.66; color: "red" }
|
|
GradientStop { position: 1.0; color: "yellow" }
|
|
}
|
|
|
|
property var highFGrad: Gradient {
|
|
orientation: Qt.Horizontal
|
|
GradientStop { position: 0.00; color: "yellow" }
|
|
GradientStop { position: 0.05; color: "red" }
|
|
GradientStop { position: 0.10; color: "yellow" }
|
|
GradientStop { position: 0.15; color: "red" }
|
|
GradientStop { position: 0.20; color: "yellow" }
|
|
GradientStop { position: 0.25; color: "red" }
|
|
GradientStop { position: 0.30; color: "yellow" }
|
|
GradientStop { position: 0.35; color: "red" }
|
|
GradientStop { position: 0.40; color: "yellow" }
|
|
GradientStop { position: 0.45; color: "red" }
|
|
GradientStop { position: 0.50; color: "yellow" }
|
|
GradientStop { position: 0.55; color: "red" }
|
|
GradientStop { position: 0.60; color: "yellow" }
|
|
GradientStop { position: 0.65; color: "red" }
|
|
GradientStop { position: 0.70; color: "yellow" }
|
|
GradientStop { position: 0.75; color: "red" }
|
|
GradientStop { position: 0.80; color: "yellow" }
|
|
GradientStop { position: 0.85; color: "red" }
|
|
GradientStop { position: 0.90; color: "yellow" }
|
|
GradientStop { position: 0.95; color: "red" }
|
|
GradientStop { position: 1.00; color: "yellow" }
|
|
}
|
|
}
|
|
|
|
Label {
|
|
text: "rotation"
|
|
}
|
|
Slider {
|
|
id: rotationSlider
|
|
from: 0
|
|
value: 0
|
|
to: 10
|
|
|
|
Layout.fillWidth: true
|
|
}
|
|
}
|
|
|
|
Rectangle {
|
|
id: rect1
|
|
color: colorDialog.selectedColor
|
|
border.color: borderColorDialog.alphaAdjusted
|
|
border.width: borderWidthSlider.value
|
|
radius: radiusSlider.value
|
|
topLeftRadius: topLeftRadiusSlider.setCheckBox.checked ? topLeftRadiusSlider.valueSlider.value : undefined
|
|
topRightRadius: topRightRadiusSlider.setCheckBox.checked ? topRightRadiusSlider.valueSlider.value : undefined
|
|
bottomLeftRadius: bottomLeftRadiusSlider.setCheckBox.checked ? bottomLeftRadiusSlider.valueSlider.value : undefined
|
|
bottomRightRadius: bottomRightRadiusSlider.setCheckBox.checked ? bottomRightRadiusSlider.valueSlider.value : undefined
|
|
antialiasing: true
|
|
opacity: opacitySlider.value
|
|
rotation: rotationSlider.value
|
|
gradient: gradientComboBox.gradients[gradientComboBox.currentIndex]
|
|
|
|
Layout.preferredWidth: root.width / 2
|
|
Layout.fillWidth: true
|
|
Layout.fillHeight: true
|
|
Layout.margins: 32
|
|
|
|
TapHandler {
|
|
onTapped: colorDialog.open()
|
|
}
|
|
|
|
TapHandler {
|
|
acceptedButtons: Qt.RightButton
|
|
onTapped: borderColorDialog.open()
|
|
}
|
|
}
|
|
|
|
ColorDialog {
|
|
id: colorDialog
|
|
selectedColor: "khaki"
|
|
}
|
|
|
|
ColorDialog {
|
|
id: borderColorDialog
|
|
selectedColor: "sienna"
|
|
property color alphaAdjusted: Qt.rgba(selectedColor.r,
|
|
selectedColor.g,
|
|
selectedColor.b,
|
|
borderAlphaSlider.value)
|
|
}
|
|
}
|
|
}
|