Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r51642 - in sandbox/SOC/2007/visualization/boost/svg_plot: . detail
From: pbristow_at_[hidden]
Date: 2009-03-07 13:46:32


Author: pbristow
Date: 2009-03-07 13:46:31 EST (Sat, 07 Mar 2009)
New Revision: 51642
URL: http://svn.boost.org/trac/boost/changeset/51642

Log:
1d and 2d improved and control of uncertainty font, color added.
Text files modified:
   sandbox/SOC/2007/visualization/boost/svg_plot/detail/axis_plot_frame.hpp | 95 +++++++++++++++++++++++++++++----------
   sandbox/SOC/2007/visualization/boost/svg_plot/show_2d_settings.hpp | 9 +++
   sandbox/SOC/2007/visualization/boost/svg_plot/svg_2d_plot.hpp | 56 ++++++++++++++++++++--
   sandbox/SOC/2007/visualization/boost/svg_plot/svg_style.hpp | 50 ++++++++++++--------
   4 files changed, 156 insertions(+), 54 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 2009-03-07 13:46:31 EST (Sat, 07 Mar 2009)
@@ -48,6 +48,8 @@
     // when they are in svg_2d_plot.hpp
 
     static const double sin45 = 0.707; //!< Use to calculate 'length' if axis value labels are sloping.
+ static const double reducer = 0.9; // To make uncertainty and df a bit smaller to distinguish from value.
+ // 0.8 reduced from value 12, to 9 which is a bit too small.
 
     // x_axis_position_ and y_axis_position_ use x_axis_intersect & y_axis_intersect
     enum x_axis_intersect
@@ -87,9 +89,8 @@
         */
         //protected:
       public:
- // --------------------------------------------------------------------
         // We don't use the SVG coordinate transform because then text would
- // be flipped. I'm considering using it to scale the image for resizes.
+ // be flipped. Might use it to scale the image for resizes.
 
         // protected member functions (defined below):
 
@@ -1125,10 +1126,9 @@
               rot = uphill;
              break;
             } // switch
-
- text_element& t = g_ptr.text(x, y, stripped, val_style.values_text_style_, al, rot); // X or Y value "1.23"
- int f = static_cast<int>(val_style.values_text_style_.font_size() * 0.8); // Make uncertainty and df a bit smaller to distinguish from value.
-
+ text_element& t = g_ptr.text(x, y, stripped, val_style.values_text_style_, al, rot); // X or Y value "1.23".
+ int udf_font = static_cast<int>(val_style.values_text_style_.font_size() * reducer);
+
             std::string label_u; // Uncertainty or plusminus.
             std::string label_df; // Degrees of freedom estimate.
             std::string pm = "&#x00A0;&#x00B1;"; //! Unicode space plusminus glyph.
