projects
/
pspp
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
fad31c2
)
cairo-fsm: Always center rotated cells.
author
Ben Pfaff
<blp@cs.stanford.edu>
Mon, 28 Dec 2020 21:54:01 +0000
(13:54 -0800)
committer
Ben Pfaff
<blp@cs.stanford.edu>
Mon, 28 Dec 2020 22:12:21 +0000
(14:12 -0800)
src/output/cairo-fsm.c
patch
|
blob
|
history
diff --git
a/src/output/cairo-fsm.c
b/src/output/cairo-fsm.c
index 6988d3f76cebe523cca41cbde82cbb239f3430a4..1602aae2893dffe5bca737c1e0168107b1cc99b4 100644
(file)
--- a/
src/output/cairo-fsm.c
+++ b/
src/output/cairo-fsm.c
@@
-817,6
+817,9
@@
xr_layout_cell_text (struct xr_fsm *xr, const struct table_cell *cell,
bb[X][1] == INT_MAX ? -1 : xr_to_pango (bb[X][1] - bb[X][0]));
pango_layout_set_wrap (layout, PANGO_WRAP_WORD);
bb[X][1] == INT_MAX ? -1 : xr_to_pango (bb[X][1] - bb[X][0]));
pango_layout_set_wrap (layout, PANGO_WRAP_WORD);
+ int size[TABLE_N_AXES];
+ pango_layout_get_size (layout, &size[H], &size[V]);
+
if (clip[H][0] != clip[H][1])
{
cairo_save (xr->cairo);
if (clip[H][0] != clip[H][1])
{
cairo_save (xr->cairo);
@@
-824,8
+827,10
@@
xr_layout_cell_text (struct xr_fsm *xr, const struct table_cell *cell,
xr_clip (xr, clip);
if (options & TAB_ROTATE)
{
xr_clip (xr, clip);
if (options & TAB_ROTATE)
{
+ int extra = bb[H][1] - bb[H][0] - size[V];
+ int halign_offset = extra > 0 ? extra / 2 : 0;
cairo_translate (xr->cairo,
cairo_translate (xr->cairo,
- xr_to_pt (bb[H][0]),
+ xr_to_pt (bb[H][0]
+ halign_offset
),
xr_to_pt (bb[V][1]));
cairo_rotate (xr->cairo, -M_PI_2);
}
xr_to_pt (bb[V][1]));
cairo_rotate (xr->cairo, -M_PI_2);
}
@@
-864,8
+869,6
@@
xr_layout_cell_text (struct xr_fsm *xr, const struct table_cell *cell,
cairo_restore (xr->cairo);
}
cairo_restore (xr->cairo);
}
- int size[TABLE_N_AXES];
- pango_layout_get_size (layout, &size[H], &size[V]);
int w = pango_to_xr (size[X]);
int h = pango_to_xr (size[Y]);
if (w > *widthp)
int w = pango_to_xr (size[X]);
int h = pango_to_xr (size[Y]);
if (w > *widthp)