X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Foutput%2Ftable.h;h=93f4d1e9a1c742b20d7a334bacfefeea2cdbcd92;hb=b74d09af5e07f954c18e7cdb8aca3af47fa10208;hp=4fa459759e178e76b909162637dd9e7b0ad85c82;hpb=5fd22ca7771c8175ef05e91e1194c3c4096337f4;p=pspp-builds.git diff --git a/src/output/table.h b/src/output/table.h index 4fa45975..93f4d1e9 100644 --- a/src/output/table.h +++ b/src/output/table.h @@ -21,34 +21,35 @@ #define tab_h 1 #include -#include "str.h" +#include /* Cell options. */ enum { TAB_NONE = 0, - /* Must match output.h: OUTP_T_JUST_*. */ TAB_ALIGN_MASK = 03, /* Alignment mask. */ TAB_RIGHT = 00, /* Right justify. */ TAB_LEFT = 01, /* Left justify. */ TAB_CENTER = 02, /* Center. */ - /* Oddball cell types. */ - TAB_JOIN = 010, /* Joined cell. */ - TAB_EMPTY = 020 /* Empty cell. */ + /* Cell types. */ + TAB_JOIN = 004, /* Joined cell. */ + TAB_EMPTY = 010, /* Empty cell. */ + + /* Flags. */ + TAB_EMPH = 020, /* Emphasize cell contents. */ + TAB_FIX = 040, /* Use fixed font. */ }; -/* Line styles. These must match output.h:OUTP_L_*. */ +/* Line styles. */ enum { TAL_0 = 0, /* No line. */ TAL_1 = 1, /* Single line. */ TAL_2 = 2, /* Double line. */ - TAL_3 = 3, /* Special line of driver-defined style. */ + TAL_GAP = 3, /* Spacing but no line. */ TAL_COUNT, /* Number of line styles. */ - - TAL_SPACING = 0200 /* Don't draw the line, just reserve space. */ }; /* Column styles. Must correspond to SOM_COL_*. */ @@ -64,7 +65,7 @@ struct tab_joined_cell int x1, y1; int x2, y2; int hit; - struct fixed_string contents; + struct substring contents; }; struct outp_driver; @@ -79,17 +80,15 @@ struct tab_table /* Contents. */ int col_style; /* Columns: One of TAB_COL_*. */ int col_group; /* Number of rows per column group. */ - struct fixed_string title; /* Table title. */ + char *title; /* Table title. */ unsigned flags; /* SOMF_*. */ int nc, nr; /* Number of columns, rows. */ int cf; /* Column factor for indexing purposes. */ int l, r, t, b; /* Number of header rows on each side. */ - struct fixed_string *cc; /* Cell contents; fixed_string *[nr][nc]. */ + struct substring *cc; /* Cell contents; substring *[nr][nc]. */ unsigned char *ct; /* Cell types; unsigned char[nr][nc]. */ unsigned char *rh; /* Horiz rules; unsigned char[nr+1][nc]. */ - unsigned char *trh; /* Types of horiz rules; [nr+1]. */ unsigned char *rv; /* Vert rules; unsigned char[nr][nc+1]. */ - unsigned char *trv; /* Types of vert rules; [nc+1]. */ tab_dim_func *dim; /* Calculates cell widths and heights. */ /* Calculated during output. */ @@ -98,17 +97,11 @@ struct tab_table int *hrh; /* Heights of horizontal rules; [nr+1]. */ int *wrv; /* Widths of vertical rules; [nc+1]. */ int wl, wr, ht, hb; /* Width/height of header rows/columns. */ - int hr_tot, vr_tot; /* Hrules total height, vrules total width. */ /* Editing info. */ int col_ofs, row_ofs; /* X and Y offsets. */ -#if DEBUGGING - int reallocable; /* Can table be reallocated? */ -#endif }; -extern int tab_hit; - /* Number of rows in TABLE. */ #define tab_nr(TABLE) ((TABLE)->nr) @@ -134,7 +127,8 @@ void tab_resize (struct tab_table *, int nc, int nr); void tab_realloc (struct tab_table *, int nc, int nr); void tab_headers (struct tab_table *, int l, int r, int t, int b); void tab_columns (struct tab_table *, int style, int group); -void tab_title (struct tab_table *, int format, const char *, ...); +void tab_title (struct tab_table *, const char *, ...) + PRINTF_FORMAT (2, 3); void tab_flags (struct tab_table *, unsigned); void tab_submit (struct tab_table *); @@ -155,8 +149,7 @@ enum { TAT_NONE = 0, /* No options. */ TAT_PRINTF = 0x0100, /* Format the text string with sprintf. */ - TAT_TITLE = 0x0204, /* Title attributes. */ - TAT_FIX = 0x0400, /* Use fixed-pitch font. */ + TAT_TITLE = 0x0200 | TAB_EMPH, /* Title attributes. */ TAT_NOWRAP = 0x0800 /* No text wrap (tab_output_text() only). */ }; @@ -177,7 +170,7 @@ void tab_joint_text (struct tab_table *, int x1, int y1, int x2, int y2, /* Cell low-level access. */ #define tab_alloc(TABLE, AMT) pool_alloc ((TABLE)->container, (AMT)) void tab_raw (struct tab_table *, int c, int r, unsigned opt, - struct fixed_string *); + struct substring *); /* Editing. */ void tab_offset (struct tab_table *, int col, int row);