@@ -1147,8 +1147,8 @@
               )
             { // Uncertainty estimate usually 95% confidence interval + or - 2 standard deviation.
               label_u = sv(u, val_style, true); // stripped.
- t.tspan(pm).fill_color(darkcyan);
- t.tspan(label_u).fill_color(purple).font_size(f);
+ t.tspan(pm).fill_color(val_style.plusminus_color_);
+ t.tspan(label_u).fill_color(val_style.plusminus_color_).font_size(udf_font);
               // TODO Colors should not be hard coded.
             }
             if (val_style.df_on_ == true // Is wanted.
@@ -1161,13 +1161,14 @@
               label << "&#x00A0;(" << df << ")"; // "123"
               // Explicit space "&#x00A0;" seems necessary.
               label_df = label.str();
- t.tspan(label_df).fill_color(brown).font_size(f);
+ t.tspan(label_df).fill_color(val_style.df_color_).font_size(udf_font);
             }
 
           } // void draw_plot_point_value(double x, double y, g_element& g_ptr, double value)
 
           std::string sv(double v, const value_style& sty, bool precise = false)
           { //! Strip from double value any unecessary e, +, & leading exponent zeros, reducing "1.200000" to "1.2" or "3.4e1"...
+ // TODO rename fo strip_value?
             std::stringstream label;
             // Precision of uncertainty is usually less than precision of value,
             // label.precision((unc) ? ((sty.value_precision_ > 3) ? sty.value_precision_-2 : 1) : sty.value_precision_);
@@ -1276,10 +1277,10 @@
             // something that proves to be very effective at visually separating
             // value and uncertainty, and degrees of freedom estimate.
             // So the coding complexity is judged with it (even if it may not always work right yet ;-)
-
+ // prefix, separator and suffix are all black at present.
             // Tasteless colors and font changes are purely proof of concept.
 
- int fx = static_cast<int>(y_sty.values_text_style_.font_size() * 0.8);
+ int fx = static_cast<int>(x_sty.values_text_style_.font_size() * reducer);
             // Make uncertainty and df a bit smaller to distinguish from value by default (but make configurable).
             // X value (and optional uncertainty & df).
             text_element& t = x_g_ptr.text(x, y, label_xv, x_sty.values_text_style_, al, rot);
@@ -1294,8 +1295,10 @@
                 )
             { // Uncertainty estimate usually 95% confidence interval + or - 2 standard deviation.
               label_xu = sv(ux, x_sty, true);
- t.tspan(pm).fill_color(darkcyan);
- t.tspan(label_xu).fill_color(darkcyan).font_weight("bold").font_size(fx);
+ //t.tspan(pm).fill_color(darkcyan);
+ // Should this be stroke_color?
+ t.tspan(pm).fill_color(x_sty.plusminus_color_);
+ t.tspan(label_xu).fill_color(x_sty.plusminus_color_).font_size(fx); // .font_weight("bold")
             }
             if (
                  (x_sty.df_on_ == true) // Is wanted.
@@ -1309,14 +1312,14 @@
               label << "&#x00A0;(" << dfx << ")"; // "123.5"
               // Explicit space "&#x00A0;" seems necessary.
               label_xdf = label.str();
- t.tspan(label_xdf).fill_color(brown).font_size(fx);
+ t.tspan(label_xdf).fill_color(x_sty.df_color_).font_size(fx);
             }
- int fy = static_cast<int>(y_sty.values_text_style_.font_size() * 0.8);
+ int fy = static_cast<int>(y_sty.values_text_style_.font_size() * reducer);
            // If there is a separator, put values on the same line, else as below put below the marker.
             bool sameline = (x_sty.separator_ != ""); // Might add to value_style? to allow 1.2, with 3.4 on line below.
             if (sameline)
             { // On same line so no change in y.
- t.tspan(x_sty.separator_).fill_color(brown).font_size(fx); // Separator like comma and leading space ", ".
+ t.tspan(x_sty.separator_).fill_color(black).font_size(fx); // Separator like comma and leading space ", ".
               t.tspan(label_yv, y_sty.values_text_style_); // Color?
               if (
                    (y_sty.plusminus_on_) // Is wanted.
@@ -1326,7 +1329,7 @@
                  // Precision of uncertainty is usually less than value,
                 label_yu = "&#x00A0;" + sv(uy, y_sty, true);
                 t.tspan(pm).font_family("arial").font_size(fy).fill_color(green);
- t.tspan(label_yu).fill_color(green).font_size(fy);
+ t.tspan(label_yu).fill_color(y_sty.plusminus_color_).font_size(fy);
               }
               if ((y_sty.df_on_ == true)
                 && (dfy != (std::numeric_limits<unsigned short int>::max)())
@@ -1337,7 +1340,7 @@
                 //label.flags(sty.value_ioflags_); // Leave at default.
                 label <<"&#x00A0;(" << dfy << ")"; // "123.5"
                 label_ydf = label.str();
- t.tspan(label_ydf).fill_color(lime).font_size(fy);
+ t.tspan(label_ydf).fill_color(y_sty.df_color_).font_size(fy);
               }
               if (y_sty.prefix_ != "")
               { // Want a suffix like "]" - with the Y values font size, not reduced for uncertainty info.
@@ -1357,8 +1360,8 @@
               { // Uncertainty estimate usually 95% confidence interval + or - 2 standard deviation.
                  // Precision of uncertainty is usually less than value,
                 label_yu = "&#x00A0;" + sv(uy, y_sty, true);
- ty.tspan(pm).font_family("arial").font_size(fy).fill_color(green);
- ty.tspan(label_yu).fill_color(green).font_size(fy);
+ ty.tspan(pm).font_family("arial").font_size(fy).fill_color(y_sty.plusminus_color_);
+ ty.tspan(label_yu).fill_color(y_sty.plusminus_color_).font_size(fy);
               }
               if ((y_sty.df_on_ == true) // Is wanted.
                     && (dfy != (std::numeric_limits<unsigned short int>::max)()) // and deg_free is defined OK.
@@ -1369,11 +1372,11 @@
                 //label.flags(sty.value_ioflags_); // Leave at default.
                 label <<"&#x00A0;(" << dfy << ")"; // "123.5"
                 label_ydf = label.str();
- ty.tspan(label_ydf).fill_color(lime).font_size(fy);
+ ty.tspan(label_ydf).fill_color(y_sty.df_color_).font_size(fy);
               }
               if (y_sty.prefix_ != "")
               { // Want a suffix like "]"
- ty.tspan(y_sty.suffix_).fill_color(lime).font_size(fy);
+ ty.tspan(y_sty.suffix_).fill_color(black).font_size(fy);
               }
             }
           } // void draw_plot_point_values(double x, double y, g_element& g_ptr, double value)
