#1433 stack RAW with developed HEIC

This commit is contained in:
Thibault Deckers 2025-02-15 16:41:31 +01:00
parent 728b8018c4
commit 9280b4a6a7
3 changed files with 5 additions and 3 deletions

View file

@ -8,6 +8,7 @@ All notable changes to this project will be documented in this file.
- support for Samsung HEIC motion photos embedding video in sefd box - support for Samsung HEIC motion photos embedding video in sefd box
- Cataloguing: identify video location from Apple QuickTime metadata, and 3GPP `loci` atom - Cataloguing: identify video location from Apple QuickTime metadata, and 3GPP `loci` atom
- Collection: stack RAW and HEIC with same file names
### Changed ### Changed

View file

@ -6,11 +6,10 @@ import 'package:aves/model/entry/extensions/multipage.dart';
import 'package:aves/model/entry/extensions/props.dart'; import 'package:aves/model/entry/extensions/props.dart';
import 'package:aves/model/entry/sort.dart'; import 'package:aves/model/entry/sort.dart';
import 'package:aves/model/favourites.dart'; import 'package:aves/model/favourites.dart';
import 'package:aves/model/filters/covered/location.dart';
import 'package:aves/model/filters/covered/stored_album.dart'; import 'package:aves/model/filters/covered/stored_album.dart';
import 'package:aves/model/filters/favourite.dart'; import 'package:aves/model/filters/favourite.dart';
import 'package:aves/model/filters/filters.dart'; import 'package:aves/model/filters/filters.dart';
import 'package:aves/model/filters/covered/location.dart';
import 'package:aves/model/filters/mime.dart';
import 'package:aves/model/filters/query.dart'; import 'package:aves/model/filters/query.dart';
import 'package:aves/model/filters/rating.dart'; import 'package:aves/model/filters/rating.dart';
import 'package:aves/model/filters/trash.dart'; import 'package:aves/model/filters/trash.dart';
@ -230,7 +229,7 @@ class CollectionLens with ChangeNotifier {
void _stackDevelopedRaws() { void _stackDevelopedRaws() {
final allRawEntries = _filteredSortedEntries.where((entry) => entry.isRaw).toSet(); final allRawEntries = _filteredSortedEntries.where((entry) => entry.isRaw).toSet();
if (allRawEntries.isNotEmpty) { if (allRawEntries.isNotEmpty) {
final allDevelopedEntries = _filteredSortedEntries.where(MimeFilter(MimeTypes.jpeg).test).toSet(); final allDevelopedEntries = _filteredSortedEntries.where((entry) => MimeTypes.developedRawImages.contains(entry.mimeType)).toSet();
final rawEntriesByDir = groupBy<AvesEntry, String?>(allRawEntries, (entry) => entry.directory); final rawEntriesByDir = groupBy<AvesEntry, String?>(allRawEntries, (entry) => entry.directory);
rawEntriesByDir.forEach((dir, dirRawEntries) { rawEntriesByDir.forEach((dir, dirRawEntries) {
if (dir != null) { if (dir != null) {

View file

@ -86,6 +86,8 @@ class MimeTypes {
static const Set<String> rawImages = {arw, cr2, crw, dcr, dng, dngX, erf, k25, kdc, mrw, nef, nrw, orf, pef, raf, raw, rw2, sr2, srf, srw, x3f}; static const Set<String> rawImages = {arw, cr2, crw, dcr, dng, dngX, erf, k25, kdc, mrw, nef, nrw, orf, pef, raf, raw, rw2, sr2, srf, srw, x3f};
static const Set<String> developedRawImages = {jpeg, heic, heif};
static bool canHaveAlpha(String mimeType) => MimeTypes.alphaImages.contains(mimeType); static bool canHaveAlpha(String mimeType) => MimeTypes.alphaImages.contains(mimeType);
static bool isRaw(String mimeType) => MimeTypes.rawImages.contains(mimeType); static bool isRaw(String mimeType) => MimeTypes.rawImages.contains(mimeType);