Pierre-Yves Nicolas
|
d5864a3f03
|
Avoid failing when the user chooses a filename that already exists in Downloads
|
2025-07-05 22:14:56 +02:00 |
|
Pierre-Yves Nicolas
|
c535ce4262
|
PdfGenerationBottomSheet: adjust text style
|
2025-07-05 21:05:04 +02:00 |
|
Pierre-Yves Nicolas
|
70cb3cfdb4
|
Improve style of PdfGenerationBottomSheet
|
2025-07-05 20:55:35 +02:00 |
|
Pierre-Yves Nicolas
|
b6177700f7
|
Improve style of PdfGenerationBottomSheet
|
2025-07-05 19:12:37 +02:00 |
|
Pierre-Yves Nicolas
|
97b4d333d4
|
PDF generation: change to a BottomSheet, button to "open" the saved PDF
|
2025-07-05 18:30:18 +02:00 |
|
Pierre-Yves Nicolas
|
7b2e60ee14
|
PDF generation: complete the new system
Use the chosen filename, fix errors on sharing, save on a separate thread
|
2025-07-04 20:34:34 +02:00 |
|
Pierre-Yves Nicolas
|
80bc1affb8
|
New dialog for PDF generation
|
2025-07-03 17:46:16 +02:00 |
|
Pierre-Yves Nicolas
|
112c44da91
|
Style adjustments
|
2025-07-03 11:18:37 +02:00 |
|
Pierre-Yves Nicolas
|
7321e271b8
|
Colors, style adjustments
|
2025-07-03 08:59:58 +02:00 |
|
Pierre-Yves Nicolas
|
ca2972f0df
|
Camera screen: modify layout
|
2025-07-02 18:06:25 +02:00 |
|
Pierre-Yves Nicolas
|
cbcd9be42b
|
Page list: add page numbers
|
2025-07-02 10:25:23 +02:00 |
|
Pierre-Yves Nicolas
|
c67cd78e50
|
Overlay strokeWidth: 5 -> 10
|
2025-07-02 09:03:39 +02:00 |
|
Pierre-Yves Nicolas
|
9c9963845e
|
New debug mode for extended live analysis overlay
|
2025-07-02 08:52:59 +02:00 |
|
Pierre-Yves Nicolas
|
1463ef9355
|
Refactoring: store showDetectionError in CameraUiState
|
2025-07-02 06:16:48 +02:00 |
|
Pierre-Yves Nicolas
|
5a98f9f5e6
|
Refactoring: move "norm" to Geometry.kt and add test
|
2025-07-01 21:28:10 +02:00 |
|
Pierre-Yves Nicolas
|
5e0cf451ea
|
Avoid detecting very small quadrilaterals
|
2025-07-01 21:24:10 +02:00 |
|
Pierre-Yves Nicolas
|
6ccf7081b9
|
Display a message when no document is detected in captured image
|
2025-07-01 17:15:11 +02:00 |
|
Pierre-Yves Nicolas
|
850bc84b2b
|
Use version 0.4 of the segmentation model
|
2025-06-29 18:13:36 +02:00 |
|
Pierre-Yves Nicolas
|
6361e1616f
|
Shutter effect on capture
|
2025-06-27 08:13:06 +02:00 |
|
Pierre-Yves Nicolas
|
d51f407f07
|
Small refactoring of the animation code
|
2025-06-27 07:57:17 +02:00 |
|
Pierre-Yves Nicolas
|
3ca8854f45
|
Fix the destination point of the animation
|
2025-06-26 21:56:29 +02:00 |
|
Pierre-Yves Nicolas
|
d28ade8518
|
Avoid calling Bitmap.asImageBitmap() too often
|
2025-06-26 08:07:12 +02:00 |
|
Pierre-Yves Nicolas
|
b9cb072be8
|
Capture: fix truncated display of narrow documents
|
2025-06-26 07:30:53 +02:00 |
|
Pierre-Yves Nicolas
|
3f582e12c0
|
Fix destination of animation for the first element
|
2025-06-25 22:14:33 +02:00 |
|
Pierre-Yves Nicolas
|
5cfe6244d3
|
Use Modifier.graphicsLayer for the animation
|
2025-06-25 21:22:57 +02:00 |
|
Pierre-Yves Nicolas
|
802bf20f08
|
Resize the captured image before displaying it
|
2025-06-25 20:58:18 +02:00 |
|
Pierre-Yves Nicolas
|
d025384f39
|
Remove useless code
|
2025-06-25 18:49:59 +02:00 |
|
Pierre-Yves Nicolas
|
483165450b
|
Animation: compute the real destination coordinates
|
2025-06-25 15:58:49 +02:00 |
|
Pierre-Yves Nicolas
|
d13fc4199d
|
CameraScreen: animate captured image
|
2025-06-25 11:33:46 +02:00 |
|
Pierre-Yves Nicolas
|
5ba634070f
|
CameraScreen: use a BottomAppBar
|
2025-06-24 20:39:04 +02:00 |
|
Pierre-Yves Nicolas
|
46e84da804
|
Refactoring: move Scaffold into CameraScreen
|
2025-06-24 15:10:51 +02:00 |
|
Pierre-Yves Nicolas
|
1159b77c6e
|
Refactoring: introduce CommonPageList
|
2025-06-24 14:30:10 +02:00 |
|
Pierre-Yves Nicolas
|
2452e1d556
|
CameraScreen: scroll automatically to newly added page
|
2025-06-24 13:05:46 +02:00 |
|
Pierre-Yves Nicolas
|
c49a271c39
|
Refactoring: introduce CameraUiState
|
2025-06-24 12:49:20 +02:00 |
|
Pierre-Yves Nicolas
|
dcb48b8cc8
|
CameraScreen: click on a page to open it in DocumentScreen
|
2025-06-24 12:24:17 +02:00 |
|
Pierre-Yves Nicolas
|
ef2a49cf76
|
CameraScreen: LazyRow with list of pages
|
2025-06-24 10:37:38 +02:00 |
|
Pierre-Yves Nicolas
|
e894c14260
|
New UX on capture: freeze preview, no more dialog
|
2025-06-23 20:59:18 +02:00 |
|
Pierre-Yves Nicolas
|
f0b6dd400b
|
Rename Camera.kt to CameraScreen.kt
|
2025-06-23 13:42:36 +02:00 |
|
Pierre-Yves Nicolas
|
765d8503b5
|
Refactoring: move camerax code to a new file
|
2025-06-23 13:37:41 +02:00 |
|
Pierre-Yves Nicolas
|
b8a8e6f2f3
|
Segmentation model v0.3: DeepLabV3plus/MobileNetV2
Inference time decreased from 400 to 200ms
|
2025-06-23 08:12:26 +02:00 |
|
Pierre-Yves Nicolas
|
87a8d39669
|
End capture process correctly in case of error
|
2025-06-22 12:08:57 +02:00 |
|
Pierre-Yves Nicolas
|
f550683786
|
Close captured ImageProxy (otherwise: subsequent captures freeze)
|
2025-06-22 12:07:58 +02:00 |
|
Pierre-Yves Nicolas
|
ff0c3c02e6
|
DocumentScreen: Button to start a new document
|
2025-06-21 18:39:09 +02:00 |
|
Pierre-Yves Nicolas
|
8ed04238fb
|
Avoid a possible crash when deleting an image
|
2025-06-21 17:34:31 +02:00 |
|
Pierre-Yves Nicolas
|
60d5bc51ef
|
DocumentScreen: make the image zoomable
|
2025-06-21 15:39:33 +02:00 |
|
Pierre-Yves Nicolas
|
5b777e5edc
|
Width/height for the document: use avg rather than max
|
2025-06-21 14:45:30 +02:00 |
|
Pierre-Yves Nicolas
|
cf1dc97b7e
|
Pause live analysis when displaying a capture
|
2025-06-21 13:15:53 +02:00 |
|
pynicolas
|
0ea4132d37
|
Make gradle download the TFLite segmentation model (#8)
|
2025-06-21 13:01:05 +02:00 |
|
Pierre-Yves Nicolas
|
7056393f56
|
Save about 400ms at capture by delegating the rotation to OpenCV
|
2025-06-19 19:24:01 +02:00 |
|
Pierre-Yves Nicolas
|
453a8b3fb0
|
Use a lock to ensure only one segmentation is run at a time
|
2025-06-19 19:22:22 +02:00 |
|