Boost logo

Boost-Commit :

From: pbristow_at_[hidden]
Date: 2007-12-04 07:28:43


Author: pbristow
Date: 2007-12-04 07:28:43 EST (Tue, 04 Dec 2007)
New Revision: 41685
URL: http://svn.boost.org/trac/boost/changeset/41685

Log:
Separated font size & family of X and Y labels, and the values against the ticks.
Text files modified:
   sandbox/SOC/2007/visualization/boost/svg_plot/detail/axis_plot_frame.hpp | 55 ++++++++++++++-------------------------
   sandbox/SOC/2007/visualization/boost/svg_plot/svg_2d_plot.hpp | 30 ++++++++++----------
   2 files changed, 35 insertions(+), 50 deletions(-)

Modified: sandbox/SOC/2007/visualization/boost/svg_plot/detail/axis_plot_frame.hpp
==============================================================================
--- sandbox/SOC/2007/visualization/boost/svg_plot/detail/axis_plot_frame.hpp (original)
+++ sandbox/SOC/2007/visualization/boost/svg_plot/detail/axis_plot_frame.hpp 2007-12-04 07:28:43 EST (Tue, 04 Dec 2007)
@@ -242,8 +242,7 @@
         align_style alignment = center_align;
         if(derived().use_down_ticks)
         { // No need to shift if derived().use_up_ticks as labels are below the X-axis.
- y += derived().x_label_info.font_size();
- // Move down a font height below bottom end of tick.
+ // y += derived().x_label_value.font_size();
         }
         if (derived().x_label_rotation_ == upward)
         { //
@@ -254,40 +253,33 @@
         else if((derived().x_label_rotation_ == downward)
           || (derived().x_label_rotation_ == downhill))
         { // start from tick and write down.
+ y += derived().x_label_value.font_size() * 0.5;
           alignment = left_align;
         }
         else if(derived().x_label_rotation_ == horizontal)
         {
+ y += derived().x_label_value.font_size() * 1.5;
           alignment = center_align; // center on the tick.
         }
         else if(derived().x_label_rotation_ == uphill)
         { // 45 slope up,
           alignment = left_align; // Uphill to end at tick.
           y += label.str().size() * derived().x_label_info.font_size() * 0.7;
- // sloping so need about sin(45) = 0.707 less space,
+ // sloping up so need about sin(45) = 0.707 less space,
           // so the last digit is by the tick.
         }
         else
- { // 45 slope down
+ { // 45 slope down.
           alignment = left_align; // Assume downhill from tick,
- // so no need to y adjustment.
+ // so no need for y adjustment.
         }
 
- //if(derived().use_x_ticks_on_plot_window_) // External style.
- //{ // Always want all values including "0" if labelling on the external plot window.
- // derived().image.get_g_element(detail::PLOT_VALUE_LABELS).text(
- // x1, y, // x centered on tick,
- // label.str(), derived().x_label_info.font_size(), derived().x_label_info.font_family(),
- // "", "", "", "", alignment, // center label on the tick.
- // derived().x_label_rotation_);
- //}
- //else
         { // ! use_x_ticks_on_plot_window_ = Internal - value labels just below horizontal X-axis.
           if (derived().use_x_ticks_on_plot_window_ || ((value != 0) && derived().use_x_axis_lines_))
           { // Avoid a "0" below the X-axis if it would be cut through by any internal vertical Y-axis line.
            derived().image.get_g_element(detail::PLOT_VALUE_LABELS).text(
               x1, y,
- label.str(), derived().x_label_info.font_size(), derived().x_label_info.font_family(),
+ label.str(), derived().x_label_value.font_size(), derived().x_label_value.font_family(),
               "", "", "", "", alignment, // center label on the tick.
               derived().x_label_rotation_);
           }
@@ -528,24 +520,7 @@
       label += " (" + derived().x_units_info.text() + ")";
     }
     // Simplest to start from the bottom of the image.
- // and move up to give enough sapce for the X-axis label.
-
- //double y(0.);
- //transform_y(y);
- //derived().x_axis = y; // X-axis line at y = 0.
- //y += derived().x_label_font_size() * 2.5; // values & label & half line space.
- //if (derived().use_down_ticks)
- //{ // Make space for ticks down.
- // y += (std::max)(derived().x_major_tick_length(), derived().x_minor_tick_length());
- // // Brackets avoid trouble with any nasty macro max.
- // // Use max in case some joker uses longer minor ticks than major.
- //}
- //if (derived().x_ticks_on_plot_window_on())
- //{ // Allow space for the values labelling the ticks.
- // y += derived().x_label_font_size() * derived().text_margin_;
- //}
- // Bottom of plot window plus two char height.
- // derived().plot_y2 + (derived().x_label_font_size() * derived().text_margin_),
+ // and move up to give enough space for the X-axis label.
 
     double y = derived().image.y_size(); // bottom edge of image.
     y -= derived().x_label_font_size(); // Up enough for a space underneath label.
@@ -1442,9 +1417,8 @@
   }
 
   Derived& x_label_font_size(unsigned int i)
- { // TODO May be best to tie these two font sizes together?
+ {
     derived().x_label_info.font_size(i);
- derived().x_units_info.font_size(i);
     return derived();
   }
 
@@ -1453,6 +1427,17 @@
     return derived().x_label_info.font_size();
   }
 
+ Derived& x_value_font_size(unsigned int i)
+ {
+ derived().x_value_value.font_size(i);
+ return derived();
+ }
+
+ unsigned int x_value_font_size()
+ {
+ return derived().x_value_value.font_size();
+ }
+
   Derived& x_label_font_family(const std::string& family)
   {
     derived().x_label_info.font_family(family);

Modified: sandbox/SOC/2007/visualization/boost/svg_plot/svg_2d_plot.hpp
==============================================================================
--- sandbox/SOC/2007/visualization/boost/svg_plot/svg_2d_plot.hpp (original)
+++ sandbox/SOC/2007/visualization/boost/svg_plot/svg_2d_plot.hpp 2007-12-04 07:28:43 EST (Tue, 04 Dec 2007)
@@ -266,8 +266,8 @@
     legend_width_(200), // width of legend box (pixels)
     legend_header_(0, 0, "", 14, "Verdana", "", "", "", "", center_align, horizontal),
     legend_font_width_(0.5),
- x_label_info(0, 0, "X Axis", 14, "Verdana", "", "", "", "", center_align, horizontal),
- x_label_value(0, 0, "", 12, "Verdana", "", "", "", "", center_align, horizontal),
+ x_label_info(0, 0, "X Axis", 16, "Verdana", "", "", "", "", center_align, horizontal),
+ x_label_value(0, 0, "", 10, "Verdana", "", "", "", "", center_align, horizontal),
     // TODO use this and provide way to set'n'get separately.
     x_label_width_(0.5),
     y_label_info(0, 0, "Y Axis", 14, "Verdana", "", "", "", "", center_align, upward),
@@ -504,16 +504,16 @@
          }
         if (y_label_rotation_ == horizontal)
         { // Move edge right to give space for y_value_precision_ digits.
- plot_x1 += y_label_info.font_size() * (l * wh);
+ plot_x1 += y_label_value.font_size() * (l * wh);
         }
         else if((y_label_rotation_ == upward) || (y_label_rotation_ == downward))
         { // Only need one char width.
- plot_x1 += y_label_info.font_size() * 1.5;
+ plot_x1 += y_label_value.font_size() * 1.5;
         }
         else
         { // assume some slope 45? So diagonally down from tick,
           // and takes a bit less room.
- plot_x1 += y_label_info.font_size() * l * wh * sin45;
+ plot_x1 += y_label_value.font_size() * l * wh * sin45;
         }
       }
       if (use_x_major_labels && use_x_ticks_on_plot_window_)
