summaryrefslogtreecommitdiff
path: root/include/gutenprint/vars.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/gutenprint/vars.h')
-rw-r--r--include/gutenprint/vars.h1357
1 files changed, 1357 insertions, 0 deletions
diff --git a/include/gutenprint/vars.h b/include/gutenprint/vars.h
new file mode 100644
index 0000000..57f9ae7
--- /dev/null
+++ b/include/gutenprint/vars.h
@@ -0,0 +1,1357 @@
+/*
+ * "$id: vars.h,v 1.3.4.4 2004/03/09 03:00:25 rlk Exp $"
+ *
+ * libgimpprint stp_vars_t core functions.
+ *
+ * Copyright 1997-2000 Michael Sweet (mike@easysw.com) and
+ * Robert Krawitz (rlk@alum.mit.edu)
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+/**
+ * @file gutenprint/vars.h
+ * @brief Print job functions.
+ */
+
+#ifndef GUTENPRINT_VARS_H
+#define GUTENPRINT_VARS_H
+
+#include <gutenprint/array.h>
+#include <gutenprint/curve.h>
+#include <gutenprint/string-list.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * The vars data type contains all the information about a print job,
+ * this includes information such as the printer model, paper size,
+ * print resolution etc. Most of these job options are expressed as
+ * parameters which vary according to the model and other options
+ * selected.
+ *
+ * The representation of printer settings has changed dramatically from 4.2.
+ * All (well most, anyway) settings outside of basics such as the printer
+ * model and sizing settings are now typed parameters.
+ *
+ * @defgroup vars vars
+ * @{
+ */
+
+struct stp_vars;
+/** The vars opaque data type. */
+typedef struct stp_vars stp_vars_t;
+
+/**
+ * Parameter types.
+ * The following types are permitted for a printer setting. Not all
+ * are currently implemented.
+ */
+typedef enum
+{
+ STP_PARAMETER_TYPE_STRING_LIST, /*!< Single string choice from a list. */
+ STP_PARAMETER_TYPE_INT, /*!< Integer. */
+ STP_PARAMETER_TYPE_BOOLEAN, /*!< Boolean. */
+ STP_PARAMETER_TYPE_DOUBLE, /*!< Floating point number. */
+ STP_PARAMETER_TYPE_CURVE, /*!< Curve. */
+ STP_PARAMETER_TYPE_FILE, /*!< Filename (NYI, need to consider security). */
+ STP_PARAMETER_TYPE_RAW, /*!< Raw, opaque data. */
+ STP_PARAMETER_TYPE_ARRAY, /*!< Array. */
+ STP_PARAMETER_TYPE_DIMENSION, /*!< Linear dimension. */
+ STP_PARAMETER_TYPE_INVALID /*!< Invalid type (should never be used). */
+} stp_parameter_type_t;
+
+/**
+ * Parameter class.
+ * What kind of setting this is, for the purpose of user interface
+ * representation.
+ */
+typedef enum
+{
+ STP_PARAMETER_CLASS_FEATURE, /*!< Printer feature. */
+ STP_PARAMETER_CLASS_OUTPUT, /*!< Output control. */
+ STP_PARAMETER_CLASS_CORE, /*!< Core Gimp-Print parameter. */
+ STP_PARAMETER_CLASS_INVALID /*!< Invalid class (should never be used). */
+} stp_parameter_class_t;
+
+/**
+ * Parameter level.
+ * What "level" a setting is at, for UI design.
+ */
+typedef enum
+{
+ STP_PARAMETER_LEVEL_BASIC, /*!< Basic parameter, shown by all UIs. */
+ STP_PARAMETER_LEVEL_ADVANCED, /*!< Advanced parameter, shown by advanced UIs. */
+ STP_PARAMETER_LEVEL_ADVANCED1, /*!< Advanced1 parameter, shown by advanced UIs. */
+ STP_PARAMETER_LEVEL_ADVANCED2, /*!< Advanced2 parameter, shown by advanced UIs. */
+ STP_PARAMETER_LEVEL_ADVANCED3, /*!< Advanced3 parameter, shown by advanced UIs. */
+ STP_PARAMETER_LEVEL_ADVANCED4, /*!< Advanced4 parameter, shown by advanced UIs. */
+ STP_PARAMETER_LEVEL_INTERNAL, /*!< Parameters used only within Gimp-Print. */
+ STP_PARAMETER_LEVEL_EXTERNAL, /*!< Parameters used only outside Gimp-Print. */
+ STP_PARAMETER_LEVEL_INVALID /*!< Invalid level (should never be used). */
+} stp_parameter_level_t;
+
+/**
+ * Parameter activity.
+ * Whether a parameter is currently active (i. e. whether its value
+ * should be used by the driver or not). All parameters default to being
+ * active unless explicitly "turned off".
+ */
+typedef enum
+{
+ STP_PARAMETER_INACTIVE, /*!< Parameter is inactive (unused). */
+ STP_PARAMETER_DEFAULTED, /*!< Parameter is set to its default value. */
+ STP_PARAMETER_ACTIVE /*!< Parameter is active (used). */
+} stp_parameter_activity_t;
+
+/*
+ * Other parameter types
+ */
+
+/** Raw parameter. */
+typedef struct
+{
+ size_t bytes; /*!< Size of data. */
+ const void *data; /*!< Raw data. */
+} stp_raw_t;
+
+/** double_bound (range) parameter. */
+typedef struct
+{
+ double lower; /*!< Lower bound. */
+ double upper; /*!< Upper bound. */
+} stp_double_bound_t;
+
+/** int_bound (range) parameter. */
+typedef struct
+{
+ int lower; /*!< Lower bound. */
+ int upper; /*!< Upper bound. */
+} stp_int_bound_t;
+
+/** Parameter description. */
+typedef struct
+{
+ const char *name; /*!< Internal name (key). */
+ const char *text; /*!< User-visible name. */
+ const char *category; /*!< User-visible category name. */
+ const char *help; /*!< Help string. */
+ stp_parameter_type_t p_type; /*!< Parameter type. */
+ stp_parameter_class_t p_class; /*!< Parameter class. */
+ stp_parameter_level_t p_level; /*!< Parameter level. */
+ unsigned char is_mandatory; /*!< The parameter is required, even when set inactive. */
+ unsigned char is_active; /*!< Is the parameter active? */
+ unsigned char channel; /*!< The channel to which this parameter applies */
+ unsigned char verify_this_parameter; /*!< Should the verify system check this parameter? */
+ unsigned char read_only;
+ union
+ {
+ stp_curve_t *curve; /*!< curve parameter value. */
+ stp_double_bound_t dbl; /*!< double_bound parameter value. */
+ stp_int_bound_t integer; /*!< int_bound parameter value. */
+ stp_int_bound_t dimension; /*!< int_bound parameter value. */
+ stp_string_list_t *str; /*!< string_list parameter value. */
+ stp_array_t *array; /*!< array parameter value. */
+ } bounds; /*!< Limits on the values the parameter may take. */
+ union
+ {
+ stp_curve_t *curve; /*!< Default curve parameter value. */
+ double dbl; /*!< Default double parameter value. */
+ int dimension; /*!< Default dimension parameter value. */
+ int integer; /*!< Default int parameter value. */
+ int boolean; /*!< Default boolean parameter value. */
+ const char *str; /*!< Default string parameter value. */
+ stp_array_t *array; /*!< Default array parameter value. */
+ } deflt; /*!< Default value of the parameter. */
+} stp_parameter_t;
+
+/** The parameter_list opaque data type. */
+typedef void *stp_parameter_list_t;
+/** The constant parameter_list opaque data type. */
+typedef const void *stp_const_parameter_list_t;
+
+/**
+ * Output function supplied by the calling application.
+ * There are two output functions supplied by the caller, one to send
+ * output data and one to report errors.
+ * @param data a pointer to an opaque object owned by the calling
+ * application.
+ * @param buffer the data to output.
+ * @param bytes the size of buffer (in bytes).
+ */
+typedef void (*stp_outfunc_t) (void *data, const char *buffer, size_t bytes);
+
+
+/****************************************************************
+* *
+* BASIC PRINTER SETTINGS *
+* *
+****************************************************************/
+
+/**
+ * Create a new vars object.
+ * @returns the newly created vars object.
+ */
+extern stp_vars_t *stp_vars_create(void);
+
+/**
+ * Copy a vars object.
+ * Both dest and source must be valid vars objects previously
+ * created with stp_vars_create().
+ * @param dest the destination vars.
+ * @param source the source vars.
+ */
+extern void stp_vars_copy(stp_vars_t *dest, const stp_vars_t *source);
+
+/**
+ * Copy and allocate a vars object.
+ * source must be a valid vars object previously created with
+ * stp_vars_create().
+ * @param source the source vars.
+ * @returns the new copy of the vars.
+ */
+extern stp_vars_t *stp_vars_create_copy(const stp_vars_t *source);
+
+/**
+ * Destroy a vars object.
+ * It is an error to destroy the vars more than once.
+ * @param v the vars to destroy.
+ */
+extern void stp_vars_destroy(stp_vars_t *v);
+
+/**
+ * Set the name of the printer driver.
+ * @param v the vars to use.
+ * @param val the name to set.
+ */
+extern void stp_set_driver(stp_vars_t *v, const char *val);
+
+/**
+ * Set the name of the printer driver.
+ * @param v the vars to use.
+ * @param val the name to set.
+ * @param bytes the length of val (in bytes).
+ */
+extern void stp_set_driver_n(stp_vars_t *v, const char *val, int bytes);
+
+/**
+ * Get the name of the printer driver.
+ * @returns the name of the printer driver (must not be freed).
+ */
+extern const char *stp_get_driver(const stp_vars_t *v);
+
+/**
+ * Set the name of the color conversion routine, if not the default.
+ * @param v the vars to use.
+ * @param val the name to set.
+ */
+extern void stp_set_color_conversion(stp_vars_t *v, const char *val);
+
+/**
+ * Set the name of the color conversion routine, if not the default.
+ * @param v the vars to use.
+ * @param val the name to set.
+ * @param bytes the length of val (in bytes).
+ */
+extern void stp_set_color_conversion_n(stp_vars_t *v, const char *val, int bytes);
+
+/**
+ * Get the name of the color conversion routine.
+ * @returns the name of the color conversion routine (must not be freed).
+ */
+extern const char *stp_get_color_conversion(const stp_vars_t *v);
+
+/*
+ * Set/get the position and size of the image
+ */
+
+/**
+ * Set the left edge of the image.
+ * @param v the vars to use.
+ * @param val the value to set.
+ */
+extern void stp_set_left(stp_vars_t *v, int val);
+
+/**
+ * Get the left edge of the image.
+ * @returns the left edge.
+ */
+extern int stp_get_left(const stp_vars_t *v);
+
+/**
+ * Set the top edge of the image.
+ * @param v the vars to use.
+ * @param val the value to set.
+ */
+extern void stp_set_top(stp_vars_t *v, int val);
+
+/**
+ * Get the top edge of the image.
+ * @returns the left edge.
+ */
+extern int stp_get_top(const stp_vars_t *v);
+
+/**
+ * Set the width of the image.
+ * @param v the vars to use.
+ * @param val the value to set.
+ */
+extern void stp_set_width(stp_vars_t *v, int val);
+
+/**
+ * Get the width edge of the image.
+ * @returns the left edge.
+ */
+extern int stp_get_width(const stp_vars_t *v);
+
+/**
+ * Set the height of the image.
+ * @param v the vars to use.
+ * @param val the value to set.
+ */
+extern void stp_set_height(stp_vars_t *v, int val);
+
+/**
+ * Get the height of the image.
+ * @returns the left edge.
+ */
+extern int stp_get_height(const stp_vars_t *v);
+
+/*
+ * For custom page widths, these functions may be used.
+ */
+
+/**
+ * Set the page width.
+ * @param v the vars to use.
+ * @param val the value to set.
+ */
+extern void stp_set_page_width(stp_vars_t *v, int val);
+
+/**
+ * Get the page width.
+ * @returns the page width.
+ */
+extern int stp_get_page_width(const stp_vars_t *v);
+
+/**
+ * Set the page height.
+ * @param v the vars to use.
+ * @param val the value to set.
+ */
+extern void stp_set_page_height(stp_vars_t *v, int val);
+
+/**
+ * Get the page height.
+ * @returns the page height.
+ */
+extern int stp_get_page_height(const stp_vars_t *v);
+
+/**
+ * Set the function used to print output information.
+ * These must be supplied by the caller. outdata is passed as an
+ * arguments to outfunc; typically it will be a file descriptor.
+ * @param v the vars to use.
+ * @param val the value to set.
+ */
+extern void stp_set_outfunc(stp_vars_t *v, stp_outfunc_t val);
+
+/**
+ * Get the function used to print output information.
+ * @param v the vars to use.
+ * @returns the outfunc.
+ */
+extern stp_outfunc_t stp_get_outfunc(const stp_vars_t *v);
+
+/**
+ * Set the function used to print error and diagnostic information.
+ * These must be supplied by the caller. errdata is passed as an
+ * arguments to errfunc; typically it will be a file descriptor.
+ * @param v the vars to use.
+ * @param val the value to set.
+ */
+extern void stp_set_errfunc(stp_vars_t *v, stp_outfunc_t val);
+
+/**
+ * Get the function used to print output information.
+ * @param v the vars to use.
+ * @returns the outfunc.
+ */
+extern stp_outfunc_t stp_get_errfunc(const stp_vars_t *v);
+
+/**
+ * Set the output data.
+ * @param v the vars to use.
+ * @param val the output data. This will typically be a file
+ * descriptor, but it is entirely up to the caller exactly what type
+ * this might be.
+ */
+extern void stp_set_outdata(stp_vars_t *v, void *val);
+
+/**
+ * Get the output data.
+ * @param v the vars to use.
+ * @returns the output data.
+ */
+extern void *stp_get_outdata(const stp_vars_t *v);
+
+/**
+ * Set the error data.
+ * @param v the vars to use.
+ * @param val the error data. This will typically be a file
+ * descriptor, but it is entirely up to the caller exactly what type
+ * this might be.
+ */
+extern void stp_set_errdata(stp_vars_t *v, void *val);
+
+/**
+ * Get the error data.
+ * @param v the vars to use.
+ * @returns the output data.
+ */
+extern void *stp_get_errdata(const stp_vars_t *v);
+
+/**
+ * Merge defaults for a printer with user-chosen settings.
+ * @deprecated This is likely to go away.
+ * @param user the destination vars.
+ * @param print the vars to merge into user.
+ */
+extern void stp_merge_printvars(stp_vars_t *user, const stp_vars_t *print);
+
+
+/****************************************************************
+* *
+* PARAMETER MANAGEMENT *
+* *
+****************************************************************/
+
+/**
+ * List the available parameters for the currently chosen settings.
+ * This does not fill in the bounds and defaults; it merely provides
+ * a list of settings. To fill in detailed information for a setting,
+ * use stp_describe_parameter.
+ * @param v the vars to use.
+ * @returns a list of available parameters (must be freed with
+ * stp_parameter_list_destroy()).
+ */
+extern stp_parameter_list_t stp_get_parameter_list(const stp_vars_t *v);
+
+/**
+ * List the number of available parameters for the currently chosen
+ * settings.
+ * @param list the parameter_list to use.
+ * @returns the number of parameters.
+ */
+extern size_t stp_parameter_list_count(stp_const_parameter_list_t list);
+
+/**
+ * Find a parameter by its name.
+ * @param list the parameter_list to use.
+ * @param name the name of the parameter.
+ * @returns a pointer to the parameter (must not be freed), or NULL if
+ * no parameter was found.
+ */
+extern const stp_parameter_t *
+stp_parameter_find(stp_const_parameter_list_t list, const char *name);
+
+/**
+ * Find a parameter by its index number.
+ * @param list the parameter_list to use.
+ * @param item the index number of the parameter (must not be greater
+ * than stp_parameter_list_count - 1).
+ * @returns a pointer to the parameter (must not be freed), or NULL if
+ * no parameter was found.
+ */
+extern const stp_parameter_t *
+stp_parameter_list_param(stp_const_parameter_list_t list, size_t item);
+
+/**
+ * Destroy a parameter_list.
+ * It is an error to destroy the parameter_list more than once.
+ * @param list the parameter_list to destroy.
+ */
+extern void stp_parameter_list_destroy(stp_parameter_list_t list);
+
+/**
+ * Create a parameter_list.
+ * @returns the newly created parameter_list.
+ */
+extern stp_parameter_list_t stp_parameter_list_create(void);
+
+/**
+ * Add a parameter to a parameter_list.
+ * @param list the parameter_list to use.
+ * @param item the parameter to add.
+ */
+extern void stp_parameter_list_add_param(stp_parameter_list_t list,
+ const stp_parameter_t *item);
+
+/**
+ * Copy and allocate a parameter_list.
+ * A new parameter_list will be created, and then the contents of
+ * source will be
+ * copied into it.
+ * @param list the source parameter_list.
+ * @returns the new copy of the parameter_list.
+ */
+extern stp_parameter_list_t
+stp_parameter_list_copy(stp_const_parameter_list_t list);
+
+/**
+ * Append one parameter_list to another.
+ * @param list the destination list (to append to).
+ * @param append the list of paramters to append. Each item that does
+ * not already exist in list will be appended.
+ */
+extern void
+stp_parameter_list_append(stp_parameter_list_t list,
+ stp_const_parameter_list_t append);
+
+/**
+ * Describe a parameter in detail.
+ * All of the parameter fields will be populated.
+ * @param v the vars to use.
+ * @param name the name of the parameter.
+ * @param description a pointer to an stp_parameter_t to store the
+ * parameter description in.
+ */
+extern void
+stp_describe_parameter(const stp_vars_t *v, const char *name,
+ stp_parameter_t *description);
+
+/**
+ * Destroy a parameter description.
+ * This must be called even if the stp_parameter_t was not allocated
+ * with malloc, since some members are dynamically allocated.
+ * @param description the parameter description to destroy.
+ */
+extern void stp_parameter_description_destroy(stp_parameter_t *description);
+
+/**
+ * Find a parameter by its name from a vars object.
+ * @param v the vars to use.
+ * @param name the name of the parameter.
+ * @returns a pointer to the parameter (must not be freed), or NULL if
+ * no parameter was found.
+ */
+extern const stp_parameter_t *
+stp_parameter_find_in_settings(const stp_vars_t *v, const char *name);
+
+/**
+ * Set a string parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param value the value to set.
+ */
+extern void stp_set_string_parameter(stp_vars_t *v, const char *parameter,
+ const char *value);
+
+/**
+ * Set a string parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param value the value to set (must not contain NUL).
+ * @param bytes the length of value (in bytes).
+ */
+extern void stp_set_string_parameter_n(stp_vars_t *v, const char *parameter,
+ const char *value, size_t bytes);
+
+/**
+ * Set a file parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param value the value to set.
+ */
+extern void stp_set_file_parameter(stp_vars_t *v, const char *parameter,
+ const char *value);
+
+/**
+ * Set a file parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param value the value to set (must not contain NUL).
+ * @param bytes the length of value (in bytes).
+ */
+extern void stp_set_file_parameter_n(stp_vars_t *v, const char *parameter,
+ const char *value, size_t bytes);
+
+/**
+ * Set a float parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param value the value to set.
+ */
+extern void stp_set_float_parameter(stp_vars_t *v, const char *parameter,
+ double value);
+
+/**
+ * Set an integer parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param value the value to set.
+ */
+extern void stp_set_int_parameter(stp_vars_t *v, const char *parameter,
+ int value);
+
+/**
+ * Set a dimension parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param value the value to set.
+ */
+extern void stp_set_dimension_parameter(stp_vars_t *v, const char *parameter,
+ int value);
+
+/**
+ * Set a boolean parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param value the value to set.
+ */
+extern void stp_set_boolean_parameter(stp_vars_t *v, const char *parameter,
+ int value);
+
+/**
+ * Set a curve parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param value the value to set.
+ */
+extern void stp_set_curve_parameter(stp_vars_t *v, const char *parameter,
+ const stp_curve_t *value);
+
+/**
+ * Set an array parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param value the value to set.
+ */
+extern void stp_set_array_parameter(stp_vars_t *v, const char *parameter,
+ const stp_array_t *value);
+
+/**
+ * Set a raw parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param value the value to set.
+ * @param bytes the length of value (in bytes).
+ */
+extern void stp_set_raw_parameter(stp_vars_t *v, const char *parameter,
+ const void *value, size_t bytes);
+
+/**
+ * Multiply the value of a float parameter by a scaling factor.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param scale the factor to multiply the value by.
+ */
+extern void stp_scale_float_parameter(stp_vars_t *v, const char *parameter,
+ double scale);
+
+/**
+ * Set a default string parameter.
+ * The value is set if the parameter is not already set. This avoids
+ * having to check if the parameter is set prior to setting it, if you
+ * do not want to override the existing value.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param value the value to set.
+ */
+extern void stp_set_default_string_parameter(stp_vars_t *v,
+ const char *parameter,
+ const char *value);
+
+/**
+ * Set a default string parameter.
+ * The value is set if the parameter is not already set. This avoids
+ * having to check if the parameter is set prior to setting it, if you
+ * do not want to override the existing value.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param value the value to set (must not contain NUL).
+ * @param bytes the length of value (in bytes).
+ */
+extern void stp_set_default_string_parameter_n(stp_vars_t *v,
+ const char *parameter,
+ const char *value, size_t bytes);
+
+/**
+ * Set a default file parameter.
+ * The value is set if the parameter is not already set. This avoids
+ * having to check if the parameter is set prior to setting it, if you
+ * do not want to override the existing value.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param value the value to set.
+ */
+extern void stp_set_default_file_parameter(stp_vars_t *v,
+ const char *parameter,
+ const char *value);
+
+/**
+ * Set a default file parameter.
+ * The value is set if the parameter is not already set. This avoids
+ * having to check if the parameter is set prior to setting it, if you
+ * do not want to override the existing value.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param value the value to set (must not contain NUL).
+ * @param bytes the length of value (in bytes).
+ */
+extern void stp_set_default_file_parameter_n(stp_vars_t *v,
+ const char *parameter,
+ const char *value, size_t bytes);
+
+/**
+ * Set a default float parameter.
+ * The value is set if the parameter is not already set. This avoids
+ * having to check if the parameter is set prior to setting it, if you
+ * do not want to override the existing value.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param value the value to set.
+ */
+extern void stp_set_default_float_parameter(stp_vars_t *v,
+ const char *parameter,
+ double value);
+
+/**
+ * Set a default integer parameter.
+ * The value is set if the parameter is not already set. This avoids
+ * having to check if the parameter is set prior to setting it, if you
+ * do not want to override the existing value.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param value the value to set.
+ */
+extern void stp_set_default_int_parameter(stp_vars_t *v,
+ const char *parameter,
+ int value);
+
+/**
+ * Set a default dimension parameter.
+ * The value is set if the parameter is not already set. This avoids
+ * having to check if the parameter is set prior to setting it, if you
+ * do not want to override the existing value.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param value the value to set.
+ */
+extern void stp_set_default_dimension_parameter(stp_vars_t *v,
+ const char *parameter,
+ int value);
+
+/**
+ * Set a default boolean parameter.
+ * The value is set if the parameter is not already set. This avoids
+ * having to check if the parameter is set prior to setting it, if you
+ * do not want to override the existing value.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param value the value to set.
+ */
+extern void stp_set_default_boolean_parameter(stp_vars_t *v,
+ const char *parameter,
+ int value);
+
+/**
+ * Set a default curve parameter.
+ * The value is set if the parameter is not already set. This avoids
+ * having to check if the parameter is set prior to setting it, if you
+ * do not want to override the existing value.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param value the value to set.
+ */
+extern void stp_set_default_curve_parameter(stp_vars_t *v,
+ const char *parameter,
+ const stp_curve_t *value);
+
+/**
+ * Set a default array parameter.
+ * The value is set if the parameter is not already set. This avoids
+ * having to check if the parameter is set prior to setting it, if you
+ * do not want to override the existing value.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param value the value to set.
+ */
+extern void stp_set_default_array_parameter(stp_vars_t *v,
+ const char *parameter,
+ const stp_array_t *value);
+
+/**
+ * Set a default raw parameter.
+ * The value is set if the parameter is not already set. This avoids
+ * having to check if the parameter is set prior to setting it, if you
+ * do not want to override the existing value.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param value the value to set.
+ * @param bytes the length of value (in bytes).
+ */
+extern void stp_set_default_raw_parameter(stp_vars_t *v,
+ const char *parameter,
+ const void *value, size_t bytes);
+
+/**
+ * Get a string parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @returns the string, or NULL if no parameter was found.
+ */
+extern const char *stp_get_string_parameter(const stp_vars_t *v,
+ const char *parameter);
+
+/**
+ * Get a file parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @returns the filename, or NULL if no parameter was found.
+ */
+extern const char *stp_get_file_parameter(const stp_vars_t *v,
+ const char *parameter);
+
+/**
+ * Get a float parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @returns the float value.
+ */
+extern double stp_get_float_parameter(const stp_vars_t *v,
+ const char *parameter);
+
+/**
+ * Get an integer parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @returns the integer value.
+ */
+extern int stp_get_int_parameter(const stp_vars_t *v,
+ const char *parameter);
+
+/**
+ * Get a dimension parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @returns the dimension (integer) value.
+ */
+extern int stp_get_dimension_parameter(const stp_vars_t *v,
+ const char *parameter);
+
+/**
+ * Get a boolean parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @returns the boolean value.
+ */
+extern int stp_get_boolean_parameter(const stp_vars_t *v,
+ const char *parameter);
+
+/**
+ * Get a curve parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @returns the curve, or NULL if no parameter was found.
+ */
+extern const stp_curve_t *stp_get_curve_parameter(const stp_vars_t *v,
+ const char *parameter);
+
+/**
+ * Get an array parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @returns the array, or NULL if no parameter was found.
+ */
+extern const stp_array_t *stp_get_array_parameter(const stp_vars_t *v,
+ const char *parameter);
+
+/**
+ * Get a raw parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @returns the raw data, or NULL if no parameter was found.
+ */
+extern const stp_raw_t *stp_get_raw_parameter(const stp_vars_t *v,
+ const char *parameter);
+
+/**
+ * Clear a string parameter.
+ * The parameter is set to NULL.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ */
+extern void stp_clear_string_parameter(stp_vars_t *v, const char *parameter);
+
+/**
+ * Clear a file parameter.
+ * The parameter is set to NULL.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ */
+extern void stp_clear_file_parameter(stp_vars_t *v, const char *parameter);
+
+/**
+ * Clear (remove) a float parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ */
+extern void stp_clear_float_parameter(stp_vars_t *v, const char *parameter);
+
+/**
+ * Clear (remove) an integer parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ */
+extern void stp_clear_int_parameter(stp_vars_t *v, const char *parameter);
+
+/**
+ * Clear (remove) a dimension parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ */
+extern void stp_clear_dimension_parameter(stp_vars_t *v, const char *parameter);
+
+/**
+ * Clear (remove) a boolean parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ */
+extern void stp_clear_boolean_parameter(stp_vars_t *v, const char *parameter);
+
+/**
+ * Clear a curve parameter.
+ * The parameter is set to NULL.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ */
+extern void stp_clear_curve_parameter(stp_vars_t *v, const char *parameter);
+
+/**
+ * Clear an array parameter.
+ * The parameter is set to NULL.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ */
+extern void stp_clear_array_parameter(stp_vars_t *v, const char *parameter);
+
+/**
+ * Clear a raw parameter.
+ * The parameter is set to NULL.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ */
+extern void stp_clear_raw_parameter(stp_vars_t *v, const char *parameter);
+
+/**
+ * Set the activity of a string parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param active the activity status to set (should be set to
+ * STP_PARAMETER_ACTIVE or STP_PARAMETER_INACTIVE).
+ */
+extern void stp_set_string_parameter_active(const stp_vars_t *v,
+ const char *parameter,
+ stp_parameter_activity_t active);
+
+/**
+ * Set the activity of a file parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param active the activity status to set (should be set to
+ * STP_PARAMETER_ACTIVE or STP_PARAMETER_INACTIVE).
+ */
+extern void stp_set_file_parameter_active(const stp_vars_t *v,
+ const char *parameter,
+ stp_parameter_activity_t active);
+
+/**
+ * Set the activity of a float parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param active the activity status to set (should be set to
+ * STP_PARAMETER_ACTIVE or STP_PARAMETER_INACTIVE).
+ */
+extern void stp_set_float_parameter_active(const stp_vars_t *v,
+ const char *parameter,
+ stp_parameter_activity_t active);
+
+/**
+ * Set the activity of an integer parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param active the activity status to set (should be set to
+ * STP_PARAMETER_ACTIVE or STP_PARAMETER_INACTIVE).
+ */
+extern void stp_set_int_parameter_active(const stp_vars_t *v,
+ const char *parameter,
+ stp_parameter_activity_t active);
+
+/**
+ * Set the activity of a dimension parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param active the activity status to set (should be set to
+ * STP_PARAMETER_ACTIVE or STP_PARAMETER_INACTIVE).
+ */
+extern void stp_set_dimension_parameter_active(const stp_vars_t *v,
+ const char *parameter,
+ stp_parameter_activity_t active);
+
+/**
+ * Set the activity of a boolean parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param active the activity status to set (should be set to
+ * STP_PARAMETER_ACTIVE or STP_PARAMETER_INACTIVE).
+ */
+extern void stp_set_boolean_parameter_active(const stp_vars_t *v,
+ const char *parameter,
+ stp_parameter_activity_t active);
+
+/**
+ * Set the activity of a curveparameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param active the activity status to set (should be set to
+ * STP_PARAMETER_ACTIVE or STP_PARAMETER_INACTIVE).
+ */
+extern void stp_set_curve_parameter_active(const stp_vars_t *v,
+ const char *parameter,
+ stp_parameter_activity_t active);
+
+/**
+ * Set the activity of an array parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param active the activity status to set (should be set to
+ * STP_PARAMETER_ACTIVE or STP_PARAMETER_INACTIVE).
+ */
+extern void stp_set_array_parameter_active(const stp_vars_t *v,
+ const char *parameter,
+ stp_parameter_activity_t active);
+
+/**
+ * Set the activity of a raw parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param active the activity status to set (should be set to
+ * STP_PARAMETER_ACTIVE or STP_PARAMETER_INACTIVE).
+ */
+extern void stp_set_raw_parameter_active(const stp_vars_t *v,
+ const char *parameter,
+ stp_parameter_activity_t active);
+
+/**
+ * Check if a string parameter is set.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param active the minimum activity status.
+ */
+extern int stp_check_string_parameter(const stp_vars_t *v, const char *parameter,
+ stp_parameter_activity_t active);
+
+/**
+ * Check if a file parameter is set.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param active the minimum activity status.
+ */
+extern int stp_check_file_parameter(const stp_vars_t *v, const char *parameter,
+ stp_parameter_activity_t active);
+
+/**
+ * Check if a float parameter is set.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param active the minimum activity status.
+ */
+extern int stp_check_float_parameter(const stp_vars_t *v, const char *parameter,
+ stp_parameter_activity_t active);
+
+/**
+ * Check if an integer parameter is set.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param active the minimum activity status.
+ */
+extern int stp_check_int_parameter(const stp_vars_t *v, const char *parameter,
+ stp_parameter_activity_t active);
+
+/**
+ * Check if a dimension parameter is set.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param active the minimum activity status.
+ */
+extern int stp_check_dimension_parameter(const stp_vars_t *v, const char *parameter,
+ stp_parameter_activity_t active);
+
+/**
+ * Check if a boolean parameter is set.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param active the minimum activity status.
+ */
+extern int stp_check_boolean_parameter(const stp_vars_t *v, const char *parameter,
+ stp_parameter_activity_t active);
+
+/**
+ * Check if a curve parameter is set.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param active the minimum activity status.
+ */
+extern int stp_check_curve_parameter(const stp_vars_t *v, const char *parameter,
+ stp_parameter_activity_t active);
+
+/**
+ * Check if an array parameter is set.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param active the minimum activity status.
+ */
+extern int stp_check_array_parameter(const stp_vars_t *v, const char *parameter,
+ stp_parameter_activity_t active);
+
+/**
+ * Check if a raw parameter is set.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @param active the minimum activity status.
+ */
+extern int stp_check_raw_parameter(const stp_vars_t *v, const char *parameter,
+ stp_parameter_activity_t active);
+
+/**
+ * Get the activity status of a string parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @returns the activity status.
+ */
+extern stp_parameter_activity_t
+stp_get_string_parameter_active(const stp_vars_t *v, const char *parameter);
+
+/**
+ * Get the activity status of a file parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @returns the activity status.
+ */
+extern stp_parameter_activity_t
+stp_get_file_parameter_active(const stp_vars_t *v, const char *parameter);
+
+/**
+ * Get the activity status of a float parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @returns the activity status.
+ */
+extern stp_parameter_activity_t
+stp_get_float_parameter_active(const stp_vars_t *v, const char *parameter);
+
+/**
+ * Get the activity status of an integer parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @returns the activity status.
+ */
+extern stp_parameter_activity_t
+stp_get_int_parameter_active(const stp_vars_t *v, const char *parameter);
+
+/**
+ * Get the activity status of a dimension parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @returns the activity status.
+ */
+extern stp_parameter_activity_t
+stp_get_dimension_parameter_active(const stp_vars_t *v, const char *parameter);
+
+/**
+ * Get the activity status of a boolean parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @returns the activity status.
+ */
+extern stp_parameter_activity_t
+stp_get_boolean_parameter_active(const stp_vars_t *v, const char *parameter);
+
+/**
+ * Get the activity status of a curve parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @returns the activity status.
+ */
+extern stp_parameter_activity_t
+stp_get_curve_parameter_active(const stp_vars_t *v, const char *parameter);
+
+/**
+ * Get the activity status of an array parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @returns the activity status.
+ */
+extern stp_parameter_activity_t
+stp_get_array_parameter_active(const stp_vars_t *v, const char *parameter);
+
+/**
+ * Get the activity status of a raw parameter.
+ * @param v the vars to use.
+ * @param parameter the name of the parameter.
+ * @returns the activity status.
+ */
+extern stp_parameter_activity_t
+stp_get_raw_parameter_active(const stp_vars_t *v, const char *parameter);
+
+
+
+/****************************************************************
+* *
+* INFORMATIONAL QUERIES *
+* *
+****************************************************************/
+
+/**
+ * Get the media (paper) size.
+ * Retrieve the media size of the media type set in V, expressed in units
+ * of 1/72". If the media size is invalid, width and height will be set
+ * to -1. Values of 0 for width or height indicate that the dimension
+ * is variable, so that custom page sizes or roll paper can be used.
+ * In this case, the size limit should be used to determine maximum and
+ * minimum values permitted.
+ * @param v the vars to use.
+ * @param width a pointer to an int to store the media width in.
+ * @param height a pointer to an int to store the media height in.
+ */
+extern void stp_get_media_size(const stp_vars_t *v, int *width, int *height);
+
+/**
+ * Get the imagable area of the page.
+ * Retrieve the boundaries of the printable area of the page. In combination
+ * with the media size, this can be used to determine the actual printable
+ * region, which callers can use to place the image precisely. The
+ * dimensions are relative to the top left of the physical page.
+ *
+ * If a customizable page size is used (see stp_printer_get_media_size),
+ * the actual desired width and/or height must be filled in using
+ * stp_set_page_width and/or stp_set_page_height. If these are not filled
+ * in, the margins will be returned.
+ *
+ * Returned values may be negative if a printer is capable of full bleed
+ * by printing beyond the physical boundaries of the page.
+ *
+ * If the media size stored in V is invalid, the return values
+ * will be indeterminate. It is up to the user to specify legal values.
+ * @param v the vars to use.
+ * @param left a pointer to a int to store the left edge in.
+ * @param right a pointer to a int to store the right edge in.
+ * @param bottom a pointer to a int to store the bottom edge in.
+ * @param top a pointer to a int to store the top edge in.
+ */
+extern void stp_get_imageable_area(const stp_vars_t *v, int *left, int *right,
+ int *bottom, int *top);
+
+/**
+ * Get the media size limits.
+ * Retrieve the minimum and maximum size limits for custom media sizes
+ * with the current printer settings.
+ * @param v the vars to use.
+ * @param max_width a pointer to a int to store the maximum width in.
+ * @param max_height a pointer to a int to store the maximum height in.
+ * @param min_width a pointer to a int to store the minimum width in.
+ * @param min_height a pointer to a int to store the minimum height in.
+ */
+extern void
+stp_get_size_limit(const stp_vars_t *v, int *max_width, int *max_height,
+ int *min_width, int *min_height);
+
+
+/**
+ * Retrieve the printing resolution of the selected resolution. If the
+ * resolution is invalid, -1 will be returned in both x and y.
+ * @param v the vars to use.
+ * @param x a pointer to a int to store the horizontal resolution in.
+ * @param y a pointer to a int to store the vertical resolution in.
+ */
+extern void stp_describe_resolution(const stp_vars_t *v, int *x, int *y);
+
+/**
+ * Verify parameters.
+ * Verify that the parameters selected are consistent with those allowed
+ * by the driver. This must be called prior to printing; failure to do
+ * so will result in printing failing.
+ * @param v the vars to use.
+ * @returns 0 on failure, 1 on success; other status values are reserved.
+ */
+extern int stp_verify(stp_vars_t *v);
+
+/**
+ * Get default global settings. The main use of this is to provide a
+ * usable stp_vars_t for purposes of parameter inquiry in the absence
+ * of a specific printer. This is currently used in a variety of
+ * places to get information on the standard color parameters without
+ * querying a particular printer.
+ * @returns the default settings.
+ */
+extern const stp_vars_t *stp_default_settings(void);
+
+typedef void *(*stp_copy_data_func_t)(void *);
+typedef void (*stp_free_data_func_t)(void *);
+
+typedef enum
+{
+ PARAMETER_BAD,
+ PARAMETER_OK,
+ PARAMETER_INACTIVE
+} stp_parameter_verify_t;
+
+extern void stp_allocate_component_data(stp_vars_t *v,
+ const char *name,
+ stp_copy_data_func_t copyfunc,
+ stp_free_data_func_t freefunc,
+ void *data);
+extern void stp_destroy_component_data(stp_vars_t *v, const char *name);
+
+struct stp_compdata;
+typedef struct stp_compdata compdata_t;
+
+extern void *stp_get_component_data(const stp_vars_t *v, const char *name);
+
+extern stp_parameter_verify_t stp_verify_parameter(const stp_vars_t *v,
+ const char *parameter,
+ int quiet);
+extern int stp_get_verified(const stp_vars_t *v);
+extern void stp_set_verified(stp_vars_t *v, int value);
+
+extern void stp_copy_options(stp_vars_t *vd, const stp_vars_t *vs);
+
+extern void
+stp_fill_parameter_settings(stp_parameter_t *desc,
+ const stp_parameter_t *param);
+
+ /** @} */
+
+#ifdef __cplusplus
+ }
+#endif
+
+#endif /* GUTENPRINT_VARS_H */
+/*
+ * End of "$Id: vars.h,v 1.2 2005/04/09 13:59:17 rlk Exp $".
+ */