linphone-desktop/Linphone/view/Control/Display/EffectImage.qml
2025-11-17 17:30:03 +01:00

84 lines
2.3 KiB
QML

import QtQuick
import QtQuick.Layouts
import QtQuick.Controls.Basic as Control
import QtQuick.Effects
import Linphone
// TODO : A loader may be needed here to refresh the colorization effect (effect2) which is not refreshed when visibility change
// and causes colorization issue when effect image is inside a popup (not seen in the popup recently tested, may be an obsolete bug)
Item {
id: mainItem
property url imageSource: ""
property var fillMode: Image.PreserveAspectFit
property var colorizationColor
property real imageWidth: width
property real imageHeight: height
property bool useColor: colorizationColor != undefined
property bool shadowEnabled: false
property bool isImageReady: false
Image {
id: image
visible: !effect2.effectEnabled
source: mainItem.imageSource
fillMode: mainItem.fillMode
sourceSize.width: width
sourceSize.height: height
width: mainItem.imageWidth
height: mainItem.imageHeight
Layout.preferredWidth: mainItem.imageWidth
Layout.preferredHeight: mainItem.imageHeight
anchors.centerIn: parent
onStatusChanged: mainItem.isImageReady = (status == Image.Ready)
}
MultiEffect {
id: effect
visible: false
anchors.fill: image
source: image
maskSource: image
brightness: effect2.effectEnabled ? 1.0 : 0.0
}
MultiEffect {
id: effect2
enabled: effectEnabled
visible: mainItem.useColor
property bool effectEnabled: mainItem.useColor
anchors.fill: effect
source: effect
maskSource: effect
colorizationColor: effectEnabled && mainItem.colorizationColor ? mainItem.colorizationColor : 'black'
colorization: effectEnabled ? 1.0: 0.0
}
/* Alernative to shadow for no blackcolors
MultiEffect {
visible: mainItem.shadowEnabled
source: image
width: image.width
height: image.height
x: image.x
y: image.y + 6
z: -1
blurEnabled: true
blurMax: 12
blur: 1.0
contrast: -1.0
brightness: 1.0
colorizationColor: DefaultStyle.grey_400
colorization: 1.0
}*/
MultiEffect {
id: shadow
enabled: mainItem.shadowEnabled
anchors.fill: image
source: image
visible: mainItem.shadowEnabled
// Crash : https://bugreports.qt.io/browse/QTBUG-124730?
shadowEnabled: true //mainItem.shadowEnabled
shadowColor: DefaultStyle.grey_1000
shadowBlur: 0
shadowOpacity: mainItem.shadowEnabled ? 0.7 : 0.0
z: mainItem.z - 1
}
}