Commit Graph

420 Commits

Author SHA1 Message Date
Pierre-Yves Nicolas
3e085eca5c DocumentScreen: reset zoom after rotation so that all areas are reachable (#152) 2026-04-10 16:20:45 +02:00
Pierre-Yves Nicolas
479680a83d Throw explicit exceptions when decoding images to import 2026-04-10 15:49:51 +02:00
Pierre-Yves Nicolas
31155275e8 CameraScreen: cancel import when leaving the screen 2026-04-10 15:49:51 +02:00
Pierre-Yves Nicolas
6290717635 CameraScreen: improve UI for import 2026-04-10 15:49:51 +02:00
Pierre-Yves Nicolas
b946913594 New feature: import photos 2026-04-10 15:49:51 +02:00
Pierre-Yves Nicolas
2f4b330b8d Move camera permission rationale to CameraScreen 2026-04-10 15:49:51 +02:00
Pierre-Yves Nicolas
336609d32d Drop unused integration test 2026-04-04 18:48:36 +02:00
Pierre-Yves Nicolas
53b226a465 Centralize image processing for 'app' module 2026-04-04 18:48:04 +02:00
Pierre-Yves Nicolas
953d0e4a42 Prepare release: v1.18.0 2026-04-03 18:45:05 +02:00
Pierre-Yves Nicolas
47109d6ab4 Revert AGP upgrade to fix broken APK
Building with AGP 8.13.2 leads to a (minified) release APK that crashes with LiteRT.
2026-04-03 18:44:37 +02:00
Pierre-Yves Nicolas
7f51e462c1 Fix visual glitch when rotating a page with RTL language (#144) 2026-04-03 10:51:30 +02:00
Pierre-Yves Nicolas
115472aeb0 ImageRepository: add unit tests for setColorMode 2026-04-02 19:34:29 +02:00
Pierre-Yves Nicolas
1e99520473 Thumbnails: avoid loading many Bitmaps, increase cache size 2026-04-02 17:50:23 +02:00
Pierre-Yves Nicolas
7a9e4203ed SettingsScreen: adjust style 2026-04-02 13:16:22 +02:00
Pierre-Yves Nicolas
4aae5accae New setting for default color mode ("default filter") 2026-04-02 13:16:22 +02:00
Pierre-Yves Nicolas
139922c19e DocumentScreen: add a spinner when changing color mode 2026-04-01 18:47:27 +02:00
Pierre-Yves Nicolas
18923d5934 DocumentScreen: dropdown menu for color mode 2026-04-01 12:08:07 +02:00
Pierre-Yves Nicolas
215f57bb74 Avoid resolution of current page in DocumentScreen 2026-04-01 12:08:07 +02:00
Pierre-Yves Nicolas
b258082ce1 New feature: ability to force color mode for a page 2026-04-01 12:08:07 +02:00
Pierre-Yves Nicolas
7d01493477 Introduce ColorMode enum 2026-04-01 12:08:07 +02:00
Pierre-Yves Nicolas
3681d5771d Introduce Jpeg class 2026-04-01 12:08:07 +02:00
Pierre-Yves Nicolas
7cd3dfd990 ImageRepository: make jpegBytes and getThumbnail suspend 2026-04-01 12:08:07 +02:00
Pierre-Yves Nicolas
05a8af577c Refactor UI to remove blocking image loading and support suspend APIs 2026-04-01 12:08:07 +02:00
Pierre-Yves Nicolas
446b915d59 ImageRepository: rotations and thumbnails are not stored on disk anymore 2026-04-01 12:08:07 +02:00
Pierre-Yves Nicolas
69690d5c2a Splash screen should be dark for dark theme (#148) 2026-03-26 11:26:15 +01:00
Pierre-Yves Nicolas
f130d33eba Avoid swallowing errors during export preparation 2026-03-25 18:47:45 +01:00
Pierre-Yves Nicolas
92914c1730 Make ImageRepository thread-safe (#147) 2026-03-25 14:35:17 +01:00
Pierre-Yves Nicolas
516dd75e9c Fix grayscale PDF export: partial revert of 40314de 2026-03-25 09:06:04 +01:00
Pierre-Yves Nicolas
90287b3389 Compress source JPEG during capture preview rather than later 2026-03-24 20:34:24 +01:00
Pierre-Yves Nicolas
fa619da867 MainViewModel: avoid running IO operations on the main thread 2026-03-24 20:34:24 +01:00
Pierre-Yves Nicolas
40314def4e Capture: reduce conversions between Mat/Bitmap/ByteArray 2026-03-24 20:34:24 +01:00
Pierre-Yves Nicolas
ceceaf8792 Centralize JPEG compression (also in MainViewModel) 2026-03-22 18:28:17 +01:00
Pierre-Yves Nicolas
a9edfa2b87 Centralize JPEG compression to a single function 2026-03-22 18:09:12 +01:00
Pierre-Yves Nicolas
f336680a69 Upgrade AGP: 8.10.1 -> 8.13.2 2026-03-22 12:53:41 +01:00
Pierre-Yves Nicolas
fe2f37b7e8 Upgrade most dependencies 2026-03-22 12:53:41 +01:00
Pierre-Yves Nicolas
2f3d42049e Prepare release: v1.17.0 2026-03-20 17:09:01 +01:00
Pierre-Yves Nicolas
1ad586ed8f Feed basic PDF metadata: date and creator 2026-03-20 16:40:39 +01:00
Pierre-Yves Nicolas
f371be4e14 Layout of rotation buttons should be the same for RTL as for LTR (fixes #135) 2026-03-20 15:50:26 +01:00
Pierre-Yves Nicolas
58abc2f3fe Improve grayscale postprocessing (#138)
Apply exp() to the Retinex output before normalization, restoring a
linear tone distribution. This improves contrast overall: light gray
content is preserved, and dark content stays dark even when the image
contains deep blacks. The previous normalization compressed all tones
toward the same gray level. Trade-off: shadows and unwanted background
variations are also more visible in some images.

Other:
- stretch toward white using histogram mode
- fall back to simple normalization on documents with large dark areas
- add bilateral denoising
2026-03-20 11:40:58 +01:00
Pierre-Yves Nicolas
0e8037fa8d Export: fix SecurityException when tapping "open" (#133) 2026-03-14 14:52:24 +01:00
Pierre-Yves Nicolas
cd4206b413 Prepare release: v1.16.0 2026-03-10 11:42:21 +01:00
Pierre-Yves Nicolas
dea8bcc389 Export: avoid silencing issues in applyRenaming 2026-03-10 09:38:13 +01:00
Pierre-Yves Nicolas
8666fce250 Right-to-left: fix target position of post-capture animation (#122) 2026-03-09 15:02:41 +01:00
Pierre-Yves Nicolas
8784c0b923 Extract strings rotate_left and rotate_right (used for icon descriptions) 2026-03-09 10:55:31 +01:00
Pierre-Yves Nicolas
3d70abbac2 Right-to-left: fix rotation buttons (#121) 2026-03-09 10:28:38 +01:00
Pierre-Yves Nicolas
68531bf4e3 Fix quad stabilization (fix #131) 2026-03-09 09:26:13 +01:00
Pierre-Yves Nicolas
c62fba87d8 Simplify code for live analysis 2026-03-08 14:53:03 +01:00
Pierre-Yves Nicolas
4e3cc95979 Run segmentation and quad detection in sequence to avoid CPU contention 2026-03-08 14:22:59 +01:00
Pierre-Yves Nicolas
343495dafe New quad algorithm: identify edges from contour orientation (#130)
Goal: improve precision of automatic document cropping by switching:
- from Douglas-Peucker algorithm (OpenCV's approxPolyDP) + a heuristic for documents missing a corner
- to an algorithm that looks for edges

* New quad algorithm: identify edges from contour orientation
* Performance optimization: reduce number of calls to trigonometric functions
* Performance: use a single threshold for live analysis
* Fix orientation of debug mask and compute it only if required
* Exclude quads that go out of the frame
2026-03-07 12:09:41 +01:00
Pierre-Yves Nicolas
cf196576fe Arabic: fix MissingQuantity for page_count and files_saved_to 2026-03-03 11:47:27 +01:00