X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Foutput%2Foutput.h;h=ec9ae87d968391947dcc4f788998e209a73dd99b;hb=d844266ecd4aebd32f55ab22d6ca4266d4a0c4e1;hp=32ad6cef96f4d1946a10535f0ff8e26b109f2005;hpb=43b1296aafe7582e7dbe6c2b6a8b478d7d9b0fcf;p=pspp-builds.git diff --git a/src/output/output.h b/src/output/output.h index 32ad6cef..ec9ae87d 100644 --- a/src/output/output.h +++ b/src/output/output.h @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 1997-9, 2000 Free Software Foundation, Inc. + Copyright (C) 1997-9, 2000, 2007, 2009 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -14,14 +14,12 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#if !output_h -#define output_h 1 - -#include +#ifndef OUTPUT_OUTPUT_H +#define OUTPUT_OUTPUT_H 1 +#include #include - /* Line styles. */ enum outp_line_style { @@ -67,12 +65,17 @@ struct outp_class const char *name; /* Name of this driver class. */ int special; /* Boolean value. */ - bool (*open_driver) (struct outp_driver *, struct substring options); + bool (*open_driver) (const char *name, int types, + struct substring options); bool (*close_driver) (struct outp_driver *); void (*open_page) (struct outp_driver *); void (*close_page) (struct outp_driver *); + void (*flush) (struct outp_driver *); + + void (*output_chart) (struct outp_driver *, const struct chart *); + /* special != 0 only. */ void (*submit) (struct outp_driver *, struct som_entity *); @@ -83,8 +86,6 @@ struct outp_class void (*text_metrics) (struct outp_driver *, const struct outp_text *, int *width, int *height); void (*text_draw) (struct outp_driver *, const struct outp_text *); - void (*initialise_chart)(struct outp_driver *, struct chart *); - void (*finalise_chart)(struct outp_driver *, struct chart *); }; /* Device types. */ @@ -99,7 +100,7 @@ enum /* Defines the configuration of an output driver. */ struct outp_driver { - struct outp_driver *next, *prev; /* List of drivers. */ + struct ll node; /* Node in list of drivers. */ const struct outp_class *class; /* Driver class. */ char *name; /* Name of this driver. */ bool page_open; /* 1=page is open, 0=page is closed. */ @@ -114,7 +115,6 @@ struct outp_driver int vert_line_width[OUTP_L_COUNT]; /* Width of vertical lines. */ void *ext; /* Private extension record. */ - void *prc; /* Per-procedure extension record. */ }; /* Option structure for the keyword recognizer. */ @@ -131,8 +131,15 @@ extern char *outp_title; extern char *outp_subtitle; void outp_init (void); -void outp_read_devices (void); void outp_done (void); +void outp_read_devices (void); +void outp_configure_driver_line (struct substring); + +struct outp_driver *outp_allocate_driver (const struct outp_class *class, + const char *name, int types); +void outp_free_driver (struct outp_driver *); +void outp_register_driver (struct outp_driver *); +void outp_unregister_driver (struct outp_driver *); void outp_configure_clear (void); void outp_configure_add (char *); @@ -140,25 +147,33 @@ void outp_configure_macro (char *); void outp_list_classes (void); -void outp_enable_device (int enable, int device); +void outp_enable_device (bool enable, int device); struct outp_driver *outp_drivers (struct outp_driver *); -bool outp_parse_options (struct substring options, - bool (*) (struct outp_driver *, const char *key, - const struct string *value), - struct outp_driver *); +bool outp_parse_options (const char *driver_name, struct substring options, + bool (*callback) (void *aux, const char *key, + const struct string *value), + void *aux); int outp_match_keyword (const char *, const struct outp_option *, int *); -int outp_evaluate_dimension (char *, char **); -bool outp_get_paper_size (char *, int *h, int *v); +int outp_evaluate_dimension (const char *); +bool outp_get_paper_size (const char *, int *h, int *v); void outp_open_page (struct outp_driver *); void outp_close_page (struct outp_driver *); void outp_eject_page (struct outp_driver *); +void outp_flush (struct outp_driver *); int outp_string_width (struct outp_driver *, const char *, enum outp_font); /* Imported from som-frnt.c. */ void som_destroy_driver (struct outp_driver *); -#endif /* output.h */ +/* Common drivers. */ +extern const struct outp_class ascii_class; +extern const struct outp_class postscript_class; +#ifdef HAVE_CAIRO +extern const struct outp_class cairo_class; +#endif + +#endif /* output/output.h */