]>
Commit | Line | Data |
---|---|---|
ef416fc2 | 1 | /* |
bc44d920 | 2 | * "$Id: hpgltops.h 6649 2007-07-11 21:46:42Z mike $" |
ef416fc2 | 3 | * |
4 | * HP-GL/2 to PostScript filter for the Common UNIX Printing System (CUPS). | |
5 | * | |
bc44d920 | 6 | * Copyright 2007 by Apple Inc. |
ef416fc2 | 7 | * Copyright 1993-2005 by Easy Software Products. |
8 | * | |
9 | * These coded instructions, statements, and computer programs are the | |
bc44d920 | 10 | * property of Apple Inc. and are protected by Federal copyright |
11 | * law. Distribution and use rights are outlined in the file "LICENSE.txt" | |
12 | * which should have been included with this file. If this file is | |
13 | * file is missing or damaged, see the license at "http://www.cups.org/". | |
ef416fc2 | 14 | * |
15 | * This file is subject to the Apple OS-Developed Software exception. | |
16 | */ | |
17 | ||
18 | /* | |
19 | * Include necessary headers... | |
20 | */ | |
21 | ||
22 | #include "common.h" | |
23 | #include <math.h> | |
24 | ||
25 | #ifndef M_PI | |
26 | # define M_PI 3.14159265358979323846 | |
27 | #endif /* M_PI */ | |
28 | ||
61cf44e2 MS |
29 | |
30 | /* | |
31 | * Maximum number of pens we emulate... | |
32 | */ | |
33 | ||
34 | #define MAX_PENS 1024 | |
35 | ||
36 | ||
ef416fc2 | 37 | /* |
38 | * Parameter value structure... | |
39 | */ | |
40 | ||
41 | typedef struct | |
42 | { | |
43 | int type; | |
44 | union | |
45 | { | |
46 | float number; | |
47 | char *string; | |
48 | } value; | |
49 | } param_t; | |
50 | ||
51 | #define PARAM_ABSOLUTE 0 | |
52 | #define PARAM_RELATIVE 1 | |
53 | #define PARAM_STRING 2 | |
54 | ||
55 | ||
56 | /* | |
57 | * Font information... | |
58 | */ | |
59 | ||
60 | typedef struct | |
61 | { | |
62 | int symbol_set, /* Symbol set */ | |
63 | spacing, /* Spacing (0 = fixed, 1 = proportional) */ | |
64 | posture, /* Posture number */ | |
65 | weight, /* Weight number */ | |
66 | typeface; /* Typeface number */ | |
67 | float pitch, /* Characters per inch */ | |
68 | height, /* Height/size of font */ | |
69 | xpitch; /* X pitch scaling value */ | |
70 | float x, y; /* X and Y direction/scaling */ | |
71 | } font_t; | |
72 | ||
73 | ||
74 | /* | |
75 | * Pen information... | |
76 | */ | |
77 | ||
78 | typedef struct | |
79 | { | |
80 | float rgb[3]; /* Pen color */ | |
81 | float width; /* Pen width */ | |
82 | } pen_t; | |
83 | ||
84 | ||
85 | /* | |
86 | * Globals... | |
87 | */ | |
88 | ||
89 | #ifdef _HPGL_MAIN_C_ | |
90 | # define VAR | |
91 | # define VALUE(x) =x | |
92 | # define VALUE2(x,y) ={x,y} | |
93 | #else | |
94 | # define VAR extern | |
95 | # define VALUE(x) | |
96 | # define VALUE2(x,y) | |
97 | #endif /* _HPGL_MAIN_C_ */ | |
98 | ||
99 | VAR ppd_file_t *PPD VALUE(NULL); /* PPD file */ | |
100 | ||
101 | VAR float P1[2], /* Lower-lefthand physical limit */ | |
102 | P2[2], /* Upper-righthand physical limit */ | |
103 | IW1[2], /* Window lower-lefthand limit */ | |
104 | IW2[2]; /* Window upper-righthand limit */ | |
105 | VAR int Rotation VALUE(0); /* Page rotation */ | |
106 | VAR int ScalingType VALUE(-1); /* Type of scaling (-1 for none) */ | |
107 | VAR float Scaling1[2], /* Lower-lefthand user limit */ | |
108 | Scaling2[2]; /* Upper-righthand user limit */ | |
109 | VAR float Transform[2][3]; /* Transform matrix */ | |
110 | VAR int PageRotation VALUE(0); /* Page/plot rotation */ | |
111 | ||
112 | VAR char StringTerminator VALUE('\003'); /* Terminator for labels */ | |
113 | VAR font_t StandardFont, /* Standard font */ | |
114 | AlternateFont; /* Alternate font */ | |
115 | VAR float PenPosition[2] VALUE2(0.0f, 0.0f), | |
116 | /* Current pen position */ | |
117 | PenScaling VALUE(1.0f), /* Pen width scaling factor */ | |
118 | PenWidth VALUE(1.0f); /* Default pen width */ | |
61cf44e2 | 119 | VAR pen_t Pens[MAX_PENS]; /* State of each pen */ |
ef416fc2 | 120 | VAR int PenMotion VALUE(0), /* 0 = absolute, 1 = relative */ |
121 | PenValid VALUE(0), /* 1 = valid position, 0 = undefined */ | |
61cf44e2 | 122 | PenNumber VALUE(0), /* Current pen number */ |
ef416fc2 | 123 | PenCount VALUE(8), /* Number of pens */ |
124 | PenDown VALUE(0), /* 0 = pen up, 1 = pen down */ | |
125 | PolygonMode VALUE(0), /* Drawing polygons? */ | |
126 | PageCount VALUE(0), /* Number of pages in plot */ | |
127 | PageDirty VALUE(0), /* Current page written on? */ | |
128 | WidthUnits VALUE(0); /* 0 = mm, 1 = proportionate */ | |
129 | VAR float PlotSize[2] VALUE2(2592.0f, 3456.0f); | |
130 | /* Plot size */ | |
131 | VAR int PlotSizeSet VALUE(0); /* Plot size set? */ | |
132 | VAR int CharFillMode VALUE(0), /* Where to draw labels */ | |
133 | CharPen VALUE(0), /* Pen to use for labels */ | |
134 | CharFont VALUE(0); /* Font to use for labels */ | |
135 | VAR float CharHeight[2] VALUE2(11.5f,11.5f); | |
136 | /* Size of font for labels */ | |
137 | VAR int FitPlot VALUE(0); /* 1 = fit to page */ | |
138 | VAR float ColorRange[3][2] /* Range of color values */ | |
139 | #ifdef _HPGL_MAIN_C_ | |
140 | = { | |
141 | { 0.0, 255.0 }, | |
142 | { 0.0, 255.0 }, | |
143 | { 0.0, 255.0 } | |
144 | } | |
145 | #endif /* _HPGL_MAIN_C_ */ | |
146 | ; | |
147 | ||
148 | VAR int LineCap VALUE(0); /* Line capping */ | |
149 | VAR int LineJoin VALUE(0); /* Line joining */ | |
150 | VAR float MiterLimit VALUE(3.0f); /* Miter limit at joints */ | |
151 | ||
152 | ||
153 | /* | |
154 | * Prototypes... | |
155 | */ | |
156 | ||
157 | /* hpgl-input.c */ | |
158 | extern int ParseCommand(FILE *fp, char *name, param_t **params); | |
159 | extern void FreeParameters(int num_params, param_t *params); | |
160 | ||
161 | /* hpgl-config.c */ | |
162 | extern void update_transform(void); | |
163 | extern void BP_begin_plot(int num_params, param_t *params); | |
164 | extern void DF_default_values(int num_params, param_t *params); | |
165 | extern void IN_initialize(int num_params, param_t *params); | |
166 | extern void IP_input_absolute(int num_params, param_t *params); | |
167 | extern void IR_input_relative(int num_params, param_t *params); | |
168 | extern void IW_input_window(int num_params, param_t *params); | |
169 | extern void PG_advance_page(int num_params, param_t *params); | |
170 | extern void PS_plot_size(int num_params, param_t *params); | |
171 | extern void RO_rotate(int num_params, param_t *params); | |
172 | extern void RP_replot(int num_params, param_t *params); | |
173 | extern void SC_scale(int num_params, param_t *params); | |
174 | ||
175 | /* hpgl-vector.c */ | |
176 | extern void AA_arc_absolute(int num_params, param_t *params); | |
177 | extern void AR_arc_relative(int num_params, param_t *params); | |
178 | extern void AT_arc_absolute3(int num_params, param_t *params); | |
179 | extern void CI_circle(int num_params, param_t *params); | |
180 | extern void PA_plot_absolute(int num_params, param_t *params); | |
181 | extern void PD_pen_down(int num_params, param_t *params); | |
182 | extern void PE_polyline_encoded(int num_params, param_t *params); | |
183 | extern void PR_plot_relative(int num_params, param_t *params); | |
184 | extern void PU_pen_up(int num_params, param_t *params); | |
185 | extern void RT_arc_relative3(int num_params, param_t *params); | |
186 | ||
187 | /* hpgl-polygon.c */ | |
188 | extern void EA_edge_rect_absolute(int num_params, param_t *params); | |
189 | extern void EP_edge_polygon(int num_params, param_t *params); | |
190 | extern void ER_edge_rect_relative(int num_params, param_t *params); | |
191 | extern void EW_edge_wedge(int num_params, param_t *params); | |
192 | extern void FP_fill_polygon(int num_params, param_t *params); | |
193 | extern void PM_polygon_mode(int num_params, param_t *params); | |
194 | extern void RA_fill_rect_absolute(int num_params, param_t *params); | |
195 | extern void RR_fill_rect_relative(int num_params, param_t *params); | |
196 | extern void WG_fill_wedge(int num_params, param_t *params); | |
197 | ||
198 | /* hpgl-char.c */ | |
199 | extern void define_font(int f); | |
200 | extern void AD_define_alternate(int num_params, param_t *params); | |
201 | extern void CF_character_fill(int num_params, param_t *params); | |
202 | extern void CP_character_plot(int num_params, param_t *params); | |
203 | extern void DI_absolute_direction(int num_params, param_t *params); | |
204 | extern void DR_relative_direction(int num_params, param_t *params); | |
205 | extern void DT_define_label_term(int num_params, param_t *params); | |
206 | extern void DV_define_variable_path(int num_params, param_t *params); | |
207 | extern void ES_extra_space(int num_params, param_t *params); | |
208 | extern void LB_label(int num_params, param_t *params); | |
209 | extern void LO_label_origin(int num_params, param_t *params); | |
210 | extern void SA_select_alternate(int num_params, param_t *params); | |
211 | extern void SD_define_standard(int num_params, param_t *params); | |
212 | extern void SI_absolute_size(int num_params, param_t *params); | |
213 | extern void SL_character_slant(int num_params, param_t *params); | |
214 | extern void SR_relative_size(int num_params, param_t *params); | |
215 | extern void SS_select_standard(int num_params, param_t *params); | |
216 | extern void TD_transparent_data(int num_params, param_t *params); | |
217 | ||
218 | /* hpgl-attr.c */ | |
219 | extern void AC_anchor_corner(int num_params, param_t *params); | |
220 | extern void CR_color_range(int num_params, param_t *params); | |
221 | extern void FT_fill_type(int num_params, param_t *params); | |
222 | extern void LA_line_attributes(int num_params, param_t *params); | |
223 | extern void LT_line_type(int num_params, param_t *params); | |
224 | extern void NP_number_pens(int num_params, param_t *params); | |
225 | extern void PC_pen_color(int num_params, param_t *params); | |
226 | extern void PW_pen_width(int num_params, param_t *params); | |
227 | extern void RF_raster_fill(int num_params, param_t *params); | |
228 | extern void SM_symbol_mode(int num_params, param_t *params); | |
229 | extern void SP_select_pen(int num_params, param_t *params); | |
230 | extern void UL_user_line_type(int num_params, param_t *params); | |
231 | extern void WU_width_units(int num_params, param_t *params); | |
232 | ||
233 | /* hpgl-prolog.c */ | |
234 | extern void OutputProlog(char *title, char *user, int shading); | |
235 | extern void OutputTrailer(void); | |
236 | extern int Outputf(const char *format, ...); | |
237 | ||
238 | /* | |
bc44d920 | 239 | * End of "$Id: hpgltops.h 6649 2007-07-11 21:46:42Z mike $". |
ef416fc2 | 240 | */ |