diff --git a/docker/README.md b/docker/README.md index cafc24bc..a871b354 100644 --- a/docker/README.md +++ b/docker/README.md @@ -165,12 +165,12 @@ used. Native comparisons must report those structural differences explicitly. The six rating marks retain the exact locked SVG source in `wolfskin-design/request-marks/`; native-size PNGs and their hashes are generated -from the JSON dimensions with the locked cover crop. Inside Coming-in rows they -retain the prototype's dark `surface3` chips with 12-pixel rounded corners. +from the JSON dimensions with the locked contain fit (`.rr .rb` outranks `.crow img`). +Inside Coming-in rows they retain the prototype's dark `surface3` chips with 12-pixel rounded corners. Loaded poster thumbnails have no placeholder fill beneath their clipped edge. ```sh -uv run --with cairosvg==2.9.1 --with pillow==13.0.0 python wolfskin-design/generate_request_marks.py +uv run --with cairosvg==2.9.1 python wolfskin-design/generate_request_marks.py ``` `RequestsCaptureTest` writes `st-081`…`st-086`, `st-088` and `st-111` at 1920×1080, diff --git a/wolfskin-design/generate_request_marks.py b/wolfskin-design/generate_request_marks.py index c0297cef..bba6a960 100755 --- a/wolfskin-design/generate_request_marks.py +++ b/wolfskin-design/generate_request_marks.py @@ -1,11 +1,9 @@ #!/usr/bin/env python3 """Rasterize locked prototype rating marks at the Coming-in row's native pixel size.""" from pathlib import Path -from io import BytesIO import hashlib import json import cairosvg -from PIL import Image, ImageOps ROOT = Path(__file__).resolve().parent SOURCE = ROOT / "request-marks" @@ -23,9 +21,7 @@ def main() -> None: for source in sorted(SOURCE.glob("*.svg")): target = OUTPUT / f"coming_in_rating_{source.stem}.png" width = round(height * wordmark_ratio) if source.stem in ("imdb", "tmdb") else height - source_pixels = cairosvg.svg2png(url=str(source), output_height=height * 4) - with Image.open(BytesIO(source_pixels)) as image: - ImageOps.fit(image, (width, height), method=Image.Resampling.LANCZOS).save(target) + cairosvg.svg2png(url=str(source), write_to=str(target), output_width=width, output_height=height) for path in (source, target): manifest.append(f"{hashlib.sha256(path.read_bytes()).hexdigest()} {path.relative_to(ROOT)}") (ROOT / "request-marks.sha256").write_text("\n".join(manifest) + "\n") diff --git a/wolfskin-design/request-marks.sha256 b/wolfskin-design/request-marks.sha256 index f778a68f..c29ddefc 100644 --- a/wolfskin-design/request-marks.sha256 +++ b/wolfskin-design/request-marks.sha256 @@ -1,12 +1,12 @@ 01aa8a3c3e9db48f0e1c6af25056940986784315bf66f48a8120a7317bf6d75a request-marks/fresh.svg -e61333be2c5a028adcc1052a24add31ed34001af8cfdf1d180358faffafc35f4 src/main/res/drawable-nodpi/coming_in_rating_fresh.png +743b6139dc12019d0940568869065722593f44ce416a7e9c7b8d9ef92942bb3f src/main/res/drawable-nodpi/coming_in_rating_fresh.png 27f93b15a075b015e2448eca7949f7a3da03c37fbf26cecf6df3bdab45fda993 request-marks/imdb.svg -72c167c7d0ed23f998e47010be0bbf180790431bd0add0b525f8a5928f44dfd5 src/main/res/drawable-nodpi/coming_in_rating_imdb.png +a738afd57519b1b4a38192927b48bd45755ce75e4673c6b12b9b3e0c2e388372 src/main/res/drawable-nodpi/coming_in_rating_imdb.png 510d0f9fb77d72190ebf03208f04215a4e86f71e165488518ac75aa49cf4a79d request-marks/rotten.svg -e3e0a434eaaf5c9390fec821807e34ad6bf656a05520039219dbaaea68d03924 src/main/res/drawable-nodpi/coming_in_rating_rotten.png +0aade711ba57b6b201c7395ece97108df928b6076d8120404cdf4155a4242632 src/main/res/drawable-nodpi/coming_in_rating_rotten.png b8dcf4d27eba2446380980c96d82b1f64aa6859fa2ea1cdab867f849f9fec4fd request-marks/spilled.svg -3d509c58f80ef773f7d909bf57953d835cfddb0565896c79bf25698146e90099 src/main/res/drawable-nodpi/coming_in_rating_spilled.png +fa4f50258009cd1d16f0d0f5a3c216dc88a57409b1bccc379512ae914cc9d714 src/main/res/drawable-nodpi/coming_in_rating_spilled.png d537fb228cf3ded904ef09b136fe3fec72548ebc1fea3fbbd1ad9e36364db38b request-marks/tmdb.svg -a1d49d5dba29e25738e06dd6d97a32f4d357dc0cf66e1acca00f30287883dd32 src/main/res/drawable-nodpi/coming_in_rating_tmdb.png +8e1cb507f876f324bb5c53bf4e60775712f1fdddbffe94fd249e6e74099e045e src/main/res/drawable-nodpi/coming_in_rating_tmdb.png 2ad511c7a101a7f2f8810434911df8c13cc126fa691272242037237172600bc3 request-marks/upright.svg -3d9d745d878a5f6976a31f23c58be7d0ea037353e4a2c6d037861469a716a486 src/main/res/drawable-nodpi/coming_in_rating_upright.png +6ff8a05501bc1c15b96c0130271c41baaa2ddb74f64916f58b9e7f918931d789 src/main/res/drawable-nodpi/coming_in_rating_upright.png diff --git a/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInRatings.kt b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInRatings.kt index d4a8acd3..3f2b0da1 100644 --- a/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInRatings.kt +++ b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInRatings.kt @@ -41,7 +41,7 @@ fun ComingInRatings(ratings: List, color: Color) { Image(painterResource(mark), contentDescription = rating.mark, modifier = Modifier.height(T.readinessGlyph).width(T.readinessGlyph * if (wide) T.ratingsWordmarkRatio else 1f) .clip(ratingMarkShape).background(WolfskinTokens.Color.surface3), - contentScale = ContentScale.Crop) + contentScale = ContentScale.Fit) Text(formatComingInRating(rating), style = ComingInTypography.rating, color = color) } } diff --git a/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_fresh.png b/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_fresh.png index c5e313db..ef0a98a6 100644 Binary files a/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_fresh.png and b/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_fresh.png differ diff --git a/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_imdb.png b/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_imdb.png index cae1112e..bb7becf5 100644 Binary files a/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_imdb.png and b/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_imdb.png differ diff --git a/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_rotten.png b/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_rotten.png index c6630d22..678af063 100644 Binary files a/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_rotten.png and b/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_rotten.png differ diff --git a/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_spilled.png b/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_spilled.png index 142cd392..988d6554 100644 Binary files a/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_spilled.png and b/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_spilled.png differ diff --git a/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_tmdb.png b/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_tmdb.png index e69477f5..48a14150 100644 Binary files a/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_tmdb.png and b/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_tmdb.png differ diff --git a/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_upright.png b/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_upright.png index efef4704..2a2bfa89 100644 Binary files a/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_upright.png and b/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_upright.png differ