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