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