diff --git a/Manager/app/src/main/assets/patches-manifest.json b/Manager/app/src/main/assets/patches-manifest.json index e6d0e42..b3188c7 100644 --- a/Manager/app/src/main/assets/patches-manifest.json +++ b/Manager/app/src/main/assets/patches-manifest.json @@ -51,22 +51,95 @@ "title": "Static", "fileNames": [ "player-backdrop-static.patch" + ], + "extensionFiles": [ + "radiant/BackdropFx.smali" ] }, { "title": "Animated", "fileNames": [ "player-backdrop-animated.patch" + ], + "extensionFiles": [ + "radiant/BackdropFx.smali" ] }, { "title": "Playback", "fileNames": [ "player-backdrop-playback.patch" + ], + "extensionFiles": [ + "radiant/BackdropFx.smali" ] } ], "advancedOptions": [ + { + "type": "slider", + "key": "blur_strength", + "title": "Blur Strength", + "description": "The value of Blur applied to the backdrop cover", + "default": 50, + "min": 0, + "max": 100, + "steps": 19, + "displayAsPercent": true, + "token": "RL_BLUR", + "encode": { + "kind": "int", + "scale": 1.0 + } + }, + { + "type": "slider", + "key": "contrast", + "title": "Contrast", + "description": "The value of Contrast applied to the backdrop cover", + "default": 50, + "min": 0, + "max": 100, + "steps": 19, + "displayAsPercent": true, + "token": "RL_CONTRAST", + "encode": { + "kind": "floatBits", + "scale": 0.02 + } + }, + { + "type": "slider", + "key": "saturation", + "title": "Saturation", + "description": "The value of Saturation applied to the backdrop cover", + "default": 50, + "min": 0, + "max": 100, + "steps": 19, + "displayAsPercent": true, + "token": "RL_SATURATION", + "encode": { + "kind": "floatBits", + "scale": 0.02 + } + }, + { + "type": "slider", + "key": "brightness", + "title": "Brightness", + "description": "The value of Brightness applied to the backdrop cover", + "default": 50, + "min": 0, + "max": 100, + "steps": 19, + "displayAsPercent": true, + "token": "RL_BRIGHTNESS", + "encode": { + "kind": "floatBits", + "scale": 0.02 + } + }, { "type": "toggle", "key": "cover_everywhere", diff --git a/patches/data.json b/patches/data.json index 9f5ae4e..fece944 100644 --- a/patches/data.json +++ b/patches/data.json @@ -1,5 +1,5 @@ { "tidalVersionCode": 10004, "tidalApkUrl": "https://github.com/meowarex/rl-mobile/releases/download/latest/tidal-stock.apk", - "patchesVersion": "0.11.0" + "patchesVersion": "0.11.1" } diff --git a/patches/extension/radiant/BackdropFx.smali b/patches/extension/radiant/BackdropFx.smali new file mode 100644 index 0000000..e8e3d87 --- /dev/null +++ b/patches/extension/radiant/BackdropFx.smali @@ -0,0 +1,133 @@ +.class public final Lradiant/BackdropFx; +.super Ljava/lang/Object; + + +.method public static apply(Landroid/graphics/Bitmap;)Landroid/graphics/Bitmap; + .locals 14 + + const v0, __RL_CONTRAST__ + + const v1, __RL_SATURATION__ + + const v2, __RL_BRIGHTNESS__ + + # cm = ColorMatrix(); cm.setSaturation(s) + new-instance v3, Landroid/graphics/ColorMatrix; + + invoke-direct {v3}, Landroid/graphics/ColorMatrix;->()V + + invoke-virtual {v3, v1}, Landroid/graphics/ColorMatrix;->setSaturation(F)V + + # o = 128 - 128*c (contrast pivot at mid-grey, 0..255 space) + const/high16 v4, 0x43000000 + + mul-float v5, v4, v0 + + sub-float v5, v4, v5 + + # contrast matrix: diag = c, offset column = o + const/16 v6, 0x14 + + new-array v7, v6, [F + + const/4 v8, 0x0 + + aput v0, v7, v8 + + const/4 v8, 0x4 + + aput v5, v7, v8 + + const/4 v8, 0x6 + + aput v0, v7, v8 + + const/16 v8, 0x9 + + aput v5, v7, v8 + + const/16 v8, 0xc + + aput v0, v7, v8 + + const/16 v8, 0xe + + aput v5, v7, v8 + + const/high16 v9, 0x3f800000 + + const/16 v8, 0x12 + + aput v9, v7, v8 + + new-instance v8, Landroid/graphics/ColorMatrix; + + invoke-direct {v8, v7}, Landroid/graphics/ColorMatrix;->([F)V + + invoke-virtual {v3, v8}, Landroid/graphics/ColorMatrix;->postConcat(Landroid/graphics/ColorMatrix;)V + + # brightness matrix: diag = b + new-array v7, v6, [F + + const/4 v8, 0x0 + + aput v2, v7, v8 + + const/4 v8, 0x6 + + aput v2, v7, v8 + + const/16 v8, 0xc + + aput v2, v7, v8 + + const/16 v8, 0x12 + + aput v9, v7, v8 + + new-instance v8, Landroid/graphics/ColorMatrix; + + invoke-direct {v8, v7}, Landroid/graphics/ColorMatrix;->([F)V + + invoke-virtual {v3, v8}, Landroid/graphics/ColorMatrix;->postConcat(Landroid/graphics/ColorMatrix;)V + + # out = createBitmap(w, h, ARGB_8888) + invoke-virtual {p0}, Landroid/graphics/Bitmap;->getWidth()I + + move-result v10 + + invoke-virtual {p0}, Landroid/graphics/Bitmap;->getHeight()I + + move-result v11 + + sget-object v12, Landroid/graphics/Bitmap$Config;->ARGB_8888:Landroid/graphics/Bitmap$Config; + + invoke-static {v10, v11, v12}, Landroid/graphics/Bitmap;->createBitmap(IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap; + + move-result-object v10 + + # canvas over out + new-instance v11, Landroid/graphics/Canvas; + + invoke-direct {v11, v10}, Landroid/graphics/Canvas;->(Landroid/graphics/Bitmap;)V + + # paint with the color-matrix filter + new-instance v12, Landroid/graphics/Paint; + + invoke-direct {v12}, Landroid/graphics/Paint;->()V + + new-instance v13, Landroid/graphics/ColorMatrixColorFilter; + + invoke-direct {v13, v3}, Landroid/graphics/ColorMatrixColorFilter;->(Landroid/graphics/ColorMatrix;)V + + invoke-virtual {v12, v13}, Landroid/graphics/Paint;->setColorFilter(Landroid/graphics/ColorFilter;)Landroid/graphics/ColorFilter; + + # draw the blurred bitmap through the filter + const/4 v0, 0x0 + + invoke-virtual {v11, p0, v0, v0, v12}, Landroid/graphics/Canvas;->drawBitmap(Landroid/graphics/Bitmap;FFLandroid/graphics/Paint;)V + + invoke-virtual {p0}, Landroid/graphics/Bitmap;->recycle()V + + return-object v10 +.end method diff --git a/patches/manifest.json b/patches/manifest.json index 25357e9..f1baae2 100644 --- a/patches/manifest.json +++ b/patches/manifest.json @@ -51,22 +51,95 @@ "title": "Static", "fileNames": [ "player-backdrop-static.patch" + ], + "extensionFiles": [ + "radiant/BackdropFx.smali" ] }, { "title": "Animated", "fileNames": [ "player-backdrop-animated.patch" + ], + "extensionFiles": [ + "radiant/BackdropFx.smali" ] }, { "title": "Playback", "fileNames": [ "player-backdrop-playback.patch" + ], + "extensionFiles": [ + "radiant/BackdropFx.smali" ] } ], "advancedOptions": [ + { + "type": "slider", + "key": "blur_strength", + "title": "Blur Strength", + "description": "The value of Blur applied to the backdrop cover", + "default": 50, + "min": 0, + "max": 100, + "steps": 19, + "displayAsPercent": true, + "token": "RL_BLUR", + "encode": { + "kind": "int", + "scale": 1.0 + } + }, + { + "type": "slider", + "key": "contrast", + "title": "Contrast", + "description": "The value of Contrast applied to the backdrop cover", + "default": 50, + "min": 0, + "max": 100, + "steps": 19, + "displayAsPercent": true, + "token": "RL_CONTRAST", + "encode": { + "kind": "floatBits", + "scale": 0.02 + } + }, + { + "type": "slider", + "key": "saturation", + "title": "Saturation", + "description": "The value of Saturation applied to the backdrop cover", + "default": 50, + "min": 0, + "max": 100, + "steps": 19, + "displayAsPercent": true, + "token": "RL_SATURATION", + "encode": { + "kind": "floatBits", + "scale": 0.02 + } + }, + { + "type": "slider", + "key": "brightness", + "title": "Brightness", + "description": "The value of Brightness applied to the backdrop cover", + "default": 50, + "min": 0, + "max": 100, + "steps": 19, + "displayAsPercent": true, + "token": "RL_BRIGHTNESS", + "encode": { + "kind": "floatBits", + "scale": 0.02 + } + }, { "type": "toggle", "key": "cover_everywhere", diff --git a/patches/player-backdrop-animated.patch b/patches/player-backdrop-animated.patch index eb9245d..8b9e350 100644 --- a/patches/player-backdrop-animated.patch +++ b/patches/player-backdrop-animated.patch @@ -28,3 +28,94 @@ .line 6 .line 7 +--- a/de0/c.smali ++++ b/de0/c.smali +@@ -26,29 +26,26 @@ + .line 2 + .line 3 + .line 4 +- const-string v0, "HeavyBlurTransformation() " +- +- .line 5 +- .line 6 +- const-string v1, " " +- +- .line 7 +- .line 8 +- const/4 v2, 0x6 +- +- .line 9 +- const/16 v3, 0x19 +- +- .line 10 +- .line 11 +- invoke-static {v2, v3, v0, v1}, Landroidx/compose/foundation/text/input/a;->b(IILjava/lang/String;Ljava/lang/String;)Ljava/lang/String; +- +- .line 12 +- .line 13 +- .line 14 ++ new-instance v0, Ljava/lang/StringBuilder; ++ invoke-direct {v0}, Ljava/lang/StringBuilder;->()V ++ const-string v1, "RLBackdrop_b" ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ const/16 v1, __RL_BLUR__ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ const-string v1, "c" ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ const v1, __RL_CONTRAST__ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ const-string v1, "s" ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ const v1, __RL_SATURATION__ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ const-string v1, "r" ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ const v1, __RL_BRIGHTNESS__ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + move-result-object v0 +- +- .line 15 + iput-object v0, p0, Lde0/c;->a:Ljava/lang/String; + + .line 16 +@@ -59,10 +56,17 @@ + + # virtual methods + .method public final a(Landroid/graphics/Bitmap;)Landroid/graphics/Bitmap; +- .locals 2 ++ .locals 3 + + .line 1 +- const/4 v0, 0x6 ++ const/16 v2, __RL_BLUR__ ++ mul-int/lit8 v0, v2, 0x6 ++ const/16 v1, 0x32 ++ div-int v0, v0, v1 ++ const/4 v1, 0x1 ++ if-ge v0, v1, :rl_ds_ok ++ const/4 v0, 0x1 ++ :rl_ds_ok + + .line 2 + invoke-static {p1, v0}, Lcom/squareup/ui/market/layout/e;->c(Landroid/graphics/Bitmap;I)Landroid/graphics/Bitmap; +@@ -82,7 +86,7 @@ + .line 9 + .line 10 + .line 11 +- const/16 v1, 0x19 ++ div-int/lit8 v1, v2, 0x2 + + .line 12 + .line 13 +@@ -93,6 +97,10 @@ + .line 16 + move-result-object v1 + ++ invoke-static {v1}, Lradiant/BackdropFx;->apply(Landroid/graphics/Bitmap;)Landroid/graphics/Bitmap; ++ ++ move-result-object v1 ++ + .line 17 + invoke-virtual {v0}, Landroid/graphics/Bitmap;->recycle()V + diff --git a/patches/player-backdrop-playback.patch b/patches/player-backdrop-playback.patch index 34847ca..19259fc 100644 --- a/patches/player-backdrop-playback.patch +++ b/patches/player-backdrop-playback.patch @@ -24,3 +24,94 @@ .line 6 .line 7 +--- a/de0/c.smali ++++ b/de0/c.smali +@@ -26,29 +26,26 @@ + .line 2 + .line 3 + .line 4 +- const-string v0, "HeavyBlurTransformation() " +- +- .line 5 +- .line 6 +- const-string v1, " " +- +- .line 7 +- .line 8 +- const/4 v2, 0x6 +- +- .line 9 +- const/16 v3, 0x19 +- +- .line 10 +- .line 11 +- invoke-static {v2, v3, v0, v1}, Landroidx/compose/foundation/text/input/a;->b(IILjava/lang/String;Ljava/lang/String;)Ljava/lang/String; +- +- .line 12 +- .line 13 +- .line 14 ++ new-instance v0, Ljava/lang/StringBuilder; ++ invoke-direct {v0}, Ljava/lang/StringBuilder;->()V ++ const-string v1, "RLBackdrop_b" ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ const/16 v1, __RL_BLUR__ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ const-string v1, "c" ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ const v1, __RL_CONTRAST__ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ const-string v1, "s" ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ const v1, __RL_SATURATION__ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ const-string v1, "r" ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ const v1, __RL_BRIGHTNESS__ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + move-result-object v0 +- +- .line 15 + iput-object v0, p0, Lde0/c;->a:Ljava/lang/String; + + .line 16 +@@ -59,10 +56,17 @@ + + # virtual methods + .method public final a(Landroid/graphics/Bitmap;)Landroid/graphics/Bitmap; +- .locals 2 ++ .locals 3 + + .line 1 +- const/4 v0, 0x6 ++ const/16 v2, __RL_BLUR__ ++ mul-int/lit8 v0, v2, 0x6 ++ const/16 v1, 0x32 ++ div-int v0, v0, v1 ++ const/4 v1, 0x1 ++ if-ge v0, v1, :rl_ds_ok ++ const/4 v0, 0x1 ++ :rl_ds_ok + + .line 2 + invoke-static {p1, v0}, Lcom/squareup/ui/market/layout/e;->c(Landroid/graphics/Bitmap;I)Landroid/graphics/Bitmap; +@@ -82,7 +86,7 @@ + .line 9 + .line 10 + .line 11 +- const/16 v1, 0x19 ++ div-int/lit8 v1, v2, 0x2 + + .line 12 + .line 13 +@@ -93,6 +97,10 @@ + .line 16 + move-result-object v1 + ++ invoke-static {v1}, Lradiant/BackdropFx;->apply(Landroid/graphics/Bitmap;)Landroid/graphics/Bitmap; ++ ++ move-result-object v1 ++ + .line 17 + invoke-virtual {v0}, Landroid/graphics/Bitmap;->recycle()V + diff --git a/patches/player-backdrop-static.patch b/patches/player-backdrop-static.patch index db71d80..a72ceae 100644 --- a/patches/player-backdrop-static.patch +++ b/patches/player-backdrop-static.patch @@ -28,3 +28,94 @@ .line 6 .line 7 +--- a/de0/c.smali ++++ b/de0/c.smali +@@ -26,29 +26,26 @@ + .line 2 + .line 3 + .line 4 +- const-string v0, "HeavyBlurTransformation() " +- +- .line 5 +- .line 6 +- const-string v1, " " +- +- .line 7 +- .line 8 +- const/4 v2, 0x6 +- +- .line 9 +- const/16 v3, 0x19 +- +- .line 10 +- .line 11 +- invoke-static {v2, v3, v0, v1}, Landroidx/compose/foundation/text/input/a;->b(IILjava/lang/String;Ljava/lang/String;)Ljava/lang/String; +- +- .line 12 +- .line 13 +- .line 14 ++ new-instance v0, Ljava/lang/StringBuilder; ++ invoke-direct {v0}, Ljava/lang/StringBuilder;->()V ++ const-string v1, "RLBackdrop_b" ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ const/16 v1, __RL_BLUR__ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ const-string v1, "c" ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ const v1, __RL_CONTRAST__ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ const-string v1, "s" ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ const v1, __RL_SATURATION__ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ const-string v1, "r" ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; ++ const v1, __RL_BRIGHTNESS__ ++ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; ++ invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + move-result-object v0 +- +- .line 15 + iput-object v0, p0, Lde0/c;->a:Ljava/lang/String; + + .line 16 +@@ -59,10 +56,17 @@ + + # virtual methods + .method public final a(Landroid/graphics/Bitmap;)Landroid/graphics/Bitmap; +- .locals 2 ++ .locals 3 + + .line 1 +- const/4 v0, 0x6 ++ const/16 v2, __RL_BLUR__ ++ mul-int/lit8 v0, v2, 0x6 ++ const/16 v1, 0x32 ++ div-int v0, v0, v1 ++ const/4 v1, 0x1 ++ if-ge v0, v1, :rl_ds_ok ++ const/4 v0, 0x1 ++ :rl_ds_ok + + .line 2 + invoke-static {p1, v0}, Lcom/squareup/ui/market/layout/e;->c(Landroid/graphics/Bitmap;I)Landroid/graphics/Bitmap; +@@ -82,7 +86,7 @@ + .line 9 + .line 10 + .line 11 +- const/16 v1, 0x19 ++ div-int/lit8 v1, v2, 0x2 + + .line 12 + .line 13 +@@ -93,6 +97,10 @@ + .line 16 + move-result-object v1 + ++ invoke-static {v1}, Lradiant/BackdropFx;->apply(Landroid/graphics/Bitmap;)Landroid/graphics/Bitmap; ++ ++ move-result-object v1 ++ + .line 17 + invoke-virtual {v0}, Landroid/graphics/Bitmap;->recycle()V +