From 96df7fdec5179439429cfd6a98d68c2e3959ea24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toni=20F=C3=B6rster?= Date: Mon, 20 May 2024 15:34:31 +0200 Subject: [PATCH] let the user select caption size --- Model/Player/Backends/MPVClient.swift | 5 +++++ Shared/Defaults.swift | 1 + Shared/Settings/PlayerSettings.swift | 20 ++++++++++++++++++++ 3 files changed, 26 insertions(+) diff --git a/Model/Player/Backends/MPVClient.swift b/Model/Player/Backends/MPVClient.swift index 11066345..f7cbeffc 100644 --- a/Model/Player/Backends/MPVClient.swift +++ b/Model/Player/Backends/MPVClient.swift @@ -68,6 +68,7 @@ final class MPVClient: ObservableObject { checkError(mpv_set_option_string(mpv, "vo", "libmpv")) checkError(mpv_set_option_string(mpv, "demuxer-lavf-analyzeduration", "1")) checkError(mpv_set_option_string(mpv, "deinterlace", Defaults[.mpvDeinterlace] ? "yes" : "no")) + checkError(mpv_set_option_string(mpv, "sub-scale", "\(Defaults[.captionsFontScaleSize])")) checkError(mpv_initialize(mpv)) @@ -413,6 +414,10 @@ final class MPVClient: ObservableObject { setString("sub", "no") } + func setSubFontSize() { + setString("sub-scale", "\(Defaults[.captionsFontScaleSize])") + } + var tracksCount: Int { Int(getString("track-list/count") ?? "-1") ?? -1 } diff --git a/Shared/Defaults.swift b/Shared/Defaults.swift index 821c67d4..90b6f000 100644 --- a/Shared/Defaults.swift +++ b/Shared/Defaults.swift @@ -305,6 +305,7 @@ extension Defaults.Keys { static let captionsLanguageCode = Key("captionsLanguageCode") static let captionsDefaultLanguageCode = Key("captionsDefaultLanguageCode", default: LanguageCodes.English.rawValue) static let captionsFallbackLanguageCode = Key("captionsDefaultFallbackCode", default: LanguageCodes.English.rawValue) + static let captionsFontScaleSize = Key("captionsFontScale", default: 1.0) static let lastUsedPlaylistID = Key("lastPlaylistID") static let lastAccountIsPublic = Key("lastAccountIsPublic", default: false) diff --git a/Shared/Settings/PlayerSettings.swift b/Shared/Settings/PlayerSettings.swift index 55e3cc5e..4a1f9910 100644 --- a/Shared/Settings/PlayerSettings.swift +++ b/Shared/Settings/PlayerSettings.swift @@ -41,6 +41,7 @@ struct PlayerSettings: View { @Default(.captionsAutoShow) private var captionsAutoShow @Default(.captionsDefaultLanguageCode) private var captionsDefaultLanguageCode @Default(.captionsFallbackLanguageCode) private var captionsFallbackLanguageCode + @Default(.captionsFontScaleSize) private var captionsFontScaleSize @ObservedObject private var accounts = AccountsModel.shared @@ -106,7 +107,12 @@ struct PlayerSettings: View { #endif Section(header: SettingsHeader(text: "Captions".localized())) { + #if os(tvOS) + Text("Size").font(.subheadline) + #endif + captionsFontScaleSizePicker showCaptionsAutoShowToggle + #if !os(tvOS) captionDefaultLanguagePicker captionFallbackLanguagePicker @@ -331,6 +337,20 @@ struct PlayerSettings: View { Toggle("Always show captions", isOn: $captionsAutoShow) } + private var captionsFontScaleSizePicker: some View { + Picker("Size", selection: $captionsFontScaleSize) { + Text("Small").tag(Float(0.5)) + Text("Medium").tag(Float(1.0)) + Text("Large").tag(Float(2.0)) + } + .onChange(of: captionsFontScaleSize) { _ in + PlayerModel.shared.mpvBackend.client.setSubFontSize() + } + #if os(macOS) + .labelsHidden() + #endif + } + #if !os(tvOS) private var captionDefaultLanguagePicker: some View { Picker("Default language", selection: $captionsDefaultLanguageCode) {