X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Foutput%2Fcairo.c;h=1de46b25bbe9ce7f7fbe3ee92ea3aae6563bb8ee;hb=376bc1e2594564c432857c50f2f779093ce70710;hp=72cf51c3660eaaf006d2298c0d6636db355dc20c;hpb=8f7485c445a5e14f9f6a95392367158fa38119d9;p=pspp-builds.git diff --git a/src/output/cairo.c b/src/output/cairo.c index 72cf51c3..1de46b25 100644 --- a/src/output/cairo.c +++ b/src/output/cairo.c @@ -184,7 +184,7 @@ opt (struct output_driver *d, struct string_map *options, const char *key, Currently, the input string must be of the form "#RRRRGGGGBBBB" Future implementations might allow things like "yellow" and "sky-blue-ultra-brown" - */ +*/ static void parse_color (struct output_driver *d, struct string_map *options, const char *key, const char *default_value, @@ -240,20 +240,15 @@ parse_font (struct output_driver *d, struct string_map *options, return desc; } -static struct xr_driver * -xr_allocate (const char *name, int device_type, struct string_map *o) + +static void +apply_options (struct xr_driver *xr, struct string_map *o) { - int paper_width, paper_length; - struct output_driver *d; - struct xr_driver *xr; - int font_points; + struct output_driver *d = &xr->driver; - xr = xzalloc (sizeof *xr); - d = &xr->driver; - output_driver_init (d, &cairo_driver_class, name, device_type); + int paper_width, paper_length; - font_points = parse_int (opt (d, o, "font-size", "10000"), - 1000, 1000000); + int font_points = parse_int (opt (d, o, "font-size", "10000"), 1000, 1000000); xr->fonts[XR_FONT_FIXED].desc = parse_font (d, o, "fixed-font", "monospace", font_points); xr->fonts[XR_FONT_PROPORTIONAL].desc = parse_font (d, o, "prop-font", @@ -277,6 +272,17 @@ xr_allocate (const char *name, int device_type, struct string_map *o) xr->width = paper_width - xr->left_margin - xr->right_margin; xr->length = paper_length - xr->top_margin - xr->bottom_margin; +} + +static struct xr_driver * +xr_allocate (const char *name, int device_type, struct string_map *o) +{ + struct xr_driver *xr = xzalloc (sizeof *xr); + struct output_driver *d = &xr->driver; + + output_driver_init (d, &cairo_driver_class, name, device_type); + + apply_options (xr, o); return xr; } @@ -934,6 +940,8 @@ struct xr_rendering #define CHART_WIDTH 500 #define CHART_HEIGHT 375 + + struct xr_driver * xr_driver_create (cairo_t *cairo, struct string_map *options) { @@ -971,6 +979,12 @@ xr_rendering_create_text (struct xr_driver *xr, const char *text, cairo_t *cr) return r; } +void +xr_rendering_apply_options (struct xr_rendering *xr, struct string_map *o) +{ + apply_options (xr->xr, o); +} + struct xr_rendering * xr_rendering_create (struct xr_driver *xr, const struct output_item *item, cairo_t *cr)