Mercurial > octave
changeset 28613:b11f026bc443
maint: merge stable to default.
author | Rik <rik@octave.org> |
---|---|
date | Mon, 03 Aug 2020 08:07:27 -0700 |
parents | deebf4428e56 (current diff) bdc53d9affb2 (diff) |
children | 652a675c0916 |
files | scripts/plot/appearance/legend.m |
diffstat | 1 files changed, 20 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/scripts/plot/appearance/legend.m Mon Aug 03 11:05:10 2020 -0400 +++ b/scripts/plot/appearance/legend.m Mon Aug 03 08:07:27 2020 -0700 @@ -1284,10 +1284,17 @@ endswitch endfunction -function pos = boxposition (axpos, pba, ~) +function pos = boxposition (axpos, pba, pbam, dam) + pos = axpos; + + if (strcmp (pbam, "auto") && strcmp (dam, "auto")) + return; + endif + pbratio = pba(1)/pba(2); posratio = axpos(3)/axpos(4); + if (pbratio != posratio) if (posratio < pbratio) pos(4) = pos(3) / pbratio; @@ -1297,6 +1304,7 @@ pos(1) += (axpos(3) - pos(3)) / 2; endif endif + endfunction function update_legend_position (hl, sz) @@ -1353,11 +1361,9 @@ "plotboxaspectratiomode", ... "plotboxaspectratio", ... "dataaspectratiomode"}){:}; - - if (strcmp (pbam, "manual") || strcmp (dam, "manual")) - axpos = boxposition (axpos, pba); - endif - + + axpos = boxposition (axpos, pba, pbam, dam); + lpos = [get(hl, "position")(1:2), sz]; if (! outside) @@ -1412,7 +1418,7 @@ if (axpos(1) < (dx + hmargin)) li(1) = min (dx + hmargin, 0.95 * (axpos(1) + axpos(3))); set (hax, "looseinset", li); - axpos = boxposition (get (hax, "position"), pbam, pba); + axpos = boxposition (get (hax, "position"), pba, pbam, dam); endif lpos(1) = axpos(1) - dx; lpos(2) = axpos(2); @@ -1421,7 +1427,7 @@ if (axpos(1) < (dx + hmargin)) li(1) = min (dx + hmargin, 0.95 * (axpos(1) + axpos(3))); set (hax, "looseinset", li); - axpos = boxposition (get (hax, "position"), pbam, pba); + axpos = boxposition (get (hax, "position"), pba, pbam, dam); endif lpos(1) = axpos(1) - dx; lpos(2) = axpos(2) + axpos(4)/2 - lpos(4)/2; @@ -1430,7 +1436,7 @@ if (axpos(1) < (dx + hmargin)) li(1) = min (dx + hmargin, 0.95 * (axpos(1) + axpos(3))); set (hax, "looseinset", li); - axpos = boxposition (get (hax, "position"), pbam, pba); + axpos = boxposition (get (hax, "position"), pba, pbam, dam); endif lpos(1) = axpos(1) - dx; lpos(2) = axpos(2) + axpos(4) - lpos(4); @@ -1439,7 +1445,7 @@ if (li(4) < (dy + vmargin)) li(4) = min (dy + vmargin, axpos(4)); set (hax, "looseinset", li); - axpos = boxposition (get (hax, "position"), pbam, pba); + axpos = boxposition (get (hax, "position"), pba, pbam, dam); endif lpos(1) = axpos(1) + axpos(3)/2 - lpos(3)/2; lpos(2) = axpos(2) + axpos(4) + vmargin + ti(4); @@ -1448,7 +1454,7 @@ if (li(3) < (dx + hmargin)) li(3) = min (dx + hmargin, axpos(3)); set (hax, "looseinset", li); - axpos = boxposition (get (hax, "position"), pbam, pba); + axpos = boxposition (get (hax, "position"), pba, pbam, dam); endif lpos(1) = axpos(1) + axpos(3) + hmargin + ti(3); lpos(2) = axpos(2) + axpos(4) - lpos(4); @@ -1457,7 +1463,7 @@ if (li(3) < (dx + hmargin)) li(3) = min (dx + hmargin, axpos(3)); set (hax, "looseinset", li); - axpos = boxposition (get (hax, "position"), pbam, pba); + axpos = boxposition (get (hax, "position"), pba, pbam, dam); endif lpos(1) = axpos(1) + axpos(3) + hmargin + ti(3); lpos(2) = axpos(2) + axpos(4)/2 - lpos(4)/2; @@ -1466,7 +1472,7 @@ if (li(3) < (dx + hmargin)) li(3) = min (dx + hmargin, axpos(3)); set (hax, "looseinset", li); - axpos = boxposition (get (hax, "position"), pbam, pba); + axpos = boxposition (get (hax, "position"), pba, pbam, dam); endif lpos(1) = axpos(1) + axpos(3) + hmargin + ti(3); lpos(2) = axpos(2); @@ -1475,7 +1481,7 @@ if (li(2) < (dy + vmargin)) li(2) = min (dy + vmargin, 0.95 * (axpos(2) + axpos(4))); set (hax, "looseinset", li); - axpos = boxposition (get (hax, "position"), pbam, pba); + axpos = boxposition (get (hax, "position"), pba, pbam, dam); endif lpos(1) = axpos(1) + axpos(3)/2 - lpos(3)/2; lpos(2) = axpos(2) - lpos(4) - vmargin - ti(2);