/usr/include/ppd.h is in libppd-dev 2:0.10-7.2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 | /*
* This library 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 library 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 library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*
*
* See the AUTHORS file for a list of people who have hacked on
* this code.
* See the ChangeLog file for a list of changes.
*
* Contents:
*
* ppd_file_free() - Free all memory used by the PPD file.
* ppd_file_new() - Initialize the PpdFile struct.
* ppd_file_new_from_filep() - Initialize the PpdFile struct,
* use a FILE* reference to the ppd
* ppd_file_new_from_fd() - Initialize the PpdFile struct, use
* a file descriptor to the ppd
* ppd_free_group() - Free a single UI group.
* ppd_free_option() - Free a single option.
* ppd_free_choice() - Free a single choice <mfasheh@valinux.com>
*
*/
#ifndef __PPD_H_
#define __PPD_H_
#include <stdio.h>
#include <unistd.h>
#include <glib.h>
#ifndef DEBUG
//#define DEBUG
#endif
#include "ppdenums.h"
#include "ppdmacros.h"
// C++ magic...
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
// PPD version.../* Kept in sync with Adobe version number */
#define PPD_VERSION 4.3
/* This is a virtual class. It should never be instantiated. */ typedef struct {
guint8 id;
} PpdObject;
// Types and structures... version numbererivatives) is governed
typedef struct { // *** Options ***
guint8 id; // Object id
gboolean conflicted; // 0 if no conflicts exist, 1 otherwise
gboolean emitted; // 1 already emitted 0 otherwise
GString *keyword; // Option keyword name ("PageSize", etc.)
GString *defchoice; // Default option choice
GString *text; // Human-readable text
PpdUIType ui; // Type of UI option
PpdSectionOrder section; // Section for command
float order; // Order number
GSList *choices; // should be a GSList of PpdChoice objects
} PpdOption; /* was ppd_option_t */
typedef struct { // *** Option choices ***
guint8 id; // Object id
gboolean marked; // 0 if not selected, 1 otherwise
GString *choice; // Computer-readable option name: 41 chars
GString *text; // Human-readable option name: 81 chars
char *code; // Code to send for this option
PpdOption *option; // Pointer to parent option structure
} PpdChoice; /* was ppd_choice_t */
/* hrm.. this whole struct should be a GSList... */
typedef struct { // *** Groups ***
guint8 id; // Object id
GString *text; // Human-readable group name
GSList *options; /* should be a GSList of PpdOption objects */
GSList *subgroups; // GSList of PpdGroups (subgroups)
} PpdGroup; /* was ppd_group_t */
typedef struct { // *** Constraints ***
guint8 id; // Object id
GString *option1; // First keyword
GString *choice1; // First option/choice (blank for all)
GString *option2; // Second keyword
GString *choice2; // Second option/choice (blank for all)
} PpdConstraint; /* was ppd_const_t */
typedef struct { // *** Page Sizes ***
guint8 id; // Object id
gboolean marked; // Page size selected?
GString *name; // Media size option
float width; // Width of media in points
float length; // Length of media in points
float left; // Left printable margin in points
float bottom; // Bottom printable margin in points
float right; // Right printable margin in points
float top; // Top printable margin in points
} PpdSize; /* ppd_size_t; */
typedef struct { // *** Emulators ***
guint8 id; // Object id
GString *name; // Emulator name
char *start; // Code to switch to this emulation
char *stop; // Code to stop this emulation
} PpdEmulator; /* was ppd_emul_t */
typedef struct { // *** sRGB Color Profiles ***
guint8 id; // Object id
GString *resolution; // Resolution or "-"
GString *media_type; // Media type of "-"
float density; // Ink density to use
float gamma; // Gamma correction to use
float matrix[3][3]; // Transform matrix
} PpdProfile; /* was ppd_profile_t */
typedef struct { // *** Files ***
guint8 id; // Object id
int language_level; // Language level of device
gboolean color_device; // 1 = color device, 0 = grayscale
gboolean variable_sizes; // 1 = supports variable sizes,0 = doesn't
gboolean accurate_screens; // 1 = supports accurate screens, 0 = not
gboolean contone_only; // 1 = continuous tone only, 0 = not
int landscape; // -90 or 90
int model_number; // Device-specific model number
gboolean manual_copies; // 1 = Copies done manually, 0 = hardware
PpdCSType colorspace; // Default colorspace
GSList *patches; // GSList of char*'s Patch commands to be sent
// to printer
GSList *emulations; // GSList of PpdEmulator's; Emulations and the
// code to invoke them
GString *jcl_begin; // Start JCL commands
GString *jcl_ps; // Enter PostScript interpreter
GString *jcl_end; // End JCL commands
GString *lang_encoding; // Language encoding
GString *lang_version; // Language version (English, Spanish, etc.)
GString *modelname; // Model name (general)
GString *ttrasterizer; // Truetype rasterizer
GString *manufacturer; // Manufacturer name
GString *product; // Product name (from PS RIP/interpreter)
GString *nickname; // Nickname (specific)
GString *shortnickname; // Short version of nickname
GSList *groups; // GSList of PpdGroup objects
GSList *sizes; // GSList of PpdSize objects
float custom_min[2]; // Minimum variable page size
float custom_max[2]; // Maximum variable page size
float custom_margins[4]; // Margins around page
GSList *consts; // GSList of PpdConstraints
GSList *fonts; // GSList of char* 's
GSList *profiles; // GSList of PpdProfiles
GSList *filters; // GSList of char*'s
} PpdFile; /* used to be: ppd_file_t */
/* new file prototypes (should we call these constructors?) */
PpdFile *ppd_file_new(const char *filename);
PpdFile *ppd_file_new_from_filep(FILE * fp);
PpdFile *ppd_file_new_from_fd(int fd);
/* new destructor prototype */
void ppd_file_free(PpdFile * ppd);
gboolean ppd_emit_to_file(PpdFile * ppd, FILE * fp, PpdSectionOrder section);
gboolean ppd_emit_to_fd(PpdFile * ppd, int fd, PpdSectionOrder section);
int ppd_get_num_conflicts(PpdFile * ppd);
gboolean ppd_check_option_is_marked(PpdFile * ppd, const char *keyword,
const char *option);
void ppd_mark_defaults(PpdFile * ppd);
gint ppd_mark_option(PpdFile * ppd, const char *keyword, const char *option);
PpdChoice *ppd_find_choice(PpdOption * o, const char *option);
PpdChoice *ppd_find_marked_choice(PpdFile * ppd, const char *keyword);
PpdOption *ppd_find_option_by_keyword(PpdFile * ppd, const char *keyword);
float ppd_get_page_length(PpdFile * ppd, const char *name);
PpdSize *ppd_get_page_size(PpdFile * ppd, const char *name);
float ppd_get_page_width(PpdFile * ppd, const char *name);
void ppd_debug_dump_ppd(PpdFile * ppd);
/* Constructors for the various classes */
PpdChoice *ppd_choice_new(PpdOption * option, const char *choice,
const char *text);
PpdOption *ppd_option_new(PpdGroup * group, const char *name);
PpdGroup *ppd_group_new(void);
PpdConstraint *ppd_constraint_new(void);
PpdSize *ppd_size_new(const char *name);
PpdEmulator *ppd_emulator_new(void);
PpdProfile *ppd_profile_new(void);
// C++ magic...
#ifdef __cplusplus
}
#endif // __cplusplus
#endif // !__PPD_H__
// End of ppd.h
|