xref: /plan9/sys/src/cmd/aux/antiword/drawfile.h (revision 25b329d522281a8cdd35da0dcc08c3fc621059a9)
1*25b329d5SDavid du Colombier /*
2*25b329d5SDavid du Colombier  * drawfile.h
3*25b329d5SDavid du Colombier  * Copyright (C) 2005 A.J. van Os; Released under GNU GPL
4*25b329d5SDavid du Colombier  *
5*25b329d5SDavid du Colombier  * Description:
6*25b329d5SDavid du Colombier  * Include file to deal with drawfiles
7*25b329d5SDavid du Colombier  *
8*25b329d5SDavid du Colombier  * Based on:
9*25b329d5SDavid du Colombier  * C header file for DrawFile
10*25b329d5SDavid du Colombier  * written by DefMod (May  4 2004) on Tue May  4 13:34:17 2004
11*25b329d5SDavid du Colombier  * Jonathan Coxhead, jonathan@doves.demon.co.uk, 21 Aug 1995
12*25b329d5SDavid du Colombier  * OSLib---efficient, type-safe, transparent, extensible,
13*25b329d5SDavid du Colombier  * register-safe A P I coverage of RISC O S
14*25b329d5SDavid du Colombier  * Copyright (C) 1994 Jonathan Coxhead
15*25b329d5SDavid du Colombier  *
16*25b329d5SDavid du Colombier  * All credit should go to him, but all the bugs are mine
17*25b329d5SDavid du Colombier  */
18*25b329d5SDavid du Colombier 
19*25b329d5SDavid du Colombier #if !defined(__drawfile_h)
20*25b329d5SDavid du Colombier #define __drawfile_h
21*25b329d5SDavid du Colombier 
22*25b329d5SDavid du Colombier #include "DeskLib:Sprite.h"
23*25b329d5SDavid du Colombier #include "DeskLib:Wimp.h"
24*25b329d5SDavid du Colombier 
25*25b329d5SDavid du Colombier #if !defined(BOOL)
26*25b329d5SDavid du Colombier #define BOOL int
27*25b329d5SDavid du Colombier #define TRUE 1
28*25b329d5SDavid du Colombier #define FALSE 0
29*25b329d5SDavid du Colombier #endif /* !BOOL */
30*25b329d5SDavid du Colombier 
31*25b329d5SDavid du Colombier /*********************
32*25b329d5SDavid du Colombier  * Conversion macros *
33*25b329d5SDavid du Colombier  *********************/
34*25b329d5SDavid du Colombier #define Drawfile_DrawToScreen(i) ((i) / 256)
35*25b329d5SDavid du Colombier #define Drawfile_ScreenToDraw(i) ((i) * 256)
36*25b329d5SDavid du Colombier 
37*25b329d5SDavid du Colombier /**********************************
38*25b329d5SDavid du Colombier  * SWI names and SWI reason codes *
39*25b329d5SDavid du Colombier  **********************************/
40*25b329d5SDavid du Colombier #define DrawFile_Render                         0x45540
41*25b329d5SDavid du Colombier #define DrawFile_BBox                           0x45541
42*25b329d5SDavid du Colombier #define DrawFile_DeclareFonts                   0x45542
43*25b329d5SDavid du Colombier 
44*25b329d5SDavid du Colombier /********************
45*25b329d5SDavid du Colombier  * Type definitions *
46*25b329d5SDavid du Colombier  ********************/
47*25b329d5SDavid du Colombier typedef unsigned int                            bits;
48*25b329d5SDavid du Colombier typedef unsigned char                           byte;
49*25b329d5SDavid du Colombier 
50*25b329d5SDavid du Colombier typedef byte drawfile_fontref;
51*25b329d5SDavid du Colombier 
52*25b329d5SDavid du Colombier typedef byte drawfile_path_style_flags;
53*25b329d5SDavid du Colombier 
54*25b329d5SDavid du Colombier typedef bits drawfile_text_flags;
55*25b329d5SDavid du Colombier 
56*25b329d5SDavid du Colombier typedef bits drawfile_render_flags;
57*25b329d5SDavid du Colombier 
58*25b329d5SDavid du Colombier typedef bits drawfile_declare_fonts_flags;
59*25b329d5SDavid du Colombier 
60*25b329d5SDavid du Colombier typedef bits drawfile_paper_options;
61*25b329d5SDavid du Colombier 
62*25b329d5SDavid du Colombier typedef bits drawfile_entry_mode;
63*25b329d5SDavid du Colombier 
64*25b329d5SDavid du Colombier typedef enum {
65*25b329d5SDavid du Colombier   drawfile_TYPE_FONT_TABLE = 0,
66*25b329d5SDavid du Colombier   drawfile_TYPE_TEXT = 1,
67*25b329d5SDavid du Colombier   drawfile_TYPE_PATH = 2,
68*25b329d5SDavid du Colombier   drawfile_TYPE_SPRITE = 5,
69*25b329d5SDavid du Colombier   drawfile_TYPE_GROUP = 6,
70*25b329d5SDavid du Colombier   drawfile_TYPE_TAGGED = 7,
71*25b329d5SDavid du Colombier   drawfile_TYPE_TEXT_AREA = 9,
72*25b329d5SDavid du Colombier   drawfile_TYPE_TEXT_COLUMN = 10,
73*25b329d5SDavid du Colombier   drawfile_TYPE_OPTIONS = 11,
74*25b329d5SDavid du Colombier   drawfile_TYPE_TRFM_TEXT = 12,
75*25b329d5SDavid du Colombier   drawfile_TYPE_TRFM_SPRITE = 13,
76*25b329d5SDavid du Colombier   drawfile_TYPE_JPEG = 16
77*25b329d5SDavid du Colombier } drawfile_type;
78*25b329d5SDavid du Colombier 
79*25b329d5SDavid du Colombier typedef enum {
80*25b329d5SDavid du Colombier   drawfile_PATH_END_PATH = 0,
81*25b329d5SDavid du Colombier   drawfile_PATH_CONTINUATION = 1,
82*25b329d5SDavid du Colombier   drawfile_PATH_MOVE_TO = 2,
83*25b329d5SDavid du Colombier   drawfile_PATH_SPECIAL_MOVE_TO = 3,
84*25b329d5SDavid du Colombier   drawfile_PATH_CLOSE_GAP = 4,
85*25b329d5SDavid du Colombier   drawfile_PATH_CLOSE_LINE = 5,
86*25b329d5SDavid du Colombier   drawfile_PATH_BEZIER_TO = 6,
87*25b329d5SDavid du Colombier   drawfile_PATH_GAP_TO = 7,
88*25b329d5SDavid du Colombier   drawfile_PATH_LINE_TO = 8
89*25b329d5SDavid du Colombier } drawfile_path_type;
90*25b329d5SDavid du Colombier 
91*25b329d5SDavid du Colombier typedef struct {
92*25b329d5SDavid du Colombier   int start;
93*25b329d5SDavid du Colombier   int element_count;
94*25b329d5SDavid du Colombier   int elements [6];
95*25b329d5SDavid du Colombier } draw_dash_pattern;
96*25b329d5SDavid du Colombier 
97*25b329d5SDavid du Colombier typedef struct {
98*25b329d5SDavid du Colombier   int entries [3] [2];
99*25b329d5SDavid du Colombier } os_trfm;
100*25b329d5SDavid du Colombier 
101*25b329d5SDavid du Colombier typedef struct {
102*25b329d5SDavid du Colombier   void *data;
103*25b329d5SDavid du Colombier   size_t length;
104*25b329d5SDavid du Colombier } drawfile_info;
105*25b329d5SDavid du Colombier 
106*25b329d5SDavid du Colombier typedef struct {
107*25b329d5SDavid du Colombier   drawfile_fontref font_ref;
108*25b329d5SDavid du Colombier   char font_name [1];
109*25b329d5SDavid du Colombier } drawfile_font_def;
110*25b329d5SDavid du Colombier 
111*25b329d5SDavid du Colombier typedef struct {
112*25b329d5SDavid du Colombier   drawfile_fontref font_ref;
113*25b329d5SDavid du Colombier   byte reserved [3];
114*25b329d5SDavid du Colombier } drawfile_text_style;
115*25b329d5SDavid du Colombier 
116*25b329d5SDavid du Colombier typedef struct {
117*25b329d5SDavid du Colombier   drawfile_path_style_flags flags;
118*25b329d5SDavid du Colombier   byte reserved;
119*25b329d5SDavid du Colombier   byte cap_width;
120*25b329d5SDavid du Colombier   byte cap_length;
121*25b329d5SDavid du Colombier } drawfile_path_style;
122*25b329d5SDavid du Colombier 
123*25b329d5SDavid du Colombier typedef struct {
124*25b329d5SDavid du Colombier   drawfile_font_def font_def[1];
125*25b329d5SDavid du Colombier } drawfile_font_table;
126*25b329d5SDavid du Colombier 
127*25b329d5SDavid du Colombier typedef struct {
128*25b329d5SDavid du Colombier   wimp_box bbox;
129*25b329d5SDavid du Colombier   palette_entry fill;
130*25b329d5SDavid du Colombier   palette_entry bg_hint;
131*25b329d5SDavid du Colombier   drawfile_text_style style;
132*25b329d5SDavid du Colombier   int xsize;
133*25b329d5SDavid du Colombier   int ysize;
134*25b329d5SDavid du Colombier   wimp_coord base;
135*25b329d5SDavid du Colombier   char text [1];
136*25b329d5SDavid du Colombier } drawfile_text;
137*25b329d5SDavid du Colombier 
138*25b329d5SDavid du Colombier typedef struct {
139*25b329d5SDavid du Colombier   wimp_box bbox;
140*25b329d5SDavid du Colombier   palette_entry fill;
141*25b329d5SDavid du Colombier   palette_entry outline;
142*25b329d5SDavid du Colombier   int width;
143*25b329d5SDavid du Colombier   drawfile_path_style style;
144*25b329d5SDavid du Colombier   int path [1];
145*25b329d5SDavid du Colombier } drawfile_path;
146*25b329d5SDavid du Colombier 
147*25b329d5SDavid du Colombier typedef struct {
148*25b329d5SDavid du Colombier   wimp_box bbox;
149*25b329d5SDavid du Colombier   palette_entry fill;
150*25b329d5SDavid du Colombier   palette_entry outline;
151*25b329d5SDavid du Colombier   int width;
152*25b329d5SDavid du Colombier   drawfile_path_style style;
153*25b329d5SDavid du Colombier   draw_dash_pattern pattern;
154*25b329d5SDavid du Colombier   int path [1];
155*25b329d5SDavid du Colombier } drawfile_path_with_pattern;
156*25b329d5SDavid du Colombier 
157*25b329d5SDavid du Colombier typedef struct {
158*25b329d5SDavid du Colombier   wimp_box bbox;
159*25b329d5SDavid du Colombier   sprite_header header;
160*25b329d5SDavid du Colombier   byte data [1];
161*25b329d5SDavid du Colombier } drawfile_sprite;
162*25b329d5SDavid du Colombier 
163*25b329d5SDavid du Colombier typedef struct  {
164*25b329d5SDavid du Colombier   wimp_box bbox;
165*25b329d5SDavid du Colombier   char name [12];
166*25b329d5SDavid du Colombier   int objects [1];
167*25b329d5SDavid du Colombier } drawfile_group;
168*25b329d5SDavid du Colombier 
169*25b329d5SDavid du Colombier typedef struct {
170*25b329d5SDavid du Colombier   wimp_box bbox;
171*25b329d5SDavid du Colombier   drawfile_type tag;
172*25b329d5SDavid du Colombier   int object [1];
173*25b329d5SDavid du Colombier } drawfile_tagged;
174*25b329d5SDavid du Colombier 
175*25b329d5SDavid du Colombier typedef struct {
176*25b329d5SDavid du Colombier   wimp_box box;
177*25b329d5SDavid du Colombier } drawfile_text_column;
178*25b329d5SDavid du Colombier 
179*25b329d5SDavid du Colombier typedef struct {
180*25b329d5SDavid du Colombier   struct {
181*25b329d5SDavid du Colombier     drawfile_type type;
182*25b329d5SDavid du Colombier     int size;
183*25b329d5SDavid du Colombier     drawfile_text_column data;
184*25b329d5SDavid du Colombier   } columns [1];
185*25b329d5SDavid du Colombier } drawfile_text_column_list;
186*25b329d5SDavid du Colombier 
187*25b329d5SDavid du Colombier typedef struct {
188*25b329d5SDavid du Colombier   drawfile_type type;
189*25b329d5SDavid du Colombier   int reserved [2];
190*25b329d5SDavid du Colombier   palette_entry fill;
191*25b329d5SDavid du Colombier   palette_entry bg_hint;
192*25b329d5SDavid du Colombier   char text [1];
193*25b329d5SDavid du Colombier } drawfile_area_text;
194*25b329d5SDavid du Colombier 
195*25b329d5SDavid du Colombier typedef struct {
196*25b329d5SDavid du Colombier   wimp_box bbox;
197*25b329d5SDavid du Colombier   drawfile_text_column_list header;
198*25b329d5SDavid du Colombier   drawfile_area_text area_text;
199*25b329d5SDavid du Colombier } drawfile_text_area;
200*25b329d5SDavid du Colombier 
201*25b329d5SDavid du Colombier typedef struct {
202*25b329d5SDavid du Colombier   wimp_box bbox;
203*25b329d5SDavid du Colombier   int paper_size;
204*25b329d5SDavid du Colombier   drawfile_paper_options paper_options;
205*25b329d5SDavid du Colombier   double grid_spacing;
206*25b329d5SDavid du Colombier   int grid_division;
207*25b329d5SDavid du Colombier   BOOL isometric;
208*25b329d5SDavid du Colombier   BOOL auto_adjust;
209*25b329d5SDavid du Colombier   BOOL show;
210*25b329d5SDavid du Colombier   BOOL lock;
211*25b329d5SDavid du Colombier   BOOL cm;
212*25b329d5SDavid du Colombier   int zoom_mul;
213*25b329d5SDavid du Colombier   int zoom_div;
214*25b329d5SDavid du Colombier   BOOL zoom_lock;
215*25b329d5SDavid du Colombier   BOOL toolbox;
216*25b329d5SDavid du Colombier   drawfile_entry_mode entry_mode;
217*25b329d5SDavid du Colombier   int undo_size;
218*25b329d5SDavid du Colombier } drawfile_options;
219*25b329d5SDavid du Colombier 
220*25b329d5SDavid du Colombier typedef struct {
221*25b329d5SDavid du Colombier   wimp_box bbox;
222*25b329d5SDavid du Colombier   os_trfm trfm;
223*25b329d5SDavid du Colombier   drawfile_text_flags flags;
224*25b329d5SDavid du Colombier   palette_entry fill;
225*25b329d5SDavid du Colombier   palette_entry bg_hint;
226*25b329d5SDavid du Colombier   drawfile_text_style style;
227*25b329d5SDavid du Colombier   int xsize;
228*25b329d5SDavid du Colombier   int ysize;
229*25b329d5SDavid du Colombier   wimp_coord base;
230*25b329d5SDavid du Colombier   char text [1];
231*25b329d5SDavid du Colombier } drawfile_trfm_text;
232*25b329d5SDavid du Colombier 
233*25b329d5SDavid du Colombier typedef struct {
234*25b329d5SDavid du Colombier   wimp_box bbox;
235*25b329d5SDavid du Colombier   os_trfm trfm;
236*25b329d5SDavid du Colombier   sprite_header header;
237*25b329d5SDavid du Colombier   byte data [1];
238*25b329d5SDavid du Colombier } drawfile_trfm_sprite;
239*25b329d5SDavid du Colombier 
240*25b329d5SDavid du Colombier typedef struct {
241*25b329d5SDavid du Colombier   wimp_box bbox;
242*25b329d5SDavid du Colombier   int width;
243*25b329d5SDavid du Colombier   int height;
244*25b329d5SDavid du Colombier   int xdpi;
245*25b329d5SDavid du Colombier   int ydpi;
246*25b329d5SDavid du Colombier   os_trfm trfm;
247*25b329d5SDavid du Colombier   int len;
248*25b329d5SDavid du Colombier   byte data [1];
249*25b329d5SDavid du Colombier } drawfile_jpeg;
250*25b329d5SDavid du Colombier 
251*25b329d5SDavid du Colombier /* ------------------------------------------------------------------------
252*25b329d5SDavid du Colombier  * Type:          drawfile_object
253*25b329d5SDavid du Colombier  *
254*25b329d5SDavid du Colombier  * Description:   This type is used to declare pointers rather than objects
255*25b329d5SDavid du Colombier  */
256*25b329d5SDavid du Colombier 
257*25b329d5SDavid du Colombier typedef struct {
258*25b329d5SDavid du Colombier   drawfile_type type;
259*25b329d5SDavid du Colombier   int size;
260*25b329d5SDavid du Colombier   union {
261*25b329d5SDavid du Colombier     drawfile_font_table font_table;
262*25b329d5SDavid du Colombier     drawfile_text text;
263*25b329d5SDavid du Colombier     drawfile_path path;
264*25b329d5SDavid du Colombier     drawfile_path_with_pattern path_with_pattern;
265*25b329d5SDavid du Colombier     drawfile_sprite sprite;
266*25b329d5SDavid du Colombier     drawfile_group group;
267*25b329d5SDavid du Colombier     drawfile_tagged tagged;
268*25b329d5SDavid du Colombier     drawfile_text_column text_column;
269*25b329d5SDavid du Colombier     drawfile_text_area text_area;
270*25b329d5SDavid du Colombier     drawfile_options options;
271*25b329d5SDavid du Colombier     drawfile_trfm_text trfm_text;
272*25b329d5SDavid du Colombier     drawfile_trfm_sprite trfm_sprite;
273*25b329d5SDavid du Colombier     drawfile_jpeg jpeg;
274*25b329d5SDavid du Colombier   } data;
275*25b329d5SDavid du Colombier } drawfile_object;
276*25b329d5SDavid du Colombier 
277*25b329d5SDavid du Colombier typedef struct {
278*25b329d5SDavid du Colombier   char tag [4];
279*25b329d5SDavid du Colombier   int major_version;
280*25b329d5SDavid du Colombier   int minor_version;
281*25b329d5SDavid du Colombier   char source [12];
282*25b329d5SDavid du Colombier   wimp_box bbox;
283*25b329d5SDavid du Colombier   drawfile_object objects [1];
284*25b329d5SDavid du Colombier } drawfile_diagram;
285*25b329d5SDavid du Colombier 
286*25b329d5SDavid du Colombier typedef bits drawfile_bbox_flags;
287*25b329d5SDavid du Colombier 
288*25b329d5SDavid du Colombier typedef struct {
289*25b329d5SDavid du Colombier   drawfile_object *object;
290*25b329d5SDavid du Colombier   drawfile_diagram *diagram;
291*25b329d5SDavid du Colombier   drawfile_object *font_table;
292*25b329d5SDavid du Colombier   drawfile_declare_fonts_flags flags;
293*25b329d5SDavid du Colombier   os_error *error;
294*25b329d5SDavid du Colombier } drawfile_declare_fonts_state;
295*25b329d5SDavid du Colombier 
296*25b329d5SDavid du Colombier /************************
297*25b329d5SDavid du Colombier  * Constant definitions *
298*25b329d5SDavid du Colombier  ************************/
299*25b329d5SDavid du Colombier #define error_DRAW_FILE_NOT_DRAW                0x20C00u
300*25b329d5SDavid du Colombier #define error_DRAW_FILE_VERSION                 0x20C01u
301*25b329d5SDavid du Colombier #define error_DRAW_FILE_FONT_TAB                0x20C02u
302*25b329d5SDavid du Colombier #define error_DRAW_FILE_BAD_FONT_NO             0x20C03u
303*25b329d5SDavid du Colombier #define error_DRAW_FILE_BAD_MODE                0x20C04u
304*25b329d5SDavid du Colombier #define error_DRAW_FILE_BAD_FILE                0x20C05u
305*25b329d5SDavid du Colombier #define error_DRAW_FILE_BAD_GROUP               0x20C06u
306*25b329d5SDavid du Colombier #define error_DRAW_FILE_BAD_TAG                 0x20C07u
307*25b329d5SDavid du Colombier #define error_DRAW_FILE_SYNTAX                  0x20C08u
308*25b329d5SDavid du Colombier #define error_DRAW_FILE_FONT_NO                 0x20C09u
309*25b329d5SDavid du Colombier #define error_DRAW_FILE_AREA_VER                0x20C0Au
310*25b329d5SDavid du Colombier #define error_DRAW_FILE_NO_AREA_VER             0x20C0Bu
311*25b329d5SDavid du Colombier 
312*25b329d5SDavid du Colombier #define drawfile_PATH_MITRED                    ((drawfile_path_style_flags) 0x0u)
313*25b329d5SDavid du Colombier #define drawfile_PATH_ROUND                     ((drawfile_path_style_flags) 0x1u)
314*25b329d5SDavid du Colombier #define drawfile_PATH_BEVELLED                  ((drawfile_path_style_flags) 0x2u)
315*25b329d5SDavid du Colombier #define drawfile_PATH_BUTT                      ((drawfile_path_style_flags) 0x0u)
316*25b329d5SDavid du Colombier #define drawfile_PATH_SQUARE                    ((drawfile_path_style_flags) 0x2u)
317*25b329d5SDavid du Colombier #define drawfile_PATH_TRIANGLE                  ((drawfile_path_style_flags) 0x3u)
318*25b329d5SDavid du Colombier #define drawfile_PATH_JOIN_SHIFT                0
319*25b329d5SDavid du Colombier #define drawfile_PATH_JOIN                      ((drawfile_path_style_flags) 0x3u)
320*25b329d5SDavid du Colombier #define drawfile_PATH_END_SHIFT                 2
321*25b329d5SDavid du Colombier #define drawfile_PATH_END                       ((drawfile_path_style_flags) 0xCu)
322*25b329d5SDavid du Colombier #define drawfile_PATH_START_SHIFT               4
323*25b329d5SDavid du Colombier #define drawfile_PATH_START                     ((drawfile_path_style_flags) 0x30u)
324*25b329d5SDavid du Colombier #define drawfile_PATH_WINDING_EVEN_ODD          ((drawfile_path_style_flags) 0x40u)
325*25b329d5SDavid du Colombier #define drawfile_PATH_DASHED                    ((drawfile_path_style_flags) 0x80u)
326*25b329d5SDavid du Colombier #define drawfile_PATH_CAP_WIDTH_SHIFT           16
327*25b329d5SDavid du Colombier #define drawfile_PATH_CAP_WIDTH                 ((drawfile_path_style_flags) 0xFF0000u)
328*25b329d5SDavid du Colombier #define drawfile_PATH_CAP_LENGTH_SHIFT          24
329*25b329d5SDavid du Colombier #define drawfile_PATH_CAP_LENGTH                ((drawfile_path_style_flags) 0xFF000000u)
330*25b329d5SDavid du Colombier #define drawfile_TEXT_KERN                      ((drawfile_text_flags) 0x1u)
331*25b329d5SDavid du Colombier #define drawfile_TEXT_RIGHT_TO_LEFT             ((drawfile_text_flags) 0x2u)
332*25b329d5SDavid du Colombier #define drawfile_TEXT_UNDERLINE                 ((drawfile_text_flags) 0x4u)
333*25b329d5SDavid du Colombier #define drawfile_RENDER_BBOXES                  ((drawfile_render_flags) 0x1u)
334*25b329d5SDavid du Colombier #define drawfile_RENDER_SUPPRESS                ((drawfile_render_flags) 0x2u)
335*25b329d5SDavid du Colombier #define drawfile_RENDER_GIVEN_FLATNESS          ((drawfile_render_flags) 0x4u)
336*25b329d5SDavid du Colombier #define drawfile_RENDER_GIVEN_COLOUR_MAPPING    ((drawfile_render_flags) 0x8u)
337*25b329d5SDavid du Colombier #define drawfile_NO_DOWNLOAD                    ((drawfile_declare_fonts_flags) 0x1u)
338*25b329d5SDavid du Colombier #define drawfile_PAPER_SHOW                     ((drawfile_paper_options) 0x1u)
339*25b329d5SDavid du Colombier #define drawfile_PAPER_LANDSCAPE                ((drawfile_paper_options) 0x10u)
340*25b329d5SDavid du Colombier #define drawfile_PAPER_DEFAULT                  ((drawfile_paper_options) 0x100u)
341*25b329d5SDavid du Colombier #define drawfile_ENTRY_MODE_LINE                ((drawfile_entry_mode) 0x1u)
342*25b329d5SDavid du Colombier #define drawfile_ENTRY_MODE_CLOSED_LINE         ((drawfile_entry_mode) 0x2u)
343*25b329d5SDavid du Colombier #define drawfile_ENTRY_MODE_CURVE               ((drawfile_entry_mode) 0x4u)
344*25b329d5SDavid du Colombier #define drawfile_ENTRY_MODE_CLOSED_CURVE        ((drawfile_entry_mode) 0x8u)
345*25b329d5SDavid du Colombier #define drawfile_ENTRY_MODE_RECTANGLE           ((drawfile_entry_mode) 0x10u)
346*25b329d5SDavid du Colombier #define drawfile_ENTRY_MODE_ELLIPSE             ((drawfile_entry_mode) 0x20u)
347*25b329d5SDavid du Colombier #define drawfile_ENTRY_MODE_TEXT_LINE           ((drawfile_entry_mode) 0x40u)
348*25b329d5SDavid du Colombier #define drawfile_ENTRY_MODE_SELECT              ((drawfile_entry_mode) 0x80u)
349*25b329d5SDavid du Colombier 
350*25b329d5SDavid du Colombier /*************************
351*25b329d5SDavid du Colombier  * Function declarations *
352*25b329d5SDavid du Colombier  *************************/
353*25b329d5SDavid du Colombier 
354*25b329d5SDavid du Colombier #if defined(__cplusplus)
355*25b329d5SDavid du Colombier    extern "C" {
356*25b329d5SDavid du Colombier #endif /* __cplusplus */
357*25b329d5SDavid du Colombier 
358*25b329d5SDavid du Colombier /* ------------------------------------------------------------------------
359*25b329d5SDavid du Colombier  * Function:      drawfile_render()
360*25b329d5SDavid du Colombier  *
361*25b329d5SDavid du Colombier  * Description:   Calls SWI 0x45540
362*25b329d5SDavid du Colombier  *
363*25b329d5SDavid du Colombier  * Input:         flags - value of R0 on entry
364*25b329d5SDavid du Colombier  *                diagram - value of R1 on entry
365*25b329d5SDavid du Colombier  *                size - value of R2 on entry
366*25b329d5SDavid du Colombier  *                trfm - value of R3 on entry
367*25b329d5SDavid du Colombier  *                clip - value of R4 on entry
368*25b329d5SDavid du Colombier  *                flatness - value of R5 on entry
369*25b329d5SDavid du Colombier  */
370*25b329d5SDavid du Colombier 
371*25b329d5SDavid du Colombier extern os_error *Drawfile_Render (drawfile_render_flags flags,
372*25b329d5SDavid du Colombier       drawfile_diagram const *diagram,
373*25b329d5SDavid du Colombier       int size,
374*25b329d5SDavid du Colombier       os_trfm const *trfm,
375*25b329d5SDavid du Colombier       wimp_box const *clip,
376*25b329d5SDavid du Colombier       int flatness);
377*25b329d5SDavid du Colombier 
378*25b329d5SDavid du Colombier /* ------------------------------------------------------------------------
379*25b329d5SDavid du Colombier  * Function:      drawfile_bbox()
380*25b329d5SDavid du Colombier  *
381*25b329d5SDavid du Colombier  * Description:   Calls SWI 0x45541
382*25b329d5SDavid du Colombier  *
383*25b329d5SDavid du Colombier  * Input:         flags - value of R0 on entry
384*25b329d5SDavid du Colombier  *                diagram - value of R1 on entry
385*25b329d5SDavid du Colombier  *                size - value of R2 on entry
386*25b329d5SDavid du Colombier  *                trfm - value of R3 on entry
387*25b329d5SDavid du Colombier  *                bbox - value of R4 on entry
388*25b329d5SDavid du Colombier  */
389*25b329d5SDavid du Colombier 
390*25b329d5SDavid du Colombier extern os_error *Drawfile_Bbox (drawfile_bbox_flags flags,
391*25b329d5SDavid du Colombier       drawfile_diagram const *diagram,
392*25b329d5SDavid du Colombier       int size,
393*25b329d5SDavid du Colombier       os_trfm const *trfm,
394*25b329d5SDavid du Colombier       wimp_box *bbox);
395*25b329d5SDavid du Colombier 
396*25b329d5SDavid du Colombier /* ------------------------------------------------------------------------
397*25b329d5SDavid du Colombier  * Function:      Drawfile_DeclareFonts()
398*25b329d5SDavid du Colombier  *
399*25b329d5SDavid du Colombier  * Description:   Calls SWI 0x45542
400*25b329d5SDavid du Colombier  *
401*25b329d5SDavid du Colombier  * Input:         flags - value of R0 on entry
402*25b329d5SDavid du Colombier  *                diagram - value of R1 on entry
403*25b329d5SDavid du Colombier  *                size - value of R2 on entry
404*25b329d5SDavid du Colombier  */
405*25b329d5SDavid du Colombier 
406*25b329d5SDavid du Colombier extern os_error *Drawfile_DeclareFonts (drawfile_declare_fonts_flags flags,
407*25b329d5SDavid du Colombier       drawfile_diagram const *diagram,
408*25b329d5SDavid du Colombier       int size);
409*25b329d5SDavid du Colombier 
410*25b329d5SDavid du Colombier /* ------------------------------------------------------------------------
411*25b329d5SDavid du Colombier  * Function:      Drawfile_CreateDiagram()
412*25b329d5SDavid du Colombier  *
413*25b329d5SDavid du Colombier  */
414*25b329d5SDavid du Colombier 
415*25b329d5SDavid du Colombier extern os_error * Drawfile_CreateDiagram(drawfile_info *info, size_t memory,
416*25b329d5SDavid du Colombier 	const char *creator, wimp_box box);
417*25b329d5SDavid du Colombier 
418*25b329d5SDavid du Colombier extern os_error *Drawfile_AppendObject(drawfile_info *info, size_t memory,
419*25b329d5SDavid du Colombier 	const drawfile_object *object, BOOL rebind);
420*25b329d5SDavid du Colombier 
421*25b329d5SDavid du Colombier extern os_error *Drawfile_RenderDiagram(drawfile_info *info,
422*25b329d5SDavid du Colombier 	window_redrawblock *redraw, double scale);
423*25b329d5SDavid du Colombier 
424*25b329d5SDavid du Colombier extern os_error *Drawfile_VerifyDiagram(drawfile_info *info);
425*25b329d5SDavid du Colombier 
426*25b329d5SDavid du Colombier extern void	Drawfile_QueryBox(drawfile_info *info,
427*25b329d5SDavid du Colombier 	wimp_box *rect, BOOL screenUnits);
428*25b329d5SDavid du Colombier 
429*25b329d5SDavid du Colombier #if defined(__cplusplus)
430*25b329d5SDavid du Colombier    }
431*25b329d5SDavid du Colombier #endif /* __cplusplus */
432*25b329d5SDavid du Colombier 
433*25b329d5SDavid du Colombier #endif /* __drawfile.h */
434