diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Controls/AlbumArtLayoutSettingsControl.xaml b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Controls/AlbumArtLayoutSettingsControl.xaml
index 1f3502a..ba8b6b8 100644
--- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Controls/AlbumArtLayoutSettingsControl.xaml
+++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Controls/AlbumArtLayoutSettingsControl.xaml
@@ -17,7 +17,7 @@
-
+
+
+
+
+
diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Helper/LanguageHelper.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Helper/LanguageHelper.cs
index 078e6d5..7cabcd2 100644
--- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Helper/LanguageHelper.cs
+++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Helper/LanguageHelper.cs
@@ -16,7 +16,6 @@ namespace BetterLyrics.WinUI3.Services
{
private static readonly RankedLanguageIdentifierFactory _factory = new();
private static readonly RankedLanguageIdentifier _identifier;
- private static readonly ISettingsService _settingsService = Ioc.Default.GetRequiredService();
public static List SupportedTargetLanguages =>
[
@@ -69,7 +68,7 @@ namespace BetterLyrics.WinUI3.Services
"simple" => "en",
"zh_classical" => "zh-Hant",
"zh_yue" => "zh-Hant",
- "zh" => "zh-Hans",
+ "zh" => text == ChineseConverter.ConvertToSimplifiedChinese(text) ? "zh-Hans" : "zh-Hant",
_ => code
};
return code;
@@ -99,11 +98,6 @@ namespace BetterLyrics.WinUI3.Services
};
}
- public static string GetUserTargetLanguageCode()
- {
- return SupportedTargetLanguages[_settingsService.AppSettings.TranslationSettings.SelectedTargetLanguageIndex].Code;
- }
-
public static int GetDefaultTargetLanguageIndex()
{
int found = SupportedTargetLanguages.FindIndex(x => ApplicationLanguages.Languages.FirstOrDefault()?.Contains(x.Code) == true);
diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Helper/LyricsParser.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Helper/LyricsParser.cs
index 5333694..9cb94e2 100644
--- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Helper/LyricsParser.cs
+++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Helper/LyricsParser.cs
@@ -3,6 +3,7 @@
using BetterLyrics.WinUI3.Enums;
using BetterLyrics.WinUI3.Models;
using BetterLyrics.WinUI3.Services;
+using Lyricify.Lyrics.Helpers.General;
using Lyricify.Lyrics.Models;
using System;
using System.Collections.Generic;
@@ -47,10 +48,57 @@ namespace BetterLyrics.WinUI3.Helper
break;
}
}
+ FillChineseLyricsData();
_lyricsDataArr.Add(new LyricsData()); // 为机翻预留
return _lyricsDataArr;
}
+ private void FillChineseLyricsData()
+ {
+ var simplifiedChinese = _lyricsDataArr.Where(x => x.LanguageCode == "zh-Hans").FirstOrDefault();
+ var traditionalChinese = _lyricsDataArr.Where(x => x.LanguageCode == "zh-Hant").FirstOrDefault();
+ if (simplifiedChinese != null && traditionalChinese == null)
+ {
+ // 如果没有繁体中文歌词,则将简体中文歌词转换为繁体中文
+ _lyricsDataArr.Add(new LyricsData
+ {
+ LyricsLines = simplifiedChinese.LyricsLines.Select(line => new LyricsLine
+ {
+ StartMs = line.StartMs,
+ EndMs = line.EndMs,
+ OriginalText = ChineseConverter.ConvertToTraditionalChinese(line.OriginalText),
+ LyricsChars = line.LyricsChars.Select(c => new LyricsChar
+ {
+ StartMs = c.StartMs,
+ EndMs = c.EndMs,
+ Text = ChineseConverter.ConvertToTraditionalChinese(c.Text),
+ StartIndex = c.StartIndex
+ }).ToList()
+ }).ToList()
+ });
+ }
+ else if (traditionalChinese != null && simplifiedChinese == null)
+ {
+ // 如果没有简体中文歌词,则将繁体中文歌词转换为简体中文
+ _lyricsDataArr.Add(new LyricsData
+ {
+ LyricsLines = traditionalChinese.LyricsLines.Select(line => new LyricsLine
+ {
+ StartMs = line.StartMs,
+ EndMs = line.EndMs,
+ OriginalText = ChineseConverter.ConvertToSimplifiedChinese(line.OriginalText),
+ LyricsChars = line.LyricsChars.Select(c => new LyricsChar
+ {
+ StartMs = c.StartMs,
+ EndMs = c.EndMs,
+ Text = ChineseConverter.ConvertToSimplifiedChinese(c.Text),
+ StartIndex = c.StartIndex
+ }).ToList()
+ }).ToList()
+ });
+ }
+ }
+
private void ParseLrc(string raw)
{
var lines = raw.Split(["\r\n", "\n"], StringSplitOptions.RemoveEmptyEntries);
diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Models/LyricsData.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Models/LyricsData.cs
index 1d8d2cb..ba15df9 100644
--- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Models/LyricsData.cs
+++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Models/LyricsData.cs
@@ -36,23 +36,7 @@ namespace BetterLyrics.WinUI3.Models
if (transLine != null)
{
- if (translationData.LanguageCode?.StartsWith("zh") == true)
- {
- string tmp = "";
- if (LanguageHelper.GetUserTargetLanguageCode() == "zh-Hant")
- {
- tmp = ChineseConverter.ConvertToTraditionalChinese(transLine.OriginalText);
- }
- else if (LanguageHelper.GetUserTargetLanguageCode() == "zh-Hans")
- {
- tmp = ChineseConverter.ConvertToSimplifiedChinese(transLine.OriginalText);
- }
- line.DisplayedText = $"{line.OriginalText}{separator}{tmp}";
- }
- else
- {
- line.DisplayedText = $"{line.OriginalText}{separator}{transLine.OriginalText}";
- }
+ line.DisplayedText = $"{line.OriginalText}{separator}{transLine.OriginalText}";
}
else
{
diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Models/LyricsLine.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Models/LyricsLine.cs
index fbf73ab..2408a3e 100644
--- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Models/LyricsLine.cs
+++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Models/LyricsLine.cs
@@ -214,9 +214,6 @@ namespace BetterLyrics.WinUI3.Models
{
LineRenderingType.CurrentChar => CurrentCharMask,
LineRenderingType.LineStartToCurrentChar => LineStartToCurrentCharMask,
- // Here, cuz AlphaMask only takes care of alpha channel
- // so ForegroundFontEffect can be a mask for CurrentLine
- // And we don't need to create a new mask for CurrentLine
LineRenderingType.CurrentLine => CurrentLineMask,
_ => PlaceholderEffect
};
diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Models/Settings/AlbumArtLayoutSettings.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Models/Settings/AlbumArtLayoutSettings.cs
index 8ba774b..286d4c9 100644
--- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Models/Settings/AlbumArtLayoutSettings.cs
+++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Models/Settings/AlbumArtLayoutSettings.cs
@@ -12,6 +12,7 @@ namespace BetterLyrics.WinUI3.Models.Settings
{
[ObservableProperty][NotifyPropertyChangedRecipients] public partial TextAlignmentType SongInfoAlignmentType { get; set; } = TextAlignmentType.Left;
[ObservableProperty][NotifyPropertyChangedRecipients] public partial int CoverImageRadius { get; set; } = 12; // 12 % of the cover image size
+ [ObservableProperty][NotifyPropertyChangedRecipients] public partial int CoverImageShadowAmount { get; set; } = 12;
public AlbumArtLayoutSettings() { }
}
diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Renderer/LyricsRenderer.xaml b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Renderer/LyricsRenderer.xaml
index c96f488..4395da0 100644
--- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Renderer/LyricsRenderer.xaml
+++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Renderer/LyricsRenderer.xaml
@@ -14,7 +14,6 @@
lyricsDataArr)
{
- string targetLangCode = LanguageHelper.GetUserTargetLanguageCode().Substring(0, 2);
+ string targetLangCode = LanguageHelper.SupportedTargetLanguages[_settingsService.AppSettings.TranslationSettings.SelectedTargetLanguageIndex].Code;
if (lyricsDataArr.Count > 1)
{
for (int i = 1; i < lyricsDataArr.Count; i++)
{
- if (lyricsDataArr[i].LanguageCode?.Substring(0, 2) == targetLangCode)
+ if (lyricsDataArr[i].LanguageCode == targetLangCode)
{
return i; // Translation lyrics data found
}
diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/en-US/Resources.resw b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/en-US/Resources.resw
index 6bd7919..d0b51e7 100644
--- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/en-US/Resources.resw
+++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/en-US/Resources.resw
@@ -433,6 +433,9 @@ If you encounter any problems, please go to the Settings page, About tab, and vi
Corner radius
+
+ How much the shadows are spreading
+
Album art area style
diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ja-JP/Resources.resw b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ja-JP/Resources.resw
index f24351b..57fe65f 100644
--- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ja-JP/Resources.resw
+++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ja-JP/Resources.resw
@@ -433,6 +433,9 @@
コーナー半径
+
+ 影がどれだけ広がっているか
+
アルバムエリアスタイル
diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ko-KR/Resources.resw b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ko-KR/Resources.resw
index 81a52f5..36c97e8 100644
--- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ko-KR/Resources.resw
+++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/ko-KR/Resources.resw
@@ -433,6 +433,9 @@
코너 반경
+
+ 그림자가 얼마나 퍼져나가는지
+
앨범 영역 스타일
diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/zh-CN/Resources.resw b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/zh-CN/Resources.resw
index db742b6..7868155 100644
--- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/zh-CN/Resources.resw
+++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/zh-CN/Resources.resw
@@ -433,6 +433,9 @@
圆角半径
+
+ 阴影扩散程度
+
专辑区域样式
diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/zh-TW/Resources.resw b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/zh-TW/Resources.resw
index e7bd6b4..9f5f628 100644
--- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/zh-TW/Resources.resw
+++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Strings/zh-TW/Resources.resw
@@ -433,6 +433,9 @@
圓角半徑
+
+ 陰影擴散程度
+
專輯區域樣式
diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel/LyricsRendererViewModel.Draw.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel/LyricsRendererViewModel.Draw.cs
index fc67afb..6bfc999 100644
--- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel/LyricsRendererViewModel.Draw.cs
+++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel/LyricsRendererViewModel.Draw.cs
@@ -147,10 +147,10 @@ namespace BetterLyrics.WinUI3.ViewModels.LyricsRendererViewModel
using var opacity = new CanvasCommandList(control.Device);
using var opacityDs = opacity.CreateDrawingSession();
- opacityDs.DrawImage(new GaussianBlurEffect
+ opacityDs.DrawImage(new ShadowEffect
{
Source = albumArt,
- BlurAmount = 12f,
+ BlurAmount = _settingsService.AppSettings.AlbumArtLayoutSettings.CoverImageShadowAmount,
Optimization = EffectOptimization.Speed,
});
opacityDs.DrawImage(albumArt);
diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel/LyricsRendererViewModel.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel/LyricsRendererViewModel.cs
index a2701d4..096925c 100644
--- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel/LyricsRendererViewModel.cs
+++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel/LyricsRendererViewModel.cs
@@ -431,7 +431,7 @@ namespace BetterLyrics.WinUI3.ViewModels.LyricsRendererViewModel
IsTranslating = true;
if (_settingsService.AppSettings.TranslationSettings.IsTranslationEnabled)
{
- _ = _refreshLyricsRunner.RunAsync(async token =>
+ _refreshLyricsRunner.RunAsync(async token =>
{
await SetDisplayedAlongWithTranslationsAsync(token);
IsTranslating = false;
@@ -450,7 +450,7 @@ namespace BetterLyrics.WinUI3.ViewModels.LyricsRendererViewModel
private async Task SetDisplayedAlongWithTranslationsAsync(CancellationToken token)
{
_logger.LogInformation("Showing translation for lyrics...");
- string targetLangCode = LanguageHelper.GetUserTargetLanguageCode();
+ string targetLangCode = LanguageHelper.SupportedTargetLanguages[_settingsService.AppSettings.TranslationSettings.SelectedTargetLanguageIndex].Code;
string? originalText = _lyricsDataArr.FirstOrDefault()?.WrappedOriginalText;
if (originalText == null) return;