@@ -1658,6 +1661,7 @@
           Derived& x_values_font_family(const std::string& family);
           const std::string& x_values_font_family();
           Derived& x_major_interval(double inter);
+
           Derived& x_values_color(const svg_color& col);
           svg_color x_values_color();
           Derived& x_values_rotation(rotate_style rotate);
@@ -1668,8 +1672,12 @@
           std::ios_base::fmtflags x_values_ioflags();
           Derived& x_plusminus_on(bool b);
           bool x_plusminus_on();
+ Derived& x_plusminus_color(const svg_color& col);
+ svg_color x_plusminus_color();
           Derived& x_df_on(bool b);
           bool x_df_on();
+ Derived& x_df_color(const svg_color& col);
+ svg_color x_df_color();
           double x_major_interval();
           Derived& x_major_tick_length(double length);
           double x_major_tick_length();
@@ -3124,7 +3132,14 @@
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_values_on(bool b)
- { //! If set true, show data point values near data points markers.
+ { //! \return true if values of X data points are shown (for example: 1.23).
+ // (Want override xy_values_on that would otherwise cause overwriting).
+ // So the last values_on setting will prevail.
+ // But this is only defined in 2D
+ //if(derived().xy_values_on())
+ //{ // Would be overwritten by XY pair.
+ // derived().xy_values_on(false);
+ //}
             derived().x_values_on_ = b;
             return derived();
           }
@@ -3178,10 +3193,12 @@
           Derived& axis_plot_frame<Derived>::x_values_color(const svg_color& col)
           { //! Set the color of data point X values near data points markers.
             // Function could set both fill (middle) and stroke (outside),
- // but just setting fill if simplest,
+ // but just setting fill is simplest,
             // but does not allow separate inside & outside colors.
+ // Might be better to set in x_values_style
             derived().image.g(PLOT_X_POINT_VALUES).style().fill_color(col);
             //derived().image.g(PLOT_X_POINT_VALUES).style().stroke_color(col);
+
             return derived();
           }
 
@@ -3251,8 +3268,21 @@
           }
 
           template <class Derived>
+ Derived& axis_plot_frame<Derived>::x_plusminus_color(const svg_color& col)
+ { //! Set the color of X uncertainty of value, for example, the color of 0.02 in "1.23 +-0.02 (9)".
+ derived().x_values_style_.plusminus_color_ = col;
+ return derived();
+ }
+
+ template <class Derived>
+ svg_color axis_plot_frame<Derived>::x_plusminus_color()
+ { //! Get the color of X uncertainty of value, for example, the color of 0.02 in "1.23 +-0.02 (9)".
+ return derived().x_values_style_.plusminus_color_;
+ }
+
+ template <class Derived>
           Derived& axis_plot_frame<Derived>::x_df_on(bool b)