@@ -532,17 +532,17 @@
 
         if ((x_label_rotation_ == upward) || (x_label_rotation_ == downward))
         { // need
- l += 2; // space at top and bottom?
+ l += 2; // extra space at top and bottom?
         }
         else if(x_label_rotation_ != horizontal)
- { // Only 1 char height needed if horizontal.
+ { // Only 1 char height & 1 space needed if horizontal.
           l = 2;
         }
         else
         { // assume some slope, say 45 sin(45) = 0.707?
           l *= 0.707;
         }
- plot_y2 -= x_label_info.font_size() * (l * wh);
+ plot_y2 -= x_label_value.font_size() * l;
       }
       if(use_left_ticks)
       { // Reduce plot to give space for biggest of any external left ticks.
@@ -640,7 +640,7 @@
         //}
         if(use_y_label)
         { // Start further right to give space for y axis value label.
- y1 -= y_label_info.font_size() * text_margin_ ;
+ y1 -= y_label_value.font_size() * text_margin_ ;
         }
 
         if(use_left_ticks)
@@ -694,7 +694,7 @@
           // we might need to move left more for the longer tick.
           x1 -= (y_minor_tick_length_ - y_minor_tick_length_);
         }
- x1 -= y_label_info.font_size(); // move left by a font width.
+ x1 -= y_label_value.font_size(); // move left by a font width.
       }
       else
       { // No need to move if right tick, or none.
@@ -707,7 +707,7 @@
         if(y_label_rotation_ == horizontal)
         { // Just shift down half a digit to center value digits on tick.
           alignment = right_align;
- y += y_label_info.font_size() / 2;
+ y += y_label_value.font_size() / 2;
         }
         else if ((y_label_rotation_ == upward) || (y_label_rotation_ == downward))
         {// Tick value label straight up or down vertically on y axis.
@@ -716,7 +716,7 @@
         }
         else
         { // Assume some 45 slope, so need about sqrt(2) less space?
- x1 += y_label_info.font_size() * 0.5; // move left by half a font width.
+ x1 += y_label_value.font_size() * 0.5; // move left by half a font width.
           // no y shift needed.
           alignment = right_align;
         }
@@ -724,16 +724,16 @@
         image.get_g_element(detail::PLOT_VALUE_LABELS).text(
           x1,
           y,
- label.str(), y_label_info.font_size(), "", "", "", "", "", alignment, y_label_rotation_);
+ label.str(), y_label_value.font_size(), "", "", "", "", "", alignment, y_label_rotation_);
       }
       else
       { // ! use_y_ticks_on_plot_window_Internal - value labels close to left of vertical Y-axis.
         if ((value != 0) && use_x_axis_lines_)
         { // Avoid a zero ON the Y-axis as it would be cut through by the horizontal X-axis line.
- y += y_label_info.font_size() / 2;
+ y += y_label_value.font_size() / 2;
           image.get_g_element(detail::PLOT_VALUE_LABELS).text(x1,
             y, // Just shift down half a digit to center value digits on tick.
- label.str(), y_label_info.font_size(), y_label_info.font_family(), "", "", "", "",
+ label.str(), y_label_value.font_size(), y_label_value.font_family(), "", "", "", "",
             center_align, // on the tick ???
             y_label_rotation_);
         }


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk