]>
Commit | Line | Data |
---|---|---|
898749d4 | 1 | /* |
997fbfa7 | 2 | * "$Id: hpgltops.h,v 1.20 2002/12/17 18:59:26 swdev Exp $" |
898749d4 | 3 | * |
58ec2a95 | 4 | * HP-GL/2 to PostScript filter for the Common UNIX Printing System (CUPS). |
898749d4 | 5 | * |
997fbfa7 | 6 | * Copyright 1993-2003 by Easy Software Products. |
898749d4 | 7 | * |
58ec2a95 | 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: | |
898749d4 | 14 | * |
58ec2a95 | 15 | * Attn: CUPS Licensing Information |
16 | * Easy Software Products | |
17 | * 44141 Airport View Drive, Suite 204 | |
18 | * Hollywood, Maryland 20636-3111 USA | |
898749d4 | 19 | * |
58ec2a95 | 20 | * Voice: (301) 373-9603 |
21 | * EMail: cups-info@cups.org | |
22 | * WWW: http://www.cups.org | |
34410ef2 | 23 | * |
24 | * This file is subject to the Apple OS-Developed Software exception. | |
898749d4 | 25 | */ |
26 | ||
27 | /* | |
28 | * Include necessary headers... | |
29 | */ | |
30 | ||
2d35d8ee | 31 | #include "common.h" |
898749d4 | 32 | #include <math.h> |
898749d4 | 33 | |
98dd54b9 | 34 | #ifndef M_PI |
35 | # define M_PI 3.14159265358979323846 | |
36 | #endif /* M_PI */ | |
898749d4 | 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 | ||
37cb600a | 57 | /* |
58 | * Font information... | |
59 | */ | |
60 | ||
61 | typedef struct | |
62 | { | |
63 | int typeface, /* Typeface number */ | |
64 | posture, /* Posture number */ | |
65 | weight; /* Weight number */ | |
66 | float height; /* Height/size of font */ | |
67 | float x, y; /* X and Y direction/scaling */ | |
68 | } font_t; | |
69 | ||
70 | ||
f0d2f1a4 | 71 | /* |
72 | * Pen information... | |
73 | */ | |
74 | ||
75 | typedef struct | |
76 | { | |
77 | float rgb[3]; /* Pen color */ | |
78 | float width; /* Pen width */ | |
79 | } pen_t; | |
80 | ||
81 | ||
898749d4 | 82 | /* |
83 | * Globals... | |
84 | */ | |
85 | ||
58ec2a95 | 86 | #ifdef _HPGL_MAIN_C_ |
898749d4 | 87 | # define VAR |
88 | # define VALUE(x) =x | |
89 | # define VALUE2(x,y) ={x,y} | |
90 | #else | |
91 | # define VAR extern | |
92 | # define VALUE(x) | |
93 | # define VALUE2(x,y) | |
58ec2a95 | 94 | #endif /* _HPGL_MAIN_C_ */ |
898749d4 | 95 | |
0c5384fe | 96 | VAR ppd_file_t *PPD VALUE(NULL); /* PPD file */ |
97 | ||
98dd54b9 | 98 | VAR float P1[2], /* Lower-lefthand physical limit */ |
297b9b4d | 99 | P2[2], /* Upper-righthand physical limit */ |
100 | IW1[2], /* Window lower-lefthand limit */ | |
101 | IW2[2]; /* Window upper-righthand limit */ | |
c839cbc9 | 102 | VAR int Rotation VALUE(0); /* Page rotation */ |
103 | VAR int ScalingType VALUE(-1); /* Type of scaling (-1 for none) */ | |
104 | VAR float Scaling1[2], /* Lower-lefthand user limit */ | |
105 | Scaling2[2]; /* Upper-righthand user limit */ | |
106 | VAR float Transform[2][3]; /* Transform matrix */ | |
58ec2a95 | 107 | VAR int PageRotation VALUE(0); /* Page/plot rotation */ |
108 | ||
109 | VAR char StringTerminator VALUE('\003'); /* Terminator for labels */ | |
37cb600a | 110 | VAR font_t StandardFont, /* Standard font */ |
111 | AlternateFont; /* Alternate font */ | |
58ec2a95 | 112 | VAR float PenPosition[2] VALUE2(0.0f, 0.0f), |
113 | /* Current pen position */ | |
f0d2f1a4 | 114 | PenScaling VALUE(1.0f), /* Pen width scaling factor */ |
115 | PenWidth VALUE(1.0f); /* Default pen width */ | |
116 | VAR pen_t Pens[1024]; /* State of each pen */ | |
c839cbc9 | 117 | VAR int PenMotion VALUE(0), /* 0 = absolute, 1 = relative */ |
118 | PenNumber VALUE(1), /* Current pen number */ | |
119 | PenCount VALUE(8), /* Number of pens */ | |
58ec2a95 | 120 | PenDown VALUE(0), /* 0 = pen up, 1 = pen down */ |
121 | PolygonMode VALUE(0), /* Drawing polygons? */ | |
ed047ce7 | 122 | PageCount VALUE(0), /* Number of pages in plot */ |
58ec2a95 | 123 | PageDirty VALUE(0), /* Current page written on? */ |
124 | WidthUnits VALUE(0); /* 0 = mm, 1 = proportionate */ | |
125 | VAR float PlotSize[2] VALUE2(2592.0f, 3456.0f); | |
f42989ea | 126 | /* Plot size */ |
690a2029 | 127 | VAR int PlotSizeSet VALUE(0); /* Plot size set? */ |
58ec2a95 | 128 | VAR int CharFillMode VALUE(0), /* Where to draw labels */ |
129 | CharPen VALUE(0), /* Pen to use for labels */ | |
130 | CharFont VALUE(0); /* Font to use for labels */ | |
131 | VAR float CharHeight[2] VALUE2(11.5f,11.5f); | |
132 | /* Size of font for labels */ | |
133 | VAR int FitPlot VALUE(0); /* 1 = fit to page */ | |
134 | VAR float ColorRange[3][2] /* Range of color values */ | |
135 | #ifdef _HPGL_MAIN_C_ | |
448f2a47 | 136 | = { |
137 | { 0.0, 255.0 }, | |
138 | { 0.0, 255.0 }, | |
139 | { 0.0, 255.0 } | |
140 | } | |
58ec2a95 | 141 | #endif /* _HPGL_MAIN_C_ */ |
448f2a47 | 142 | ; |
898749d4 | 143 | |
37cb600a | 144 | VAR int LineCap VALUE(0); /* Line capping */ |
145 | VAR int LineJoin VALUE(0); /* Line joining */ | |
146 | VAR float MiterLimit VALUE(3.0f); /* Miter limit at joints */ | |
147 | ||
148 | ||
898749d4 | 149 | /* |
150 | * Prototypes... | |
151 | */ | |
152 | ||
58ec2a95 | 153 | /* hpgl-input.c */ |
98dd54b9 | 154 | extern int ParseCommand(FILE *fp, char *name, param_t **params); |
898749d4 | 155 | extern void FreeParameters(int num_params, param_t *params); |
156 | ||
58ec2a95 | 157 | /* hpgl-config.c */ |
158 | extern void update_transform(void); | |
c839cbc9 | 159 | extern void BP_begin_plot(int num_params, param_t *params); |
898749d4 | 160 | extern void DF_default_values(int num_params, param_t *params); |
c839cbc9 | 161 | extern void IN_initialize(int num_params, param_t *params); |
898749d4 | 162 | extern void IP_input_absolute(int num_params, param_t *params); |
163 | extern void IR_input_relative(int num_params, param_t *params); | |
164 | extern void IW_input_window(int num_params, param_t *params); | |
165 | extern void PG_advance_page(int num_params, param_t *params); | |
c839cbc9 | 166 | extern void PS_plot_size(int num_params, param_t *params); |
898749d4 | 167 | extern void RO_rotate(int num_params, param_t *params); |
168 | extern void RP_replot(int num_params, param_t *params); | |
169 | extern void SC_scale(int num_params, param_t *params); | |
170 | ||
58ec2a95 | 171 | /* hpgl-vector.c */ |
898749d4 | 172 | extern void AA_arc_absolute(int num_params, param_t *params); |
173 | extern void AR_arc_relative(int num_params, param_t *params); | |
174 | extern void AT_arc_absolute3(int num_params, param_t *params); | |
175 | extern void CI_circle(int num_params, param_t *params); | |
176 | extern void PA_plot_absolute(int num_params, param_t *params); | |
177 | extern void PD_pen_down(int num_params, param_t *params); | |
178 | extern void PE_polyline_encoded(int num_params, param_t *params); | |
179 | extern void PR_plot_relative(int num_params, param_t *params); | |
180 | extern void PU_pen_up(int num_params, param_t *params); | |
181 | extern void RT_arc_relative3(int num_params, param_t *params); | |
182 | ||
58ec2a95 | 183 | /* hpgl-polygon.c */ |
898749d4 | 184 | extern void EA_edge_rect_absolute(int num_params, param_t *params); |
185 | extern void EP_edge_polygon(int num_params, param_t *params); | |
186 | extern void ER_edge_rect_relative(int num_params, param_t *params); | |
187 | extern void EW_edge_wedge(int num_params, param_t *params); | |
188 | extern void FP_fill_polygon(int num_params, param_t *params); | |
189 | extern void PM_polygon_mode(int num_params, param_t *params); | |
190 | extern void RA_fill_rect_absolute(int num_params, param_t *params); | |
191 | extern void RR_fill_rect_relative(int num_params, param_t *params); | |
192 | extern void WG_fill_wedge(int num_params, param_t *params); | |
193 | ||
58ec2a95 | 194 | /* hpgl-char.c */ |
898749d4 | 195 | extern void AD_define_alternate(int num_params, param_t *params); |
196 | extern void CF_character_fill(int num_params, param_t *params); | |
197 | extern void CP_character_plot(int num_params, param_t *params); | |
198 | extern void DI_absolute_direction(int num_params, param_t *params); | |
199 | extern void DR_relative_direction(int num_params, param_t *params); | |
200 | extern void DT_define_label_term(int num_params, param_t *params); | |
201 | extern void DV_define_variable_path(int num_params, param_t *params); | |
202 | extern void ES_extra_space(int num_params, param_t *params); | |
203 | extern void LB_label(int num_params, param_t *params); | |
204 | extern void LO_label_origin(int num_params, param_t *params); | |
205 | extern void SA_select_alternate(int num_params, param_t *params); | |
206 | extern void SD_define_standard(int num_params, param_t *params); | |
207 | extern void SI_absolute_size(int num_params, param_t *params); | |
208 | extern void SL_character_slant(int num_params, param_t *params); | |
209 | extern void SR_relative_size(int num_params, param_t *params); | |
210 | extern void SS_select_standard(int num_params, param_t *params); | |
211 | extern void TD_transparent_data(int num_params, param_t *params); | |
212 | ||
58ec2a95 | 213 | /* hpgl-attr.c */ |
898749d4 | 214 | extern void AC_anchor_corner(int num_params, param_t *params); |
448f2a47 | 215 | extern void CR_color_range(int num_params, param_t *params); |
898749d4 | 216 | extern void FT_fill_type(int num_params, param_t *params); |
217 | extern void LA_line_attributes(int num_params, param_t *params); | |
218 | extern void LT_line_type(int num_params, param_t *params); | |
c839cbc9 | 219 | extern void NP_number_pens(int num_params, param_t *params); |
220 | extern void PC_pen_color(int num_params, param_t *params); | |
898749d4 | 221 | extern void PW_pen_width(int num_params, param_t *params); |
222 | extern void RF_raster_fill(int num_params, param_t *params); | |
223 | extern void SM_symbol_mode(int num_params, param_t *params); | |
224 | extern void SP_select_pen(int num_params, param_t *params); | |
225 | extern void UL_user_line_type(int num_params, param_t *params); | |
226 | extern void WU_width_units(int num_params, param_t *params); | |
227 | ||
58ec2a95 | 228 | /* hpgl-prolog.c */ |
f0d2f1a4 | 229 | extern void OutputProlog(char *title, char *user, int shading); |
98dd54b9 | 230 | extern void OutputTrailer(void); |
58ec2a95 | 231 | extern int Outputf(const char *format, ...); |
898749d4 | 232 | |
233 | /* | |
997fbfa7 | 234 | * End of "$Id: hpgltops.h,v 1.20 2002/12/17 18:59:26 swdev Exp $". |
898749d4 | 235 | */ |