RibbonUI/lib_source/qml/Qt6/RibbonBlur.qml

47 lines
1.4 KiB
QML

import QtQuick
import Qt5Compat.GraphicalEffects
import RibbonUI
RibbonRectangle {
id: control
property bool enableEffect: true
property int blurRadius: 32
property alias target: effect.sourceItem
property rect targetRect : Qt.rect(control.x, control.y, control.width, control.height)
property color maskColor: RibbonTheme.isDarkMode ? RibbonTheme.modernStyle ? '#292929' : "#212629" : RibbonTheme.modernStyle ? "#F5F5F5" : "#FFFFFF"
property real maskOpacity: 0.5
property alias maskBorderColor: mask.borderColor
property alias maskBorderWidth: mask.borderWidth
property bool useSolidBg: true
color: control.useSolidBg ? control.maskColor : 'transparent'
ShaderEffectSource {
id: effect
anchors.fill: parent
sourceRect: control.targetRect
visible: false
}
GaussianBlur{
id: blur
anchors.fill: parent
radius: control.blurRadius
deviation: 8
samples: (control.blurRadius / 4) * 3
source: effect
visible: enableEffect
}
RibbonRectangle{
id: mask
anchors.fill: parent
color: control.maskColor
opacity: control.maskOpacity
radius: control.radius
topLeftRadius: control.topLeftRadius
bottomLeftRadius: control.bottomLeftRadius
topRightRadius: control.topRightRadius
bottomRightRadius: control.bottomRightRadius
}
}