diff options
Diffstat (limited to 'include/gimp-print/gimp-print.h.in')
-rw-r--r-- | include/gimp-print/gimp-print.h.in | 598 |
1 files changed, 0 insertions, 598 deletions
diff --git a/include/gimp-print/gimp-print.h.in b/include/gimp-print/gimp-print.h.in deleted file mode 100644 index 8e3d059..0000000 --- a/include/gimp-print/gimp-print.h.in +++ /dev/null @@ -1,598 +0,0 @@ -/* - * $Id: gimp-print.h.in,v 1.8.2.1 2002/12/08 21:12:33 rlk Exp $ - * - * Print plug-in header file for the GIMP. - * - * 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. - * - * Revision History: - * - * See ChangeLog - */ - -/* - * This file must include only standard C header files. The core code must - * compile on generic platforms that don't support glib, gimp, gtk, etc. - */ - -#ifndef __GIMP_PRINT_H__ -#define __GIMP_PRINT_H__ - -/* - * Include necessary header files... - */ - -#include <stddef.h> /* For size_t */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Library versioning details - */ - -/* - * compile-time version - */ -#define GIMPPRINT_MAJOR_VERSION (@GIMPPRINT_MAJOR_VERSION@) -#define GIMPPRINT_MINOR_VERSION (@GIMPPRINT_MINOR_VERSION@) -#define GIMPPRINT_MICRO_VERSION (@GIMPPRINT_MICRO_VERSION@) -#define GIMPPRINT_CURRENT_INTERFACE (@GIMPPRINT_CURRENT_INTERFACE@) -#define GIMPPRINT_BINARY_AGE (@GIMPPRINT_BINARY_AGE@) -#define GIMPPRINT_INTERFACE_AGE (@GIMPPRINT_INTERFACE_AGE@) -#define GIMPPRINT_CHECK_VERSION(major,minor,micro) \ - (GIMPPRINT_MAJOR_VERSION > (major) || \ - (GIMPPRINT_MAJOR_VERSION == (major) && GIMPPRINT_MINOR_VERSION > (minor)) || \ - (GIMPPRINT_MAJOR_VERSION == (major) && GIMPPRINT_MINOR_VERSION == (minor) && \ - GIMPPRINT_MICRO_VERSION >= (micro))) - -extern const unsigned int gimpprint_major_version; -extern const unsigned int gimpprint_minor_version; -extern const unsigned int gimpprint_micro_version; -extern const unsigned int gimpprint_current_interface; -extern const unsigned int gimpprint_binary_age; -extern const unsigned int gimpprint_interface_age; -extern const char* stp_check_version (unsigned int required_major, - unsigned int required_minor, - unsigned int required_micro); - - -/* - * Constants... - */ - -#define OUTPUT_GRAY 0 /* Grayscale output */ -#define OUTPUT_COLOR 1 /* Color output */ -#define OUTPUT_MONOCHROME 2 /* Raw monochrome output */ -#define OUTPUT_RAW_CMYK 3 /* Raw CMYK output */ - -#define ORIENT_AUTO -1 /* Best orientation */ -#define ORIENT_PORTRAIT 0 /* Portrait orientation */ -#define ORIENT_LANDSCAPE 1 /* Landscape orientation */ -#define ORIENT_UPSIDEDOWN 2 /* Reverse portrait orientation */ -#define ORIENT_SEASCAPE 3 /* Reverse landscape orientation */ - -#define IMAGE_LINE_ART 0 -#define IMAGE_SOLID_TONE 1 -#define IMAGE_CONTINUOUS 2 -#define NIMAGE_TYPES 3 - -#define COLOR_MODEL_RGB 0 -#define COLOR_MODEL_CMY 1 -#define NCOLOR_MODELS 2 - -/* - * Printer driver control structure. See "print.c" for the actual list... - */ - -typedef enum stp_papersize_unit -{ - PAPERSIZE_ENGLISH, - PAPERSIZE_METRIC -} stp_papersize_unit_t; - -typedef enum -{ - STP_JOB_MODE_PAGE, - STP_JOB_MODE_JOB -} stp_job_mode_t; - -typedef enum stp_image_status -{ - STP_IMAGE_OK, - STP_IMAGE_ABORT -} stp_image_status_t; - -/* - * Abstract data type for interfacing with the image creation program - * (in this case, the Gimp). - * - * The image layer need not implement transpose(), hflip(), vflip(), - * crop(), rotate_ccw(), rotate_cw(), and rotate_180() if it does not - * require that functionality or implements it internally. This - * functionality will likely be dropped in future releases. - * - * The image layer must implement all of the other members. The - * progress_init(), note_progress(), and progress_conclude() members - * are used to enable the image layer to deliver notification of - * progress to the user. It is likely that these functions will be - * dropped in the future, and if desired must be implemented in - * get_row(). - * - * get_appname() should return the name of the application. This is - * embedded in the output by some drivers. - * - * width() and height() return the dimensions of the image in pixels. - * - * bpp(), or bytes per pixel, is used in combination with the output type - * and presence of a color map, if supplied, to determine the format - * of the input: - * - * Output_type is OUTPUT_MONOCHROME, OUTPUT_COLOR, or OUTPUT_GRAY: - * - * bpp No color map Color map present - * 1 grayscale indexed color (256 colors) - * 2 grayscale w/alpha indexed color w/alpha - * 3 RGB N/A - * 4 N/A RGB w/alpha (RGBA) - * - * Output_type is OUTPUT_CMYK: - * - * bpp No color map Color map present - * 4 8 bits/plane CMYK N/A - * 8 16 bits/plane CMYK N/A - * - * init() is used to perform any initialization required by the image - * layer for the image. It will be called once per image. reset() is - * called to reset the image to the beginning. It may (in principle) - * be called multiple times if a page is being printed more than once. - * The reset() call may be removed in the future. - * - * get_row() transfers the data from the image to the gimp-print - * library. It is called from the driver layer. It should copy WIDTH - * (as returned by the width() member) pixels of data into the data - * buffer. It normally returns STP_IMAGE_OK; if something goes wrong, - * or the application wishes to stop producing any further output - * (e. g. because the user cancelled the print job), it should return - * STP_IMAGE_ABORT. This will cause the driver to flush any remaining - * data to the output. It will always request rows in monotonically - * ascending order, but it may skip rows (if, for example, the - * resolution of the input is higher than the resolution of the - * output). - */ - -typedef struct stp_image -{ - void (*init)(struct stp_image *image); - void (*reset)(struct stp_image *image); - void (*transpose)(struct stp_image *image); - void (*hflip)(struct stp_image *image); - void (*vflip)(struct stp_image *image); - void (*crop)(struct stp_image *image, - int left, int top, int right, int bottom); - void (*rotate_ccw)(struct stp_image *image); - void (*rotate_cw)(struct stp_image *image); - void (*rotate_180)(struct stp_image *image); - int (*bpp)(struct stp_image *image); - int (*width)(struct stp_image *image); - int (*height)(struct stp_image *image); - stp_image_status_t (*get_row)(struct stp_image *image, unsigned char *data, - int row); - const char *(*get_appname)(struct stp_image *image); - void (*progress_init)(struct stp_image *image); - void (*note_progress)(struct stp_image *image, double current, double total); - void (*progress_conclude)(struct stp_image *image); - void *rep; -} stp_image_t; - -/* - * Definition of a printer. A printer definition contains some data - * about the printer and a set of member functions that operate on it. - * - * The data members are: - * - * long_name is a human-readable name. It is intended to be used by - * a user interface to print the name of the printer. - * - * driver is the short name of the printer. This is an alternate name - * that is used internally. A user interface may use this for input - * purposes, or a client program may use this to generate a filename. - * The driver name should consist of lowercase alphanumerics and hyphens - * only. - * - * model is a model number used only by the underlying driver. It is - * treated as an opaque, but static, identifier. It should not be a - * pointer value, but the exact interpretation of the model number - * is up to the driver implementation (it may be an index into an - * array, for example). - * - * printvars is the default settings for this printer. - * - * The member functions are: - * - * char **(*parameters)(const stp_printer_t printer, - * char *ppd_file, - * char *name, - * int *count) - * - * returns a list of option values of the specified parameter NAME - * for the specified PRINTER. If a PPD filename is specified, the driver - * may use that to help generate the valid parameter list. The number - * of options returned is placed in COUNT. Both the array and the - * options themselves are allocated on the heap; it is the caller's - * responsibility to free them upon completion of use. The driver - * must therefore return a copy of data. - * - * In all cases, the returned option names should be appropriate for a - * user interface to display. - * - * The list of parameters is subject to change. The currently supported - * parameters are: - * - * PageSize returns a list of legal page size names for the printer - * in question. - * - * Resolution returns a list of valid resolution settings. The - * resolutions are to be interpreted as opaque names; the caller - * must not attempt to interpret them except with the - * describe_resolution function described below. There may be - * multiple resolution names that resolve to the same printing - * resolution; they may correspond to different quality settings, - * for example. - * - * InkType returns a list of legal ink types. The printer driver may - * define these as it sees fit. If a printer offers a choice of - * ink cartridges, the choices would be enumerated here. - * - * MediaType returns a list of legal media types. The printer driver - * may define these as it sees fit. This is normally different kinds - * of paper that the printer can handle. - * - * InputSlot returns a list of legal input sources for the printer. - * This is typically things like different input trays, manual feed, - * roll feed, and the like. - * - * void (*media_size)(const stp_printer_t printer, - * const stp_vars_t v, - * int *width, - * int *height) - * - * returns the physical WIDTH and HEIGHT of the page using the settings - * in V. The driver will almost always look at the media_size variable - * in V; it may look at other data in V to determine the physical page - * size. WIDTH and HEIGHT are expressed in units of 1/72". - * - * void (*imageable_area)(const stp_printer_t printer, - * const stp_vars_t v, - * int *left, - * int *right, - * int *bottom, - * int *top) - * - * returns the width of the LEFT, RIGHT, BOTTOM, and TOP border of the - * page for the given printer and variable settings. The caller can - * use this, in combination with the media_size member, to determine - * the printable region of the page, and if needed, exactly where to - * place the image to achieve a given physical placement (e. g. - * centering) on the page. All returned values are in units of - * 1/72". - * - * void (*limit)(const stp_printer_t printer, - * const stp_vars_t v, - * int *width, - * int *height) - * - * returns the maximum page size the printer can handle, in units of - * 1/72". - * - * void (*print)(const stp_printer_t printer, - * stp_image_t *image, - * const stp_vars_t v) - * - * prints a page. The variable settings provided in V are used to control - * the printing; PRN is a file pointer that the raw printer output - * is to be written to, and IMAGE is an object that sources the input - * data to the driver (the contents of which are opaque to the low level - * driver and are interpreted by the high level program). - * - * const char *(*default_resolution)(const stp_printer_t printer) - * - * returns the name of the default resolution for the printer. The - * caller must not attempt to free the returned value. - * - * void (*describe_resolution)(const stp_printer_t printer, - * const char *resolution, - * int *x, - * int *y) - * - * returns the horizontal (X) and vertical (Y) resolution of the chosen - * RESOLUTION name. The high level program may choose to use this to - * rasterize at an appropriate resolution. - * - */ - -typedef void *stp_printer_t; -typedef void *stp_vars_t; -typedef void *stp_papersize_t; -typedef struct -{ - const char *name, /* Option name */ - *text; /* Human-readable (translated) text */ -} stp_param_t; - -typedef void (*stp_outfunc_t) (void *data, const char *buffer, size_t bytes); - -typedef struct -{ - stp_param_t *(*parameters)(const stp_printer_t printer, - const char *ppd_file, - const char *name, int *count); - void (*media_size)(const stp_printer_t printer, const stp_vars_t v, - int *width, int *height); - void (*imageable_area)(const stp_printer_t printer, - const stp_vars_t v, - int *left, int *right, int *bottom, int *top); - void (*limit)(const stp_printer_t printer, const stp_vars_t v, - int *max_width, int *max_height, - int *min_width, int *min_height); - void (*print)(const stp_printer_t printer, - stp_image_t *image, const stp_vars_t v); - const char *(*default_parameters)(const stp_printer_t printer, - const char *ppd_file, - const char *name); - void (*describe_resolution)(const stp_printer_t printer, - const char *resolution, int *x, int *y); - int (*verify)(const stp_printer_t p, const stp_vars_t v); - int (*start_job)(const stp_printer_t printer, - stp_image_t *image, const stp_vars_t v); - int (*end_job)(const stp_printer_t printer, - stp_image_t *image, const stp_vars_t v); -} stp_printfuncs_t; - -/* - * stp_init() must be called prior to any other use of the library. - */ -extern int stp_init (void); - -extern const char * stp_printer_get_long_name (const stp_printer_t p); -extern const char * stp_printer_get_driver (const stp_printer_t p); -extern int stp_printer_get_model (const stp_printer_t p); -extern const stp_printfuncs_t *stp_printer_get_printfuncs(const stp_printer_t); -extern const stp_vars_t stp_printer_get_printvars (const stp_printer_t p); -extern void stp_set_printer_defaults(stp_vars_t, const stp_printer_t, - const char *ppd_file); - -extern stp_vars_t stp_allocate_vars (void); -extern void stp_copy_vars (stp_vars_t vd, const stp_vars_t vs); -extern stp_vars_t stp_allocate_copy (const stp_vars_t vs); - -extern void stp_free_vars (stp_vars_t vv); - -extern void stp_set_output_to (stp_vars_t vv, const char *val); -extern void stp_set_driver (stp_vars_t vv, const char *val); -extern void stp_set_ppd_file (stp_vars_t vv, const char *val); -extern void stp_set_resolution (stp_vars_t vv, const char *val); -extern void stp_set_media_size (stp_vars_t vv, const char *val); -extern void stp_set_media_type (stp_vars_t vv, const char *val); -extern void stp_set_media_source (stp_vars_t vv, const char *val); -extern void stp_set_ink_type (stp_vars_t vv, const char *val); -extern void stp_set_dither_algorithm (stp_vars_t vv, const char *val); - -/* - * The _n variants are used for strings that are not null-delimited. - */ -extern void stp_set_output_to_n (stp_vars_t vv, const char *val, - int bytes); -extern void stp_set_driver_n (stp_vars_t vv, const char *val, - int bytes); -extern void stp_set_ppd_file_n (stp_vars_t vv, const char *val, - int bytes); -extern void stp_set_resolution_n (stp_vars_t vv, const char *val, - int bytes); -extern void stp_set_media_size_n (stp_vars_t vv, const char *val, - int bytes); -extern void stp_set_media_type_n (stp_vars_t vv, const char *val, - int bytes); -extern void stp_set_media_source_n (stp_vars_t vv, const char *val, - int bytes); -extern void stp_set_ink_type_n (stp_vars_t vv, const char *val, - int bytes); -extern void stp_set_dither_algorithm_n (stp_vars_t vv, const char *val, - int bytes); - -extern void stp_set_output_type (stp_vars_t vv, int val); -extern void stp_set_orientation (stp_vars_t vv, int val); -extern void stp_set_left (stp_vars_t vv, int val); -extern void stp_set_top (stp_vars_t vv, int val); -extern void stp_set_image_type (stp_vars_t vv, int val); -extern void stp_set_unit (stp_vars_t vv, int val); -extern void stp_set_page_width (stp_vars_t vv, int val); -extern void stp_set_page_height (stp_vars_t vv, int val); - -/* - * Input color model refers to how the data is being sent to the - * driver library; the default is RGB. Output color model refers to - * the characteristics of the device; the default is CMYK. The output - * color model is set by the printer driver and cannot be overridden. - * It is provided to permit applications to generate previews using - * the color machinery in Gimp-Print. If this is done, normally - * the output color model will be RGB. - */ -extern void stp_set_input_color_model (stp_vars_t vv, int val); -extern void stp_set_output_color_model (stp_vars_t vv, int val); - -extern void stp_set_brightness (stp_vars_t vv, float val); -extern void stp_set_scaling (stp_vars_t vv, float val); -extern void stp_set_gamma (stp_vars_t vv, float val); -extern void stp_set_contrast (stp_vars_t vv, float val); -extern void stp_set_cyan (stp_vars_t vv, float val); -extern void stp_set_magenta (stp_vars_t vv, float val); -extern void stp_set_yellow (stp_vars_t vv, float val); -extern void stp_set_saturation (stp_vars_t vv, float val); -extern void stp_set_density (stp_vars_t vv, float val); - -/* - * Application gamma is used to initially correct the input data - * for the application's characteristics. This cannot be done by the - * application (except in 16-bit CMYK mode) without losing data. - */ -extern void stp_set_app_gamma (stp_vars_t vv, float val); - -/* - * Please see the source in print-color.c for an explanation of this. - */ -extern void stp_set_lut (stp_vars_t vv, void * val); - -/* - * For use with indexed color: the LUT should be an array of 256 - * RGB values. - */ -extern void stp_set_cmap (stp_vars_t vv, unsigned char * val); - -/* - * These functions are used to print output and diagnostic information - * respectively. These must be supplied by the caller. - */ -extern void stp_set_outfunc (const stp_vars_t vv, stp_outfunc_t val); -extern void stp_set_errfunc (const stp_vars_t vv, stp_outfunc_t val); -extern void stp_set_outdata (stp_vars_t vv, void * val); -extern void stp_set_errdata (stp_vars_t vv, void * val); - -extern const char * stp_get_output_to (const stp_vars_t vv); -extern const char * stp_get_driver (const stp_vars_t vv); -extern const char * stp_get_ppd_file (const stp_vars_t vv); -extern const char * stp_get_resolution (const stp_vars_t vv); -extern const char * stp_get_media_size (const stp_vars_t vv); -extern const char * stp_get_media_type (const stp_vars_t vv); -extern const char * stp_get_media_source (const stp_vars_t vv); -extern const char * stp_get_ink_type (const stp_vars_t vv); -extern const char * stp_get_dither_algorithm (const stp_vars_t vv); -extern int stp_get_output_type (const stp_vars_t vv); -extern int stp_get_orientation (const stp_vars_t vv); -extern int stp_get_left (const stp_vars_t vv); -extern int stp_get_top (const stp_vars_t vv); -extern int stp_get_image_type (const stp_vars_t vv); -extern int stp_get_unit (const stp_vars_t vv); -extern int stp_get_page_width (const stp_vars_t vv); -extern int stp_get_page_height (const stp_vars_t vv); -extern int stp_get_input_color_model (const stp_vars_t vv); -extern int stp_get_output_color_model (const stp_vars_t vv); -extern float stp_get_brightness (const stp_vars_t vv); -extern float stp_get_scaling (const stp_vars_t vv); -extern float stp_get_gamma (const stp_vars_t vv); -extern float stp_get_contrast (const stp_vars_t vv); -extern float stp_get_cyan (const stp_vars_t vv); -extern float stp_get_magenta (const stp_vars_t vv); -extern float stp_get_yellow (const stp_vars_t vv); -extern float stp_get_saturation (const stp_vars_t vv); -extern float stp_get_density (const stp_vars_t vv); -extern float stp_get_app_gamma (const stp_vars_t vv); -extern void * stp_get_lut (const stp_vars_t vv); -extern stp_outfunc_t stp_get_outfunc (const stp_vars_t vv); -extern stp_outfunc_t stp_get_errfunc (const stp_vars_t vv); -extern void * stp_get_outdata (const stp_vars_t vv); -extern void * stp_get_errdata (const stp_vars_t vv); -extern unsigned char * stp_get_cmap (const stp_vars_t vv); - - -/* - * hue_map is an array of 49 doubles representing the mapping of hue - * from (0..6) to (0..6) in increments of .125. The hue_map is in CMY space, - * so hue=0 is cyan. Interpolation between values is linear. - * - * lum_map and sat_map are correction factors for luminosity and saturation - * respectively. Both of these are inverse exponential. The degree of - * luminosity correction is scaled by the saturation of the particular - * pixel. This is likely to change drastically in the future. - */ -typedef void (*stp_convert_t) (const stp_vars_t vars, const unsigned char *in, - unsigned short *out, int *zero_mask, - int width, int bpp, const unsigned char *cmap, - const double *hue_map, const double *lum_map, - const double *sat_map); - -extern void stp_merge_printvars (stp_vars_t user, const stp_vars_t print); - -extern size_t stp_dither_algorithm_count (void); -extern const char * stp_dither_algorithm_name (int id); -extern const char * stp_dither_algorithm_text (int id); -extern const char * stp_default_dither_algorithm (void); - -extern int stp_known_papersizes (void); -extern const stp_papersize_t stp_get_papersize_by_name (const char *name); -extern const stp_papersize_t stp_get_papersize_by_size (int l, int w); -extern const stp_papersize_t stp_get_papersize_by_index (int index); -extern const char * stp_papersize_get_name (const stp_papersize_t pt); -extern const char * stp_papersize_get_text (const stp_papersize_t pt); -extern unsigned stp_papersize_get_width (const stp_papersize_t pt); -extern unsigned stp_papersize_get_height (const stp_papersize_t pt); -extern unsigned stp_papersize_get_top (const stp_papersize_t pt); -extern unsigned stp_papersize_get_left (const stp_papersize_t pt); -extern unsigned stp_papersize_get_bottom (const stp_papersize_t pt); -extern unsigned stp_papersize_get_right (const stp_papersize_t pt); -extern stp_papersize_unit_t stp_papersize_get_unit (const stp_papersize_t pt); - -extern void stp_set_job_mode(stp_vars_t, stp_job_mode_t); -extern stp_job_mode_t stp_get_job_mode(const stp_vars_t); -extern void stp_set_page_number(stp_vars_t, int); -extern int stp_get_page_number(const stp_vars_t); - -extern int stp_known_printers (void); -extern const stp_printer_t stp_get_printer_by_index (int idx); -extern const stp_printer_t stp_get_printer_by_long_name (const char *long_name); -extern const stp_printer_t stp_get_printer_by_driver (const char *driver); -extern int stp_get_printer_index_by_driver (const char *driver); - -/* - * This is likely to change in the future. - */ -extern stp_convert_t stp_choose_colorfunc (int output_type, int image_bpp, - const unsigned char *cmap, - int *out_bpp, - const stp_vars_t v); -extern void stp_allocate_lut (stp_vars_t v, size_t steps); -extern void stp_free_lut (stp_vars_t v); -extern void stp_compute_lut (stp_vars_t v, size_t steps); - -/* - * This is likely to change in the future. In particular, responsibility - * for orientation will likely be transferred to the application from - * the library. - */ -extern void stp_compute_page_parameters (int page_right, int page_left, - int page_top, int page_bottom, - double scaling, int image_width, - int image_height, stp_image_t *image, - int *orientation, - int *page_width, int *page_height, - int *out_width, int *out_height, - int *left, int *top); - -extern const stp_vars_t stp_default_settings (void); -extern const stp_vars_t stp_maximum_settings (void); -extern const stp_vars_t stp_minimum_settings (void); - -#ifdef __cplusplus - } -#endif - -#endif /* __GIMP_PRINT_H__ */ -/* - * End of $Id: gimp-print.h.in,v 1.8.2.1 2002/12/08 21:12:33 rlk Exp $ - */ |