aboutsummaryrefslogtreecommitdiff
path: root/components/effects
diff options
context:
space:
mode:
authorluigi1111 <luigi1111w@gmail.com>2019-04-25 13:05:54 -0500
committerluigi1111 <luigi1111w@gmail.com>2019-04-25 13:05:54 -0500
commitfb4dfd0ea8a09999a7433e4d0d9ad1aa5009821d (patch)
treecbbe7fc3e3950354f7a4dcb925b6e1e9dc62efd8 /components/effects
parent358e1d23facbd10fefbb2bf04c45b98f0c728ad0 (diff)
parent42f7afaefddbf5a7929ddf88dbe7b27e7f40a669 (diff)
downloadmonzero-gui-fb4dfd0ea8a09999a7433e4d0d9ad1aa5009821d.tar.gz
monzero-gui-fb4dfd0ea8a09999a7433e4d0d9ad1aa5009821d.tar.xz
monzero-gui-fb4dfd0ea8a09999a7433e4d0d9ad1aa5009821d.zip
Merge pull request #2060
42f7afa White theme (xmrdsc)
Diffstat (limited to 'components/effects')
-rw-r--r--components/effects/ColorTransition.qml58
-rw-r--r--components/effects/GradientBackground.qml107
-rw-r--r--components/effects/ImageMask.qml84
3 files changed, 249 insertions, 0 deletions
diff --git a/components/effects/ColorTransition.qml b/components/effects/ColorTransition.qml
new file mode 100644
index 00000000..b73af906
--- /dev/null
+++ b/components/effects/ColorTransition.qml
@@ -0,0 +1,58 @@
+// Copyright (c) 2014-2019, The Monero Project
+//
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without modification, are
+// permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this list of
+// conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice, this list
+// of conditions and the following disclaimer in the documentation and/or other
+// materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its contributors may be
+// used to endorse or promote products derived from this software without specific
+// prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import QtQuick 2.9
+import QtGraphicalEffects 1.0
+
+import "../" as MoneroComponents
+
+Item {
+ id: root
+ property var targetObj
+ property string blackColor: ""
+ property string whiteColor: ""
+ property int duration: 300
+ property bool themeTransition: true
+
+ states: [
+ State {
+ name: "black";
+ when: MoneroComponents.Style.blackTheme && root.themeTransition
+ PropertyChanges { target: root.targetObj; color: root.blackColor}
+ }, State {
+ name: "white";
+ when: !MoneroComponents.Style.blackTheme && root.themeTransition
+ PropertyChanges { target: root.targetObj; color: root.whiteColor}
+ }
+ ]
+
+ transitions: Transition {
+ enabled: appWindow.themeTransition
+ ColorAnimation { properties: "color"; easing.type: Easing.InOutQuad; duration: root.duration }
+ }
+}
diff --git a/components/effects/GradientBackground.qml b/components/effects/GradientBackground.qml
new file mode 100644
index 00000000..bb106896
--- /dev/null
+++ b/components/effects/GradientBackground.qml
@@ -0,0 +1,107 @@
+// Copyright (c) 2014-2019, The Monero Project
+//
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without modification, are
+// permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this list of
+// conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice, this list
+// of conditions and the following disclaimer in the documentation and/or other
+// materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its contributors may be
+// used to endorse or promote products derived from this software without specific
+// prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import QtQuick 2.9
+import QtGraphicalEffects 1.0
+
+import "../" as MoneroComponents
+
+Item {
+ id: root
+ property string fallBackColor: ""
+ property string blackColorStart: ""
+ property string blackColorStop: ""
+ property string whiteColorStart: ""
+ property string whiteColorStop: ""
+ property string initialStartColor: ""
+ property string initialStopColor: ""
+ property double posStart: 0.1
+ property double posStop: 1.0
+ property int duration: 300
+ property variant start
+ property variant end
+ anchors.fill: parent
+
+ // background software renderer
+ Rectangle {
+ visible: !isOpenGL
+ anchors.fill: parent
+ color: root.fallBackColor
+ }
+
+ // background opengl
+ LinearGradient {
+ visible: isOpenGL
+ anchors.fill: parent
+ start: root.start
+ end: root.end
+ gradient: Gradient {
+ GradientStop {
+ id: gradientStart
+ position: root.posStart
+ color: root.initialStartColor
+ }
+ GradientStop {
+ id: gradientStop
+ position: root.posStop
+ color: root.initialStopColor
+ }
+ }
+
+ states: [
+ State {
+ name: "black";
+ when: isOpenGL && MoneroComponents.Style.blackTheme
+ PropertyChanges {
+ target: gradientStart
+ color: root.blackColorStart
+ }
+ PropertyChanges {
+ target: gradientStop
+ color: root.blackColorStop
+ }
+ }, State {
+ name: "white";
+ when: isOpenGL && !MoneroComponents.Style.blackTheme
+ PropertyChanges {
+ target: gradientStart
+ color: root.whiteColorStart
+ }
+ PropertyChanges {
+ target: gradientStop
+ color: root.whiteColorStop
+ }
+ }
+ ]
+
+ transitions: Transition {
+ enabled: appWindow.themeTransition
+ ColorAnimation { properties: "color"; easing.type: Easing.InOutQuad; duration: root.duration }
+ }
+ }
+}
diff --git a/components/effects/ImageMask.qml b/components/effects/ImageMask.qml
new file mode 100644
index 00000000..df24f738
--- /dev/null
+++ b/components/effects/ImageMask.qml
@@ -0,0 +1,84 @@
+// Copyright (c) 2014-2019, The Monero Project
+//
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without modification, are
+// permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this list of
+// conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice, this list
+// of conditions and the following disclaimer in the documentation and/or other
+// materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its contributors may be
+// used to endorse or promote products derived from this software without specific
+// prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import QtQuick 2.9
+import QtGraphicalEffects 1.0
+
+import "../" as MoneroComponents
+import FontAwesome 1.0
+
+Item {
+ // Use this component to color+opacity change images with transparency (svg/png)
+ // Does not work in low graphics mode, use fontAwesome fallback option.
+
+ id: root
+ property string image: ""
+ property string color: ""
+ property bool fontAwesomeFallbackEnabled: true
+ property var fontAwesomeFallbackIcon: ""
+ property int fontAwesomeFallbackSize: 16
+ property double fontAwesomeFallbackOpacity: 0.8
+ property string fontAwesomeFallbackColor: MoneroComponents.Style.defaultFontColor
+
+ property alias fontAwesomeFallback: fontAwesomeFallback
+ property alias svgMask: svgMask
+ property alias imgMockColor: imgMockColor
+
+ width: 0
+ height: 0
+
+ Image {
+ id: svgMask
+ source: root.image
+ sourceSize.width: root.width
+ sourceSize.height: root.height
+ smooth: true
+ mipmap: true
+ visible: false
+ }
+
+ ColorOverlay {
+ id: imgMockColor
+ anchors.fill: root
+ source: svgMask
+ color: root.color
+ visible: isOpenGL
+ }
+
+ Text {
+ id: fontAwesomeFallback
+ visible: !isOpenGL && root.fontAwesomeFallback
+ text: !isOpenGL ? root.fontAwesomeFallbackIcon : ""
+ font.family: FontAwesome.fontFamily
+ font.pixelSize: root.fontAwesomeFallbackSize
+ color: root.fontAwesomeFallbackColor
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.horizontalCenter: parent.horizontalCenter
+ opacity: root.fontAwesomeFallbackOpacity
+ }
+}