mirror of
https://github.com/narrrl/proton-stream.git
synced 2026-11-03 16:41:26 +01:00
feat(app,android,ios): a blurred poster where a title has no wide art
A title with no fanart, banner or backdrop drew its poster cropped to the band's shape across the title page and the library's banner: a blown-up slice of the middle of it, which read as broken. Now the poster is squeezed to 64x36 and blurred once when it is fetched, the cache keeps that wash, and it is stretched across the band. The library's banner stands the sharp poster at its right over it. Android blurs the poster it already had (Android 12 and later; older versions decode it tiny), and iOS likewise. METADATA.md also records the quality badges of the commit before.
This commit is contained in:
1 parent
f4c08d03c7
commit
3ebfd1a57b
12 files changed
+182
-19
No files matched your search
@@ -494,7 +494,7 @@ private struct FeaturedBanner: View {
|
||||
let onOpen: () -> Void
|
||||
|
||||
var body: some View {
|
||||
RemoteArtwork(title.backdropUrl ?? title.posterUrl, title.displayName, fallback: title.thumbnailSource, labelled: false)
|
||||
Backdrop(title: title)
|
||||
.aspectRatio(4 / 3, contentMode: .fit)
|
||||
.overlay {
|
||||
LinearGradient(
|
||||
|
||||
@@ -81,6 +81,19 @@ struct RemoteArtwork: View {
|
||||
}
|
||||
}
|
||||
|
||||
/// A title's art across the top of a page: its backdrop, or with none, its
|
||||
/// poster as a wash of its own colours — blurred, so it reads as the poster's
|
||||
/// light rather than a blown-up slice of it. The desktop's `Fit::Ambient`.
|
||||
struct Backdrop: View {
|
||||
let title: TitleRecord
|
||||
|
||||
var body: some View {
|
||||
let wash = title.backdropUrl == nil && title.posterUrl != nil
|
||||
RemoteArtwork(title.backdropUrl ?? title.posterUrl, title.displayName, fallback: title.thumbnailSource, labelled: false)
|
||||
.blur(radius: wash ? 24 : 0, opaque: true)
|
||||
}
|
||||
}
|
||||
|
||||
/// A title's logo — its name as lettering — in place of `fallback`, once it
|
||||
/// has loaded. `fallback` stands until then, and for good when there is none,
|
||||
/// so a title without a logo looks as it always did and one with a logo only
|
||||
|
||||
@@ -119,7 +119,7 @@ struct TitleView: View {
|
||||
/// Edge to edge, fading into the page: the art is the first thing the page
|
||||
/// says.
|
||||
private func backdrop(height: CGFloat, top: CGFloat) -> some View {
|
||||
RemoteArtwork(title.backdropUrl ?? title.posterUrl, title.displayName, fallback: title.thumbnailSource, labelled: false)
|
||||
Backdrop(title: title)
|
||||
.frame(height: height)
|
||||
.frame(maxWidth: .infinity)
|
||||
.clipped()
|
||||
|
||||
Reference in new issue
Block a user