From 4a76ade1a2947cf318c8e55253c425da8e517ff4 Mon Sep 17 00:00:00 2001
From: Ismael Asensio <ismailof@github.com>
Date: Sun, 21 Jul 2019 01:13:39 +0200
Subject: [PATCH] Add moon transparent shadow

---
 package/contents/ui/LunaIcon.qml      | 14 ++++++++++++++
 package/contents/ui/configGeneral.qml |  6 ++++++
 package/contents/ui/main.qml          |  2 ++
 3 files changed, 22 insertions(+)

diff --git a/package/contents/ui/LunaIcon.qml b/package/contents/ui/LunaIcon.qml
index d43ed10..d6bc208 100644
--- a/package/contents/ui/LunaIcon.qml
+++ b/package/contents/ui/LunaIcon.qml
@@ -19,6 +19,7 @@
 */
 
 import QtQuick 2.1
+import QtGraphicalEffects 1.12
 import org.kde.plasma.core 2.0 as PlasmaCore
 import org.kde.plasma.plasmoid 2.0
 
@@ -30,6 +31,8 @@ Item {
     property int phaseNumber: 0
     property int hemisphere: 0
     property bool showShadow: true
+    property bool transparentShadow: true
+
     property string lunarImage: ''
     property color diskColour: '#ffffff'
     property int lunarImageTweak: 0
@@ -58,12 +61,15 @@ Item {
         // deal with northern <-> southern hemisphere
         transformOrigin: Item.Center
         rotation: (hemisphere == 0 ? 0 : 180) - lunarImageTweak
+        visible: !transparentShadow
     }
 
     Canvas {
         id: shadow
         width: lunaSvgItem.width
         height: lunaSvgItem.height
+        visible: !transparentShadow
+
         property int hemisphere: lunaIcon.hemisphere
         property int theta: lunaIcon.theta
         property bool showShadow: lunaIcon.showShadow
@@ -189,4 +195,12 @@ Item {
             }
         }
     }
+
+    OpacityMask {
+        anchors.fill: lunaSvgItem
+        source: lunaSvgItem
+        maskSource: shadow
+        invert: true
+        visible: transparentShadow
+    }
 }
diff --git a/package/contents/ui/configGeneral.qml b/package/contents/ui/configGeneral.qml
index ea03ca0..c153c80 100644
--- a/package/contents/ui/configGeneral.qml
+++ b/package/contents/ui/configGeneral.qml
@@ -26,6 +26,7 @@ Item {
     id: generalPage
 
     property alias cfg_hemisphere: hemisphere.currentIndex  // 0=North 1=South
+    property alias cfg_transparentShadow: transparentShadow.checked  // boolean
     property alias cfg_showBackground: showBackground.checked  // boolean
     property alias cfg_dateFormat: dateFormat.currentIndex // code: 0= 1= 2=...
     property alias cfg_dateFormatString: dateFormatString.text
@@ -83,6 +84,7 @@ Item {
               height: 200
               hemisphere: cfg_hemisphere
               showShadow: false
+              transparentShadow: false
               lunarImage: cfg_lunarImage
               lunarImageTweak: cfg_lunarImageTweak
               diskColour: cfg_diskColour
@@ -188,6 +190,10 @@ Item {
             visible: dateFormat.currentIndex == 4
         }
 
+        QtControls.CheckBox {
+            id: transparentShadow
+            text: i18n("Transparent shadow")
+        }
         QtControls.CheckBox {
             id: showBackground
             text: i18n("Show background")
diff --git a/package/contents/ui/main.qml b/package/contents/ui/main.qml
index ff0e18f..643041a 100644
--- a/package/contents/ui/main.qml
+++ b/package/contents/ui/main.qml
@@ -39,6 +39,7 @@ Item {
     property var currentPhase
 
     property bool showBackground: Plasmoid.configuration.showBackground
+    property bool transparentShadow: Plasmoid.configuration.transparentShadow
     property int hemisphere: Plasmoid.configuration.hemisphere
     property int dateFormat: Plasmoid.configuration.dateFormat
     property string dateFormatString: Plasmoid.configuration.dateFormatString
@@ -96,6 +97,7 @@ Item {
             hemisphere: hemisphere
             lunarImage: main.lunarImage
             lunarImageTweak: main.lunarImageTweak
+            transparentShadow: main.transparentShadow
             diskColour: main.diskColour
 
             anchors.fill: parent
-- 
GitLab