diff --git a/src/main.rs b/src/main.rs index ca541e7..2721362 100644 --- a/src/main.rs +++ b/src/main.rs @@ -98,6 +98,7 @@ fn main() -> anyhow::Result<()> { .map(|_| ui::ImagePreview { asset_id: SharedString::new(), image: preview_image.clone(), + ratio: 1.0, kind: ui::PreviewKind::None, }) .collect::>(), @@ -290,6 +291,7 @@ fn load_bucket(time_bucket: TimeBucketKey, app_weak: Weak, api: Arc size: 32px; width: size; height: size; + clip: true; Image { - width: 100%; - height: 100%; + width: preview.ratio < 1.0 ? size : size * preview.ratio; + height: preview.ratio > 1.0 ? size : size / preview.ratio; source: preview.image; } diff --git a/ui/types.slint b/ui/types.slint index 9485e43..c97cc2c 100644 --- a/ui/types.slint +++ b/ui/types.slint @@ -6,7 +6,13 @@ export enum PreviewKind { export struct ImagePreview { asset_id: string, + + // Thumbnail/thumbhash/etc image: image, + + // Image aspect ratio. (width/height) + ratio: float, + kind: PreviewKind, }