fix: theme type listener

This commit is contained in:
Zhe Fang
2025-11-30 12:19:19 -05:00
parent 794079f20b
commit 0a9b9bf484
5 changed files with 49 additions and 40 deletions

View File

@@ -12,7 +12,7 @@
<Identity
Name="37412.BetterLyrics"
Publisher="CN=E1428B0E-DC1D-4EA4-ACB1-4556569D5BA9"
Version="1.0.152.0" />
Version="1.0.154.0" />
<mp:PhoneIdentity PhoneProductId="ca4a4830-fc19-40d9-b823-53e2bff3d816" PhonePublisherId="00000000-0000-0000-0000-000000000000"/>

View File

@@ -52,20 +52,21 @@ namespace BetterLyrics.WinUI3.Renderer
bounds.Height
);
using (var opacityLayer = ds.CreateLayer((float)opacity))
ds.DrawImage(new OpacityEffect
{
ds.DrawImage(new GaussianBlurEffect
Source = new GaussianBlurEffect
{
BlurAmount = (float)blur,
Source = new CropEffect
{
Source = source,
BorderMode = EffectBorderMode.Soft,
BorderMode = EffectBorderMode.Hard,
SourceRectangle = destRect,
},
BorderMode = EffectBorderMode.Soft
});
}
},
Opacity = (float)opacity,
});
}
private void DrawTranslated(CanvasDrawingSession ds, ICanvasImage source, LyricsLine line)
@@ -83,20 +84,21 @@ namespace BetterLyrics.WinUI3.Renderer
bounds.Height
);
using (var opacityLayer = ds.CreateLayer((float)opacity))
ds.DrawImage(new OpacityEffect
{
ds.DrawImage(new GaussianBlurEffect
Source = new GaussianBlurEffect
{
BlurAmount = (float)blur,
Source = new CropEffect
{
Source = source,
BorderMode = EffectBorderMode.Soft,
BorderMode = EffectBorderMode.Hard,
SourceRectangle = destRect,
},
BorderMode = EffectBorderMode.Soft
});
}
},
Opacity = (float)opacity,
});
}
private void DrawOriginalText(
@@ -179,10 +181,17 @@ namespace BetterLyrics.WinUI3.Renderer
Sources = { gradientLayer, source }
})
{
int endCharIndex = subLineRegion.CharacterIndex + subLineRegion.CharacterCount;
for (int i = subLineRegion.CharacterIndex; i < endCharIndex; i++)
if (!settings.IsLyricsFloatAnimationEnabled && !settings.IsLyricsGlowEffectEnabled && !settings.IsLyricsScaleEffectEnabled)
{
DrawSingleCharacter(ds, line, i, curCharIndex, textWithColorLayer, state, settings);
ds.DrawImage(textWithColorLayer);
}
else
{
int endCharIndex = subLineRegion.CharacterIndex + subLineRegion.CharacterCount;
for (int i = subLineRegion.CharacterIndex; i < endCharIndex; i++)
{
DrawSingleCharacter(ds, line, i, curCharIndex, textWithColorLayer, state, settings);
}
}
}
}
@@ -271,7 +280,8 @@ namespace BetterLyrics.WinUI3.Renderer
Source = new CropEffect
{
Source = source,
SourceRectangle = sourcePlayedCharRect
SourceRectangle = sourcePlayedCharRect,
BorderMode = EffectBorderMode.Hard
},
BlurAmount = (float)glow,
BorderMode = EffectBorderMode.Soft
@@ -281,12 +291,7 @@ namespace BetterLyrics.WinUI3.Renderer
}
}
ds.DrawImage(new CropEffect
{
Source = source,
SourceRectangle = sourceCharRect,
BorderMode = EffectBorderMode.Soft
}, destCharRect, sourceCharRect);
ds.DrawImage(source, destCharRect, sourceCharRect);
}
}

View File

@@ -1,4 +1,5 @@
using BetterLyrics.WinUI3.Models;
using BetterLyrics.WinUI3.Extensions;
using BetterLyrics.WinUI3.Models;
using Microsoft.Graphics.Canvas;
using Microsoft.Graphics.Canvas.Effects;
using Microsoft.Graphics.Canvas.Text;
@@ -73,20 +74,22 @@ namespace BetterLyrics.WinUI3.Renderer
bounds.Height
);
using (var opacityLayer = ds.CreateLayer((float)opacity))
ds.DrawImage(new OpacityEffect
{
ds.DrawImage(new GaussianBlurEffect
Source = new GaussianBlurEffect
{
BlurAmount = blur,
Source = new CropEffect
{
Source = source,
SourceRectangle = destRect,
BorderMode = EffectBorderMode.Soft,
BorderMode = EffectBorderMode.Hard,
},
BorderMode = EffectBorderMode.Soft
});
}
},
Opacity = opacity
});
}
}
}

View File

@@ -28,7 +28,7 @@ namespace BetterLyrics.WinUI3
: BaseWindowViewModel,
IRecipient<PropertyChangedMessage<bool>>,
IRecipient<PropertyChangedMessage<List<string>>>,
IRecipient<PropertyChangedMessage<ElementTheme>>
IRecipient<PropertyChangedMessage<AlbumArtThemeColors>>
{
private readonly ISettingsService _settingsService;
private readonly ILiveStatesService _liveStatesService;
@@ -208,15 +208,15 @@ namespace BetterLyrics.WinUI3
}
}
public void Receive(PropertyChangedMessage<ElementTheme> message)
public void Receive(PropertyChangedMessage<AlbumArtThemeColors> message)
{
//if (message.Sender is LyricsRendererViewModel)
//{
// if (message.PropertyName == nameof(LyricsRendererViewModel.ThemeTypeSent))
// {
// ThemeType = message.NewValue;
// }
//}
if (message.Sender is IMediaSessionsService)
{
if (message.PropertyName == nameof(IMediaSessionsService.AlbumArtThemeColors))
{
ThemeType = message.NewValue.ThemeType;
}
}
}
public void Receive(PropertyChangedMessage<bool> message)

View File

@@ -651,6 +651,11 @@ namespace BetterLyrics.WinUI3.Views
//}
}
private void ShadowCastGrid_SizeChanged(object sender, SizeChangedEventArgs e)
{
UpdateAlbumArtCornerRadius();
}
// ====
public void Receive(PropertyChangedMessage<int> message)
@@ -778,9 +783,5 @@ namespace BetterLyrics.WinUI3.Views
}
}
private void ShadowCastGrid_SizeChanged(object sender, SizeChangedEventArgs e)
{
UpdateAlbumArtCornerRadius();
}
}
}