# HG changeset patch # User Konstantinos Poulios # Date 1298071490 -3600 # Node ID 0cb453f01cf99eda9e46f37e3b3fdf3bb0eb403f # Parent 68daf2a0b56ded488e8f183d415d0c6026166b17 add looseinset property for axes diff -r 68daf2a0b56d -r 0cb453f01cf9 src/ChangeLog --- a/src/ChangeLog Fri Feb 18 22:34:51 2011 +0100 +++ b/src/ChangeLog Sat Feb 19 00:24:50 2011 +0100 @@ -1,3 +1,13 @@ +2011-02-19 Konstantinos Poulios + + * graphics.h.in (class axes::properties): New hidden property + looseinset. + (axes::properties::update_looseinset): New function. + * graphics.cc (axes::properties::init): Initialize looseinset. + (axes::properties::sync_positions): Take looseinset into account + instead of default_axes_position. + (axes::properties::set_defaults): Default values for looseinset. + 2011-02-18 Konstantinos Poulios * graphics.cc (axes::properties::sync_positions): Fix a small diff -r 68daf2a0b56d -r 0cb453f01cf9 src/graphics.cc --- a/src/graphics.cc Fri Feb 18 22:34:51 2011 +0100 +++ b/src/graphics.cc Sat Feb 19 00:24:50 2011 +0100 @@ -3176,6 +3176,7 @@ currentpoint.add_constraint (dim_vector (2, 3)); ticklength.add_constraint (dim_vector (1, 2)); tightinset.add_constraint (dim_vector (1, 4)); + looseinset.add_constraint (dim_vector (1, 4)); x_zlim.resize (1, 2); @@ -3227,6 +3228,11 @@ adopt (ylabel.handle_value ()); adopt (zlabel.handle_value ()); adopt (title.handle_value ()); + + Matrix tlooseinset = default_axes_position (); + tlooseinset(2) = 1-tlooseinset(0)-tlooseinset(2); + tlooseinset(3) = 1-tlooseinset(1)-tlooseinset(3); + looseinset = tlooseinset; } Matrix @@ -3262,16 +3268,20 @@ void axes::properties::sync_positions (void) { - Matrix defpos = default_axes_position (); Matrix pos = position.get ().matrix_value (); Matrix outpos = outerposition.get ().matrix_value (); + Matrix lins = looseinset.get ().matrix_value (); + double lratio = lins(0); + double bratio = lins(1); + double wratio = 1-lins(0)-lins(2); + double hratio = 1-lins(1)-lins(3); if (activepositionproperty.is ("outerposition")) { pos = outpos; - pos(0) = outpos(0) + defpos(0) * outpos(2); - pos(1) = outpos(1) + defpos(1) * outpos(3); - pos(2) = outpos(2) * defpos(2); - pos(3) = outpos(3) * defpos(3); + pos(0) = outpos(0)+lratio*outpos(2); + pos(1) = outpos(1)+bratio*outpos(3); + pos(2) = wratio*outpos(2); + pos(3) = hratio*outpos(3); position = pos; update_transform (); @@ -3341,10 +3351,10 @@ { update_transform (); - outpos(0) = pos(0)-pos(2)*defpos(0)/defpos(2); - outpos(1) = pos(1)-pos(3)*defpos(1)/defpos(3); - outpos(2) = pos(2)/defpos(2); - outpos(3) = pos(3)/defpos(3); + outpos(0) = pos(0)-pos(2)*lratio/wratio; + outpos(1) = pos(1)-pos(3)*bratio/hratio; + outpos(2) = pos(2)/wratio; + outpos(3) = pos(3)/hratio; outerposition = calc_tightbox (outpos); } @@ -3557,6 +3567,11 @@ position = default_axes_position (); + Matrix tlooseinset = default_axes_position (); + tlooseinset(2) = 1-tlooseinset(0)-tlooseinset(2); + tlooseinset(3) = 1-tlooseinset(1)-tlooseinset(3); + looseinset = tlooseinset; + activepositionproperty = "outerposition"; } diff -r 68daf2a0b56d -r 0cb453f01cf9 src/graphics.h.in --- a/src/graphics.h.in Fri Feb 18 22:34:51 2011 +0100 +++ b/src/graphics.h.in Sat Feb 19 00:24:50 2011 +0100 @@ -3296,6 +3296,8 @@ row_vector_property xmtick h , Matrix () row_vector_property ymtick h , Matrix () row_vector_property zmtick h , Matrix () + // hidden properties for inset + array_property looseinset hu , Matrix (1, 4, 0.0) END_PROPERTIES protected: @@ -3394,6 +3396,8 @@ sync_positions (); } + void update_looseinset (void) { sync_positions (); } + double calc_tick_sep (double minval, double maxval); void calc_ticks_and_lims (array_property& lims, array_property& ticks, array_property& mticks, bool limmode_is_auto, bool is_logscale);