# HG changeset patch # User Ben Abbott # Date 1332797876 14400 # Node ID 36cfbd23fe9fbd1aec6e2f5ba520d321b2e40b73 # Parent 9fc75cdf61abbc1949ad6468203d643bf0ed9e34 Fix papersize updater. Bug # 35908. * grpahics.cc (figure::properities::update_papersize): Save papersize in proper units. Add tests. diff --git a/src/graphics.cc b/src/graphics.cc --- a/src/graphics.cc +++ b/src/graphics.cc @@ -3585,8 +3585,8 @@ } else if (punits == "points") { - sz(0) = 72.0; - sz(1) = 72.0; + sz(0) /= 72.0; + sz(1) /= 72.0; } if (punits == "normalized") { @@ -3656,6 +3656,16 @@ // update_papersize and update_papertype papertype.set (typ); } + if (punits == "centimeters") + { + sz(0) *= 2.54; + sz(1) *= 2.54; + } + else if (punits == "points") + { + sz(0) *= 72.0; + sz(1) *= 72.0; + } if (get_paperorientation () == "landscape") { std::swap (sz(0), sz(1)); @@ -3663,6 +3673,31 @@ } } +/* +%!test +%! figure (1, "visible", "off"); +%! set (1, "paperunits", "inches"); +%! set (1, "papersize", [5, 4]) +%! set (1, "paperunits", "points"); +%! assert (get (1, "papersize"), [5, 4] * 72, 1) +%! papersize = get (gcf, "papersize"); +%! set (1, "papersize", papersize + 1); +%! set (1, "papersize", papersize) +%! assert (get (1, "papersize"), [5, 4] * 72, 1) +%! close (1) +%!test +%! figure (1, "visible", "off"); +%! set (1, "paperunits", "inches"); +%! set (1, "papersize", [5, 4]) +%! set (1, "paperunits", "centimeters"); +%! assert (get (1, "papersize"), [5, 4] * 2.54, 2.54/72) +%! papersize = get (gcf, "papersize"); +%! set (1, "papersize", papersize + 1); +%! set (1, "papersize", papersize) +%! assert (get (1, "papersize"), [5, 4] * 2.54, 2.54/72) +%! close (1) +*/ + void figure::properties::update_paperorientation (void) {