| 1 | /* | 
| 2 |  * PWG media API definitions for CUPS. | 
| 3 |  * | 
| 4 |  * Copyright 2009-2017 by Apple Inc. | 
| 5 |  * | 
| 6 |  * Licensed under Apache License v2.0.  See the file "LICENSE" for more information. | 
| 7 |  */ | 
| 8 |  | 
| 9 | #ifndef _CUPS_PWG_H_ | 
| 10 | #  define _CUPS_PWG_H_ | 
| 11 |  | 
| 12 |  | 
| 13 | /* | 
| 14 |  * C++ magic... | 
| 15 |  */ | 
| 16 |  | 
| 17 | #  ifdef __cplusplus | 
| 18 | extern "C"  { | 
| 19 | #  endif /* __cplusplus */ | 
| 20 |  | 
| 21 |  | 
| 22 | /* | 
| 23 |  * Macros... | 
| 24 |  */ | 
| 25 |  | 
| 26 | /* Convert from points to hundredths of millimeters */ | 
| 27 | #  define PWG_FROM_POINTS(n)	(int)(((n) * 2540 + 36) / 72) | 
| 28 | /* Convert from hundredths of millimeters to points */ | 
| 29 | #  define PWG_TO_POINTS(n)	((n) * 72.0 / 2540.0) | 
| 30 |  | 
| 31 |  | 
| 32 | /* | 
| 33 |  * Types and structures... | 
| 34 |  */ | 
| 35 |  | 
| 36 | typedef struct pwg_map_s		/**** Map element - PPD to/from PWG @exclude all@ */ | 
| 37 | { | 
| 38 |   char		*pwg,			/* PWG media keyword */ | 
| 39 | 		*ppd;			/* PPD option keyword */ | 
| 40 | } pwg_map_t; | 
| 41 |  | 
| 42 | typedef struct pwg_media_s		/**** Common media size data ****/ | 
| 43 | { | 
| 44 |   const char	*pwg,			/* PWG 5101.1 "self describing" name */ | 
| 45 | 		*legacy,		/* IPP/ISO legacy name */ | 
| 46 | 		*ppd;			/* Standard Adobe PPD name */ | 
| 47 |   int		width,			/* Width in 2540ths */ | 
| 48 | 		length;			/* Length in 2540ths */ | 
| 49 | } pwg_media_t; | 
| 50 |  | 
| 51 | typedef struct pwg_size_s		/**** Size element - PPD to/from PWG @exclude all@ */ | 
| 52 | { | 
| 53 |   pwg_map_t	map;			/* Map element */ | 
| 54 |   int		width,			/* Width in 2540ths */ | 
| 55 | 		length,			/* Length in 2540ths */ | 
| 56 | 		left,			/* Left margin in 2540ths */ | 
| 57 | 		bottom,			/* Bottom margin in 2540ths */ | 
| 58 | 		right,			/* Right margin in 2540ths */ | 
| 59 | 		top;			/* Top margin in 2540ths */ | 
| 60 | } pwg_size_t; | 
| 61 |  | 
| 62 |  | 
| 63 | /* | 
| 64 |  * Functions... | 
| 65 |  */ | 
| 66 |  | 
| 67 | extern int		pwgFormatSizeName(char *keyword, size_t keysize, | 
| 68 | 					  const char *prefix, const char *name, | 
| 69 | 					  int width, int length, | 
| 70 | 					  const char *units) _CUPS_API_1_7; | 
| 71 | extern int		pwgInitSize(pwg_size_t *size, ipp_t *job, | 
| 72 | 				    int *margins_set) _CUPS_API_1_7; | 
| 73 | extern pwg_media_t	*pwgMediaForLegacy(const char *legacy) _CUPS_API_1_7; | 
| 74 | extern pwg_media_t	*pwgMediaForPPD(const char *ppd) _CUPS_API_1_7; | 
| 75 | extern pwg_media_t	*pwgMediaForPWG(const char *pwg) _CUPS_API_1_7; | 
| 76 | extern pwg_media_t	*pwgMediaForSize(int width, int length) _CUPS_API_1_7; | 
| 77 |  | 
| 78 | #  ifdef __cplusplus | 
| 79 | } | 
| 80 | #  endif /* __cplusplus */ | 
| 81 |  | 
| 82 | #endif /* !_CUPS_PWG_H_ */ | 
| 83 |  |