[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/scanner d011e65 36/56: implement multi-image scan
From: |
Stefan Monnier |
Subject: |
[elpa] externals/scanner d011e65 36/56: implement multi-image scan |
Date: |
Fri, 10 Apr 2020 13:56:04 -0400 (EDT) |
branch: externals/scanner
commit d011e65dd84ee5fea2e8a5aaa7ea00dfeff3b0a7
Author: Raffael Stocker <address@hidden>
Commit: Raffael Stocker <address@hidden>
implement multi-image scan
---
scanner.el | 59 ++++++++++++++++++++++++++++++++++++++++++++---------------
1 file changed, 44 insertions(+), 15 deletions(-)
diff --git a/scanner.el b/scanner.el
index 65a8914..6844d95 100644
--- a/scanner.el
+++ b/scanner.el
@@ -526,25 +526,54 @@ available, ask for a selection interactively."
(scanimage))))
;;;###autoload
-(defun scanner-scan-image (img-file)
- "Scan an image, and write the result to IMG-FILE.
+(defun scanner-scan-image (nscans filename)
+ "Scan NSCANS images, and write the result to FILENAME.
+Without a prefix argument, scan one image. With a non-numeric
+prefix argument, i.e. ‘\\[universal-argument]
+\\[scanner-scan-document]’, scan an image and ask the user for
+confirmation to scan another image, etc. With a numeric prefix
+argument, e.g. ‘\\[universal-argument] 3
+\\[scanner-scan-document]’, scan that many images (in this case,
+3).
+
If ‘scanner-device-name’ is nil or this device is unavailable,
attempt auto-detection. If more than one scanning device is
available, ask for a selection interactively."
- (interactive "FImage file name: ")
+ (interactive "P\nFImage file name: ")
(scanner--ensure-init)
- (let* ((fmt (scanner--determine-image-format img-file))
- (fname (if (file-name-extension img-file)
- img-file
- (concat (file-name-sans-extension img-file) "." fmt)))
- (args (scanner--scanimage-args fname :image fmt)))
- (cl-labels ((sentinel (process event)
- (let ((ev (string-trim event)))
- (unless (string= "finished" ev)
- (error "%s: %s" process ev)))))
- (make-process :name "Scanner (scanimage)"
- :command `(,scanner-scanimage-program ,@args)
- :sentinel #'sentinel))))
+ (let* ((fmt (scanner--determine-image-format filename))
+ (fname-base (file-name-sans-extension filename))
+ (fname-ext (if (file-name-extension filename)
+ (file-name-extension filename t)
+ (concat "." fmt)))
+ (num-scans (prefix-numeric-value nscans))
+ (page-count 1))
+ (cl-labels ((scan-or-finish
+ (process event)
+ (let ((ev (string-trim event)))
+ (unless (string= "finished" ev)
+ (error "%s: %s" process ev))
+ (cond ((consp nscans) (when (y-or-n-p "Scan another page? ")
+ (scanimage t)))
+ ((> num-scans 1)
+ (cl-decf num-scans)
+ (run-at-time scanner-scan-delay nil #'scanimage t)))))
+ (scanimage
+ (multi-scan)
+ (let* ((img-file (if multi-scan
+ (prog1
+ (concat fname-base "-"
+ (number-to-string page-count)
+ fname-ext)
+ (cl-incf page-count))
+ (concat fname-base fname-ext)))
+ (scanimage-args (scanner--scanimage-args img-file
+ :image fmt)))
+ (make-process :name "Scanner (scanimage)"
+ :command `(,scanner-scanimage-program
+ ,@scanimage-args)
+ :sentinel #'scan-or-finish))))
+ (scanimage (or (> num-scans 1) (consp nscans))))))
(provide 'scanner)
- [elpa] externals/scanner cce46fd 01/56: initial commit, (continued)
- [elpa] externals/scanner cce46fd 01/56: initial commit, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner 64f5514 37/56: update commentary and Readme.org, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner eab3aea 40/56: cleanup scanner--ensure-init, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner 1229f38 46/56: add ‘check’ to phony targets, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner 72ecf43 56/56: minor clean-ups, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner c439a01 07/56: add scanner--ensure-init, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner 9779064 13/56: remove an old FIXME, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner 0b0fecf 19/56: make a basic Readme from the commentary, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner 00ab593 23/56: rephrase commentary in active voice, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner fdfdb62 33/56: add tesseract outputs selection command, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner d011e65 36/56: implement multi-image scan,
Stefan Monnier <=
- [elpa] externals/scanner e17e2fa 41/56: add section headings, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner 6537d71 47/56: add image size customization and update tests, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner bfaae5a 20/56: ignore PDF and text files, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner b058e2f 26/56: autoload the menu, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner d634903 44/56: improve docstring to scanner--determine-image-format, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner a8cdff3 48/56: clean up device switches and docstrings, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner d6af0ae 43/56: clean up tests a bit, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner eee1a77 54/56: remove useless type checks, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner c815ae0 42/56: make Makefile a bit more general, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner 312b0f4 45/56: clean up scanner--scanimage-args, Stefan Monnier, 2020/04/10