1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
/*
* libgimpprint paper 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, see <https://www.gnu.org/licenses/>.
*/
/**
* @file gutenprint/paper.h
* @brief Paper size functions.
*/
#ifndef GUTENPRINT_PAPER_H
#define GUTENPRINT_PAPER_H
#include <gutenprint/types.h>
#include <gutenprint/vars.h>
#ifdef __cplusplus
extern "C" {
#endif
/**
* The papersize describes the dimensions of a paper.
*
* @defgroup papersize papersize
* @{
*/
/**
* Units of measurement.
*/
typedef enum
{
/** English/Imperial units. */
PAPERSIZE_ENGLISH_STANDARD,
/** Metric units. */
PAPERSIZE_METRIC_STANDARD,
/** English/Imperial units (optional paper, not displayed by default). */
PAPERSIZE_ENGLISH_EXTENDED,
/** Metric units (optional paper, not displayed by default). */
PAPERSIZE_METRIC_EXTENDED
} stp_papersize_unit_t;
typedef enum
{
/** Standard paper size */
PAPERSIZE_TYPE_STANDARD = 0,
/** Envelope */
PAPERSIZE_TYPE_ENVELOPE
} stp_papersize_type_t;
/** The papersize data type. */
typedef struct
{
/** Short unique name (not translated). */
const char *name;
/** Long descriptive name (translated). */
const char *text;
/** Comment. */
const char *comment;
/** Paper width. */
stp_dimension_t width;
/** Paper height. */
stp_dimension_t height;
/** Top margin. */
stp_dimension_t top;
/** Left margin. */
stp_dimension_t left;
/** Bottom margin. */
stp_dimension_t bottom;
/** Right margin. */
stp_dimension_t right;
/** Units of measurement. */
stp_papersize_unit_t paper_unit;
/** Paper size type. */
stp_papersize_type_t paper_size_type;
} stp_papersize_t;
/**
* Get a papersize by name.
* @param v the Gutenprint vars object
* @param name the short unique name of the paper.
* @returns a static pointer to the papersize, or NULL on failure.
*/
extern const stp_papersize_t *stp_describe_papersize(const stp_vars_t *v,
const char *name);
/**
* Get the default paper dimensions for the current configuration.
* The default is derived from the PageSize parameter if set, otherwise
* the default page size for the printer is used. If no value can be
* determined, 1x1 will be returned.
* @param v the Gutenprint vars object
* @param width pointer to storage that the width will be returned in.
* @param height pointer to storage that the height will be returned in.
*/
extern void stp_default_media_size(const stp_vars_t *v,
stp_dimension_t *width, stp_dimension_t *height);
/** @} */
#ifdef __cplusplus
}
#endif
#endif /* GUTENPRINT_PAPER_H */
|