mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-04-04 12:52:06 -04:00
55 lines
1.8 KiB
QML
55 lines
1.8 KiB
QML
pragma ComponentBehavior: Bound
|
|
|
|
import QtQuick
|
|
import QtQuick.Effects
|
|
import qs.Common
|
|
|
|
Item {
|
|
id: root
|
|
|
|
property var level: Theme.elevationLevel2
|
|
property string direction: Theme.elevationLightDirection
|
|
property real fallbackOffset: 4
|
|
|
|
property color targetColor: "white"
|
|
property real targetRadius: Theme.cornerRadius
|
|
property color borderColor: "transparent"
|
|
property real borderWidth: 0
|
|
|
|
property bool shadowEnabled: Theme.elevationEnabled
|
|
property real shadowBlurPx: level && level.blurPx !== undefined ? level.blurPx : 0
|
|
property real shadowSpreadPx: level && level.spreadPx !== undefined ? level.spreadPx : 0
|
|
property real shadowOffsetX: Theme.elevationOffsetXFor(level, direction, fallbackOffset)
|
|
property real shadowOffsetY: Theme.elevationOffsetYFor(level, direction, fallbackOffset)
|
|
property color shadowColor: Theme.elevationShadowColor(level)
|
|
property real shadowOpacity: 1
|
|
property real blurMax: Theme.elevationBlurMax
|
|
|
|
property alias sourceRect: sourceRect
|
|
|
|
layer.enabled: shadowEnabled
|
|
|
|
layer.effect: MultiEffect {
|
|
autoPaddingEnabled: true
|
|
shadowEnabled: true
|
|
blurEnabled: false
|
|
maskEnabled: false
|
|
shadowBlur: Math.max(0, Math.min(1, root.shadowBlurPx / Math.max(1, root.blurMax)))
|
|
shadowScale: 1 + (2 * root.shadowSpreadPx) / Math.max(1, Math.min(root.width, root.height))
|
|
shadowHorizontalOffset: root.shadowOffsetX
|
|
shadowVerticalOffset: root.shadowOffsetY
|
|
blurMax: root.blurMax
|
|
shadowColor: root.shadowColor
|
|
shadowOpacity: root.shadowOpacity
|
|
}
|
|
|
|
Rectangle {
|
|
id: sourceRect
|
|
anchors.fill: parent
|
|
radius: root.targetRadius
|
|
color: root.targetColor
|
|
border.color: root.borderColor
|
|
border.width: root.borderWidth
|
|
}
|
|
}
|