@@ -20,54 +20,20 @@ import QtGraphicalEffects 1.0
2020Item {
2121 id: root
2222
23− property alias source: shaderEffectSource.sourceItem
24− property real saturation: 1
23+ property alias source: fastBlur.source
2524 property real brightness: 1
2625 property real blurRadius: 0
2726
28− readonly property alias ready: shaderEffectSource.ready
29−
30− ShaderEffect {
31− id: desaturateEffect
32− anchors.fill: root
33−
34− property real saturationValue: Math.min(Math.max(root.saturation, 0), 1)
35− property real brightnessValue: Math.min(Math.max(root.brightness, 0), 1)
36−
37− property variant source: ShaderEffectSource {
38− id: shaderEffectSource
39− hideSource: root.visible
40− live: !root.visible
41− property bool ready: false;
42− onLiveChanged: {
43− if (!live) {
44− ready = false;
45− scheduleUpdate();
46− }
47− }
48− onScheduledUpdateCompleted: ready = true;
49− }
50−
51− fragmentShader: "
52− varying highp vec2 qt_TexCoord0;
53− uniform sampler2D source;
54− uniform lowp float saturationValue;
55− uniform lowp float brightnessValue;
56− void main(void)
57− {
58− highp vec4 sourceColor = texture2D(source, qt_TexCoord0);
59− highp vec4 scaledColor = sourceColor * vec4(0.3, 0.59, 0.11, 1.0);
60− lowp float luminance = scaledColor.r + scaledColor.g + scaledColor.b ;
61− highp vec4 tmp = mix(vec4(luminance, luminance, luminance, sourceColor.a), sourceColor, saturationValue);
62− gl_FragColor = mix(vec4(0, 0, 0, 1), tmp, brightnessValue);
63− }"
64− }
65−
6627 FastBlur {
6728 id: fastBlur
6829 anchors.fill: parent
69− source: desaturateEffect
7030 visible: radius > 0
7131 radius: Math.max(root.blurRadius, 0)
7232 }
33+
34+ Rectangle {
35+ anchors.fill: parent
36+ color: "black"
37+ opacity: 1 - root.brightness
38+ }
7339}