]> git.ipfire.org Git - thirdparty/cups.git/blame - filter/hpgltops.h
Merge changes from CUPS 1.4svn-r8131.
[thirdparty/cups.git] / filter / hpgltops.h
CommitLineData
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
41typedef 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
60typedef 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
78typedef 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
99VAR ppd_file_t *PPD VALUE(NULL); /* PPD file */
100
101VAR 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 */
105VAR int Rotation VALUE(0); /* Page rotation */
106VAR int ScalingType VALUE(-1); /* Type of scaling (-1 for none) */
107VAR float Scaling1[2], /* Lower-lefthand user limit */
108 Scaling2[2]; /* Upper-righthand user limit */
109VAR float Transform[2][3]; /* Transform matrix */
110VAR int PageRotation VALUE(0); /* Page/plot rotation */
111
112VAR char StringTerminator VALUE('\003'); /* Terminator for labels */
113VAR font_t StandardFont, /* Standard font */
114 AlternateFont; /* Alternate font */
115VAR 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 119VAR pen_t Pens[MAX_PENS]; /* State of each pen */
ef416fc2 120VAR 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 */
129VAR float PlotSize[2] VALUE2(2592.0f, 3456.0f);
130 /* Plot size */
131VAR int PlotSizeSet VALUE(0); /* Plot size set? */
132VAR 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 */
135VAR float CharHeight[2] VALUE2(11.5f,11.5f);
136 /* Size of font for labels */
137VAR int FitPlot VALUE(0); /* 1 = fit to page */
138VAR 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
148VAR int LineCap VALUE(0); /* Line capping */
149VAR int LineJoin VALUE(0); /* Line joining */
150VAR float MiterLimit VALUE(3.0f); /* Miter limit at joints */
151
152
153/*
154 * Prototypes...
155 */
156
157/* hpgl-input.c */
158extern int ParseCommand(FILE *fp, char *name, param_t **params);
159extern void FreeParameters(int num_params, param_t *params);
160
161/* hpgl-config.c */
162extern void update_transform(void);
163extern void BP_begin_plot(int num_params, param_t *params);
164extern void DF_default_values(int num_params, param_t *params);
165extern void IN_initialize(int num_params, param_t *params);
166extern void IP_input_absolute(int num_params, param_t *params);
167extern void IR_input_relative(int num_params, param_t *params);
168extern void IW_input_window(int num_params, param_t *params);
169extern void PG_advance_page(int num_params, param_t *params);
170extern void PS_plot_size(int num_params, param_t *params);
171extern void RO_rotate(int num_params, param_t *params);
172extern void RP_replot(int num_params, param_t *params);
173extern void SC_scale(int num_params, param_t *params);
174
175/* hpgl-vector.c */
176extern void AA_arc_absolute(int num_params, param_t *params);
177extern void AR_arc_relative(int num_params, param_t *params);
178extern void AT_arc_absolute3(int num_params, param_t *params);
179extern void CI_circle(int num_params, param_t *params);
180extern void PA_plot_absolute(int num_params, param_t *params);
181extern void PD_pen_down(int num_params, param_t *params);
182extern void PE_polyline_encoded(int num_params, param_t *params);
183extern void PR_plot_relative(int num_params, param_t *params);
184extern void PU_pen_up(int num_params, param_t *params);
185extern void RT_arc_relative3(int num_params, param_t *params);
186
187/* hpgl-polygon.c */
188extern void EA_edge_rect_absolute(int num_params, param_t *params);
189extern void EP_edge_polygon(int num_params, param_t *params);
190extern void ER_edge_rect_relative(int num_params, param_t *params);
191extern void EW_edge_wedge(int num_params, param_t *params);
192extern void FP_fill_polygon(int num_params, param_t *params);
193extern void PM_polygon_mode(int num_params, param_t *params);
194extern void RA_fill_rect_absolute(int num_params, param_t *params);
195extern void RR_fill_rect_relative(int num_params, param_t *params);
196extern void WG_fill_wedge(int num_params, param_t *params);
197
198/* hpgl-char.c */
199extern void define_font(int f);
200extern void AD_define_alternate(int num_params, param_t *params);
201extern void CF_character_fill(int num_params, param_t *params);
202extern void CP_character_plot(int num_params, param_t *params);
203extern void DI_absolute_direction(int num_params, param_t *params);
204extern void DR_relative_direction(int num_params, param_t *params);
205extern void DT_define_label_term(int num_params, param_t *params);
206extern void DV_define_variable_path(int num_params, param_t *params);
207extern void ES_extra_space(int num_params, param_t *params);
208extern void LB_label(int num_params, param_t *params);
209extern void LO_label_origin(int num_params, param_t *params);
210extern void SA_select_alternate(int num_params, param_t *params);
211extern void SD_define_standard(int num_params, param_t *params);
212extern void SI_absolute_size(int num_params, param_t *params);
213extern void SL_character_slant(int num_params, param_t *params);
214extern void SR_relative_size(int num_params, param_t *params);
215extern void SS_select_standard(int num_params, param_t *params);
216extern void TD_transparent_data(int num_params, param_t *params);
217
218/* hpgl-attr.c */
219extern void AC_anchor_corner(int num_params, param_t *params);
220extern void CR_color_range(int num_params, param_t *params);
221extern void FT_fill_type(int num_params, param_t *params);
222extern void LA_line_attributes(int num_params, param_t *params);
223extern void LT_line_type(int num_params, param_t *params);
224extern void NP_number_pens(int num_params, param_t *params);
225extern void PC_pen_color(int num_params, param_t *params);
226extern void PW_pen_width(int num_params, param_t *params);
227extern void RF_raster_fill(int num_params, param_t *params);
228extern void SM_symbol_mode(int num_params, param_t *params);
229extern void SP_select_pen(int num_params, param_t *params);
230extern void UL_user_line_type(int num_params, param_t *params);
231extern void WU_width_units(int num_params, param_t *params);
232
233/* hpgl-prolog.c */
234extern void OutputProlog(char *title, char *user, int shading);
235extern void OutputTrailer(void);
236extern int Outputf(const char *format, ...);
237
238/*
bc44d920 239 * End of "$Id: hpgltops.h 6649 2007-07-11 21:46:42Z mike $".
ef416fc2 240 */