comparison libinterp/corefcn/graphics.in.h @ 29650:360d21b028b1

Synchronize positions optionally when updating axes ticks (bug #60583) * graphics.in.h (axes::properties::update_x(y/z)tick): Add bool arguments that defaults to true for synchronizing the axes position. (axes::properties::update_ticklabelinterpreter): Only synchronize once, after all ticks updates are done.
author Pantxo Diribarne <pantxo.diribarne@gmail.com>
date Wed, 12 May 2021 00:11:20 +0200
parents aef11bb4e6d1
children 32f4357ac8d9
comparison
equal deleted inserted replaced
29648:0230f7cf4044 29650:360d21b028b1
4010 void update_tickdir (void) { update_ticklength (); } 4010 void update_tickdir (void) { update_ticklength (); }
4011 void update_tickdirmode (void) { update_ticklength (); } 4011 void update_tickdirmode (void) { update_ticklength (); }
4012 4012
4013 void update_ticklabelinterpreter (void) 4013 void update_ticklabelinterpreter (void)
4014 { 4014 {
4015 update_xtick (); 4015 update_xtick (false);
4016 update_ytick (); 4016 update_ytick (false);
4017 update_ztick (); 4017 update_ztick (true);
4018 } 4018 }
4019 4019
4020 void update_xtick (void) 4020 void update_xtick (bool sync_pos = true)
4021 { 4021 {
4022 calc_ticks_and_lims (xlim, xtick, xminortickvalues, xlimmode.is ("auto"), 4022 calc_ticks_and_lims (xlim, xtick, xminortickvalues, xlimmode.is ("auto"),
4023 xtickmode.is ("auto"), xscale.is ("log")); 4023 xtickmode.is ("auto"), xscale.is ("log"));
4024 if (xticklabelmode.is ("auto")) 4024 if (xticklabelmode.is ("auto"))
4025 calc_ticklabels (xtick, xticklabel, xscale.is ("log"), 4025 calc_ticklabels (xtick, xticklabel, xscale.is ("log"),
4026 xaxislocation_is ("origin"), 4026 xaxislocation_is ("origin"),
4027 yscale.is ("log") ? 2 : 4027 yscale.is ("log") ? 2 :
4028 (yaxislocation_is ("origin") ? 0 : 4028 (yaxislocation_is ("origin") ? 0 :
4029 (yaxislocation_is ("left") ? -1 : 1)), 4029 (yaxislocation_is ("left") ? -1 : 1)),
4030 xlim); 4030 xlim);
4031 sync_positions (); 4031
4032 } 4032 if (sync_pos)
4033 void update_ytick (void) 4033 sync_positions ();
4034 }
4035 void update_ytick (bool sync_pos = true)
4034 { 4036 {
4035 calc_ticks_and_lims (ylim, ytick, yminortickvalues, ylimmode.is ("auto"), 4037 calc_ticks_and_lims (ylim, ytick, yminortickvalues, ylimmode.is ("auto"),
4036 ytickmode.is ("auto"), yscale.is ("log")); 4038 ytickmode.is ("auto"), yscale.is ("log"));
4037 if (yticklabelmode.is ("auto")) 4039 if (yticklabelmode.is ("auto"))
4038 calc_ticklabels (ytick, yticklabel, yscale.is ("log"), 4040 calc_ticklabels (ytick, yticklabel, yscale.is ("log"),
4039 yaxislocation_is ("origin"), 4041 yaxislocation_is ("origin"),
4040 xscale.is ("log") ? 2 : 4042 xscale.is ("log") ? 2 :
4041 (xaxislocation_is ("origin") ? 0 : 4043 (xaxislocation_is ("origin") ? 0 :
4042 (xaxislocation_is ("bottom") ? -1 : 1)), 4044 (xaxislocation_is ("bottom") ? -1 : 1)),
4043 ylim); 4045 ylim);
4044 sync_positions (); 4046
4045 } 4047 if (sync_pos)
4046 void update_ztick (void) 4048 sync_positions ();
4049 }
4050 void update_ztick (bool sync_pos = true)
4047 { 4051 {
4048 calc_ticks_and_lims (zlim, ztick, zminortickvalues, zlimmode.is ("auto"), 4052 calc_ticks_and_lims (zlim, ztick, zminortickvalues, zlimmode.is ("auto"),
4049 ztickmode.is ("auto"), zscale.is ("log")); 4053 ztickmode.is ("auto"), zscale.is ("log"));
4050 if (zticklabelmode.is ("auto")) 4054 if (zticklabelmode.is ("auto"))
4051 calc_ticklabels (ztick, zticklabel, zscale.is ("log"), false, 2, zlim); 4055 calc_ticklabels (ztick, zticklabel, zscale.is ("log"), false, 2, zlim);
4052 sync_positions (); 4056
4057 if (sync_pos)
4058 sync_positions ();
4053 } 4059 }
4054 4060
4055 void update_xtickmode (void) 4061 void update_xtickmode (void)
4056 { 4062 {
4057 if (xtickmode.is ("auto")) 4063 if (xtickmode.is ("auto"))