Warning: Attempt to read property "date" on null in /usr/local/www/websvn.planix.org/blame.php on line 247

Warning: Attempt to read property "msg" on null in /usr/local/www/websvn.planix.org/blame.php on line 247
WebSVN – planix.SVN – Blame – /os/branches/feature_tlsv12/sys/src/cmd/aux/antiword/drawfile.h – Rev 2

Subversion Repositories planix.SVN

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

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