X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Foutput%2Fcairo-fsm.c;fp=src%2Foutput%2Fcairo-fsm.c;h=708bedec03756fc379a193151066c31e2197104e;hb=e8a8e5b226a84910ccfd13ddb66c438107724b60;hp=58bbf230d5aada148969733bd73eefe4ebdb66e5;hpb=6b58430f780708e9f5073db71f705e0f2eaacc58;p=pspp diff --git a/src/output/cairo-fsm.c b/src/output/cairo-fsm.c index 58bbf230d5..708bedec03 100644 --- a/src/output/cairo-fsm.c +++ b/src/output/cairo-fsm.c @@ -115,27 +115,12 @@ xr_fsm_style_equals (const struct xr_fsm_style *a, return true; } -/* Renders a single output_item to an output device in one of two ways: - - - 'print == true': Broken across multiple pages if necessary. - - - 'print == false': In a single region that the user may scroll around if - needed. - - Normally 'output_item' corresponds to a single rendering. There is a - special case when 'print == true' and 'output_item' is a table_item with - multiple layers and 'item->pt->table_look->print_all_layers == true'. In - that case, each layer is rendered separately from the FSM's internal point - of view; from the client's point of view, it is all one operation. -*/ struct xr_fsm { struct xr_fsm_style *style; struct output_item *item; - bool print; /* Table items only. */ - size_t *layer_indexes; struct render_params rp; struct render_pager *p; cairo_t *cairo; /* XXX should this be here?! */ @@ -972,10 +957,9 @@ xr_layout_cell (struct xr_fsm *xr, const struct table_cell *cell, #define CHART_WIDTH 500 #define CHART_HEIGHT 375 -static struct xr_fsm * +struct xr_fsm * xr_fsm_create (const struct output_item *item_, - const struct xr_fsm_style *style, cairo_t *cr, - bool print) + const struct xr_fsm_style *style, cairo_t *cr) { if (is_page_setup_item (item_) || is_group_open_item (item_) @@ -1017,14 +1001,6 @@ xr_fsm_create (const struct output_item *item_, || is_chart_item (item) || is_page_eject_item (item)); - size_t *layer_indexes = NULL; - if (is_table_item (item)) - { - layer_indexes = pivot_table_next_layer (table_item->pt, NULL, print); - if (!layer_indexes) - return NULL; - } - static const struct render_ops xrr_render_ops = { .measure_cell_width = xrr_measure_cell_width, .measure_cell_height = xrr_measure_cell_height, @@ -1045,16 +1021,10 @@ xr_fsm_create (const struct output_item *item_, [RENDER_LINE_DOUBLE] = 2 * LW + LS, }; - size_t *layer_indexes = NULL; - if (is_table_item (item) - pivot_table_next_display_layer ( - struct xr_fsm *fsm = xmalloc (sizeof *fsm); *fsm = (struct xr_fsm) { .style = xr_fsm_style_ref (style), .item = item, - .print = print, - .layer_indexes = layer_indexes, .rp = { .ops = &xrr_render_ops, .aux = fsm, @@ -1066,6 +1036,13 @@ xr_fsm_create (const struct output_item *item_, } }; + if (is_table_item (item)) + { + fsm->cairo = cr; + fsm->p = render_pager_create (&fsm->rp, to_table_item (item)); + fsm->cairo = NULL; + } + for (int i = 0; i < XR_N_FONTS; i++) { PangoContext *context = pango_cairo_create_context (cr); @@ -1088,15 +1065,6 @@ xr_fsm_create (const struct output_item *item_, g_object_unref (G_OBJECT (layout)); } - if (is_table_item (item)) - { - struct table_item *table_item = to_table_item (item); - - fsm->cairo = cr; - fsm->p = render_pager_create (&fsm->rp, table_item); - fsm->cairo = NULL; - } - return fsm; }