diff --git a/src/canon-lbp.drv b/src/canon-lbp.drv index 40d1641..c14e116 100644 --- a/src/canon-lbp.drv +++ b/src/canon-lbp.drv @@ -16,7 +16,7 @@ Copyright "(C)2020 Moses Chong" ColorModel "Gray/Grayscale" k chunky 2 Filter application/vnd.cups-raster 1 rastertocapt *Manufacturer "Canon Inc" -Version 0.1.3 +Version 0.1.4 { Font * @@ -25,6 +25,10 @@ Version 0.1.3 *Choice False/Disabled "<>setpagedevice" Choice True/Enabled "<>setpagedevice" + Option "captManualDuplex/Manual Duplex" Boolean AnySetup 10 + *Choice False/Disabled "<>setpagedevice" + Choice True/Enabled "<>setpagedevice" + { *Resolution k 1 70 592 0 "600dpi/600 DPI" diff --git a/src/paper.c b/src/paper.c index 17dcd9d..dc6b5e6 100644 --- a/src/paper.c +++ b/src/paper.c @@ -29,6 +29,7 @@ void page_set_dims(struct page_dims_s *dims, const struct cups_page_header2_s *h dims->paper_height = header->cupsHeight; //header->PageSize[1] * header->HWResolution[1] / 72; dims->toner_save = header->cupsInteger[0]; dims->ink_k = header->cupsInteger[1]; + dims->manual_duplex = header->cupsInteger[2]; dims->line_size = header->PageSize[0]; dims->num_lines = header->cupsHeight; dims->band_size = header->cupsRowCount; diff --git a/src/paper.h b/src/paper.h index 11f558e..2aca392 100644 --- a/src/paper.h +++ b/src/paper.h @@ -31,6 +31,7 @@ struct page_dims_s { unsigned paper_width; unsigned paper_height; unsigned toner_save; + unsigned manual_duplex; unsigned ink_k; unsigned margin_height; unsigned margin_width; diff --git a/src/rastertocapt.c b/src/rastertocapt.c index 894d523..09f890d 100644 --- a/src/rastertocapt.c +++ b/src/rastertocapt.c @@ -208,7 +208,6 @@ static void send_page_data(struct printer_state_s *state, const struct cached_pa static void do_cancel(int s) { (void) s; - fprintf(stderr, "DEBUG: CAPT: begin job cancellation cleanup\n"); if (ops) ops->cancel_cleanup(state); @@ -228,7 +227,6 @@ static void do_cancel(int s) if (state) free_state(); - fprintf(stderr, "DEBUG: CAPT: job cancellation cleanup complete\n"); exit(1); } @@ -280,6 +278,10 @@ static void do_print(int fd) fprintf(stderr, "DEBUG: CAPT: rastertocapt: start page %u\n", state->ipage); if (ops->page_prologue) { + if (cached_page->dims.manual_duplex && state->ipage > 1) { + fprintf(stderr, "DEBUG: CAPT: rastertocapt: manual duplex: press button to continue\n"); + ops->wait_user(state); + } bool ok = ops->page_prologue(state, &cached_page->dims); if (! ok) { fprintf(stderr, "DEBUG: CAPT: rastertocapt: can't start page\n");