diff options
Diffstat (limited to 'src/main/print-escp2.c')
-rw-r--r-- | src/main/print-escp2.c | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/src/main/print-escp2.c b/src/main/print-escp2.c index 1aebc0a..096fb43 100644 --- a/src/main/print-escp2.c +++ b/src/main/print-escp2.c @@ -1,5 +1,5 @@ /* - * "$Id: print-escp2.c,v 1.414 2008/07/26 15:16:15 rlk Exp $" + * "$Id: print-escp2.c,v 1.416 2008/11/22 20:34:29 rlk Exp $" * * Print plug-in EPSON ESC/P2 driver for the GIMP. * @@ -1000,6 +1000,34 @@ escp2_quality_list(const stp_vars_t *v) return printdef->quality_list; } +static short +escp2_duplex_left_margin(const stp_vars_t *v) +{ + stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); + return printdef->duplex_left_margin; +} + +static short +escp2_duplex_right_margin(const stp_vars_t *v) +{ + stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); + return printdef->duplex_right_margin; +} + +static short +escp2_duplex_top_margin(const stp_vars_t *v) +{ + stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); + return printdef->duplex_top_margin; +} + +static short +escp2_duplex_bottom_margin(const stp_vars_t *v) +{ + stpi_escp2_printer_t *printdef = stp_escp2_get_printer(v); + return printdef->duplex_bottom_margin; +} + static const channel_count_t * get_channel_count_by_name(const char *name) { @@ -2594,6 +2622,7 @@ internal_imageable_area(const stp_vars_t *v, int use_paper_margins, int rollfeed = 0; /* Roll feed selected */ int cd = 0; /* CD selected */ const char *media_size = stp_get_string_parameter(v, "PageSize"); + const char *duplex = stp_get_string_parameter(v, "Duplex"); int left_margin = 0; int right_margin = 0; int bottom_margin = 0; @@ -2677,6 +2706,14 @@ internal_imageable_area(const stp_vars_t *v, int use_paper_margins, } } } + if (!use_maximum_area && duplex && strcmp(duplex, "None") != 0) + { + left_margin = imax(left_margin, escp2_duplex_left_margin(v)); + right_margin = imax(right_margin, escp2_duplex_right_margin(v)); + bottom_margin = imax(bottom_margin, escp2_duplex_bottom_margin(v)); + top_margin = imax(top_margin, escp2_duplex_top_margin(v)); + } + if (width > escp2_max_imageable_width(v)) width = escp2_max_imageable_width(v); if (height > escp2_max_imageable_height(v)) |