# HG changeset patch # User Konstantinos Poulios # Date 1291822058 -3600 # Node ID a570d8f86aaaa542dbf574d2b3f547fb99930d50 # Parent 4140f28784c35b73be86474f395f5611486fa3ef Disable auto-positioning of title and axes labels manually positioned. diff -r 4140f28784c3 -r a570d8f86aaa src/ChangeLog --- a/src/ChangeLog Wed Dec 08 15:47:58 2010 +0100 +++ b/src/ChangeLog Wed Dec 08 16:27:38 2010 +0100 @@ -1,3 +1,11 @@ +2010-12-08 Konstantinos Poulios + + * graphics.cc (axes::properties::init, axes::properties::set_defaults): + Initialize in weak mode the properties that are going to be used with + escalated set. + * gl-render.cc (opengl_renderer::draw_axes): Disable auto-positioning + of title and axes labels manually positioned. + 2010-12-08 Konstantinos Poulios * genprops.awk, graphics.h.in (*properties::set_weakly): New method. diff -r 4140f28784c3 -r a570d8f86aaa src/gl-render.cc --- a/src/gl-render.cc Wed Dec 08 15:47:58 2010 +0100 +++ b/src/gl-render.cc Wed Dec 08 16:27:38 2010 +0100 @@ -1089,12 +1089,12 @@ xlabel_props.set_visible ("on"); - // FIXME: auto-positioning should be disabled if the - // label has been positioned manually if (! xlabel_props.get_string ().empty ()) { - xlabel_props.set_horizontalalignment (xstate > AXE_DEPTH_DIR ? "center" : (xySym ? "left" : "right")); - xlabel_props.set_verticalalignment (xstate == AXE_VERT_DIR ? "bottom" : (zd*zv(2) <= 0 ? "top" : "bottom")); + xlabel_props.set_weakly ("horizontalalignment", + xstate > AXE_DEPTH_DIR ? "center" : (xySym ? "left" : "right")); + xlabel_props.set_weakly ("verticalalignment", + xstate == AXE_VERT_DIR ? "bottom" : (zd*zv(2) <= 0 ? "top" : "bottom")); double angle = 0; ColumnVector p = graphics_xform::xform_vector ((x_min+x_max)/2, yPlaneN, zPlane); @@ -1119,8 +1119,8 @@ break; } p = xform.untransform (p(0), p(1), p(2), true); - xlabel_props.set_position (p.extract_n (0, 3).transpose ()); - xlabel_props.set_rotation (angle); + xlabel_props.set_weakly ("position", p.extract_n (0, 3).transpose ()); + xlabel_props.set_weakly ("rotation", angle); } } else @@ -1322,12 +1322,12 @@ ylabel_props.set_visible ("on"); - // FIXME: auto-positioning should be disabled if the - // label has been positioned manually if (! ylabel_props.get_string ().empty ()) { - ylabel_props.set_horizontalalignment (ystate > AXE_DEPTH_DIR ? "center" : (!xySym ? "left" : "right")); - ylabel_props.set_verticalalignment (ystate == AXE_VERT_DIR ? "bottom" : (zd*zv(2) <= 0 ? "top" : "bottom")); + ylabel_props.set_weakly ("horizontalalignment", + ystate > AXE_DEPTH_DIR ? "center" : (!xySym ? "left" : "right")); + ylabel_props.set_weakly ("verticalalignment", + ystate == AXE_VERT_DIR ? "bottom" : (zd*zv(2) <= 0 ? "top" : "bottom")); double angle = 0; ColumnVector p = graphics_xform::xform_vector (xPlaneN, (y_min+y_max)/2, zPlane); @@ -1351,9 +1351,9 @@ p(1) += hmax; break; } - p = xform.untransform(p(0), p(1), p(2), true); - ylabel_props.set_position (p.extract_n (0, 3).transpose ()); - ylabel_props.set_rotation (angle); + p = xform.untransform (p(0), p(1), p(2), true); + ylabel_props.set_weakly ("position", p.extract_n (0, 3).transpose ()); + ylabel_props.set_weakly ("rotation", angle); } } else @@ -1624,14 +1624,14 @@ zlabel_props.set_visible ("on"); - // FIXME: auto-positioning should be disabled if the - // label has been positioned manually if (! zlabel_props.get_string ().empty ()) { bool camAuto = props.cameraupvectormode_is ("auto"); - zlabel_props.set_horizontalalignment ((zstate > AXE_DEPTH_DIR || camAuto) ? "center" : "right"); - zlabel_props.set_verticalalignment(zstate == AXE_VERT_DIR ? "bottom" : ((zd*zv(2) < 0 || camAuto) ? "bottom" : "top")); + zlabel_props.set_weakly ("horizontalalignment", + (zstate > AXE_DEPTH_DIR || camAuto) ? "center" : "right"); + zlabel_props.set_weakly ("verticalalignment", + zstate == AXE_VERT_DIR ? "bottom" : ((zd*zv(2) < 0 || camAuto) ? "bottom" : "top")); double angle = 0; ColumnVector p; @@ -1675,8 +1675,8 @@ break; } p = xform.untransform (p(0), p(1), p(2), true); - zlabel_props.set_position (p.extract_n (0, 3).transpose ()); - zlabel_props.set_rotation (angle); + zlabel_props.set_weakly ("position", p.extract_n (0, 3).transpose ()); + zlabel_props.set_weakly ("rotation", angle); } } else @@ -1690,15 +1690,13 @@ text::properties& title_props = reinterpret_cast (gh_manager::get_object (props.get_title ()).get_properties ()); - - // FIXME: auto-positioning should be disabled if the - // title has been positioned manually + if (! title_props.get_string ().empty ()) { Matrix bb = props.get_boundingbox (true); ColumnVector p = xform.untransform (bb(0)+bb(2)/2, (bb(1)-10), (x_zlim(0)+x_zlim(1))/2, true); - title_props.set_position (p.extract_n(0, 3).transpose ()); + title_props.set_weakly ("position", p.extract_n(0, 3).transpose ()); } set_clipbox (x_min, x_max, y_min, y_max, z_min, z_max); diff -r 4140f28784c3 -r a570d8f86aaa src/graphics.cc --- a/src/graphics.cc Wed Dec 08 15:47:58 2010 +0100 +++ b/src/graphics.cc Wed Dec 08 16:27:38 2010 +0100 @@ -3191,16 +3191,25 @@ xset (zlabel.handle_value (), "handlevisibility", "off"); xset (title.handle_value (), "handlevisibility", "off"); - xset (xlabel.handle_value (), "horizontalalignment", "center"); - xset (ylabel.handle_value (), "horizontalalignment", "center"); - xset (zlabel.handle_value (), "horizontalalignment", "right"); + xset_weakly_forced (xlabel.handle_value (), "horizontalalignment", "center"); + xset_weakly_forced (ylabel.handle_value (), "horizontalalignment", "center"); + xset_weakly_forced (zlabel.handle_value (), "horizontalalignment", "right"); xset (title.handle_value (), "horizontalalignment", "center"); - xset (xlabel.handle_value (), "verticalalignment", "cap"); - xset (ylabel.handle_value (), "verticalalignment", "bottom"); + xset_weakly_forced (xlabel.handle_value (), "verticalalignment", "cap"); + xset_weakly_forced (ylabel.handle_value (), "verticalalignment", "bottom"); + xset_weakly_forced (zlabel.handle_value (), "verticalalignment", "middle"); xset (title.handle_value (), "verticalalignment", "bottom"); - xset (ylabel.handle_value (), "rotation", 90.0); + xset_weakly_forced (xlabel.handle_value (), "position", Matrix (1, 3, 0.0)); + xset_weakly_forced (ylabel.handle_value (), "position", Matrix (1, 3, 0.0)); + xset_weakly_forced (zlabel.handle_value (), "position", Matrix (1, 3, 0.0)); + xset_weakly_forced (title.handle_value (), "position", Matrix (1, 3, 0.0)); + + xset_weakly_forced (xlabel.handle_value (), "rotation", 0.0); + xset_weakly_forced (ylabel.handle_value (), "rotation", 90.0); + xset_weakly_forced (zlabel.handle_value (), "rotation", 0.0); + xset (zlabel.handle_value (), "visible", "off"); xset (xlabel.handle_value (), "clipping", "off"); @@ -3430,16 +3439,25 @@ xset (zlabel.handle_value (), "handlevisibility", "off"); xset (title.handle_value (), "handlevisibility", "off"); - xset (xlabel.handle_value (), "horizontalalignment", "center"); - xset (ylabel.handle_value (), "horizontalalignment", "center"); - xset (zlabel.handle_value (), "horizontalalignment", "right"); + xset_weakly_forced (xlabel.handle_value (), "horizontalalignment", "center"); + xset_weakly_forced (ylabel.handle_value (), "horizontalalignment", "center"); + xset_weakly_forced (zlabel.handle_value (), "horizontalalignment", "right"); xset (title.handle_value (), "horizontalalignment", "center"); - xset (xlabel.handle_value (), "verticalalignment", "cap"); - xset (ylabel.handle_value (), "verticalalignment", "bottom"); + xset_weakly_forced (xlabel.handle_value (), "verticalalignment", "cap"); + xset_weakly_forced (ylabel.handle_value (), "verticalalignment", "bottom"); + xset_weakly_forced (zlabel.handle_value (), "verticalalignment", "middle"); xset (title.handle_value (), "verticalalignment", "bottom"); - xset (ylabel.handle_value (), "rotation", 90.0); + xset_weakly_forced (xlabel.handle_value (), "position", Matrix (1, 3, 0.0)); + xset_weakly_forced (ylabel.handle_value (), "position", Matrix (1, 3, 0.0)); + xset_weakly_forced (zlabel.handle_value (), "position", Matrix (1, 3, 0.0)); + xset_weakly_forced (title.handle_value (), "position", Matrix (1, 3, 0.0)); + + xset_weakly_forced (xlabel.handle_value (), "rotation", 0.0); + xset_weakly_forced (ylabel.handle_value (), "rotation", 90.0); + xset_weakly_forced (zlabel.handle_value (), "rotation", 0.0); + xset (zlabel.handle_value (), "visible", "off"); xset (xlabel.handle_value (), "clipping", "off");