/*
* IPP backend for CUPS.
*
- * Copyright © 2021-2023 by OpenPrinting
+ * Copyright © 2021-2024 by OpenPrinting
* Copyright © 2007-2021 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products, all rights reserved.
*
"multiple-document-handling-supported",
"operations-supported",
"print-color-mode-supported",
+ "print-scaling-supported",
"printer-alert",
"printer-alert-description",
"printer-is-accepting-jobs",
ppd_file_t *ppd,
ipp_attribute_t *media_col_sup,
ipp_attribute_t *doc_handling_sup,
- ipp_attribute_t *print_color_mode_sup);
+ ipp_attribute_t *print_color_mode_sup,
+ ipp_attribute_t *print_scaling_sup);
static const char *password_cb(const char *prompt, http_t *http,
const char *method, const char *resource,
int *user_data);
ipp_attribute_t *printer_state; /* printer-state attribute */
ipp_attribute_t *printer_accepting; /* printer-is-accepting-jobs */
ipp_attribute_t *print_color_mode_sup;/* Does printer support print-color-mode? */
+ ipp_attribute_t *print_scaling_sup; /* print-scaling-supported */
int create_job = 0, /* Does printer support Create-Job? */
get_job_attrs = 0, /* Does printer support Get-Job-Attributes? */
send_document = 0, /* Does printer support Send-Document? */
operations_sup = NULL;
doc_handling_sup = NULL;
print_color_mode_sup = NULL;
+ print_scaling_sup = NULL;
do
{
print_color_mode_sup = ippFindAttribute(supported, "print-color-mode-supported", IPP_TAG_KEYWORD);
+ if ((print_scaling_sup = ippFindAttribute(supported, "print-scaling-supported", IPP_TAG_KEYWORD)) != NULL)
+ {
+ int count = ippGetCount(print_scaling_sup);
+
+ fprintf(stderr, "DEBUG: print-scaling-supported (%d values)\n", count);
+ for (i = 0; i < count; i ++)
+ fprintf(stderr, "DEBUG: [%d] = %s\n", i, ippGetString(print_scaling_sup, i, NULL));
+ }
+
if ((operations_sup = ippFindAttribute(supported, "operations-supported",
IPP_TAG_ENUM)) != NULL)
{
request = new_request(IPP_OP_VALIDATE_JOB, version, uri, argv[2],
monitor.job_name, num_options, options, compression,
copies_sup ? copies : 1, document_format, pc, ppd,
- media_col_sup, doc_handling_sup, print_color_mode_sup);
+ media_col_sup, doc_handling_sup, print_color_mode_sup, print_scaling_sup);
response = cupsDoRequest(http, request, resource);
version, uri, argv[2], monitor.job_name, num_options,
options, compression, copies_sup ? copies : 1,
document_format, pc, ppd, media_col_sup,
- doc_handling_sup, print_color_mode_sup);
+ doc_handling_sup, print_color_mode_sup, print_scaling_sup);
/*
* Do the request...
ppd_file_t *ppd, /* I - PPD file data */
ipp_attribute_t *media_col_sup, /* I - media-col-supported values */
ipp_attribute_t *doc_handling_sup, /* I - multiple-document-handling-supported values */
- ipp_attribute_t *print_color_mode_sup)
- /* I - Printer supports print-color-mode */
+ ipp_attribute_t *print_color_mode_sup,
+ /* I - Printer supports print-color-mode? */
+ ipp_attribute_t *print_scaling_sup) /* I - print-scaling-supported values */
{
ipp_t *request; /* Request data */
const char *keyword; /* PWG keyword */
- (void)compression; // TODO: Add compression support???
-
/*
* Create the IPP request...
*/
copies = _cupsConvertOptions(request, ppd, pc, media_col_sup, doc_handling_sup, print_color_mode_sup, user, format, copies, num_options, options);
+ if ((keyword = cupsGetOption("print-scaling", num_options, options)) != NULL && ippContainsString(print_scaling_sup, keyword))
+ ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, "print-scaling", NULL, keyword);
+
/*
* Map FaxOut options...
*/