branch: externals/scanner commit a2b9ca492d2adc3b5044aad6ea58674cbd890573 Author: Raffael Stocker <r.stoc...@mnet-mail.de> Commit: Raffael Stocker <r.stoc...@mnet-mail.de>
add unpaper customizations --- scanner.el | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/scanner.el b/scanner.el index 9f3df3c440..d1cdb5cec9 100644 --- a/scanner.el +++ b/scanner.el @@ -142,6 +142,11 @@ use whatever scanimage thinks is right." "Path and file name of the tesseract(1) program." :type '(string)) +(defcustom scanner-unpaper-program + (executable-find "unpaper") + "Path and file name of the unpaper(1) program." + :type '(string)) + (defun scanner--widget-validate-subset (error-msg widget set) "Issue ERROR-MSG if the value of WIDGET is a not subset of SET. ERROR-MSG is passed to ‘format’ with two string arguments: the @@ -233,6 +238,82 @@ plugged in. For these, auto-detection will always be done." "Delay between document scans in multi-page mode." :type '(number)) + +(defcustom scanner-use-unpaper + nil + "Use unpaper(1) for post-processing of the scans before OCR." + :type '(boolean)) + +(defcustom scanner-unpaper-page-layout + "single" + "Page layout to assume in post-processing." + :type '(choice (const "single") + (const "double") + (const "none"))) + +(defcustom scanner-unpaper-input-pages + 1 + "Input pages per sheet." + :type '(integer)) + +(defcustom scanner-unpaper-output-pages + 1 + "Output pages per sheet." + :type '(integer)) + +(defcustom scanner-unpaper-pre-rotation + nil + "Pre-rotation to apply before post-processing." + :type '(choice (const :tag "clockwise" 90) + (const :tag "counter-clockwise" -90) + (const :tag "none" nil))) + +(defcustom scanner-unpaper-post-rotation + nil + "Post-rotation to apply after post-processing." + :type '(choice (const :tag "clockwise" 90) + (const :tag "counter-clockwise" -90) + (const :tag "none" nil))) + +(defconst scanner--unpaper-sizes + '("a5" "a4" "a3" "letter" "legal" "a5-landscape" "a4-landscape" + "a3-landscape" "letter-landscape" "legal-landscape") + "Paper size names understood by unpaper.") + +(defcustom scanner-unpaper-pre-size + "a4" + "Change sheet size before post-processing. +Either choose one of the pre-defined options (see +‘scanner--unpaper-sizes’), or enter a list of width and height +values as strings; e.g. ‘(\"21cm\" \"29.7cm\")’." + :type `(choice (list string string) + ,@(mapcar (lambda (x) (list 'const x)) + scanner--unpaper-sizes))) + +(defcustom scanner-unpaper-post-size + "a4" + "Change sheet size after post-processing. +Either choose one of the pre-defined options (see +‘scanner--unpaper-sizes’), or enter a list of width and height +values as strings; e.g. ‘(\"21cm\" \"29.7cm\")’." + :type `(choice (list string string) + ,@(mapcar (lambda (x) (list 'const x)) + scanner--unpaper-sizes))) + +(defcustom scanner-unpaper-border + '(0 0 0 0) + "Define a border at the sheet edges to be set to white. +The border is specified as a list of four integers (widths in +pixels) for left, top, right, and bottom edge, respectively. +This border is applied after deskewing and before automatic +border-scan." + :type '(list integer integer integer integer)) + +(defcustom scanner-unpaper-switches + '() + "Additional options to be passed to unpaper(1)." + :type '(repeat string)) + ;;;; menu ;;;###autoload