From 24591130518b41b5750235b80d15bc35bf9bc822 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Samuel=20R=C3=B8dal?= Date: Wed, 16 Mar 2011 15:35:09 +0100 Subject: [PATCH] Improved blending in QML compositor. --- examples/qml-compositor/qml/QmlCompositor/ShaderEffect.qml | 4 +++- examples/qml-compositor/qml/QmlCompositor/WindowChrome.qml | 11 +---------- examples/qml-compositor/qml/QmlCompositor/WindowContainer.qml | 6 ++++-- 3 files changed, 8 insertions(+), 13 deletions(-) diff --git a/examples/qml-compositor/qml/QmlCompositor/ShaderEffect.qml b/examples/qml-compositor/qml/QmlCompositor/ShaderEffect.qml index 2a2020f..09b4e37 100644 --- a/examples/qml-compositor/qml/QmlCompositor/ShaderEffect.qml +++ b/examples/qml-compositor/qml/QmlCompositor/ShaderEffect.qml @@ -43,17 +43,19 @@ import QtQuick 2.0 ShaderEffectItem { property variant source: null; property color color: "#ffffff" + property real blend; fragmentShader: " uniform sampler2D source; uniform float qt_Opacity; uniform vec4 color; + uniform float blend; varying highp vec2 qt_TexCoord0; void main() { vec4 sourceColor = texture2D(source, qt_TexCoord0); vec3 delta = sourceColor.rgb - vec3(0.5); vec3 lowerContrast = vec3(0.5) + 0.4 * delta; - gl_FragColor = qt_Opacity * color * sourceColor.a * dot(lowerContrast, vec3(11, 16, 5) * (1. / 32.)); + gl_FragColor = qt_Opacity * mix(sourceColor, color * sourceColor.a * dot(lowerContrast, vec3(11, 16, 5) * (1. / 32.)), blend); } " } diff --git a/examples/qml-compositor/qml/QmlCompositor/WindowChrome.qml b/examples/qml-compositor/qml/QmlCompositor/WindowChrome.qml index 24a6bda..9e6b0a8 100644 --- a/examples/qml-compositor/qml/QmlCompositor/WindowChrome.qml +++ b/examples/qml-compositor/qml/QmlCompositor/WindowChrome.qml @@ -46,8 +46,6 @@ Item { property variant window: parent; - opacity: { if (parent.focus) 1.0; else 0.1; } - MouseArea { anchors.fill: parent enabled: !window.focus @@ -59,13 +57,6 @@ Item { Binding { target: window property: "opacity" - value: chrome.opacity - } - - Behavior on opacity { - NumberAnimation { - easing.type: Easing.Linear; - duration: 200; - } + value: 0.01 } } diff --git a/examples/qml-compositor/qml/QmlCompositor/WindowContainer.qml b/examples/qml-compositor/qml/QmlCompositor/WindowContainer.qml index c2f9240..95764bc 100644 --- a/examples/qml-compositor/qml/QmlCompositor/WindowContainer.qml +++ b/examples/qml-compositor/qml/QmlCompositor/WindowContainer.qml @@ -72,12 +72,14 @@ Item { } ShaderEffect { + id: effect source: child anchors.fill: child - opacity: { if (child && child.focus) 0.0; else 0.8; } + blend: { if (child && child.focus) 0.0; else 1.0 } + opacity: 0.8 z: 1 - Behavior on opacity { + Behavior on blend { enabled: true; NumberAnimation { easing.type: Easing.Linear; duration: 200; } } -- 2.7.4