- { //! Set if to append a degrees of freedom estimate to data point X values near data points markers.
+ { //! Set true if to append a degrees of freedom estimate to data point X values near data points markers.
             //! (May not be implemented yet).
             derived().x_values_style_.df_on_ = b;
             return derived();
@@ -3260,11 +3290,24 @@
 
           template <class Derived>
           bool axis_plot_frame<Derived>::x_df_on()
- { //! \return if to append a degrees of freedom estimate to data point X values near data points markers.
+ { //! \return true if to append a degrees of freedom estimate to data point X values near data points markers.
             //! (May not be implemented yet).
             return derived().x_values_style_.df_on_;
           }
 
+ template <class Derived>
+ Derived& axis_plot_frame<Derived>::x_df_color(const svg_color& col)
+ { //! Set the color of X degrees of freedom, for example, the color of 9 in "1.23 +-0.02 (9)".
+ derived().x_values_style_.df_color_ = col;
+ return derived();
+ }
+
+ template <class Derived>
+ svg_color axis_plot_frame<Derived>::x_df_color()
+ { //! Get the color of X degrees of freedom, for example, the color of 9 in "1.23 +-0.02 (9)".
+ return derived().x_values_style_.df_color_;
+ }
+
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_major_tick_length(double length)
           { //! Set length of X major ticks.

Modified: sandbox/SOC/2007/visualization/boost/svg_plot/show_2d_settings.hpp
==============================================================================
--- sandbox/SOC/2007/visualization/boost/svg_plot/show_2d_settings.hpp (original)
+++ sandbox/SOC/2007/visualization/boost/svg_plot/show_2d_settings.hpp 2009-03-07 13:46:31 EST (Sat, 07 Mar 2009)
@@ -191,6 +191,9 @@
   //cout << "title_font_width " << plot.title_font_width() << endl;
   // Not useful at present, so not longer implemented.
   cout << "x_values_on " << plot.x_values_on() << endl;
+ cout << "x_values_font_size " << plot.x_values_font_size() << endl;
+ cout << "x_values_font_family " << plot.x_values_font_family() << endl;
+
   cout << "x_value_precision " << plot.x_value_precision() << endl;
   cout << "x_value_ioflags " << hex << plot.x_value_ioflags() << dec << ' ';
   outFmtFlags(plot.x_value_ioflags(), cout, ".\n");
@@ -243,7 +246,9 @@
   cout << "y_axis_position " << plot.y_axis_position() << endl;
   cout << "x_axis_position " << plot.x_axis_position() << endl;
   cout << "x_plusminus_on " << plot.x_plusminus_on() << endl;
+ cout << "x_plusminus_color " << plot.x_plusminus_color() << endl;
   cout << "x_df_on " << plot.x_df_on() << endl;
+ cout << "x_df_color " << plot.x_df_color() << endl;
   cout << "xy_values_on " << plot.xy_values_on() << endl;
   cout << "y_label_on " << plot.y_label_on() << endl;
   cout << "y_label_axis " << plot.y_label_axis() << endl;
@@ -285,9 +290,11 @@
   cout << "y_ticks_on_window_or_axis " << l_or_r(plot.y_ticks_on_window_or_axis()) << endl;
   cout << "y_max " << plot.y_max() << endl;
   cout << "y_min " << plot.y_min() << endl;
- cout << "y_values_on " << plot.y_values_on() << endl;
+ //cout << "y_values_on " << plot.y_values_on() << endl;
   cout << "y_plusminus_on " << plot.y_plusminus_on() << endl;
+ cout << "y_plusminus_color " << plot.y_plusminus_color() << endl;
   cout << "y_df_on " << plot.y_df_on() << endl;
+ cout << "y_df_color " << plot.y_df_color() << endl;
 
   cout << "data lines width " << plot.data_lines_width() << endl;
 

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 2009-03-07 13:46:31 EST (Sat, 07 Mar 2009)
@@ -516,8 +516,8 @@
         title_on_(true),
         plot_window_on_(true),
         // Can have either or both X and Y value shown.
- x_values_on_(false), // If X values of data are shown.
- y_values_on_(false), // If Y values of data are shown.
+ x_values_on_(false), // If X values of data points are shown.
+ y_values_on_(false), // If Y values of data points are shown.
         xy_values_on_(false), // If X & Y values of data are shown as a pair.
         x_values_style_(horizontal, 3, std::ios::dec, true, value_style_, black, black, false, false),
         y_values_style_(downward, 3, std::ios::dec, true, value_style_, black, black, false, false),
@@ -1903,8 +1903,13 @@
       svg_2d_plot& xy_values_on(bool b);
       bool y_plusminus_on();
       svg_2d_plot& y_plusminus_on(bool b);
+ svg_2d_plot& y_plusminus_color(const svg_color& col);
+ const svg_color y_plusminus_color();
       bool y_df_on();
       svg_2d_plot& y_df_on(bool b);
+ svg_2d_plot& y_df_color(const svg_color& col);
+ const svg_color y_df_color();
+
       svg_2d_plot& y_autoscale(double first, double second);
       svg_2d_plot& y_autoscale(std::pair<double, double> p);
       template <class T> // T an STL container: array, vector ...
@@ -2277,24 +2282,39 @@
         return *this; //! \return reference to svg_2d_plot to make chainable.
       }
 
- bool svg_2d_plot::y_values_on()
- { //! \return true if values of Y data points are shown (as 1.23).
+ bool svg_2d_plot::y_values_on()
+ { //! \return true if values of Y data points are shown (for example: 1.23).
+ //! (Will override xy_values_on that would otherwise cause overwriting).
+ //! So the last values_on setting will prevail.
         return y_values_on_;
       }
 
       svg_2d_plot& svg_2d_plot::y_values_on(bool b)
- { //! Set true if values of Y data points are shown (as 1.23).
+ { //! Set true if values of Y data points are shown (for example: 1.23).
+ if(xy_values_on() == true)
+ { // Would be overwritten by XY pair.
+ xy_values_on(false);
+ }
         y_values_on_ = b;
         return *this; //! \return reference to svg_2d_plot to make chainable.
       }
 
- bool svg_2d_plot::xy_values_on()
- { //! \return true if values of X and Y data points are shown (as 1.23).
+ bool svg_2d_plot::xy_values_on()
+ { //! \return true if values of X and Y data points are shown (for example: 1.23).
         return xy_values_on_;
       }
 
       svg_2d_plot& svg_2d_plot::xy_values_on(bool b)
       { //! Set true if values of X and Y data points are shown (as 1.23).
+ //! (Will override x_values_on and/or y_values_on that would otherwise cause overwriting).
+ if(x_values_on())
+ { // Would be overwritten by XY pair.
+ x_values_on(false);
+ }
+ if(y_values_on())
+ { // Would be overwritten by XY pair.
+ y_values_on(false);
+ }
         xy_values_on_ = b;
         return *this; //! \return reference to svg_2d_plot to make chainable.
       }
@@ -2310,6 +2330,17 @@
         return *this;
       } //! \return reference to svg_2d_plot to make chainable.
 
+ svg_2d_plot& svg_2d_plot::y_plusminus_color(const svg_color& col)
+ { //! Set color of Y uncertainty of value.
+ y_values_style_.plusminus_color_ = col;
+ return *this; //! \return reference to svg_2d_plot to make chainable.
+ }
+
+ const svg_color svg_2d_plot::y_plusminus_color()
+ { //! \return color of Y uncertainty of value.
+ return y_values_style_.plusminus_color_;
+ }
+
       bool svg_2d_plot::y_df_on()
       { //! \return true if values of Y data points are to include degrees of freedom estimates.
         return svg_2d_plot::y_values_style_.df_on_;
@@ -2321,6 +2352,17 @@
         return *this; //! \return reference to svg_2d_plot to make chainable.
       }
 
+ svg_2d_plot& svg_2d_plot::y_df_color(const svg_color& col)
+ { //! Set color of Y degrees of freedom.
+ y_values_style_.df_color_ = col;
+ return *this; //! \return reference to svg_2d_plot to make chainable.
+ }
+
+ const svg_color svg_2d_plot::y_df_color()
+ { //! \return color of Y degrees of freedom.
+ return y_values_style_.df_color_;
+ }
+
       svg_2d_plot& svg_2d_plot::y_autoscale(double minimum, double maximum)
       { //! Set Y min & max values to use to autoscale.
         // Does this assume first is min and second is max?

Modified: sandbox/SOC/2007/visualization/boost/svg_plot/svg_style.hpp
==============================================================================
--- sandbox/SOC/2007/visualization/boost/svg_plot/svg_style.hpp (original)
+++ sandbox/SOC/2007/visualization/boost/svg_plot/svg_style.hpp 2009-03-07 13:46:31 EST (Sat, 07 Mar 2009)
@@ -55,12 +55,14 @@
 enum rotate_style
 { //! \enum rotate_style Rotation in degrees clockwise from horizontal.
   horizontal = 0, //!< normal horizontal left to right, centered.
- uphill = -45, //!< slope up.
+ //uphill = -45, //!< slope up. seems bit steep
+ uphill = -30, //!< slope up.
   upward = -90, //!< vertical writing up.
   backup = -135, //!< slope up backwards - upside down!
   leftward= -180, //!< horizontal to left.
   rightward = 360, //!< horizontal to right.
- downhill = 45, //!< slope down.
+ // downhill = 45, //!< slope down.
+ downhill = 30, //!< slope down.
   downward = 90, //!< vertical writing down.
   backdown = 135, //!< slope down backwards.
   upsidedown = 180 //!< upside down! (== -180)
@@ -308,7 +310,7 @@
 
 public:
   text_style(
- int size = 12,
+ int size = 12, // Default font size.
     const std::string& font = "", // Examples: "Arial", "Times New Roman", "Verdana", "Lucida Sans Unicode"
     const std::string& style = "", // font-style: normal | bold | italic | oblique
     const std::string& weight = "", // Examples: "bold", "normal"
@@ -526,11 +528,11 @@
 { /*! \class boost::svg::value_style
      \brief Data series point value label information, text, color, orientation, (uncertainty & df).
      \details For example, to output: 5.123 +- 0.01 (19).
- Uncertainty and degrees of freedom estimate not yet implemented.
- Prefix, separator and suffix allow X and Y values to be together on one line like
- [1.23+- 0.01 (3), 4.56 +-0.2 (10)]
- Used in draw_plot_point_values (note plural) where X value_style is used
- to provide the prefix and separator, and Y value_style to provide the suffix.
+ Uncertainty and degrees of freedom estimate.
+ Prefix, separator and suffix allow X and Y values to be together on one line, for example\n
+ \t[1.23+- 0.01 (3), 4.56 +-0.2 (10)]\n
+ Used in draw_plot_point_values (note plural - not used in draw_plot_point_value)
+ where X value_style is used to provide the prefix and separator, and Y value_style to provide the suffix.
      Prefix, separator and suffix are ignored when X or Y are shown separately using draw_plot_point_value.
   */
 public:
@@ -538,16 +540,18 @@
   rotate_style value_label_rotation_; //< Direction point value labels written.
   int value_precision_; //!< Decimal digits of precision of value.
   std::ios_base::fmtflags value_ioflags_; //!< Control of scientific, fixed, hex etc.
- bool strip_e0s_; //!< If true, then unnecessary zeros will be stripped to reduce length.
+ bool strip_e0s_; //!< If true, then unnecessary zeros and + sign will be stripped to reduce length.
   text_style values_text_style_; //!< Font etc used for data point value marking.
   // svg_style
- svg_color fill_color_; //!< Fill color.
- svg_color stroke_color_; //!< Stroke color.
+ svg_color fill_color_; //!< Fill color for value.
+ svg_color stroke_color_; //!< Stroke color for value.
   bool plusminus_on_; //!< If an uncertainty estimate is to be appended (as + or - value).
     /* \details See \n
       http://en.wikipedia.org/wiki/Plus-minus_sign
     */
+ svg_color plusminus_color_; //!< Color for uncertainty, for example: 0.02 in "1.23 +-0.02".
   bool df_on_; //!< If a degrees of freedom estimate is to be appended.
+ svg_color df_color_; //!< Color for degrees for freedom, for example: 99 in "1.23 +-0.02 (99)".
   std::string prefix_; //!< Prefix to data point value, default none, but typically "[".
   std::string separator_; //!< Separator between x and y values, if both on same line (none if only X or only Y, or Y below X).
   std::string suffix_; //!< Suffix to data point value, default none, but typically "]".
@@ -564,30 +568,36 @@
 // class value_style Member Functions definitions.
 // Constructor.
 
-value_style::value_style() //! Default data point value label style.
+value_style::value_style() //! Data point value label style (provides default color and font).
     :
     value_label_rotation_(horizontal), //!< Label orientation, default horizontal.
- value_precision_(3), //!< Reduced from default of 6 which is usually too long.
- value_ioflags_(std::ios::dec), //!< Any std::ios::ioflags, for example hex, fixed, scientific.
+ value_precision_(4), //!< Reduced from default of 6 which is usually too long.
+ value_ioflags_(std::ios::dec), //!< Any std::ios::ioflags, for example, hex, fixed, scientific.
     strip_e0s_(true), //!< If true, then unnecessary zeros will be stripped to reduce length.
     values_text_style_(no_style), //!< All defaults, black etc.
     stroke_color_(black), //!< == black.
     fill_color_(svg_color(0, 0, 0)), //!< no fill.
     // TODO should be
     // fill_color_(false), //!< no fill.
- plusminus_on_(false), //! If uncertainty estimate to be appended.
- df_on_(false) //!< If a degrees of freedom estimate to be appended.
+ plusminus_on_(false), //!< If uncertainty estimate to be appended.
+ plusminus_color_(black), //! Default color for uncertainty of value.
+ df_on_(false), //!< If a degrees of freedom estimate to be appended.
+ df_color_(black) //!< Default color for degrees of freedom.
     { // Default constructor initialises all private data.
     }
 
     value_style::value_style(rotate_style r, int p, std::ios_base::fmtflags f, bool s,
       text_style ts, const svg_color& scol = black, svg_color fcol = black, bool pm = false, bool df = false,
- std::string pre = "[",
- std::string sep = ",&#x00A0;", // If put ", " the trailing space seems to be ignored, so add explicit space.
+ // Separators [,] provide, for example: [1.23+-0.01 (3), 4.56 +-0.2 (10)]
+ // default color black.
+ // TODO provide access to these.
+ std::string pre = "[",
+ std::string sep = ",&#x00A0;", // If put ", " the trailing space seems to be ignored, so add Unicode explicit space.
       std::string suf = "]")
     :
     value_label_rotation_(r), value_precision_(p), value_ioflags_(f), strip_e0s_(s),
- values_text_style_(ts), stroke_color_(scol), fill_color_(fcol), plusminus_on_(pm), df_on_(df),
+ values_text_style_(ts), stroke_color_(scol), fill_color_(fcol),
+ plusminus_on_(pm),plusminus_color_(blue), df_on_(df), df_color_(blue),
     prefix_(pre), separator_(sep), suffix_(suf)
     { // Constructor.
     }
@@ -638,7 +648,7 @@
   friend std::ostream& operator<< (std::ostream&, plot_point_style);
 
 public:
- svg_color fill_color_; //!< Color of the centre of the shape.
+ svg_color fill_color_; //!< Fill color of the centre of the shape.
   svg_color stroke_color_; //!< Color of circumference of shape.
   int size_; //!< Diameter of circle, height of square, font_size ...
   point_shape shape_; //!< shape: round, square, point...


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