Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r50868 - in sandbox/SOC/2007/visualization/boost/svg_plot: . detail
From: pbristow_at_[hidden]
Date: 2009-01-29 09:55:18


Author: pbristow
Date: 2009-01-29 09:55:16 EST (Thu, 29 Jan 2009)
New Revision: 50868
URL: http://svn.boost.org/trac/boost/changeset/50868

Log:
More doxygenation. All appear to have some documentation now.
Text files modified:
   sandbox/SOC/2007/visualization/boost/svg_plot/detail/FP_compare.hpp | 31 +
   sandbox/SOC/2007/visualization/boost/svg_plot/detail/auto_axes.hpp | 1
   sandbox/SOC/2007/visualization/boost/svg_plot/detail/axis_plot_frame.hpp | 379 ++++++++++++----------
   sandbox/SOC/2007/visualization/boost/svg_plot/detail/functors.hpp | 15
   sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_boxplot_detail.hpp | 3
   sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_style_detail.hpp | 5
   sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_tag.hpp | 638 +++++++++++++++++++++------------------
   sandbox/SOC/2007/visualization/boost/svg_plot/stylesheet.hpp | 12
   sandbox/SOC/2007/visualization/boost/svg_plot/svg.hpp | 29 +
   sandbox/SOC/2007/visualization/boost/svg_plot/svg_1d_plot.hpp | 26 +
   sandbox/SOC/2007/visualization/boost/svg_plot/svg_2d_plot.hpp | 191 +++++------
   sandbox/SOC/2007/visualization/boost/svg_plot/svg_boxplot.hpp | 201 ++++++------
   sandbox/SOC/2007/visualization/boost/svg_plot/svg_color.hpp | 19
   sandbox/SOC/2007/visualization/boost/svg_plot/svg_style.hpp | 113 +++---
   14 files changed, 907 insertions(+), 756 deletions(-)

Modified: sandbox/SOC/2007/visualization/boost/svg_plot/detail/FP_compare.hpp
==============================================================================
--- sandbox/SOC/2007/visualization/boost/svg_plot/detail/FP_compare.hpp (original)
+++ sandbox/SOC/2007/visualization/boost/svg_plot/detail/FP_compare.hpp 2009-01-29 09:55:16 EST (Thu, 29 Jan 2009)
@@ -83,7 +83,16 @@
 
 template<typename FPT = double>
 class close_to
-{ //! \brief Test if two floating-point values are close within a chosen tolerance.
+{ /*!
+ \class close_to
+ \brief Test if two floating-point values are close within a chosen tolerance.
+ \details Close can be one of two types of floating-point comparison "Very close" and "Close enough".
+ equations in Dougles E. Knuth, Seminumerical algorithms (3rd Ed) section 4.2.4, Vol II,
+ pp 213-225, Addison-Wesley, 1997, ISBN: 0201896842.
+ Strong requires closeness relative to BOTH values begin compared,
+ Weak only requires only closeness to EITHER ONE value.
+
+ */
 public:
   // One constructor for fraction tolerance only. (Percent is NOT implemented).
   template<typename FPT>
@@ -136,8 +145,10 @@
 
 template<typename FPT = double>
 class smallest
-{ //! \brief Check floating-point value is smaller than a chosen small value.
- /* \details
+{ /*! \class smallest
+ \brief Check floating-point value is smaller than a chosen small value,
+ default std::numeric_limits<FPT>::min_value().
+ \details
      David Monniaux, http://arxiv.org/abs/cs/0701192v4,
      It is somewhat common for beginners to add a comparison check to 0 before
      computing a division, in order to avoid possible division-by-zero exceptions or
@@ -204,14 +215,20 @@
 
 // Define two convenience typedefs.
 
-/*! \details Since double and the default smallest value 2 * std::numeric_limits<double>::min_value() = 2 * 2.22507e-308 + 4.45015e-308
+typedef smallest<double> tiny;
+/*!
+ \typedef tiny
+ \brief Allow tiny as a shorthand for double min_value 4.45e-308.
+ \details Since double and the default smallest value 2 * std::numeric_limits<double>::min_value() = 2 * 2.22507e-308 + 4.45015e-308
   is a very common requirement, provide an convenience alias for this.
 */
-typedef smallest<double> tiny; //!< Allow tiny as a shorthand for 4.45e-308.
 
-/*! \details Since double and the default close_to value 2 * epsilon = std::numeric_limits<double>::epsilon = 2 * 2.220446e-016 = 4.440892e-016
+/*!
+ \typedef neareq
+ \brief Allow neareq as a shorthand for 2 double epsilon = 4.44e-16
+ \details Since double and the default close_to value 2 * epsilon = std::numeric_limits<double>::epsilon = 2 * 2.220446e-016 = 4.440892e-016
   is a very common requirement, provide an convenience alias for this.
 */
-typedef close_to<double> neareq; //!< Allow neareq as a shorthand for 4.44e-16
+typedef close_to<double> neareq;
 
 #endif // BOOST_FLOATING_POINT_COMPARISON_HPP

Modified: sandbox/SOC/2007/visualization/boost/svg_plot/detail/auto_axes.hpp
==============================================================================
--- sandbox/SOC/2007/visualization/boost/svg_plot/detail/auto_axes.hpp (original)
+++ sandbox/SOC/2007/visualization/boost/svg_plot/detail/auto_axes.hpp 2009-01-29 09:55:16 EST (Thu, 29 Jan 2009)
@@ -9,7 +9,6 @@
   amount over the limit resulting in an ugly extra major tick.
   Also allow optional forcing of the ticks to be multiples of 1, 2, 5, 10.
 
- \version 1.0
   \author Paul A. Bristow
  */
 

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-01-29 09:55:16 EST (Thu, 29 Jan 2009)
@@ -1,10 +1,11 @@
-/*! \file axis_plot_frame.hpp
+/*!
+ \file axis_plot_frame.hpp
 
-\brief SVG Plot functions common to 1D, 2D and Boxplots.
+ \brief SVG Plot functions common to 1D, 2D and Boxplots.
 
-\details
+ \details Functions are derived from base class axis_plot_frame.
 
- \author Jacob Voytko and Paul A. Bristow
+ \author Jacob Voytko and Paul A. Bristow
 */
 
 // Copyright Jacob Voytko 2007
@@ -61,7 +62,6 @@
       right = +1 //!< Y-axis free to left of end of X-axis (case of all X definitely > 0).
      };
 
-
     enum legend_places
     { //! \enum legend_places Placing of legend box, if requested by legend_on == true.
       nowhere = 0, //!< Placing of legend box not requested or not calculated yet.
@@ -77,7 +77,9 @@
     {
       template <class Derived>
       class axis_plot_frame
- { /*! \class axis_plot_frame is used as base class, for example:\n
+ { /*! \class boost::svg::detail::axis_plot_frame
+ \brief Used as base class for 1D, 2D and Box plots.
+ \details For example, svg_1d_plot, svg_2d_plot, svg_boxplot\n
          class svg_1d_plot : public detail::axis_plot_frame<svg_1d_plot>\n
          class svg_2d_plot : public detail::axis_plot_frame<svg_2d_plot>
         */
@@ -540,7 +542,7 @@
         // --------------------------------------------------------------------
 
         void draw_title()
- { /*! \fn \brief Draw title (for the whole plot).
+ { /*! \fn draw_title \brief Draw title (for the whole plot).
           \details Update title_info_ with position.
             Assumes align = center_align.
             and center_align will ensure that will center correctly
@@ -1732,26 +1734,26 @@
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::description(const std::string d)
- { //! Writes description to the document (for header as <desc> My Data <\desc>).
+ { //! Writes description to the document (for header as \verbatim <desc> My Data <\desc> \endverbatim).
             derived().image.description(d);
             return derived();
           }
 
           template <class Derived>
           const std::string& axis_plot_frame<Derived>::description()
- { //! Get description of the document (for header as <desc> ... <\desc>).
+ { //! Get description of the document (for header as \verbatim <desc> ... <\desc> \endverbatim).
             return derived().image.description();
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::document_title(const std::string d)
- { //! Write document title to the SVG document (for header as <title> My Title <\title>).
+ { //! Write document title to the SVG document (for header as \verbatim <title> My Title <\title> \endverbatim).
             derived().image.document_title(d);
             return derived();
           }
           template <class Derived>
           std::string axis_plot_frame<Derived>::document_title()
- { //! Get document title to the document (for header as <title> My Title <\title>).
+ { //! Get document title to the document (for header as \verbatim <title> My Title <\title> \endverbatim).
             return derived().image.document_title();
           }
 
@@ -1759,7 +1761,7 @@
           Derived& axis_plot_frame<Derived>::copyright_holder(const std::string d)
           { //! Writes copyright_holder to the document
             //! (for header as <!-- SVG Plot Copyright Paul A. Bristow 2007 --> )
- //! and as metadata: meta name="copyright" content="Paul A. Bristow" />
+ //! and as \verbatim metadata: meta name="copyright" content="Paul A. Bristow" /> \endverbatim
             derived().image.copyright_holder(d);
             return derived();
           }
@@ -1773,7 +1775,7 @@
           template <class Derived>
           Derived& axis_plot_frame<Derived>::copyright_date(const std::string d)
           { //! Writes copyright_date to the document.
- //! and as metadata <meta name="date" content="2007" />
+ //! and as \verbatim metadata <meta name="date" content="2007" /> \endverbatim
             derived().image.copyright_date(d);
             return derived();
           }
@@ -2541,80 +2543,82 @@
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::title_on(bool cmd)
- {
+ { //! If set true, show a title for the plot.
             derived().title_on_ = cmd;
             return derived();
           }
 
           template <class Derived>
           bool axis_plot_frame<Derived>::title_on()
- {
+ {//! If true, will show a title for the plot.
             return derived().title_on_;
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_major_grid_on(bool is)
- {
+ { //! If set true, will include a major X-axis grid.
             derived().x_ticks_.major_grid_on_ = is;
             return derived();
           }
 
           template <class Derived>
           bool axis_plot_frame<Derived>::x_major_grid_on()
- {
+ { //! If true, will include a major X-axis grid.
             return derived().x_ticks_.major_grid_on_;
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_minor_grid_on(bool is)
- {
+ { //! If set true, will include a minor X-axis grid.
             derived().x_ticks_.minor_grid_on_ = is;
             return derived();
           }
 
           template <class Derived>
           bool axis_plot_frame<Derived>::x_minor_grid_on()
- {
+ {//! If true, will include a minor X-axis grid.
             return derived().x_ticks_.minor_grid_on_;
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::axes_on(bool is)
- { // Draw *both* x and y axes (note plural).
+ { //! If set true, draw *both* x and y axes (note plural axes).
             derived().x_axis_.axis_line_on_ = is;
- derived().y_axis_.axis_line_on_ = is; // Unsuitable for 1D?
+ derived().y_axis_.axis_line_on_ = is; // No meaning for 1D, but set anyway?
             return derived();
           }
 
           template <class Derived>
           bool axis_plot_frame<Derived>::axes_on()
- { // Used X in preference to Y for 1D, but now require *both* x and y axis on.
+ { //! \return true if *both* x and y axis on.
             return derived().x_axis_.axis_line_on_ && derived().y_axis_.axis_line_on_;
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_axis_on(bool is)
- { // Draw a horizontal x_axis_ line.
+ { //! If set true, draw a horizontal X-axis line.
             derived().x_axis_.axis_line_on_ = is;
             return derived();
           }
 
           template <class Derived>
           bool axis_plot_frame<Derived>::x_axis_on()
- { // Use X in preference to Y for 1D
+ { //! If true, draw a horizontal X-axis line.
+ // Use X in preference to Y for 1D.
             return derived().x_axis_.axis_line_on_;
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::y_axis_on(bool is)
- {// Draw a vertical y_axis_ line.
+ { //! If set true, draw a vertical Y-axis line.
             derived().y_axis_.axis_line_on_ = is;
             return derived();
           }
 
           template <class Derived>
           bool axis_plot_frame<Derived>::y_axis_on()
- { // Should be always false for 1D.
+ { //! If true, draw a vertical Y-axis line.
+ // Should be always false for 1D.
             return derived().y_axis_.axis_line_on_;
           }
 
@@ -2623,7 +2627,8 @@
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::title_color(const svg_color& col)
- { // Function title_color could set both fill (middle) and stroke (outside),
+ { //! Set the color of any title of the plot.
+ // Function title_color could set both fill (middle) and stroke (outside),
             // but just setting fill if simplest,
             // but does not allow separate inside & outside colors.
             derived().image.g(PLOT_TITLE).style().fill_color(col);
@@ -2633,13 +2638,15 @@
 
           template <class Derived>
           svg_color axis_plot_frame<Derived>::title_color()
- { // Function title_color could get either fill and stroke,
+ { //! \return the color of any title of the plot.
+ // Function title_color could get either fill and stroke,
             // return derived().image.g(PLOT_TITLE).style().stroke_color();
             return derived().image.g(PLOT_TITLE).style().fill_color();
           }
 
           //Derived& title_font_width(double width)
- //{ // width of text is effectively the boldness.
+ //{ // Set the width of the font for the title of the plot.
+ // width of text is effectively the boldness.
           // // Not useful with current browsers, setting this may cause lower quality graphic fonts
           // // perhaps because the font is created using graphics rather than a built-in font.
           // derived().image.g(PLOT_TITLE).style().stroke_width(width);
@@ -2647,23 +2654,25 @@
           //}
 
          //Derived& legend_font_width(double width)
- //{ // width of text is effectively the boldness.
+ //{ // Get the width of the font for the title of the plot.
+ // width of text is effectively the boldness.
           // derived().image.g(PLOT_LEGEND_TEXT).style().stroke_width(width);
           // return derived();
           //}
 
           //double legend_font_width()
- //{ // Probably not useful at present (se above).
+ //{ // Set the width of the font for the title of the legend.
+ // Probably not useful at present (se above).
           // return derived().image.g(PLOT_LEGEND_TEXT).style().stroke_width();
           //}
- //double title_font_width()
- //{
+ //double legend_font_width()
+ //{ // Get the width of the font for the title of the legend.
           // return derived().image.g(PLOT_TITLE).style().stroke_width();
           //}
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::legend_color(const svg_color& col)
- {
+ { //! Set the color of the title of the legend.
             // derived().image.g(PLOT_LEGEND_TEXT).style().stroke_color(col);
             derived().image.g(PLOT_LEGEND_TEXT).style().fill_color(col);
             return derived();
@@ -2671,7 +2680,8 @@
 
           template <class Derived>
           svg_color axis_plot_frame<Derived>::legend_color()
- { // Function legend_color sets only stroke, assuming that 'filled' text is not being used.
+ { //! Get the color of the title of the legend.
+ // Function legend_color sets only stroke, assuming that 'filled' text is not being used.
             // (It produces much lower quality fonts on some browsers).
             return derived().image.g(PLOT_LEGEND_TEXT).style().fill_color();
             // return derived().image.g(PLOT_LEGEND_TEXT).style().stroke_color();
@@ -2679,7 +2689,7 @@
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::legend_background_color(const svg_color& col)
- {
+ { //! Set the background fill color of the legend box.
             derived().legend_box_.fill(col);
             derived().image.g(PLOT_LEGEND_BACKGROUND).style().fill_color(col);
             return derived();
@@ -2687,7 +2697,7 @@
 
           template <class Derived>
           svg_color axis_plot_frame<Derived>::legend_background_color()
- {
+ { //! Get the background fill color of the legend box.
             return derived().image.g(PLOT_LEGEND_BACKGROUND).style().fill_color();
           }
 
@@ -2699,7 +2709,7 @@
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::legend_border_color(const svg_color& col)
- {
+ { //! Set the border stroke color of the legend box.
             derived().legend_box_.stroke(col);
             derived().image.g(PLOT_LEGEND_BACKGROUND).style().stroke_color(col);
             return derived();
@@ -2707,27 +2717,27 @@
 
           template <class Derived>
           svg_color axis_plot_frame<Derived>::legend_border_color()
- {
+ { //! Get the border stroke color of the legend box.
             return derived().legend_box_.stroke();
             // return derived().image.g(PLOT_LEGEND_BACKGROUND).style().stroke_color();
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::plot_background_color(const svg_color& col)
- {
+ { //! Set the fill color of the plot window background.
             derived().image.g(PLOT_WINDOW_BACKGROUND).style().fill_color(col);
             return derived();
           }
 
           template <class Derived>
           svg_color axis_plot_frame<Derived>::plot_background_color()
- {
+ { //! Get the fill color of the plot window background.
             return derived().image.g(PLOT_WINDOW_BACKGROUND).style().fill_color();
           }
 
           template <class Derived>
           const std::string axis_plot_frame<Derived>::x_axis_position()
- { // Return the position of the X-axis.
+ { //! Get the position (or intersection with Y-axis) of the X-axis.
             switch(derived().x_axis_position_)
             {
             case top:
@@ -2743,61 +2753,64 @@
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_axis_color(const svg_color& col)
- { // Note only stroke color is set.
+ { //! Set the color of the X-axis line.
+ // Note only stroke color is set.
             derived().image.g(PLOT_X_AXIS).style().stroke_color(col);
             return derived();
           }
 
           template <class Derived>
           svg_color axis_plot_frame<Derived>::x_axis_color()
- {
+ { //! Get the color of the X-axis line.
             return derived().image.g(PLOT_X_AXIS).style().stroke_color();
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::y_axis_color(const svg_color& col)
- {
+ { //! Set the color of the Y-axis line.
             derived().image.g(PLOT_Y_AXIS).style().stroke_color(col);
             return derived();
           }
 
           template <class Derived>
           svg_color axis_plot_frame<Derived>::y_axis_color()
- {
+ { //! Get the color of the Y-axis line.
             return derived().image.g(PLOT_Y_AXIS).style().stroke_color();
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_label_color(const svg_color& col)
- { // add fill as well PAB Oct 07
+ { //! Set the color of X-axis label (including any units).
+ // add fill as well PAB Oct 07
             derived().image.g(PLOT_X_LABEL).style().fill_color(col);
             derived().image.g(PLOT_X_LABEL).style().stroke_color(col);
             return derived();
           }
 
- // Browsers could implement better.
+ template <class Derived>
+ svg_color axis_plot_frame<Derived>::x_label_color()
+ { //! Get the color of X-axis label (including any units).
+ return derived().image.g(PLOT_X_LABEL).style().fill_color();
+ }
+
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_label_width(double width)
- { // width of text is effectively the boldness.
+ { //! Set the width (boldness) of X-axis label (including any units).
+ //! (not recommended until browsers implement better).
+ // width of text is effectively the boldness.
             derived().image.g(PLOT_X_LABEL).style().stroke_width(width);
             return derived();
           }
 
           template <class Derived>
           double axis_plot_frame<Derived>::x_label_width()
- {
+ { //! Get the width (boldness) of X-axis label (including any units).
             return derived().image.g(PLOT_X_LABEL).style().stroke_width();
           }
 
           template <class Derived>
- svg_color axis_plot_frame<Derived>::x_label_color()
- {
- return derived().image.g(PLOT_X_LABEL).style().fill_color();
- }
-
- template <class Derived>
           Derived& axis_plot_frame<Derived>::y_label_color(const svg_color& col)
- {
+ { //! Set the color of Y-axis label (including any units).
             derived().image.g(PLOT_Y_LABEL).style().fill_color(col);
             derived().image.g(PLOT_Y_LABEL).style().stroke_color(col);
             return derived();
@@ -2805,120 +2818,118 @@
 
           template <class Derived>
           svg_color axis_plot_frame<Derived>::y_label_color()
- {
+ { //! Get the color of Y-axis label (including any units).
             return derived().image.g(PLOT_Y_LABEL).style().fill_color();
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_major_tick_color(const svg_color& col)
- {
+ { //! Set the color of X-axis major ticks.
             derived().image.g(PLOT_X_MAJOR_TICKS).style().stroke_color(col);
             return derived();
           }
 
-
           template <class Derived>
           svg_color axis_plot_frame<Derived>::x_major_tick_color()
- {
+ { //! Get the color of X-axis major ticks.
             return derived().image.g(PLOT_X_MAJOR_TICKS).style().stroke_color();
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_minor_tick_color(const svg_color& col)
- {
+ { //! Set the color of X-axis minor ticks.
             derived().image.g(PLOT_X_MINOR_TICKS).style().stroke_color(col);
             return derived();
           }
 
           template <class Derived>
           svg_color axis_plot_frame<Derived>::x_minor_tick_color()
- {
+ { //! Get the color of X-axis minor ticks.
             return derived().image.g(PLOT_X_MINOR_TICKS).style().stroke_color();
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_major_grid_color(const svg_color& col)
- {
+ { //! Set the color of X-axis major grid lines.
             derived().image.g(PLOT_X_MAJOR_GRID).style().stroke_color(col);
             return derived();
           }
 
           template <class Derived>
           svg_color axis_plot_frame<Derived>::x_major_grid_color()
- {
+ { //! Get the color of X-axis major grid lines.
             return derived().image.g(PLOT_X_MAJOR_GRID).style().stroke_color();
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_major_grid_width(double w)
- {
+ { //! Set the width of X-axis major grid lines.
             derived().image.g(PLOT_X_MAJOR_GRID).style().stroke_width(w);
             return derived();
           }
 
           template <class Derived>
           double axis_plot_frame<Derived>::x_major_grid_width()
- {
+ { //! Get the color of X-axis major grid lines.
             return derived().image.g(PLOT_X_MAJOR_GRID).style().stroke_width();
           }
 
-
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_minor_grid_color(const svg_color& col)
- {
+ { //! Set the color of X-axis minor grid lines.
             derived().image.g(PLOT_X_MINOR_GRID).style().stroke_color(col);
             return derived();
           }
 
           template <class Derived>
           svg_color axis_plot_frame<Derived>::x_minor_grid_color()
- {
+ { //! Get the color of X-axis minor grid lines.
             return derived().image.g(PLOT_X_MINOR_GRID).style().stroke_color();
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_minor_grid_width(double w)
- {
+ { //! Set the width of X-axis minor grid lines.
             derived().image.g(PLOT_X_MINOR_GRID).style().stroke_width(w);
             return derived();
           }
 
           template <class Derived>
           double axis_plot_frame<Derived>::x_minor_grid_width()
- {
+ { //! Get the width of X-axis minor grid lines.
             return derived().image.g(PLOT_X_MINOR_GRID).style().stroke_width();
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_axis_width(double width)
- {
+ { //! Set the width of X-axis lines.
             derived().image.g(PLOT_X_AXIS).style().stroke_width(width);
             return derived();
           }
 
           template <class Derived>
           double axis_plot_frame<Derived>::x_axis_width()
- {
+ { //! Get the width of X-axis lines.
             return derived().image.g(PLOT_X_AXIS).style().stroke_width();
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::data_lines_width(double width)
- {
+ { //! Set the width of lines joining data points.
             derived().image.g(PLOT_DATA_LINES).style().stroke_width(width);
             return derived();
           }
 
           template <class Derived>
           double axis_plot_frame<Derived>::data_lines_width()
- {
+ { //! Get the width of lines joining data points.
             return derived().image.g(PLOT_DATA_LINES).style().stroke_width();
           }
 
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_label(const std::string& str)
- {
+ { //! Set the text to label the X-axis (and set x_label_on(true)).
             derived().x_label_info_.text(str);
             derived().x_axis_.label_on_ = true; // Assume want x_label string displayed.
             // Might switch label_on false if null string?
@@ -2927,13 +2938,13 @@
 
           template <class Derived>
           std::string axis_plot_frame<Derived>::x_label()
- {
+ { //! Get the text to label the X-axis.
             return derived().x_label_info_.text();
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_label_units(const std::string& str)
- {
+ { //! Set the text to add units to the X-axis label.
             derived().x_units_info_.text(str);
             derived().x_axis_.label_on_ = true; // Assume want x_label string displayed.
             return derived();
@@ -2941,14 +2952,15 @@
 
           template <class Derived>
           std::string axis_plot_frame<Derived>::x_label_units()
- {
+ { //! Get the text to add units to the X-axis label.
+ //! The label will only be shown if x_label_on() == true.
             return derived().x_units_info_.text();
           }
 
           // y_label not needed in 1D.
           template <class Derived>
           Derived& axis_plot_frame<Derived>::y_label(const std::string& str)
- {
+ { //! Set the text for the Y-axis label (and set y_label_on(true)).
             derived().y_label_info_.text(str);
             derived().y_axis_.label_on_ = true; // Assume want y_label string displayed.
             return derived();
@@ -2956,13 +2968,14 @@
 
           template <class Derived>
           std::string axis_plot_frame<Derived>::y_label()
- {
+ { //! Get the text for the Y-axis label.
+ //! The label will only be shown if y_label_on() == true.
             return derived().y_label_info_.text();
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::y_label_units(const std::string& str)
- {
+ { //! Set the text to add units to the Y-axis label.
             derived().y_units_info_.text(str);
             derived().y_axis_.label_on_ = true; // Assume want y_label string displayed.
             return derived();
@@ -2970,59 +2983,66 @@
 
           template <class Derived>
           std::string axis_plot_frame<Derived>::y_label_units()
- {
+ { //! Get the text to add units to the X-axis label.
             return derived().y_units_info_.text();
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_values_on(bool b)
- { // Show values near data points.
+ { //! If set true, show data point values near data points markers.
             derived().x_values_on_ = b;
             return derived();
           }
 
           template <class Derived>
           bool axis_plot_frame<Derived>::x_values_on()
- { // Label data points with X values.
+ { //! If true, show data point values near data points markers.
             return derived().x_values_on_;
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_values_font_size(unsigned int i)
- {
+ { //! Set font size of data point X values near data points markers.
             derived().x_values_style_.values_text_style_.font_size(i);
             return derived();
           }
 
           template <class Derived>
           unsigned int axis_plot_frame<Derived>::x_values_font_size()
- {
+ { //! Get font size of data point X values near data points markers.
             return derived().x_values_style_.values_text_style_.font_size();
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_values_font_family(const std::string& family)
- {
+ { //! Set font family of data point X values near data points markers.
             derived().x_values_style_.values_text_style_.font_family(family);
             return derived();
           }
 
           template <class Derived>
           const std::string& axis_plot_frame<Derived>::x_values_font_family()
- {
+ { //! Set font family of data point X values near data points markers.
             return derived().x_values_style_.values_text_style_.font_family();
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_major_interval(double inter)
- {
+ { //! Set the interval between X-axis major ticks.
             derived().x_ticks_.major_interval_ = inter;
             return derived();
           }
 
           template <class Derived>
+ double axis_plot_frame<Derived>::x_major_interval()
+ { //! Get the interval between X-axis major ticks.
+ return derived().x_ticks_.major_interval_;
+ }
+
+ template <class Derived>
           Derived& axis_plot_frame<Derived>::x_values_color(const svg_color& col)
- { // Function could set both fill (middle) and stroke (outside),
+ { //! 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 does not allow separate inside & outside colors.
             derived().image.g(PLOT_X_POINT_VALUES).style().fill_color(col);
@@ -3032,98 +3052,100 @@
 
           template <class Derived>
           svg_color axis_plot_frame<Derived>::x_values_color()
- { // Function could get either fill and stroke,
+ { //! Get the color of data point X values near data points markers.
+ // Function could get either fill and stroke,
             // return derived().image.g(PLOT_X_POINT_VALUES).style().stroke_color();
             return derived().image.g(PLOT_X_POINT_VALUES).style().fill_color();
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_values_rotation(rotate_style rotate)
- { // Degrees (0 to 360).
+ { //! Get the rotation (rotate_style) of data point X values near data points markers.
+ //! (Degrees: 0 to 360 in 45 steps).
             derived().x_values_style_.value_label_rotation_ = rotate;
             return derived();
           }
 
           template <class Derived>
           int axis_plot_frame<Derived>::x_values_rotation()
- {
+ { //! Get the rotation of data point X values near data points markers.
             return derived().x_values_style_.value_label_rotation_;
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_values_precision(int p)
- { // set iostream precision
+ { //! Set iostream decimal digits precision of data point X values near data points markers.
             derived().x_values_style_.value_precision_ = p;
             return derived();
           }
 
           template <class Derived>
           int axis_plot_frame<Derived>::x_values_precision()
- {
+ { //! Get iostream decimal digits precision of data point X values near data points markers.
             return derived().x_values_style_.value_precision_;
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_values_ioflags(std::ios_base::fmtflags f)
- { // set iostream format flags
+ { //! Set iostream format flags of data point X values near data points markers.
+ //! Useful to set hexadecimal, fixed and scientific, (std::ios::scientific).
             derived().x_values_style_.value_ioflags_ = f;
             return derived();
           }
 
           template <class Derived>
           std::ios_base::fmtflags axis_plot_frame<Derived>::x_values_ioflags()
- {
+ { //! Get iostream format flags of data point X values near data points markers.
+ //! Might be used to set hexadecimal, fixed and scientific, (std::ios::scientific).
             return derived().x_values_style_.value_ioflags_;
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_plusminus_on(bool b)
- { // set if uncertainty to be append to X values labels.
+ { //! Set if to append uncertainty estimate to data point X values near data points markers.
+ //! (May not be implemented yet).
             derived().x_values_style_.plusminus_on_ = b;
             return derived();
           }
 
           template <class Derived>
           bool axis_plot_frame<Derived>::x_plusminus_on()
- {
+ { //! Get if to append uncertainty estimate to data point X values near data points markers.
+ //! (May not be implemented yet).
             return derived().x_values_style_.plusminus_on_;
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_df_on(bool b)
- { // set if uncertainty to be append to X values labels.
+ { //! Set 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();
           }
 
           template <class Derived>
           bool axis_plot_frame<Derived>::x_df_on()
- {
+ { //! Get 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>
- double axis_plot_frame<Derived>::x_major_interval()
- {
- return derived().x_ticks_.major_interval_;
- }
-
- template <class Derived>
           Derived& axis_plot_frame<Derived>::x_major_tick_length(double length)
- {
+ { //! Set length of X major ticks.
             derived().x_ticks_.major_tick_length_ = length;
             return derived();
           }
 
           template <class Derived>
           double axis_plot_frame<Derived>::x_major_tick_length()
- {
+ {//! Get length of X major ticks.
             return derived().x_ticks_.major_tick_length_;
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_major_tick_width(double width)
- {
+ { //! Set width of X major ticks.
             derived().x_ticks_.major_tick_width_ = width; // Redundant?
             derived().image.g(PLOT_X_MAJOR_TICKS).style().stroke_width(width);
             return derived();
@@ -3131,74 +3153,78 @@
 
           template <class Derived>
           double axis_plot_frame<Derived>::x_major_tick_width()
- {
+ {//! Get wqidth of X major ticks.
             return derived().image.g(PLOT_X_MAJOR_TICKS).style().stroke_width();
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_minor_tick_length(double length)
- {
+ { //! Set length of X minor ticks.
             derived().x_ticks_.minor_tick_length_ = length;
             return derived();
           }
 
           template <class Derived>
           double axis_plot_frame<Derived>::x_minor_tick_length()
- {
+ { //! Get length of X minor ticks.
             return derived().x_ticks_.minor_tick_length_;
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_minor_tick_width(double width)
- {
+ { //! Set width of X minor ticks.
             derived().x_ticks_.minor_tick_width_ = width;
             derived().image.g(PLOT_X_MINOR_TICKS).style().stroke_width(width);
             return derived();
           }
 
-
           template <class Derived>
           double axis_plot_frame<Derived>::x_minor_tick_width()
- {
+ { //! Get width of X minor ticks.
             // return derived().x_minor_tick_width_; // should be the same but store in stroke_width is definitive.
             return derived().image.g(PLOT_X_MINOR_TICKS).style().stroke_width();
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_major_tick(double d)
- { // Interval (Cartesian units) between major ticks.
+ { //! Set interval (Cartesian units) between major ticks.
             derived().x_ticks_.major_interval_ = d;
           }
 
           template <class Derived>
           double axis_plot_frame<Derived>::x_major_tick()
- { // Interval (Cartesian units) between major ticks.
+ { // Get interval (Cartesian units) between major ticks.
             return derived().x_ticks_.major_interval_;
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_minor_interval(double interval)
- { // aka x_minor_tick
+ { //! Set interval between X-axis minor ticks.
+ // aka x_minor_tick
             derived().x_ticks_.minor_interval_ = interval;
             return derived();
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_num_minor_ticks(unsigned int num)
- {
+ { //! Set number of X-axis minor ticks between major ticks.
             derived().x_ticks_.num_minor_ticks_ = num;
             return derived();
           }
 
           template <class Derived>
           unsigned int axis_plot_frame<Derived>::x_num_minor_ticks()
- { // NB NOT float or double!
+ { //! Get number of X-axis minor ticks between major ticks.
+ //! Note: NOT float or double!
             return derived().x_ticks_.num_minor_ticks_;
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_range(double min_x, double max_x)
- {
+ { //! Set the range of values on the X-axis.
+ //! The minimum and maximum values must be finite and not too near
+ //! to the minima or maxima that can be represented by floating point doubles,
+ //! and the range must not be too small.
             if (!boost::math::isfinite(min_x))
             {
               throw std::runtime_error("X range: min not finite!");
@@ -3228,7 +3254,8 @@
 
           template <class Derived>
           std::pair<double, double> axis_plot_frame<Derived>::x_range()
- { // Need to use boost::svg::detail::operator<< to display this.
+ { //! Get the range of values on the X-axis.
+ //! (Need to use boost::svg::detail::operator<< to display this).
             std::pair<double, double> r;
             r.first = derived().x_axis_.min_;
             r.second = derived().x_axis_.max_;
@@ -3237,7 +3264,7 @@
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_min(double min_x)
- {
+ { //! Set the minimum value on the X-axis.
             // Not useful to check here that x_max_ > x_min_ because may not have set x_min_ yet.
             derived().x_axis_.min_ = min_x;
             return derived();
@@ -3245,13 +3272,14 @@
 
           template <class Derived>
           double axis_plot_frame<Derived>::x_min()
- {
+ { //! Get the minimum value on the X-axis.
+ //! (Can also get both minimum and maximum as a std::pair).
             return derived().x_axis_.min_;
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_max(double x)
- {
+ { //! Set the maximum value on the X-axis.
             // Not useful to check here that x_max_ > x_min_ because may not have set x_min_ yet.
             derived().x_axis_.max_ = x;
             return derived();
@@ -3259,32 +3287,35 @@
 
           template <class Derived>
           double axis_plot_frame<Derived>::x_max()
- {
+ { //! Get the maximum value on the X-axis.
+ //! (Can also get both minimum and maximum as a std::pair).
             return derived().x_axis_.max_;
           }
 
           template <class Derived>
- bool axis_plot_frame<Derived>::autoscale_check_limits()
- {
- return derived().autoscale_check_limits_;
- }
-
- template <class Derived>
           Derived& axis_plot_frame<Derived>::autoscale_check_limits(bool b)
- { // Default is true, but can switch off checks for speed.
+ { //! Set to check that values used for autoscale are within limits.
+ //! Default is true, but can switch off checks for speed.
             derived().autoscale_check_limits_ = b;
             return derived();
           }
 
           template <class Derived>
+ bool axis_plot_frame<Derived>::autoscale_check_limits()
+ { //! Get to check that values used for autoscale are within limits.
+ //! Default is true, but can switch off checks for speed.
+ return derived().autoscale_check_limits_;
+ }
+
+ template <class Derived>
           bool axis_plot_frame<Derived>::x_autoscale()
- { // Get autoscale setting.
+ { //! Get true if to use autoscale value for X-axis.
            return derived().x_autoscale_;
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_autoscale(bool b)
- { // set whether to use autoscaled values.
+ { //! Set true if to use autoscale values for X-axis.
              if (b && derived().x_auto_tick_interval_ < 0)
              { // No autoscale values have been calculated, so not safe to make x_autoscale true.
                 throw std::runtime_error("X autoscale has not been calculated yet!" );
@@ -3295,14 +3326,15 @@
 
           template <class Derived>
           bool axis_plot_frame<Derived>::autoscale()
- { // AKA x_autoscale.
+ { //! Set true if to use autoscale values for X-axis.
+ //! autoscale() is same as x_autoscale.
            return derived().x_autoscale_;
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::autoscale(bool b)
- { // AKA x_autoscale - set whether to use X autoscaled values.
- // Used by boxplot too.
+ { //! Set whether to use X autoscaled values.
+ //! Same as x_autoscale, and used by boxplot too.
              if (derived().x_auto_tick_interval_ < 0)
              { // No autoscale values have been calculated, so not safe to make x_autoscale true.
                 throw std::runtime_error("X-axis autoscale has not been calculated yet!" );
@@ -3313,8 +3345,8 @@
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_autoscale(std::pair<double, double> p)
- { // Use X min & max pair values to autoscale.
- scale_axis(p.first, p.second, // double min and max from pair.
+ { // Set to use X min & max pair values to autoscale X-axis.
+ scale_axis(p.first, p.second, // double min and max from pair.
               &derived().x_auto_min_value_, &derived().x_auto_max_value_, &derived().x_auto_tick_interval_, &derived().x_auto_ticks_,
               derived().autoscale_check_limits_,
               derived().x_include_zero_, derived().x_tight_, derived().x_min_ticks_, derived().x_steps_);
@@ -3336,12 +3368,7 @@
        // ]
        // 'Derived &boost::svg::detail::axis_plot_frame<Derived>::x_autoscale(bool)'
        //'bool boost::svg::detail::axis_plot_frame<Derived>::x_autoscale(void)'
-
-
-
-
-
- //
+ //
           //template <class Derived, class T> // T an STL container: array, vector ...
           //Derived& axis_plot_frame<Derived>::x_autoscale(const T& begin, const T& end)
           //{ // Data series using iterators to calculate autoscaled values.
@@ -3369,84 +3396,86 @@
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_with_zero(bool b)
- { // Set autoscale to include zero (default = false).
- // Must preceed x_autoscale(data) call.
+ { //! Set X-axis autoscale to include zero (default = false).
+ //! Must preceed x_autoscale(data) call.
             derived().x_include_zero_ = b;
             return derived();
           }
 
           template <class Derived>
           bool axis_plot_frame<Derived>::x_with_zero()
- { //
+ { //! Get true if X-axis autoscale to include zero (default = false).
            return derived().x_include_zero_;
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_min_ticks(int min_ticks)
- { // Set autoscale to include at least min_ticks (default = 6).
- // Must preceed x_autoscale(data) call.
+ { //! Set X-axis autoscale to include at least minimum number of ticks (default = 6).
+ //! Must preceed x_autoscale(data) call.
             derived().x_min_ticks_ = min_ticks;
             return derived();
           }
 
           template <class Derived>
           int axis_plot_frame<Derived>::x_min_ticks()
- { //
+ { //! Get X-axis autoscale minimum number of ticks.
            return derived().x_min_ticks_;
           }
 
           template <class Derived>
           Derived& axis_plot_frame<Derived>::x_steps(int steps)
- { // Set autoscale to set ticks in steps 2,4,6,8,10, or 1,5,10 or 2,5,10.
- // default = 0 (none)
- // Must preceed x_autoscale(data) call.
+ { //! Set autoscale to set ticks in steps multiples of:
+ //! 2,4,6,8,10, if 2,
+ //! or 1,5,10 if 5,
+ //! or 2,5,10 if 10.
+ //! default = 0 (none)
+ //! Must preceed x_autoscale(data) call.
             derived().x_steps_ = steps;
             return derived();
           }
 
           template <class Derived>
           int axis_plot_frame<Derived>::x_steps()
- { //
+ { //! Get autoscale to set ticks in steps.
            return derived().x_steps_;
           }
 
           template <class Derived>
- Derived& axis_plot_frame<Derived>::x_tight(double tight)
- { // Set autoscale to include permit data points slightly outside both end ticks.
- // default 0.
- // Must preceed x_autoscale(data) call.
+ Derived& axis_plot_frame<Derived>::x_tight(double tight)
+ { //! Set tolerance to autoscale to permit data points slightly outside both end ticks.
+ //! default 0.
+ //! Must preceed x_autoscale(data) call.
             derived().x_tight_ = tight;
             return derived();
           }
 
          template <class Derived>
          double axis_plot_frame<Derived>::x_tight()
- { //
+ { //! Get tolerance given to autoscale to permit data points slightly outside both end ticks.
            return derived().x_tight_;
- }
+ }
 
          template <class Derived>
          double axis_plot_frame<Derived>::x_auto_min_value()
- {
+ { //! Get the X-axis minimum value computed by autoscale.
            return derived().x_auto_min_value_;
- }
+ }
 
- template <class Derived>
- double axis_plot_frame<Derived>::x_auto_max_value()
- {
+ template <class Derived>
+ double axis_plot_frame<Derived>::x_auto_max_value()
+ { //! Get the X-axis maximum value computed by autoscale.
            return derived().x_auto_max_value_;
- }
+ }
 
          template <class Derived>
          double axis_plot_frame<Derived>::x_auto_tick_interval()
- {
+ { //! Get the X-axis major tick interal computed by autoscale.
            return derived().x_auto_tick_interval_;
- }
-
+ }
 
         template <class Derived>
         int axis_plot_frame<Derived>::x_auto_ticks()
- {
+ { //! Get the X-axis number of major ticks computed by autoscale.
          return derived().x_auto_ticks_;
         }
 

Modified: sandbox/SOC/2007/visualization/boost/svg_plot/detail/functors.hpp
==============================================================================
--- sandbox/SOC/2007/visualization/boost/svg_plot/detail/functors.hpp (original)
+++ sandbox/SOC/2007/visualization/boost/svg_plot/detail/functors.hpp 2009-01-29 09:55:16 EST (Thu, 29 Jan 2009)
@@ -1,10 +1,9 @@
 /*! \file functors.hpp
-
- \author Jacob Voytko
-
   \brief Functors to convert data to doubles.
   \details SVG plot assumes all data are convertible to double before being plotted.
   The functors are used to convert both 1D and 2D (pairs of data values) to be converted.
+
+ \author Jacob Voytko
 */
 
 // Copyright Jacob Voytko 2007
@@ -22,7 +21,9 @@
 namespace detail {
 
 class boost_default_convert
-{ //! This functor allows any data convertible to doubles to be plotted.
+{ /*! \class boost::svg::detail::boost_default_convert
+ \brief This functor allows any 1D data convertible to doubles to be plotted.
+*/
 public:
     typedef double result_type;
 
@@ -33,10 +34,10 @@
     }
 }; // class boost_default_convert
 
-// -----------------------------------------------------------------
-// -----------------------------------------------------------------
 class boost_default_2d_convert
-{ //! This functor allows any data convertible to type std::pair<double, double> to be plotted.
+{ /*! \class boost::svg::detail::boost_default_2d_convert
+ \brief This functor allows any data convertible to type std::pair<double, double> to be plotted.
+*/
 public:
     typedef std::pair<double, double> result_type;
     double i;

Modified: sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_boxplot_detail.hpp
==============================================================================
--- sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_boxplot_detail.hpp (original)
+++ sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_boxplot_detail.hpp 2009-01-29 09:55:16 EST (Thu, 29 Jan 2009)
@@ -1,5 +1,4 @@
 /*! \file svg_boxplot_detail.hpp
- \author Jacob Voytko and Paul A. Bristow
 
    \brief Boost.Plot SVG Box plot Implemention details.
    \details See svg_boxplot.hpp for user functions.
@@ -8,6 +7,8 @@
    the enum value is used to index the array of id strings.
    void set_ids() copies all strings to matching image.get_g_element(i).id()
    So add any new id items to both!
+
+ \author Jacob Voytko and Paul A. Bristow
    */
 
 // Copyright Jacob Voytko 2007

Modified: sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_style_detail.hpp
==============================================================================
--- sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_style_detail.hpp (original)
+++ sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_style_detail.hpp 2009-01-29 09:55:16 EST (Thu, 29 Jan 2009)
@@ -1,5 +1,6 @@
-/*! \file svg_style.hpp
- \brief Plot document structure whose order controls the painting order, later ones overwriting earlier layers.
+/*! \file svg_style_detail.hpp
+ \brief Plot document structure whose order controls the painting order,
+ later layers overwriting earlier layers.
 
     \author Jacob Voytko and Paul A. Bristow
 */

Modified: sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_tag.hpp
==============================================================================
--- sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_tag.hpp (original)
+++ sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_tag.hpp 2009-01-29 09:55:16 EST (Thu, 29 Jan 2009)
@@ -1,14 +1,14 @@
-/* \file svg_tag.hpp
-
- \author Jacob Voytko and Paul A. Bristow
+/*! \file svg_tag.hpp
 
    \brief Boost.Plot SVG plot Implemention details.
    \details See svg.hpp etc for user functions.
- svg_tag.hpp defines all classes that can occur in the SVG parse tree.
+ svg_tag.hpp defines all classes that can occur in the SVG parse tree.
+
+ \author Jacob Voytko and Paul A. Bristow
 */
 
 // Copyright Jacob Voytko 2007, 2008
-// Copyright Paul A Bristow 2007, 2008
+// Copyright Paul A Bristow 2007, 2008, 2009
 
 // Use, modification and distribution are subject to the
 // Boost Software License, Version 1.0.
@@ -63,10 +63,10 @@
   struct z_path; // z indicates a closepath.
   struct h_path; // Draws a horizontal line from the current point (cpx, cpy) to (x, cpy).
   struct v_path; // Draws a vertical line from the current point (cpx, cpy) to (cpx, y).
- struct c_path; // Draws a cubic Bézier curve from the current point to (x,y) using (x1,y1).
- struct q_path; // Draws a quadratic Bézier curve from the current point to (x,y).
- struct s_path; // Draws a cubic Bézier curve from the current point to (x,y).
- struct t_path; // Draws a quadratic Bézier curve from the current point to (x,y).
+ struct c_path; // Draws a cubic Bezier curve from the current point to (x,y) using (x1,y1).
+ struct q_path; // Draws a quadratic Bezier curve from the current point to (x,y).
+ struct s_path; // Draws a cubic Bezier curve from the current point to (x,y).
+ struct t_path; // Draws a quadratic Bezier curve from the current point to (x,y).
   struct a_path; // Draws a elliptical arc from the current point to (x,y).
   struct P_path; // Adds another (absolute) point to a polyline or polygon.
   class g_element; // 'g' element is a container element, <g ... /> </g>
@@ -74,17 +74,17 @@
   // <g stroke="rgb(255,0,0)" <rect x="0" y="0" width="500" height="600"/> </g>
 
   class svg_element
- { //! \class svg_element Base class for all the leaf elements.
- /*! \details
- svg_element is base class for all the leaf elements:\n
- rect_element, circle_element, line_element, text_element,
- polygon_element, polyline_element, path_element, clip_path_element,
- g_element.\n
-
- g_element ('g' element is a container element
- for grouping together related graphics elements).\n
- See http://www.w3.org/TR/SVG/struct.html#NewDocument 5.2.1 Overview.
- */
+ { /*! \class boost::svg::svg_element
+ \brief svg_element is base class for all the leaf elements.
+ \details
+ rect_element, circle_element, line_element, text_element,
+ polygon_element, polyline_element, path_element, clip_path_element,
+ g_element.\n
+
+ g_element ('g' element is a container element
+ for grouping together related graphics elements).\n
+ See http://www.w3.org/TR/SVG/struct.html#NewDocument 5.2.1 Overview.
+ */
 
   protected:
     svg_style style_info_; //! Colors fill, stroke, width, get by function style.
@@ -218,7 +218,9 @@
   // Represents a line
   // -----------------------------------------------------------------
   class line_element: public svg_element
- { //! Line from (x1_, x2_) to (y1_, y2_)
+ { /*! \class boost::svg::line_element
+ \brief Line from (x1, x2) to (y1, y2).
+ */
   private:
     double x1_; //! Line from (x1_, x2_) to (y1_, y2_)
     double x2_; //! Line from (x1_, x2_) to (y1_, y2_)
@@ -250,29 +252,28 @@
     }
   }; // class line_element
 
-
- // --------------------------------------------------
- // class rect_element: Represents a single rectangle.
- // http://www.w3.org/TR/SVG/shapes.html#RectElement
- // --------------------------------------------------
-
   class rect_element : public svg_element
- {
+ { /*! \class boost::svg::rect_element
+ \brief Rectangle from top left coordinate, width and height.
+ \details
+ Represents a single rectangle.
+ http://www.w3.org/TR/SVG/shapes.html#RectElement
+ */
     friend bool operator==(const rect_element&, const rect_element&);
     friend bool operator!=(const rect_element&, const rect_element&);
 
   private:
- double x_; // x-axis coordinate of the side of the rectangle which has the smaller x-axis coordinate value.
- double y_; // y-axis coordinate of the side of the rectangle which has the smaller y-axis coordinate value.
- // So is top left corner of rectangle.
- double width_; // x + width is top right.
- double height_; // y + height is bottom left
- // x + width and y + height is bottom right.
+ double x_; //! x-axis coordinate of the side of the rectangle which has the smaller x-axis coordinate value.
+ double y_; //! y-axis coordinate of the side of the rectangle which has the smaller y-axis coordinate value.
+ //! So is top left corner of rectangle.
+ double width_; //! x + width is top right.
+ double height_; //! y + height is bottom left.
+ //! x + width and y + height is bottom right.
   public:
 
     rect_element(double x, double y, double w, double h)
       : x_(x), y_(y), width_(w), height_(h)
- { // Constructor defines all private data (no defaults).
+ { //! Constructor defines all private data (no defaults).
     }
 
     rect_element(double x, double y, double w, double h,
@@ -286,38 +287,38 @@
     }
 
     double x() const
- {
+ { //! x-axis coordinate of the side of the rectangle which has the smaller x-axis coordinate value.
       return x_;
     }
 
     double y() const
- {
+ { //! y-axis coordinate of the side of the rectangle which has the smaller y-axis coordinate value.
       return y_;
     }
 
     double width() const
- {
+ { //! x + width is top right.
       return width_;
     }
 
     double height() const
- {
+ { //! y + height is bottom left.
       return height_;
     }
 
     void write(std::ostream& rhs)
- { // SVG xml
+ { //! Output SVG XML for rectangle.
+ //! For example: <rect x="0" y="0" width="500" height="350"/>
       rhs << "<rect";
       write_attributes(rhs); // id (& clip_path)
       rhs << " x=\"" << x_ << "\""
         << " y=\"" << y_ << "\""
         << " width=\"" << width_ << "\""
         << " height=\""<< height_<< "\"/>";
- // For example: <rect x="0" y="0" width="500" height="350"/>
     }
 
     bool operator==(const rect_element& lhs)
- { // Useful for Boost.Test.
+ { // Comparison useful for Boost.Test.
       return (lhs.x() == x_) && (lhs.y() == y_) && (lhs.width() == width_) && (lhs.height() == height_);
     }
     bool operator!=(const rect_element& lhs)
@@ -337,11 +338,10 @@
   }
 
   std::ostream& operator<< (std::ostream& os, const rect_element& r)
- { //
+ { //! Example: rect_element r(20, 20, 50, 50); cout << r << endl;
+ //! Outputs: rect(20, 20, 50, 50)
       os << "rect(" << r.x() << ", " << r.y()
          << ", " << r.width() << ", " << r.height() << ")" ;
- // Usage: rect_element r(20, 20, 50, 50); cout << r << endl;
- // Outputs: rect(20, 20, 50, 50)
     return os;
   } // std::ostream& operator<<
 
@@ -349,7 +349,12 @@
   // class circle_element Represents a single circle.
   // -----------------------------------------------------------------
   class circle_element : public svg_element
- {
+ {/*! \class boost::svg::circle_element
+ \brief Circle from center coordinate, and radius.
+ \details
+ Represents a single circle.
+ http://www.w3.org/TR/SVG/shapes.html#CircleElement
+ */
   private:
     double x;
     double y;
@@ -357,7 +362,7 @@
   public:
     circle_element(double x, double y, double radius = 5)
       : x(x), y(y), radius(radius)
- { // Define all private data.
+ { //! Constructor defines all private data (default radius only).
     }
 
     circle_element(double x, double y, double radius,
@@ -372,11 +377,11 @@
     }
 
     void write(std::ostream& rhs)
- {
+ { //! Output SVG XML
+ //! Example: <circle cx="9.78571" cy="185" r="5"/>
       rhs << "<circle";
       write_attributes(rhs);
       rhs << " cx=\"" << x << "\" cy=\"" << y << "\" r=\"" << radius << "\"/>";
- // Example: <circle cx="9.78571" cy="185" r="5"/>
     }
   }; // class circle_element
 
@@ -385,8 +390,13 @@
   // Represents a single ellipse.
   // -----------------------------------------------------------------
   class ellipse_element : public svg_element
- { // http://www.w3.org/TR/SVG/shapes.html#EllipseElement
- // 9.4 The 'ellipse' element.
+ { /*! \class boost::svg::ellipse_element
+ \brief Ellipse from center coordinate, and radius.
+ \details
+ Represents a single ellipse.
+ http://www.w3.org/TR/SVG/shapes.html#EllipseElement
+ 9.4 The 'ellipse' element.
+ */
   private:
     double cx; // coordinate x of center of ellipse, default 0
     double cy; // coordinate y, default 0
@@ -395,7 +405,7 @@
   public:
     ellipse_element(double cx, double cy, double rx = 4, double ry = 8)
       : cx(cx), cy(cy), rx(rx), ry(ry)
- { // Define all private data.
+ { //! Define all private data (default radii).
     }
 
     ellipse_element(double cx, double cy, double rx, double ry,
@@ -413,34 +423,33 @@
                  const std::string& id_name="",
                  const std::string& class_name="",
                  const std::string& clip_name="")
- : cx(cx), cy(cy), rx(4), ry(8), // 4 and 8 are the same defaults used above
+ : cx(cx), cy(cy), rx(4), ry(8), // 4 and 8 are the same defaults used above.
         svg_element(style_info, id_name, class_name, clip_name)
     { // Define all private data.
     }
 
     void write(std::ostream& rhs)
- {
+ { //! Output SVG XML for ellipse.
+ //! Example: <ellipse rx="250" ry="100" fill="red" />
       rhs << "<ellipse";
       write_attributes(rhs);
       rhs << " cx=\"" << cx << "\" cy=\"" << cy << "\""
           << " rx=\"" << rx << "\" ry=\"" << ry << "\"/>";
- // Example: <ellipse rx="250" ry="100" fill="red" />
     }
   }; // class ellipse_element
 
- // ----------------------------------------------------------------------
- // text_element Represents a single block of text, with font & alignment.
- // ----------------------------------------------------------------------
   enum align_style
- {
+ { //! text_element Represents a single block of text, with font & alignment.
     left_align, //!< Align text to left.
     right_align, //!< Align text to right.
     center_align //!< Center text.
   };
 
 class text_parent
-{ // An ancestor to both tspan and strings for the text_element class.
- // This allows an array of both to be stored in text_element.
+{ /*! \class boost::svg::text_parent
+ \brief An ancestor to both tspan and strings for the text_element class.
+ \details This allows an array of both types to be stored in text_element.
+ */
   protected:
     std::string text_;
 
@@ -458,7 +467,10 @@
 }; // class text_parent
 
 class text_element_text : public text_parent
-{
+{ /*! \class boost::svg::text_element_text
+ \brief text (not tspan) element to be stored in text_parent.
+ \details See 10.4 text element http://www.w3.org/TR/SVG/text.html#TextElement
+ */
 public:
   text_element_text(const std::string& text): text_parent(text)
   {
@@ -473,25 +485,26 @@
 }; // class text_element_text
 
 class tspan_element : public text_parent, public svg_element
-{ // See 10.5 tspan element http://www.w3.org/TR/SVG/text.html#TSpanElement
+{ /*! \class boost::svg::tspan_element
+ \brief tspan (not text) to be stored in text_parent.
+ \details See 10.5 tspan element http://www.w3.org/TR/SVG/text.html#TSpanElement
+ */
 private:
- double x_; // Absolute positions.
- double y_;
- double dx_; // Relative positions.
- double dy_;
- int rotate_; // of a 1st single character of text.
+ double x_; //!< Absolute X position.
+ double y_; //!< Absolute Y position.
+ double dx_; //!< Relative X position of a 1st single character of text.
+ double dy_;//!< Relative Y position of a 1st single character of text.
+ int rotate_; //!< Rotation of a 1st single character of text.
   // A list of shifts or rotations for several characters is not yet implemented.
-
- double text_length_; // Allows the author to provide exact alignment.
-
- // dx_, dy_, and rotate_ can all be omitted, usually meaning no shift or rotation,
- // but see http://www.w3.org/TR/SVG/text.html#TSpanElement for ancestor rules.
- // but x_, y_, and text_length need a flag.
+ double text_length_; //!< Allows the author to provide exact alignment.
+ //! dx_, dy_, and rotate_ can all be omitted, usually meaning no shift or rotation,
+ //! but see http://www.w3.org/TR/SVG/text.html#TSpanElement for ancestor rules.
+ //! but x_, y_, and text_length need a flag.
   bool use_x_;
   bool use_y_;
   bool use_text_length_;
 
- text_style style_; // font variants.
+ text_style style_; //!< font variants.
   bool use_style_;
 
 public:
@@ -529,79 +542,79 @@
   tspan_element& text(const std::string& text)
   {
     text_=text;
- return *this;
+ return *this; //! \return tspan_element& to make chainable.
   }
 
   tspan_element& dx(double dx)
   {
     dx_ = dx;
- return *this;
+ return *this; //! \return tspan_element& to make chainable.
   }
 
   tspan_element& dy(double dy)
   {
     dy_ = dy;
- return *this;
+ return *this; //! \return tspan_element& to make chainable.
   }
 
   tspan_element& rotation(int rotation)
- { // Note implementation so far only rotates the 1st character in string.
- // text_element rotation rotates the whole text string, so it *much* more useful.
+ { //!< Note implementation so far only rotates the 1st character in string.
+ //!< text_element rotation rotates the whole text string, so it *much* more useful.
     rotate_ = rotation;
- return *this;
+ return *this; //! \return tspan_element& to make chainable.
   }
 
   tspan_element& x(double x)
   {
     x_ = x;
     use_x_ = true;
- return *this;
+ return *this; //! \return tspan_element& to make chainable.
   }
 
   tspan_element& y(double y)
   {
     y_ = y;
     use_y_ = true;
- return *this;
+ return *this; //! \return tspan_element& to make chainable.
   }
 
   tspan_element& text_length(double text_length)
   {
     text_length_ = text_length;
     use_text_length_ = true;
- return *this;
+ return *this; //! \return tspan_element& to make chainable.
   }
 
   tspan_element& font_size(unsigned int size)
   {
     style_.font_size(size);
     use_style_ = true;
- return *this;
+ return *this; //! \return tspan_element& to make chainable.
   }
 
   tspan_element& font_family(const std::string& family)
   {
     style_.font_family(family);
     use_style_ = true;
- return *this;
+ return *this; //! \return tspan_element& to make chainable.
   }
 
   tspan_element& font_style(const std::string& style)
- { // font-style: normal | bold | italic | oblique
- // Examples: "italic"
- // http://www.croczilla.com/~alex/conformance_suite/svg/text-fonts-02-t.svg
+ { //! font-style: normal | bold | italic | oblique
+ //! Examples: "italic"
+ //! http://www.croczilla.com/~alex/conformance_suite/svg/text-fonts-02-t.svg
     style_.font_style(style);
     use_style_ = true;
- return *this;
+ return *this; //! \return tspan_element& to make chainable.
   }
 
   tspan_element& font_weight(const std::string& w)
- { // svg font-weight: normal | bold | bolder | lighter | 100 | 200 .. 900
- // Examples: "bold", "normal"
- // http://www.croczilla.com/~alex/conformance_suite/svg/text-fonts-02-t.svg
- // tests conformance. Only two weights are supported by Firefox, Opera, Inkscape
+ { //! svg font-weight: normal | bold | bolder | lighter | 100 | 200 .. 900
+ //! Examples: "bold", "normal"
+ //! http://www.croczilla.com/~alex/conformance_suite/svg/text-fonts-02-t.svg
+ //! tests conformance. Only two weights are supported by Firefox, Opera, Inkscape.
     style_.font_weight(w);
- return *this;
+ return *this; //! \return tspan_element& to make chainable.
   }
 
   tspan_element& fill_color(const svg_color& color)
@@ -609,10 +622,9 @@
     style_info_.fill_color(color);
     style_info_.fill_on(true);
     use_style_ = true;
- return *this;
+ return *this; //! \return tspan_element& to make chainable.
   }
 
-
   // All getters.
 
   //tspan_element::std::string text();
@@ -669,9 +681,8 @@
   }
 
   void write(std::ostream& os)
- { // tspan_element
+ { //! Output SVG XML for tspan_element
     os << "<tspan";
-
     write_attributes(os); // id & clip_path
     style_info_.write(os); // fill, stroke, width...
 
@@ -742,18 +753,37 @@
   } // tspan_element::tspan_element
 
 class text_element : public svg_element
-{ // Holds text with position, size, font, (& styles) & orientation.
- // Not necessarily shown correctly by all browsers, alas.
+{ /*! \class boost::svg::text_element
+ \brief Holds text with position, size, font, (& styles) & orientation.
+ \details
+ Not necessarily shown correctly by all browsers, alas.
+ SVG Coordinates of 1st character EM box, see
+ http://www.w3.org/TR/SVG/text.html#TextElement 10.2
+ So any text with y coordinate = 0 shows only any roman lower case descenders!\n\n
+
+ (Text may contain embedded xml Unicode characters
+ for Greek, math etc, for example: &#x3A9;).
+ int size; // " font-size = 12"
+ http://www.w3.org/TR/SVG/text.html#CharactersAndGlyphs
+ std::string font; // font-family: "Arial" | "Times New Roman" | "Verdana" | "Lucida Sans Unicode"
+ "sans", "serif", "times"
+ http://www.w3.org/TR/SVG/text.html#FontFamilyProperty
+ 10.10 Font selection properties
+ std::string style_; // font-style: normal | bold | italic | oblique
+ std::string weight; // font-weight: normal | bold | bolder | lighter | 100 | 200 .. 900
+ std::string stretch; // font-stretch: normal | wider | narrower ...
+ std::string decoration; // // "underline" | "overline" | "line-through"
+ Example:
+ <text x="250" y="219.5" text-anchor="middle" font-family="verdana" font-size="12">0 </text>
+
+ */
  private: // Access only via member functions below.
- // SVG Coordinates of 1st character EM box, see
- // http://www.w3.org/TR/SVG/text.html#TextElement 10.2
- // So any text with y coordinate = 0 shows only any roman lower case descenders!
- double x_; // Left edge.
- double y_; // Bottom of roman capital character.
- ptr_vector<text_parent> data_; // Stores all of the containing data.
- text_style style_; // font variants.
- align_style align_; // left_align, right_align, center_align
- rotate_style rotate_; // horizontal, upward, downward, upsidedown
+ double x_; //!< Left edge.
+ double y_; //!< Bottom of roman capital character.
+ ptr_vector<text_parent> data_; //!< Stores all of the containing data.
+ text_style style_; //!< font variants.
+ align_style align_; //!< left_align, right_align, center_align
+ rotate_style rotate_; //!< horizontal, upward, downward, upsidedown
 
   void _generate_text(std::ostream& os)
   {
@@ -764,21 +794,6 @@
       (*i).write(os);
     }
   }
- // (Text may contain embedded xml Unicode characters
- // for Greek, math etc, for example: &#x3A9;).
- //int size; // " font-size = 12"
- // http://www.w3.org/TR/SVG/text.html#CharactersAndGlyphs
- //std::string font; // font-family: "Arial" | "Times New Roman" | "Verdana" | "Lucida Sans Unicode"
- // "sans", "serif", "times"
- // http://www.w3.org/TR/SVG/text.html#FontFamilyProperty
- // 10.10 Font selection properties
- //std::string style_; // font-style: normal | bold | italic | oblique
- //std::string weight; // font-weight: normal | bold | bolder | lighter | 100 | 200 .. 900
- //std::string stretch; // font-stretch: normal | wider | narrower ...
- //std::string decoration; // // "underline" | "overline" | "line-through"
- // Example:
- // <text x="250" y="219.5" text-anchor="middle" font-family="verdana" font-size="12">0 </text>
-
 public:
   // Set
   //void alignment(align_style a);
@@ -798,7 +813,6 @@
   //double x() const;
   //double y() const;
 
-
   text_style& style()
   { // Access to font family, size ...
     return style_;
@@ -812,25 +826,25 @@
   text_element& style(text_style& ts)
   {
     style_ = ts;
- return *this;
+ return *this; //! \return text_element& to make chainable.
   }
 
   text_element& alignment(align_style a) // TODO Change name to align????
- { // left_align, right_align, center_align
+ { //! left_align, right_align, center_align
     align_ = a;
- return *this;
+ return *this; //! \return text_element& to make chainable.
   }
 
   align_style alignment()
- { // left_align, right_align, center_align
+ { //! left_align, right_align, center_align
     return align_;
   }
 
   text_element& rotation(rotate_style rot)// TODO Change name to rotate???
- { // Degrees: horizontal = 0, upward = -90, downward, upsidedown
- // Generates: transform = "rotate(-45 100 100 )"
+ { //! Degrees: horizontal = 0, upward = -90, downward, upsidedown
+ //! Generates: transform = "rotate(-45 100 100 )"
     rotate_ = rot;
- return *this;
+ return *this; //! \return text_element& to make chainable.
   }
 
   rotate_style rotation() const
@@ -842,29 +856,29 @@
   // my_text_element.style(no_style).x(999).y(555).alignment(right_align).rotation(vertical);
 
   text_element& x(double x)
- { // x coordinate of text to write.
+ { //! x coordinate of text to write.
     x_ = x;
- return *this;
+ return *this; //! \return text_element& to make chainable.
   }
 
   double x() const
- { // x coordinate of text to write.
+ { //! x coordinate of text to write.
     return x_;
   }
 
   text_element& y(double y)
- { // y coordinate of text to write.
+ { //! y coordinate of text to write.
     y_ = y;
- return *this;
+ return *this; //! \return text_element& to make chainable.
   }
 
   double y() const
- { // y coordinate of text to write.
+ { //! y coordinate of text to write.
     return y_;
   }
 
   void text(const std::string& t)
- { // text to write.
+ { //! text string to write.
     data_.push_back(new text_element_text(t));
   }
 
@@ -875,8 +889,8 @@
   }
 
   text_element(
- // Coordinates of 1st character EM box, see
- // http://www.w3.org/TR/SVG/text.html#TextElement 10.2
+ //! Coordinates of 1st character EM box, see
+ //! http://www.w3.org/TR/SVG/text.html#TextElement 10.2
     double x = 0., // Left edge.
     double y = 0., // Bottom of character (roman capital).
     // So any text with y coordinate = 0 shows only the roman lower case descenders!
@@ -891,7 +905,7 @@
     style_(ts),
     align_(align),
     rotate_(rotate)
- { // text_element Default Constructor, defines defaults for all private members.
+ { //! text_element Default Constructor, defines defaults for all private members.
     data_.push_back(new text_element_text(text)); // Adds new text string.
   }
 
@@ -911,7 +925,7 @@
     style_ = rhs.style_;
     align_ = rhs.align_;
     rotate_ = rhs.rotate_;
- return *this; // ADDed PAB.
+ return *this; //! to make chainable.
   }
 
   std::string text()
@@ -922,7 +936,7 @@
   }
 
   void write(std::ostream& os)
- { // text_element, style & attributes to stream.
+ { //! Output text_element, style & attributes to stream.
     // Changed to new convention on spaces:
     // NO trailing space, but *start* each item with a space.
     // For debug, may be convenient to start with newline.
@@ -982,28 +996,28 @@
     os << " font-decoration=\"" << style_.font_decoration() << "\"";
     }
     os << '>' ;
-
     _generate_text(os);
-
     os << "</text>";
     // Example:
   } // void write(std::ostream& os)
 }; // class text_element_
 
   std::ostream& operator<< (std::ostream& os, text_element& t)
- { //
+ { //! Outputs: text & style (useful for diagnosis).
+ //! Usage: text_element t(20, 30, "sometest", left_align, horizontal); cout << t << endl;
       t.write(os);
- // Usage: text_element t(20, 30, "sometest", left_align, horizontal); cout << t << endl;
- // Outputs:
+
     return os;
   } // std::ostream& operator<<
 
   class clip_path_element: public svg_element
- { // The clipping path restricts the region to which paint can be applied.
- // 14.3 Clipping paths http://www.w3.org/TR/SVG/masking.html#ClipPathProperty
+ { /*! \class boost::svg::clip_path_element
+ \brief The clipping path restricts the region to which paint can be applied.
+ \details 14.3 Clipping paths http://www.w3.org/TR/SVG/masking.html#ClipPathProperty.
+ */
   private:
- std::string element_id;
- rect_element rect; // Clipping rectangle.
+ std::string element_id; // SVG element id.
+ rect_element rect; //! Clipping rectangle.
 
   public:
 
@@ -1021,9 +1035,11 @@
   }; // class clip_path_element
 
   struct path_point
- { // Base class for m_path, z_path, q_path, h_path, v_path, c_path, s_path.
- // Paths represent the outline of a shape which can be
- // filled, stroked, used as a clipping path, or any combination of the three.
+ { /*! \struct boost::svg::path_point
+ \brief Base class for m_path, z_path, q_path, h_path, v_path, c_path, s_path.
+ \details Paths represent the outline of a shape which can be
+ filled, stroked, used as a clipping path, or any combination of the three.
+ */
     bool relative; // or if false then absolute.
 
     virtual void write(std::ostream& rhs) = 0;
@@ -1038,13 +1054,15 @@
 
 
   struct m_path: public path_point
- { // moveto coordinates (x, y)
- // 8.3.2 The "moveto" commands.
+ { /*! \struct boost::svg::m_path
+ \brief moveto coordinates (x, y)
+ \details 8.3.2 The "moveto" commands.
+ */
     double x;
     double y;
 
     void write(std::ostream& o_str)
- {
+ { //! Example: "M52.8571,180 "
       if(relative)
       {
         o_str << "m";
@@ -1054,7 +1072,7 @@
         o_str << "M";
       }
       o_str << x << "," << y << " "; // separator changed to comma for clarity.
- // Example: "M52.8571 180 "
+
     } // void write(std::ostream& o_str)
 
     m_path(double x, double y, bool relative = false)
@@ -1064,11 +1082,14 @@
   }; // struct m_path
 
   struct z_path: public path_point
- { // http://www.w3.org/TR/SVG/paths.html#PathElement
- // 8.3.1 General information about path data.
- // z indicates a closepath.
- // Close the current subpath by drawing a straight line
- // from the current point to current subpath's initial point.
+ { /*! \struct boost::svg::z_path
+ \brief Close current path.
+ \details
+ http://www.w3.org/TR/SVG/paths.html#PathElement
+ 8.3.1 General information about path data.
+ Close the current subpath by drawing a straight line
+ from the current point to current subpath's initial point.
+ */
     void write(std::ostream& o_str)
     {
       o_str << "Z";
@@ -1081,9 +1102,10 @@
 
   // 8.3.4 The "lineto" commands L, H & V.
   struct l_path: public path_point
- {
- // Draw a line from the current point to the given (x,y) coordinate
- // which becomes the new current point.
+ { /*! \struct boost::svg::l_path
+ \brief Draw a line from the current point to the given (x,y) coordinate
+ which becomes the new current point.
+ */
     double x;
     double y;
 
@@ -1106,11 +1128,13 @@
     }
   }; // struct l_path
 
- struct h_path: public path_point
- { // Draws a horizontal line from the current point (cpx, cpy) to (x, cpy).
- double x;
- // No y needed, start from current point y.
 
+
+ struct h_path: public path_point
+ { /*! \struct boost::svg::h_path
+ \brief Draws a horizontal line from the current point (cpx, cpy) to (x, cpy).
+ which becomes the new current point. No y needed, start from current point y.
+ */
     void write(std::ostream& o_str)
     {
       if(relative)
@@ -1131,9 +1155,11 @@
   }; // struct h_path
 
   struct v_path: public path_point
- { // Draws a vertical line from the current point (cpx, cpy) to (cpx, y).
+ { /*! \struct boost::svg::v_path
+ \brief Draws a vertical line from the current point (cpx, cpy) to (cpx, y).
+ No x coordinate needed - use current point x.
+ */
     double y;
- // No x coordinate needed - use current point x
     void write(std::ostream& o_str)
     {
       if(relative)
@@ -1153,10 +1179,12 @@
     }
   }; // struct v_path
 
- // 8.3.5 The curve commands: C, Q & A.
 
   struct c_path: public path_point
- { // Draws a cubic Bézier curve from the current point to (x,y) using (x1,y1).
+ { /*! \struct boost::svg::c_path
+ \brief Draws a cubic Bezier curve from the current point to (x, y) using (x1, y1).
+ \details 8.3.5 The curve commands: C, Q & A.
+ */
     double x1;
     double y1;
     double x2;
@@ -1187,8 +1215,10 @@
   }; // struct c_path
 
   struct q_path: public path_point
- { // Draws a quadratic Bézier curve from the current point to (x,y).
- // using (x1,y1) as the control point.
+ { /*! \struct boost::svg::q_path
+ \brief Draws a quadratic Bezier curve from the current point to (x,y).
+ using (x1,y1) as the control point.
+ */
     double x1, y1, x, y;
 
     void write(std::ostream& o_str)
@@ -1212,7 +1242,11 @@
   }; //struct q_path
 
   struct s_path : public path_point
- { // Draws a cubic Bézier curve from the current point to (x,y).
+ { /*! \struct boost::svg::s_path
+ \brief Draws a cubic Bezier curve from the current point to (x,y).
+ \details see also t_path for a quadratic Bezier curve.
+
+ */
     double x1, y1, x, y;
 
     void write(std::ostream& o_str)
@@ -1236,7 +1270,10 @@
   }; // struct s_path
 
   struct t_path: public path_point
- { // Draws a quadratic Bézier curve from the current point to (x,y).
+ { /*! \struct boost::svg::t_path
+ \brief Draws a quadratic Bezier curve from the current point to (x,y).
+ \details see also s_path for a cubic Bezier curve.
+ */
     double x;
     double y;
 
@@ -1259,18 +1296,20 @@
     }
   }; // struct t_path
 
- struct a_path: public path_point
- { // Draws a elliptical arc from the current point to (x,y),
- // using two radii, axis rotation, and control two flags.
- // See 8.3.8 The elliptical arc curve commands.
- // Needed for pie charts, etc.
- double x;
- double y;
- double rx;
- double ry;
- double x_axis_rotation;
- bool large_arc; // true if arc >= 180 degrees wanted.
- bool sweep; // true if to draw in positive-angle direction
+ struct a_path : public path_point
+ { /*! \struct boost::svg::a_path
+ \brief Draws a elliptical arc from the current point to (x,y),
+ using two radii, axis rotation, and control two flags.
+ \details See 8.3.8 The elliptical arc curve commands.!
+ Useful for pie charts, etc.
+ */
+ double x; //!< X End of arc from current point.
+ double y; //!< Y End of arc from current point.
+ double rx; //!< X radius
+ double ry; //!< Y radius
+ double x_axis_rotation; //!< Any rotation of the X axis.
+ bool large_arc; //!< true if arc >= 180 degrees wanted.
+ bool sweep; //!< true if to draw in positive-angle direction
 
     void write(std::ostream& o_str)
     {
@@ -1294,12 +1333,16 @@
   }; // struct a_path
 
   class path_element: public svg_element
- { // http://www.w3.org/TR/SVG/paths.html#PathElement
- // 8.3.1 General information about path data.
- // A path is defined by including a 'path' element
- // which contains a d="(path data)" attribute,
- // where the d attribute contains the moveto, line, curve
- // (both cubic and quadratic Béziers), arc and closepath instructions.
+ { /*! \class boost::svg::path_element
+ \brief Path element holds places on a path used by move, line ...
+ \details
+ http://www.w3.org/TR/SVG/paths.html#PathElement
+ 8.3.1 General information about path data.
+ A path is defined by including a 'path' element
+ which contains a d="(path data)" attribute,
+ where the d attribute contains the moveto, line, curve
+ (both cubic and quadratic Beziers), arc and closepath instructions.
+ */
   private:
     ptr_vector<path_point> path; // All the (x, y) coordinate pairs,
     // filled by calls of m, M, l , L... that push_back.
@@ -1328,7 +1371,7 @@
     path_element& fill_on(bool on_)
     { // Set area fill, on or off.
       style_info_.fill_on(on_);
- return *this;
+ return *this; //! \return path_element& to make chainable.
     }
 
     bool fill_on()
@@ -1345,110 +1388,110 @@
     path_element& m(double x, double y)
     { // relative.
       path.push_back(new m_path(x, y, true));
- return *this;
+ return *this; //! \return path_element& to make chainable.
     }
 
     path_element& M(double x, double y)
     { // absolute.
       path.push_back(new m_path(x, y, false));
- return *this;
+ return *this; //! \return path_element& to make chainable.
     }
 
     path_element& z()
     { // Note lower case z, see path_element& Z() below.
       path.push_back(new z_path());
- return *this;
+ return *this; //! \return path_element& to make chainable.
     }
 
     path_element& Z()
     { // Upper case Z also provided for compatibility with
       // http://www.w3.org/TR/SVG/paths.html#PathDataClosePathCommand 8.3.3 which allows either case.
       path.push_back(new z_path());
- return *this;
+ return *this; //! \return path_element& to make chainable.
     }
 
     path_element& l(double x, double y)
     {
       path.push_back(new l_path(x, y, true));
- return *this;
+ return *this; //! \return path_element& to make chainable.
     }
 
     path_element& L(double x, double y)
     {
       path.push_back(new l_path(x, y, false));
- return *this;
+ return *this; //! \return path_element& to make chainable.
     }
 
     path_element& h(double x)
     {
       path.push_back(new h_path(x, true));
- return *this;
+ return *this; //! \return path_element& to make chainable.
     }
 
     path_element& H(double x)
     {
       path.push_back(new h_path(x, false));
- return *this;
+ return *this; //! \return path_element& to make chainable.
     }
 
     path_element& v(double y)
     {
       path.push_back(new v_path(y, true));
- return *this;
+ return *this; //! \return path_element& to make chainable.
     }
 
     path_element& V(double y)
     {
       path.push_back(new v_path(y, false));
- return *this;
+ return *this; //! \return path_element& to make chainable.
     }
 
     path_element& c(double x1, double y1, double x2, double y2, double x, double y)
     {
       path.push_back(new c_path(x1, y1, x2, y2, x, y, true));
- return *this;
+ return *this; //! \return path_element& to make chainable.
     }
 
     path_element& C(double x1, double y1, double x2, double y2, double x, double y)
     {
       path.push_back(new c_path(x1, y1, x2, y2, x, y, false));
- return *this;
+ return *this; //! \return path_element& to make chainable.
     }
 
     path_element& q(double x1, double y1, double x, double y)
     {
       path.push_back(new q_path(x1, y1, x, y, true));
- return *this;
+ return *this; //! \return path_element& to make chainable.
     }
 
     path_element& Q(double x1, double y1, double x, double y)
     {
       path.push_back(new q_path(x1, y1, x, y, false));
- return *this;
+ return *this; //! \return path_element& to make chainable.
     }
 
     path_element& s(double x1, double y1, double x, double y)
     {
       path.push_back(new s_path(x1, y1, x, y, true));
- return *this;
+ return *this; //! \return path_element& to make chainable.
     }
 
     path_element& S(double x1, double y1, double x, double y)
     { //
       path.push_back(new s_path(x1, y1, x, y, false));
- return *this;
+ return *this; //! \return path_element& to make chainable.
     }
 
     path_element& t(double x, double y)
     {
       path.push_back(new t_path(x, y, true));
- return *this;
+ return *this; //! \return path_element& to make chainable.
     }
 
     path_element& T(double x, double y)
     {
       path.push_back(new t_path(x, y, false));
- return *this;
+ return *this; //! \return path_element& to make chainable.
     }
 
     void write(std::ostream& o_str)
@@ -1480,8 +1523,10 @@
   }; // class path_element
 
   struct poly_path_point
- { // polyline or polygon point coordinates (x, y)
- // 9.6 polyline & 9.7 The 'polygon' element.
+ { /*! \struct boost::svg::poly_path_point
+ \brief polyline or polygon point coordinates (x, y)
+ \details 9.6 polyline & 9.7 The 'polygon' element.
+ */
     double x;
     double y;
     // Polygon & polyline points are always absolute, never relative,
@@ -1489,11 +1534,11 @@
     // So NOT derived from path_point.
 
     void write(std::ostream& o_str)
- {
+ { //! Output SVG XML,
+ //! Example: " 250,180"
+ //! Leading space is redundant for 1st after "points= ",
+ //! but others are separators, and arkward to know which is 1st.
       o_str << " " << x << "," << y; // x, y separator comma for clarity.
- // Leading space is redundant for 1st after "points= ",
- // but others are separators, and arkward to know which is 1st.
- // Example: " 250,180"
     } // void write(std::ostream& o_str)
 
     poly_path_point(double x, double y)
@@ -1509,29 +1554,32 @@
   }; // struct poly_path_point
 
   std::ostream& operator<< (std::ostream& os, const poly_path_point& p)
- { // May be needed for Boost.Test.
- os << "(" << p.x << ", " << p.y << ")";
- // Usage: poly_path_point p0(100, 200);
- // cout << p0 << endl;
- // Outputs: (100, 200)
+ { //! Output may be useful for Boost.Test.
+ //! Usage: poly_path_point p0(100, 200);
+ //! cout << p0 << endl;
+ //! Outputs: (100, 200)
+ os << "(" << p.x << ", " << p.y << ")";
     return os;
   } // std::ostream& operator<<
 
   class polygon_element: public svg_element
- { // http://www.w3.org/TR/SVG/shapes.html#PolygonElement
- // 9. 9.7 The 'polygon' element
- // The 'polygon' element defines a closed shape
- // consisting of a set of connected straight line segments.
- // A polygon is defined by including a 'path' element
- // which contains a points="(path data)" attribute,
- // where the d attribute contains the x, y coordinate pairs.
+ { /*! \struct boost::svg::polygon_element
+ \brief The 'polygon' element defines a closed shape
+ consisting of a set of connected straight line segments.
+
+ \details http://www.w3.org/TR/SVG/shapes.html#PolygonElement
+ The 'polygon' element 9.9.7.
+ A polygon is defined by including a 'path' element
+ which contains a points="(path data)" attribute,
+ where the d attribute contains the x, y coordinate pairs.
+ */
     friend std::ostream& operator<< (std::ostream&, const polygon_element&);
     friend std::ostream& operator<< (std::ostream&, polygon_element&);
 
   private:
     //using boost::ptr_vector;
- ptr_vector<poly_path_point> poly_points; // All the x, y coordinate pairs,
- // push_backed by calls of p_path(x, y).
+ ptr_vector<poly_path_point> poly_points; //!< All the x, y coordinate pairs,
+ //!< push_backed by calls of p_path(x, y).
   public:
     bool fill; // polygon to have fill color.
 
@@ -1546,13 +1594,13 @@
     }
 
     polygon_element (double x, double y, bool f = true) : fill(f)
- { // Constructor - One absolute (x, y) point only.
- // Can add more path points using member function P.
+ { //! Constructor - One absolute (x, y) point only.
+ //! Can add more path points using member function P.
       poly_points.push_back(new poly_path_point(x, y));
     }
 
     polygon_element (double x1, double y1, double x2, double y2, double x3, double y3, bool f = true) : fill(f)
- { // Constructor - Absolute (x, y) only. Used by triangle.
+ { //! Constructor - Absolute (x, y) only. Used by triangle.
       poly_points.push_back(new poly_path_point(x1, y1));
       poly_points.push_back(new poly_path_point(x2, y2));
       poly_points.push_back(new poly_path_point(x3, y3));
@@ -1561,7 +1609,7 @@
     polygon_element (double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4, bool f = true)
       :
       fill(f)
- { // Constructor - Absolute (x, y) only. Used by rhombus.
+ { //! Constructor - Absolute (x, y) only. Used by rhombus.
       poly_points.push_back(new poly_path_point(x1, y1));
       poly_points.push_back(new poly_path_point(x2, y2));
       poly_points.push_back(new poly_path_point(x3, y3));
@@ -1571,7 +1619,7 @@
     polygon_element (double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4, double x5, double y5, bool f = true)
       :
       fill(f)
- { // Constructor - Absolute (x, y) only. Used by pentagon.
+ { //! Constructor - Absolute (x, y) only. Used by pentagon.
       poly_points.push_back(new poly_path_point(x1, y1));
       poly_points.push_back(new poly_path_point(x2, y2));
       poly_points.push_back(new poly_path_point(x3, y3));
@@ -1582,7 +1630,7 @@
     polygon_element (double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4, double x5, double y5, double x6, double y6, bool f = true)
       :
       fill(f)
- { // Constructor - Six absolute (x, y) only. Used by hexagon.
+ { //! Constructor - Six absolute (x, y) only. Used by hexagon.
       // Might be done more efficiently with fixed size boost::array?
       poly_points.push_back(new poly_path_point(x1, y1));
       poly_points.push_back(new poly_path_point(x2, y2));
@@ -1595,7 +1643,7 @@
     polygon_element (std::vector<poly_path_point>& points, bool f = true)
       :
       fill(f)
- { // Constructor from vector of path points.
+ { //! Constructor from vector of path points.
       poly_points.reserve(points.size()); // Since we know how many will be pushed.
       for(std::vector<poly_path_point>::iterator i = points.begin(); i != points.end(); ++i)
       {
@@ -1635,13 +1683,17 @@
 */
     // Member function to add more points to polygon.
     polygon_element& P(double x, double y)
- { // Add another (x, y) - absolute only.
+ { //! Add another point (x, y) - absolute only.
       poly_points.push_back(new poly_path_point(x, y));
- return *this;
+ return *this; //! \return polygon_element& to make chainable.
     }
 
     void write(std::ostream& o_str)
- {
+ { /*! \brief Output SVG XML:
+ \details Example: <polygon fill="lime" stroke="blue" stroke-width="10"
+ points="850,75 958,137.5 958,262.5
+ 850,325 742,262.6 742,137.5" />
+ */
       o_str << "<polygon points=\"";
       for(ptr_vector<poly_path_point>::iterator i = poly_points.begin(); i != poly_points.end(); ++i)
       {
@@ -1655,58 +1707,61 @@
         o_str << " fill = \"none\"";
       }
       o_str<<"/>";
- // Example: <polygon fill="lime" stroke="blue" stroke-width="10"
- // points="850,75 958,137.5 958,262.5
- // 850,325 742,262.6 742,137.5" />
     } // void write(std::ostream& o_str)
 
     std::ostream& operator<< (std::ostream& os)
- { // May be needed for Boost.Test.
+ { /*! \brief Output polygon info. (May be useful for Boost.Test.
+ using os << "(" << p.x << ", " << p.y << ")" ;
+ Usage: polygon_element p(1, 2, 3, 4, 5, 6);
+ my_polygon.operator << (cout);
+ (But NOT cout << my_polygon << endl;)
+ Outputs: (1, 2)(3, 4)(5, 6)
+ */
       for(ptr_vector<poly_path_point>::iterator i = poly_points.begin(); i != poly_points.end(); ++i)
       {
         os << (*i); // x, y coordinates as " (1, 2)"
       }
- // using os << "(" << p.x << ", " << p.y << ")" ;
- // Usage: polygon_element p(1, 2, 3, 4, 5, 6);
- // my_polygon.operator<<(cout);
- // But NOT cout << my_polygon << endl;
- // Outputs: (1, 2)(3, 4)(5, 6)
       return os;
     } // std::ostream& operator<<
 
   }; // class polygon_element
 
   std::ostream& operator<< (std::ostream& os, polygon_element& p)
- { // May be needed for Boost.Test.
- // ptr_vector<poly_path_point> poly_points; // All the x, y coordinate pairs,
+ { /*! \brief Output poly_path_ points (May be useful for Boost.Test).
+ \details ptr_vector<poly_path_point> poly_points; All the x, y coordinate pairs,
+ Usage: polygon_element p(1, 2, 3, 4, 5, 6);
+ cout << p << endl;
+ Outputs: (1, 2)(3, 4)(5, 6)
+ */
     for(ptr_vector<poly_path_point>::iterator i = p.poly_points.begin(); i != p.poly_points.end(); ++i)
     {
       os << (*i); // x, y coordinates as " (1, 2)(3, 4)..."
       // using os << "(" << p.x << ", " << p.y << ")" ;
     }
- // Usage: polygon_element p(1, 2, 3, 4, 5, 6);
- // cout << p << endl;
- // Outputs: (1, 2)(3, 4)(5, 6)
     return os;
   } // std::ostream& operator<<
 
   class polyline_element: public svg_element
- { // http://www.w3.org/TR/SVG/shapes.html#PolylineElement
- // 9.6 The 'polyline' element: defines a set of connected straight line segments.
- // Typically, 'polyline' elements define open shapes.
- // A polyline is defined by including a 'path' element
- // which contains a points="(path data)" attribute,
- // where the points attribute contains the x, y coordinate pairs.
- // * perform an absolute moveto operation
- // to the first coordinate pair in the list of points
- // * for each subsequent coordinate pair,
- // perform an absolute lineto operation to that coordinate pair.
- // The advantage of polyline is in reducing file size,
- // avoiding M and repeated L before x & y coordinate pairs.
+ { /*! \class boost::svg::polyline_element
+ \brief The 'polyline' element: defines a set of connected straight line segments.
+ \details
+ http://www.w3.org/TR/SVG/shapes.html#PolylineElement
+ 9.6 The 'polyline' element: defines a set of connected straight line segments.
+ Typically, 'polyline' elements define open shapes.
+ A polyline is defined by including a 'path' element
+ which contains a points="(path data)" attribute,
+ where the points attribute contains the x, y coordinate pairs.
+ * perform an absolute moveto operation
+ to the first coordinate pair in the list of points
+ * for each subsequent coordinate pair,
+ perform an absolute lineto operation to that coordinate pair.
+ The advantage of polyline is in reducing file size,
+ avoiding M and repeated L before x & y coordinate pairs.
+ */
   friend std::ostream& operator<< (std::ostream&, polyline_element&);
 
   private:
- ptr_vector<poly_path_point> poly_points; // All the (x, y) coordinate pairs,
+ ptr_vector<poly_path_point> poly_points; //!< All the (x, y) coordinate pairs,
     // push_back by calls of p_path(x, y).
   public:
     //bool fill; // not needed for polyline, unlike polygon.
@@ -1717,23 +1772,23 @@
     }
 
     polyline_element()
- { // Construct an 'empty' line.
- // Can new line path points add using polyline_element member function P.
+ { //! Construct an 'empty' line.
+ //! Can new line path points add using polyline_element member function P.
     }
 
     polyline_element (double x1, double y1)
- { // One (x, y) path point, absolute only.
+ { //! One (x, y) path point, absolute only.
       poly_points.push_back(new poly_path_point(x1, y1));
     }
 
     polyline_element (double x1, double y1, double x2, double y2)
- { // Two (x, y) path points, absolute only.
+ { //! Two (x, y) path points, absolute only.
       poly_points.push_back(new poly_path_point(x1, y1));
       poly_points.push_back(new poly_path_point(x2, y2));
     }
 
     polyline_element (std::vector<poly_path_point>& points)
- { // Constructor from vector of path points.
+ { //! Constructor from vector of path points.
       for(std::vector<poly_path_point>::iterator i = points.begin(); i != points.end(); ++i)
       {
         poly_path_point p = (*i);
@@ -1743,13 +1798,15 @@
 
     // Member function to add new points to existing line.
     polyline_element& P(double x, double y)
- { // Absolute (x, y) only, so Capital letter P.
+ { //! Absolute (x, y) only, so Capital letter P.
       poly_points.push_back(new poly_path_point(x, y));
- return *this;
+ return *this; //! \return polyline_element& to make chainable.
     }
 
     void write(std::ostream& o_str)
- {
+ { /*! \brief Output polyline info (useful for Boost.Test).
+ \details Example: <polyline points=" 100,100 200,100 300,200 400,400"/>
+ */
       o_str << "<polyline points=\"";
       for(ptr_vector<poly_path_point>::iterator i = poly_points.begin(); i!= poly_points.end(); ++i)
       {
@@ -1759,14 +1816,15 @@
       write_attributes(o_str);
       style_info_.write(o_str);
       o_str<<"/>";
- // Example: <polyline points=" 100,100 200,100 300,200 400,400"/>
     } // void write(std::ostream& o_str)
 
   }; // class polyline_element
 
   std::ostream& operator<< (std::ostream& os, polyline_element& p)
- { // May be needed for Boost.Test.
- // ptr_vector<poly_path_point> poly_points; // All the x, y coordinate pairs,
+ { /*! \brief Output polyline info (useful for Boost.Test).
+ \details Example: <polyline points=" 100,100 200,100 300,200 400,400"/>
+ ptr_vector<poly_path_point> poly_points; // All the x, y coordinate pairs.
+ */
     for(ptr_vector<poly_path_point>::iterator i = p.poly_points.begin(); i != p.poly_points.end(); ++i)
     {
       os << (*i); // x, y coordinates as " (1, 2)(3, 4)..."
@@ -1780,16 +1838,18 @@
 
    /*! \class g_element
       \brief g_element (group element) is the node element of our document tree.
- 'g' element is a container element for grouping together <g /></g>.
+ 'g' element is a container element for grouping together
+
+ \verbatim <g /> </g> \endverbatim.
 
 
      \details g_element ('g' element is a container element
      for grouping together related graphics elements).\n
      See http://www.w3.org/TR/SVG/struct.html#NewDocument 5.2.1 Overview.
 
- 'g' element is a container element for grouping together <g /></g>.
+ 'g' element is a container element for grouping together \verbatim <g /> </g> \endverbatim.
      related graphics elements, for example:
- <g id="background" fill="rgb(255,255,255)"><rect width="500" height="350"/></g>
+ \verbatim <g id="background" fill="rgb(255,255,255)"><rect width="500" height="350"/></g> \endverbatim
   */
 
   class g_element: public svg_element

Modified: sandbox/SOC/2007/visualization/boost/svg_plot/stylesheet.hpp
==============================================================================
--- sandbox/SOC/2007/visualization/boost/svg_plot/stylesheet.hpp (original)
+++ sandbox/SOC/2007/visualization/boost/svg_plot/stylesheet.hpp 2009-01-29 09:55:16 EST (Thu, 29 Jan 2009)
@@ -1,5 +1,5 @@
 /*! \file stylesheet.hpp
- \athor Jacob Voytko
+ \author Jacob Voytko
 
     \brief Implement Cascading Style Sheets for SVG plots (but NOT IMPLEMENTED yet).
     \details
@@ -33,10 +33,16 @@
 // Note: After GSoC, this will use the suggested CSS parser
 // from the W3C CSS 2.1 Standard
 struct css_parse : public ::boost::spirit::grammar<css_parse>
-{
+{ /*! \struct boost::svg::css_parse
+ \brief CSS parser
+ \details not used and need replementing to useW3C CSS 2.1 Standard
+ */
     template <typename ScannerT>
     struct definition
- {
+ { /*! \struct boost::svg::css_parse::definition
+ \brief CSS parser definition
+ \details not used and need replementing to useW3C CSS 2.1 Standard
+ */
         definition(css_parse const& /*self*/)
         {
             expression

Modified: sandbox/SOC/2007/visualization/boost/svg_plot/svg.hpp
==============================================================================
--- sandbox/SOC/2007/visualization/boost/svg_plot/svg.hpp (original)
+++ sandbox/SOC/2007/visualization/boost/svg_plot/svg.hpp 2009-01-29 09:55:16 EST (Thu, 29 Jan 2009)
@@ -145,14 +145,19 @@
 // Use filter effects to help construct graphics via client-side graphics operations.
 
 namespace boost
-{ //! \namespace boost www.Boost.org
-namespace svg
 {
- //! \namespace svg Scalable Vector Graph plot functions and classes and data.
- //! \namespace boost::svg All SVG classes and functions in Boost.Plot.
+namespace svg
+{ //! \namespace boost \brief WWW.Boost.org.
+ //! \namespace boost::math \brief Boost.Math library at www.boost.org.
+ //! \namespace boost::math::detail \brief Boost.Math library at www.boost.org implementation details.
+ //! \namespace svg \brief Scalable Vector Graph plot functions, classes and data.
+ //! \namespace boost::svg \brief SVG classes and functions in Boost.Plot.
+ //! \namespace boost::svg::boxplot \brief SVG classes and functions specific to boxplots.
+ //! \namespace boost::svg::detail \brief SVG classes and functions implementation details (not recommended for normal use).
+
   // Inserted as a SVG comment, for example
   // "<!-- Demo of 1D plot features. --> \n"
- // and also as a <desc />
+ // and also as a \verbatim <desc /> \endverbatim
   // http://www.w3.org/TR/SVG/struct.html#DescriptionAndTitleElements
   // 5.4 The 'desc' and 'title' elements
 
@@ -210,7 +215,10 @@
 // static const std::string prohibit("prohibits");
 
 class svg
-{
+{ /*! \class boost::svg::svg
+ \brief Class to output Scalable Vector Graph XML graph elements: point, path, line, circle, rect, polygon and text.
+ \details (and handle plot stylesheets - but not implemented yet).
+*/
 protected:
   unsigned int x_size_; //!< SVG image X-axis size (in SVG units (default pixels).
   unsigned int y_size_; //!< SVG image Y-axis size (in SVG units (default pixels).
@@ -676,11 +684,11 @@
   }
 
   // ------------------------------------------------------------------------
- // push_back information about line, rec, circle & ellipse to the document.
+ // Add (push_back) information about line, rec, circle & ellipse to the document.
   // ------------------------------------------------------------------------
 
   line_element& line(double x1, double y1, double x2, double y2)
- { //! push_back information about a line to the document.
+ { //! Add (push_back) information about a line to the document.
     //! 'line' element defines a line segment that starts at one point (x1, y1) and ends at another (x2, y2).
     return document.line(x1, y1, x2, y2);
   }
@@ -759,8 +767,7 @@
     return document.polyline(v);
   }
 
- // --------------------------------------------------------------------------------
- // Write the information about path, clip_path to the document.
+ // Add the information about path, clip_path to the document.
 
   path_element& path()
   { //! Construct an empty path, ready for additions with chainable functions M., L. ...
@@ -774,7 +781,7 @@
   }
 
   g_element& g()
- { //! Writes information about a group element to the document.
+ { //! Add information about a group element to the document.
     return document.g(); //! return reference to the group element.
   }
 

Modified: sandbox/SOC/2007/visualization/boost/svg_plot/svg_1d_plot.hpp
==============================================================================
--- sandbox/SOC/2007/visualization/boost/svg_plot/svg_1d_plot.hpp (original)
+++ sandbox/SOC/2007/visualization/boost/svg_plot/svg_1d_plot.hpp 2009-01-29 09:55:16 EST (Thu, 29 Jan 2009)
@@ -64,7 +64,12 @@
 // coordinates locally and transform them before we write them.
 // ------------------------------------------------------------------
 class svg_1d_plot_series
-{
+{ /*! \class boost::svg::svg_1d_plot_series
+ \brief Holds series of data values (points) to be plotted.
+ \details Scan each data point sorting them into the appropriate
+ std::vectors, normal or not (NaN or infinite).
+*/
+
 public:
   std::vector<double> series; // Normal 'OK to plot' data values.
   std::vector<double> series_limits; // 'limit' values: too big, too small or NaN.
@@ -133,19 +138,19 @@
 svg_1d_plot_series& svg_1d_plot_series::fill_color(const svg_color& col_)
 { //! Set fill color for plot point marker(s) (chainable).
   point_style_.fill_color_ = col_;
- return *this; // Make chainable.
+ return *this; // \return reference to svg_1d_plot_series to make chainable.
 }
 
 svg_1d_plot_series& svg_1d_plot_series::stroke_color(const svg_color& col_)
 { //! Set stroke color for plot point marker(s) (chainable).
   point_style_.stroke_color_ = col_;
- return *this; // Make chainable.
+ return *this; // \return reference to svg_1d_plot_series to make chainable.
 }
 
 svg_1d_plot_series& svg_1d_plot_series::shape(point_shape shape_)
 { //! Set shape for plot point marker(s) (chainable).
   point_style_.shape_ = shape_;
- return *this; // Make chainable.
+ return *this; // \return reference to svg_1d_plot_series to make chainable.
 }
 
 point_shape svg_1d_plot_series::shape()
@@ -156,7 +161,7 @@
 svg_1d_plot_series& svg_1d_plot_series::symbols(const std::string s)
 { //! Set symbol for plot point marker(s).
   point_style_.symbols_ = s;
- return *this; // Make chainable.
+ return *this; // \return reference to svg_1d_plot_series to make chainable.
 }
 
 svg_1d_plot_series& svg_1d_plot_series::size(int size_)
@@ -164,7 +169,7 @@
   //point_style_.size_ = size_;
   //point_style_.symbols_style_.font_size(i); // in case using a symbol.
   point_style_.size(size_);
- return *this; // Make chainable.
+ return *this; // \return reference to svg_1d_plot_series to make chainable.
 }
 
 int svg_1d_plot_series::size()
@@ -219,10 +224,15 @@
 // End Definitions of svg_plot_series Public Member Functions.
 
 class svg_1d_plot : public detail::axis_plot_frame<svg_1d_plot>
-{ //! See also svg_2d_plot.hpp for 2-D version.
+{ /*! \class boost::svg::svg_1d_plot
+ \brief Hold all data about a plot, and functions to get and set.
+ \details
+ axis_plot_frame.hpp contains functions common to 1 and 2-D.
+ See also svg_2d_plot.hpp for 2-D version.
+ */
+
   friend void show_plot_settings(svg_1d_plot&);
   friend class detail::axis_plot_frame<svg_1d_plot>;
- //! axis_plot_frame.hpp contains functions common to 1 and 2-D.
 
  protected:
   // Member data names conventionally end with _.

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-01-29 09:55:16 EST (Thu, 29 Jan 2009)
@@ -53,26 +53,22 @@
     class svg_2d_plot; // Plot framework.
     class svg_2d_plot_series; // plot data series.
 
- // ------------------------------------------------------------------
- // This allows us to store plot state locally in svg_plot. We don't
- // store it in "svg" because transforming the points after they are
- // written to the document would be difficult. We store the Cartesian
- // coordinates locally and transform them before we write them.
- // ------------------------------------------------------------------
-
     class svg_2d_plot_series
- {
+ { /*! \class boost::svg::svg_2d_plot_series
+ \brief Holds A sries of 2D data values (points) to be plotted.
+ \details Data values are sorted into normal and 'at limits' - NaN, infinity or too small or too large.\n\n
+ multimap is used rather than vector of pairs because
+ multimap sorts and ensures that lines joining data points
+ are unaffected by the order in which data is presented.
+ (For 1-D a vector of doubles can be used).
+ */
     friend svg_2d_plot_series;
     friend void draw_straight_lines(const svg_2d_plot_series&);
 
     public:
       // 2-D Data series points to plot.
- std::multimap<double, double> series; // Normal 'OK to plot' data values.
- std::multimap<double, double> series_limits; // 'limit' values: too big or small, or NaN.
- // multimap is used rather than vector of pairs because
- // multimap sorts and ensures that lines joining data points
- // are unaffected by the order in which data is presented.
- // (For 1-D a vector of doubles can be used).
+ std::multimap<double, double> series; //!< Normal 'OK to plot' data values.
+ std::multimap<double, double> series_limits; //!< 'limit' values: too big or small, or NaN.
 
       std::string title_; // Title of data series (to show on legend using legend style).
       plot_point_style point_style_; // circle, square...
@@ -189,43 +185,43 @@
   svg_2d_plot_series& svg_2d_plot_series::line_width(double wid_)
   {
     line_style_.width_ = wid_; // Sets legend line width too.
- return *this; // Make chainable.
+ return *this; //\return reference to svg_2d_plot_series to make chainable.
   }
 
   svg_2d_plot_series& svg_2d_plot_series::line_on(bool on_)
   {
     line_style_.line_on_ = on_;
- return *this; // Make chainable.
+ return *this; //\return reference to svg_2d_plot_series to make chainable.
   }
 
   svg_2d_plot_series& svg_2d_plot_series::bezier_on(bool on_)
   {
     line_style_.bezier_on_ = on_;
- return *this; // Make chainable.
+ return *this; //\return reference to svg_2d_plot_series to make chainable.
   }
 
   svg_2d_plot_series& svg_2d_plot_series::bar_opt(bar_option opt_)
   {
     bar_style_.bar_option_ = opt_;
- return *this; // Make chainable.
+ return *this; //\return reference to svg_2d_plot_series to make chainable.
   }
 
   svg_2d_plot_series& svg_2d_plot_series::bar_width(double wid_)
   {
     bar_style_.width_ = wid_;
- return *this; // Make chainable.
+ return *this; //\return reference to svg_2d_plot_series to make chainable.
   }
 
   svg_2d_plot_series& svg_2d_plot_series::bar_color(const svg_color& col)
   {
     bar_style_.color_ = col;
- return *this; // Make chainable.
+ return *this; //\return reference to svg_2d_plot_series to make chainable.
   }
 
   svg_2d_plot_series& svg_2d_plot_series::bar_area_fill(const svg_color& col)
   {
     bar_style_.area_fill_ = col;
- return *this; // Make chainable.
+ return *this; //\return reference to svg_2d_plot_series to make chainable.
   }
 
   plot_line_style svg_2d_plot_series::line_style()
@@ -293,12 +289,24 @@
     // no_histogram = 0,
     // bar = +1 // Stick or column line (stroke width) vertical to X-axis.
     histogram_style_.histogram_option_ = opt_;
- return *this; // Make chainable.
+ return *this; //\return reference to svg_2d_plot_series to make chainable.
   }
   // end svg_2d_plot_series Member Functions Definitions.
 
     class svg_2d_plot : public detail::axis_plot_frame<svg_2d_plot>
- { // See also svg_1d_plot.hpp for 1-D version.
+ { /*! \class boost::svg::svg_2d_plot
+ \brief Provides svg_2d_plot data and functions to create plots.
+ Very many functions allow very fine control of the
+ appearance and layout of plots, data markers and lines.
+ \details See also svg_2d_plot_series to allow data values to be added.
+
+ svg_2d_plot allows us to store plot state locally in svg_plot.
+ We don't store it in "svg" because transforming the points after they are
+ written to the document would be difficult. We store the Cartesian
+ coordinates locally and transform them before we write them.\n
+
+ See also svg_1d_plot.hpp for 1-D version.
+ */
      friend void show_plot_settings(svg_2d_plot&);
      friend svg_2d_plot_series;
      friend class detail::axis_plot_frame<svg_2d_plot>;
@@ -1719,7 +1727,8 @@
 
     public: // Declarations of member functions (definitions in separate file).
 
- // All return *this to permit chaining.
+ // All return *this to permit chaining, doucmented with
+ // \return reference to svg_2d_plot_series to make chainable.
 
       // write() has two flavors, a file and a ostream.
       // The file version opens an ostream, and calls the stream version.
@@ -1886,7 +1895,7 @@
       svg_2d_plot& svg_2d_plot::y_label_on(bool cmd)
       { // If Y axis name or label.
         y_axis_.label_on_ = cmd;
- return *this; // Make chainable.
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       bool svg_2d_plot::y_label_on()
@@ -1897,7 +1906,7 @@
       svg_2d_plot& svg_2d_plot::x_label_on(bool cmd)
       {
         x_axis_.label_on_ = cmd;
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       bool svg_2d_plot::x_label_on()
@@ -1908,7 +1917,7 @@
       svg_2d_plot& svg_2d_plot::y_major_labels_on(int cmd)
       { //< 0 means to left or down (default), 0 (false) means none, > 0 means to right (or top).
         y_ticks_.major_value_labels_side_ = cmd;
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       int svg_2d_plot::y_major_labels_on()
@@ -1919,7 +1928,7 @@
       svg_2d_plot& svg_2d_plot::y_major_label_rotation(rotate_style rot)
       {
         y_ticks_.label_rotation_ = rot;
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       int svg_2d_plot::y_major_label_rotation()
@@ -1931,7 +1940,7 @@
       svg_2d_plot& svg_2d_plot::y_axis_width(double width)
       {
         image.g(detail::PLOT_Y_AXIS).style().stroke_width(width);
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       double svg_2d_plot::y_axis_width()
@@ -1942,7 +1951,7 @@
       svg_2d_plot& svg_2d_plot::y_value_precision(int digits)
       { // Precision of Y tick label values in decimal digits (default 3).
         y_ticks_.value_precision_ = digits;
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       int svg_2d_plot::y_value_precision()
@@ -1953,7 +1962,7 @@
       svg_2d_plot& svg_2d_plot::y_value_ioflags( std::ios_base::fmtflags flags)
       { // IO flags of Y tick label values (default 0X201).
         y_ticks_.value_ioflags_ = flags;
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       int svg_2d_plot::y_value_ioflags()
@@ -1964,7 +1973,7 @@
       svg_2d_plot& svg_2d_plot::y_labels_strip_e0s(bool cmd)
       {
         y_ticks_.strip_e0s_ = cmd;
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       bool svg_2d_plot::y_labels_strip_e0s()
@@ -1975,7 +1984,7 @@
       svg_2d_plot& svg_2d_plot::y_axis_color(const svg_color& col)
       { // Set only stroke color.
         image.g(detail::PLOT_Y_AXIS).style().stroke_color(col);
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       svg_color svg_2d_plot::y_axis_color()
@@ -1986,7 +1995,7 @@
       svg_2d_plot& svg_2d_plot::y_axis_label_color(const svg_color& col)
       { // Set stroke color.
         image.g(detail::PLOT_VALUE_LABELS).style().stroke_color(col);
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       svg_color svg_2d_plot::y_axis_label_color()
@@ -1998,7 +2007,7 @@
       svg_2d_plot& svg_2d_plot::y_label_units_on(bool b)
       {
         y_axis_.label_units_on_ = b;
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       bool svg_2d_plot::y_label_units_on()
@@ -2021,7 +2030,7 @@
      svg_2d_plot& svg_2d_plot::y_label_width(double width)
       {
         image.g(detail::PLOT_Y_LABEL).style().stroke_width(width);
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       double svg_2d_plot::y_label_width()
@@ -2032,7 +2041,7 @@
       svg_2d_plot& svg_2d_plot::y_major_grid_color(const svg_color& col)
       {
         image.g(detail::PLOT_Y_MAJOR_GRID).style().stroke_color(col);
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       const svg_color svg_2d_plot::y_major_grid_color()
@@ -2043,7 +2052,7 @@
       svg_2d_plot& svg_2d_plot::y_minor_grid_color(const svg_color& col)
       {
         image.g(detail::PLOT_Y_MINOR_GRID).style().stroke_color(col);
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       const svg_color svg_2d_plot::y_minor_grid_color()
@@ -2054,7 +2063,7 @@
       svg_2d_plot& svg_2d_plot::y_major_tick_color(const svg_color& col)
       {
         image.g(detail::PLOT_Y_MAJOR_TICKS).style().stroke_color(col);
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       const svg_color svg_2d_plot::y_major_tick_color()
@@ -2065,7 +2074,7 @@
       svg_2d_plot& svg_2d_plot::y_minor_tick_color(const svg_color& col)
       {
         image.g(detail::PLOT_Y_MINOR_TICKS).style().stroke_color(col);
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       const svg_color svg_2d_plot::y_minor_tick_color()
@@ -2110,7 +2119,7 @@
         y_axis_.min_ = min_y;
         y_axis_.max_ = max_y;
         y_autoscale_ = false;
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       std::pair<double, double> svg_2d_plot::y_range()
@@ -2139,7 +2148,7 @@
       svg_2d_plot& svg_2d_plot::y_autoscale(bool b)
       {
         y_autoscale_ = b;
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       bool svg_2d_plot::y_values_on()
@@ -2150,7 +2159,7 @@
       svg_2d_plot& svg_2d_plot::y_values_on(bool b)
       {
         y_values_on_ = b;
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       bool svg_2d_plot::xy_values_on()
@@ -2161,10 +2170,9 @@
       svg_2d_plot& svg_2d_plot::xy_values_on(bool b)
       {
         xy_values_on_ = b;
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
-
       bool svg_2d_plot::y_plusminus_on()
       {
         return y_values_style_.plusminus_on_;
@@ -2174,7 +2182,7 @@
       {
         y_values_style_.plusminus_on_ = b;
         return *this;
- }
+ } //\return reference to svg_2d_plot to make chainable.
 
       bool svg_2d_plot::y_df_on()
       {
@@ -2184,7 +2192,7 @@
       svg_2d_plot& svg_2d_plot::y_df_on(bool b)
       {
         y_values_style_.df_on_ = b;
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       svg_2d_plot& svg_2d_plot::y_autoscale(double first, double second)
@@ -2194,7 +2202,7 @@
         autoscale_check_limits_,
         y_include_zero_, y_tight_, y_min_ticks_, y_steps_);
         y_autoscale_ = true; // Default to use calculated values.
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       } // autoscale(pair<double, double> p)
 
       svg_2d_plot& svg_2d_plot::y_autoscale(std::pair<double, double> p)
@@ -2204,7 +2212,7 @@
         autoscale_check_limits_,
         y_include_zero_, y_tight_, y_min_ticks_, y_steps_);
         y_autoscale_ = true; // Default to use calculated values.
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       } // autoscale(pair<double, double> p)
 
        template <class T> // T an STL container: array, vector ...
@@ -2215,7 +2223,7 @@
         autoscale_check_limits_,
         y_include_zero_, y_tight_, y_min_ticks_, y_steps_);
         y_autoscale_ = true; // Default to use calculated values.
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
 
@@ -2242,7 +2250,7 @@
           y_include_zero_, y_tight_, y_min_ticks_, y_steps_);
         x_autoscale_ = true; // Default to use calculated values.
         y_autoscale_ = true; // Can be switch off with autoscale(false);
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       } // xy_autoscale
 
       bool svg_2d_plot::xy_autoscale()
@@ -2253,7 +2261,7 @@
       svg_2d_plot& svg_2d_plot::y_major_interval(double inter)
       {
         y_ticks_.major_interval_ = inter;
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       double svg_2d_plot::y_major_interval()
@@ -2264,7 +2272,7 @@
       svg_2d_plot& svg_2d_plot::y_major_tick_length(double length)
       {
         y_ticks_.major_tick_length_ = length;
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       double svg_2d_plot::y_major_tick_length()
@@ -2275,7 +2283,7 @@
       svg_2d_plot& svg_2d_plot::y_minor_tick_length(double length)
       {
         y_ticks_.minor_tick_length_ = length;
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       double svg_2d_plot::y_minor_tick_length()
@@ -2286,7 +2294,7 @@
       svg_2d_plot& svg_2d_plot::y_num_minor_ticks(unsigned int num)
       {
         y_ticks_.num_minor_ticks_ = num;
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       unsigned int svg_2d_plot::y_num_minor_ticks()
@@ -2297,7 +2305,7 @@
       svg_2d_plot& svg_2d_plot::y_label_axis(const std::string& str)
       { // Set label for Y-axis.
         y_label_info_.text(str);
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       std::string svg_2d_plot::y_label_axis()
@@ -2309,7 +2317,7 @@
       {
         y_ticks_.major_tick_width_ = width;
         image.g(detail::PLOT_Y_MAJOR_TICKS).style().stroke_width(width);
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       double svg_2d_plot::y_major_tick_width()
@@ -2321,7 +2329,7 @@
       {
         y_ticks_.minor_tick_width_ = width;
         image.g(detail::PLOT_Y_MINOR_TICKS).style().stroke_width(width);
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       double svg_2d_plot::y_minor_tick_width()
@@ -2332,7 +2340,7 @@
       svg_2d_plot& svg_2d_plot::x_ticks_on_window_or_axis(int is)
       {
         x_ticks_.ticks_on_window_or_axis_ = is;
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       int svg_2d_plot::x_ticks_on_window_or_axis()
@@ -2343,7 +2351,7 @@
       svg_2d_plot& svg_2d_plot::x_major_value_labels_side(int is)
       { // Label values side for major ticks left -1, (right +1 or none 0).
         x_ticks_.major_value_labels_side_ = is;
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       int svg_2d_plot::x_major_value_labels_side()
@@ -2354,7 +2362,7 @@
       svg_2d_plot& svg_2d_plot::y_ticks_on_window_or_axis(int is)
       {
         y_ticks_.ticks_on_window_or_axis_ = is;
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       int svg_2d_plot::y_ticks_on_window_or_axis()
@@ -2365,7 +2373,7 @@
       svg_2d_plot& svg_2d_plot::y_major_value_labels_side(int is)
       { // Label values side for major ticks left -1, (right +1 or none 0).
         y_ticks_.major_value_labels_side_ = is;
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       int svg_2d_plot::y_major_value_labels_side()
@@ -2376,7 +2384,7 @@
       svg_2d_plot& svg_2d_plot::y_ticks_left_on(bool cmd)
       {
         y_ticks_.left_ticks_on_ = cmd;
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       bool svg_2d_plot::y_ticks_left_on()
@@ -2384,12 +2392,10 @@
         return y_ticks_.left_ticks_on_;
       }
 
-
-
       svg_2d_plot& svg_2d_plot::y_ticks_right_on(bool cmd)
       {
         y_ticks_.right_ticks_on_ = cmd;
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       bool svg_2d_plot::y_ticks_right_on()
@@ -2402,7 +2408,7 @@
       svg_2d_plot& svg_2d_plot::y_major_grid_on(bool is)
       {
         y_ticks_.major_grid_on_ = is;
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       bool svg_2d_plot::y_major_grid_on()
@@ -2414,7 +2420,7 @@
       svg_2d_plot& svg_2d_plot::y_minor_grid_on(bool is)
       {
         y_ticks_.minor_grid_on_ = is;
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       bool svg_2d_plot::y_minor_grid_on()
@@ -2426,7 +2432,7 @@
       {
         y_ticks_.minor_grid_width_ = width;
         image.g(detail::PLOT_Y_MINOR_GRID).style().stroke_width(width);
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       double svg_2d_plot::y_minor_grid_width()
@@ -2434,13 +2440,11 @@
         return y_ticks_.minor_grid_width_;
       }
 
-
-
- svg_2d_plot& svg_2d_plot::y_major_grid_width(double width)
+ svg_2d_plot& svg_2d_plot::y_major_grid_width(double width)
       {
         y_ticks_.major_grid_width_ = width;
         image.g(detail::PLOT_Y_MAJOR_GRID).style().stroke_width(width);
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       double svg_2d_plot::y_major_grid_width()
@@ -2460,12 +2464,10 @@
         return y_axis_label_style_.font_size();
       }
 
-
-
       svg_2d_plot& svg_2d_plot::y_label_weight(std::string s)
       { // "bold" is only one that works so far.
         x_axis_label_style_.font_weight(s);
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       const std::string& svg_2d_plot::y_label_weight()
@@ -2473,21 +2475,19 @@
         return x_axis_label_style_.font_weight();
       }
 
-
       svg_2d_plot& svg_2d_plot::y_label_font_family(const std::string& family)
       {
         x_axis_label_style_.font_family(family);
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
-
       svg_2d_plot& svg_2d_plot::y_values_font_size(unsigned int i)
       {
         y_values_style_.values_text_style_.font_size(i);
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
- unsigned int svg_2d_plot::y_values_font_size()
+ unsigned int svg_2d_plot::y_values_font_size()
       {
         return y_values_style_.values_text_style_.font_size();
       }
@@ -2495,7 +2495,7 @@
       svg_2d_plot& svg_2d_plot::y_values_font_family(const std::string& family)
       {
         y_values_style_.values_text_style_.font_family(family);
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       const std::string& svg_2d_plot::y_values_font_family()
@@ -2509,7 +2509,7 @@
         // but does not allow separate inside & outside colors.
         image.g(detail::PLOT_Y_POINT_VALUES).style().fill_color(col);
         //svg_2d_plot().image.g(PLOT_Y_POINT_VALUES).style().stroke_color(col);
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       svg_color svg_2d_plot::y_values_color()
@@ -2521,7 +2521,7 @@
       svg_2d_plot& svg_2d_plot::y_values_rotation(rotate_style rotate)
       { // Degrees (0 to 360).
         y_values_style_.value_label_rotation_ = rotate;
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       int svg_2d_plot::y_values_rotation()
@@ -2529,11 +2529,10 @@
         return y_values_style_.value_label_rotation_;
       }
 
-
       svg_2d_plot& svg_2d_plot::y_values_precision(int p)
       { // set iostream precision
         y_values_style_.value_precision_ = p;
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       int svg_2d_plot::y_values_precision()
@@ -2544,7 +2543,7 @@
       svg_2d_plot& svg_2d_plot::y_values_ioflags(std::ios_base::fmtflags f)
       { // set iostream format flags
         y_values_style_.value_ioflags_ = f;
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
       }
 
       std::ios_base::fmtflags svg_2d_plot::y_values_ioflags()
@@ -2552,9 +2551,8 @@
         return y_values_style_.value_ioflags_;
       }
 
-
   svg_2d_plot& svg_2d_plot::write(const std::string& file)
- { // Write the plot image to a named file.
+ { //! Write the plot image to a named file (default suffix .svg).
     std::string filename(file); // Copy to avoid problem with const if try to append.
     if (filename.find(".svg") == std::string::npos)
     { // No file type suffix, so provide the default .svg.
@@ -2567,7 +2565,7 @@
       throw std::runtime_error("Unable to open " + filename);
     }
     write(fout); // Using the ostream version.
- return *this;
+ return *this; //\return reference to svg_2d_plot to make chainable.
   }
 
   template <class T>
@@ -2627,13 +2625,12 @@
     return series[series.size() - 1]; // Reference to data series just added.
   }
 
- svg_2d_plot& svg_2d_plot::write(std::ostream& s_out)
- { // Write the image to an ostream.
- update_image();
- image.write(s_out); // Use the ostream version of write.
- return *this;
- }
-
+ svg_2d_plot& svg_2d_plot::write(std::ostream& s_out)
+ { // Write the image to an ostream.
+ update_image();
+ image.write(s_out); // Use the ostream version of write.
+ return *this; //\return reference to svg_2d_plot to make chainable.
+ }
 
   const std::string& svg_2d_plot::y_label_font_family()
   {

Modified: sandbox/SOC/2007/visualization/boost/svg_plot/svg_boxplot.hpp
==============================================================================
--- sandbox/SOC/2007/visualization/boost/svg_plot/svg_boxplot.hpp (original)
+++ sandbox/SOC/2007/visualization/boost/svg_plot/svg_boxplot.hpp 2009-01-29 09:55:16 EST (Thu, 29 Jan 2009)
@@ -15,6 +15,7 @@
   See also : The Bagplot: A Bivariate Boxplot
   Peter J. Rousseeuw, Ida Ruts and John W. Tukey
   The American Statistician, Vol. 53, No. 4 (Nov., 1999), pp. 382-387
+
   \author Jacob Voytko & Paul A. Bristow
  */
 
@@ -90,7 +91,11 @@
   // For example, string title_, but set with title("my title") and get with title().
 
   class svg_boxplot_series
- { //! \class svg_boxplot_series Information about a data series to be boxplotted.
+ { /*! \class boost::svg::svg_boxplot_series
+ \brief Information about a data series to be boxplotted.
+ \details A Box Plot that can contain several boxplot data series.
+ median, whiskers and outliers are computed for each series.
+ */
   public: // TODO private?
     std::vector<double> series_; //!< Data series for the boxplot.
     double whisker_min_; //!<
@@ -177,19 +182,19 @@
     } // svg_boxplot_series constructor.
 
     void calculate_quantiles()
- {
- median_ = median(series_);
- //! Divide sorted data set into four equal parts, called quartiles,
- //! so each part represent 1/4th of the sampled population.
+ { /*! \brief Divide sorted data set into four equal parts, called quartiles,
+ so each part represent 1/4th of the sampled population.
+ \details
+ Michael Frigge, David C. Hoaglin and Boris Iglewicz
+ The American Statistician, Vol. 43, No. 1 (Feb., 1989), pp. 50-54
+ Tukey, J. W. Exploratory Data Analysis, Addison Wesley (1977, p 33)
 
- /*! "Some Implementations of the Boxplot"
- Michael Frigge, David C. Hoaglin and Boris Iglewicz
- The American Statistician, Vol. 43, No. 1 (Feb., 1989), pp. 50-54
- Tukey, J. W. Exploratory Data Analysis, Addison Wesley (1977, p 33)
-
- x[1] .. x[n] == series[0] ... series[n - 1]
- q1_ = (1 - g) * x[j] + g * [j+1];
- */
+ "Some Implementations of the Boxplot"
+
+ x[1] .. x[n] == series[0] ... series[n - 1]
+ q1_ = (1 - g) * x[j] + g * [j+1];
+ */
+ median_ = median(series_);
       q1_ = quantile(series_, 0.25, quartile_definition_);
       q3_ = quantile(series_, 0.75, quartile_definition_);
 
@@ -317,7 +322,7 @@
   svg_boxplot_series& svg_boxplot_series::title(const std::string& t)
   { //! Set title of a data series.
     series_info_.text(t);
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot_series to make chainable.
   }
 
   svg_boxplot_series& svg_boxplot_series::whisker_length(double width)
@@ -334,7 +339,7 @@
   svg_boxplot_series& svg_boxplot_series::min_whisker_width(double width)
   { // Line width of min whisker.
     min_whisker_style_.stroke_width(width);
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot_series to make chainable..
   }
 
   double svg_boxplot_series::min_whisker_width()
@@ -345,7 +350,7 @@
   svg_boxplot_series& svg_boxplot_series::min_whisker_color(const svg_color& color)
   { // Color of min whisker.
     min_whisker_style_.stroke_color(color);
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot_series to make chainable.
   }
   svg_color svg_boxplot_series::min_whisker_color()
   { // Color of min whisker.
@@ -355,8 +360,8 @@
   svg_boxplot_series& svg_boxplot_series::max_whisker_width(double width)
   {
     max_whisker_style_.stroke_width(width);
- return *this; // Chainable.
- }
+ return *this; // \return reference to svg_boxplot_series to make chainable.
+ }
 
   double svg_boxplot_series::max_whisker_width()
   { // width of the box, not the margin.
@@ -366,7 +371,7 @@
   svg_boxplot_series& svg_boxplot_series::max_whisker_color(const svg_color& color)
   { // Color of whisker.
     max_whisker_style_.stroke_color(color);
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot_series to make chainable.
   }
 
   svg_color svg_boxplot_series::max_whisker_color()
@@ -382,7 +387,7 @@
   svg_boxplot_series& svg_boxplot_series::box_width(double l)
   { // width of the box, not the margin.
     box_width_ = l;
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot_series to make chainable.
   }
 
   svg_style& svg_boxplot_series::box_style()
@@ -393,7 +398,7 @@
   svg_boxplot_series& svg_boxplot_series::box_style(svg_style& bs)
   {
     box_style_ = bs;
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot_series to make chainable.
   }
 
   svg_style& svg_boxplot_series::median_style()
@@ -404,13 +409,13 @@
   svg_boxplot_series& svg_boxplot_series::median_style(svg_style& ms)
   {
     median_style_ = ms;
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot_series to make chainable.
   }
 
   svg_boxplot_series& svg_boxplot_series::outlier_style(plot_point_style& os)
   {
     mild_outlier_ = os;
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot_series to make chainable.
   }
 
   plot_point_style& svg_boxplot_series::outlier_style()
@@ -421,7 +426,7 @@
   svg_boxplot_series& svg_boxplot_series::box_fill(const svg_color& color)
   { // Color of box fill, not border.
     box_style_.fill_color(color);
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot_series to make chainable.
   }
 
   svg_color svg_boxplot_series::box_fill()
@@ -432,7 +437,7 @@
   svg_boxplot_series& svg_boxplot_series::box_border(const svg_color& color)
   { // Color of box fill, not border.
     box_style_.stroke_color(color);
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot_series to make chainable.
   }
 
   svg_color svg_boxplot_series::box_border()
@@ -443,7 +448,7 @@
   svg_boxplot_series& svg_boxplot_series::median_color(const svg_color& color)
   { // Color of median line in box.
     median_style_.stroke_color(color);
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot_series to make chainable.
   }
 
   svg_color svg_boxplot_series::median_color()
@@ -454,7 +459,7 @@
   svg_boxplot_series& svg_boxplot_series::median_width(double width)
   { // Applies to BOTH min and max whisker.
     median_style_.stroke_width(width);
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot_series to make chainable..
   }
 
   double svg_boxplot_series::median_width()
@@ -465,7 +470,7 @@
   svg_boxplot_series& svg_boxplot_series::axis_color(const svg_color& color)
   { // Color of axis line in box.
     axis_style_.stroke_color(color);
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot_series to make chainable.
   }
 
   svg_color svg_boxplot_series::axis_color()
@@ -476,7 +481,7 @@
   svg_boxplot_series& svg_boxplot_series::axis_width(double width)
   { // Applies to BOTH min and max whisker.
     axis_style_.stroke_width(width);
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot_series to make chainable.
   }
 
   double svg_boxplot_series::axis_width()
@@ -487,7 +492,7 @@
   svg_boxplot_series& svg_boxplot_series::outlier_color(const svg_color& color)
   { // Color of axis line in box.
     mild_outlier_.stroke_color(color);
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot_series to make chainable.
   }
 
   svg_color svg_boxplot_series::outlier_color()
@@ -498,7 +503,7 @@
   svg_boxplot_series& svg_boxplot_series::outlier_fill(const svg_color& color)
   { // Fill color of axis line in box.
     mild_outlier_.fill_color(color);
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot_series to make chainable.
   }
 
   svg_color svg_boxplot_series::outlier_fill()
@@ -509,7 +514,7 @@
   svg_boxplot_series& svg_boxplot_series::extreme_outlier_color(const svg_color& color)
   { // Color of axis line in box.
     ext_outlier_.stroke_color(color);
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot_series to make chainable.
   }
 
   svg_color svg_boxplot_series::extreme_outlier_color()
@@ -520,7 +525,7 @@
   svg_boxplot_series& svg_boxplot_series::extreme_outlier_fill(const svg_color& color)
   { // Color of axis line in box.
     ext_outlier_.fill_color(color);
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot_series to make chainable.
   }
 
   svg_color svg_boxplot_series::extreme_outlier_fill()
@@ -531,7 +536,7 @@
   svg_boxplot_series& svg_boxplot_series::outlier_shape(point_shape shape)
   { // Shape of outlier marker.
     mild_outlier_.shape_ = shape;
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot_series to make chainable.
   }
 
   point_shape svg_boxplot_series::outlier_shape()
@@ -542,7 +547,7 @@
   svg_boxplot_series& svg_boxplot_series::outlier_size(int size)
   { // Size of outlier marker.
     mild_outlier_.size_ = size;
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot_series to make chainable.
   }
 
   int svg_boxplot_series::outlier_size()
@@ -553,7 +558,7 @@
   svg_boxplot_series& svg_boxplot_series::extreme_outlier_shape(point_shape shape)
   { // Shape of extreme outlier marker.
     ext_outlier_.shape_ = shape;
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot_series to make chainable.
   }
 
   point_shape svg_boxplot_series::extreme_outlier_shape()
@@ -564,7 +569,7 @@
   svg_boxplot_series& svg_boxplot_series::extreme_outlier_size(int size)
   { // Size of extreme outlier marker.
     ext_outlier_.size_ = size;
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot_series to make chainable..
   }
 
   int svg_boxplot_series::extreme_outlier_size()
@@ -575,7 +580,7 @@
   svg_boxplot_series& svg_boxplot_series::quartile_definition(int def)
   { // Choice of H&F quartile definition.
     quartile_definition_ = def;
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot_series to make chainable.
   }
 
   int svg_boxplot_series::quartile_definition()
@@ -611,7 +616,11 @@
 // End of svg_boxplot_series Definitions.
 
 class svg_boxplot : public detail::axis_plot_frame<svg_boxplot>
-{ // A plot that can display boxplots of several data series.
+{ /*! \class boost::svg::svg_boxplot
+ \brief A plot that can display boxplots of several data series.
+ \details Holds all data about the plot (but not any data series - see svg_boxplot_series)
+ axis_plot_frame.hpp contains functions common to 1 and 2-D, and boxplot.
+*/
   friend svg_boxplot_series;
   friend class detail::axis_plot_frame<svg_boxplot>;
   // axis_plot_frame.hpp contains functions common to 1 and 2-D, and boxplot.
@@ -2025,54 +2034,54 @@
   { // ostream version used by filename version.
     update_image();
     image.write(s_out);
- return *this;
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_boxplot& svg_boxplot::title_on(bool cmd)
   {
     title_on_ = cmd;
- return *this;
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_boxplot& svg_boxplot::x_label_on(bool cmd)
   { // If Y axis name or label, for example: "length of thing".
       x_axis_.label_on_ = cmd;
- return *this;
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_boxplot& svg_boxplot::y_label_on(bool cmd)
   {
       y_axis_.label_on_ = cmd;
- return *this;
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_boxplot& svg_boxplot::y_major_labels_on(int cmd)
   { //< 0 means to left or down (default), 0 (false) means none, > 0 means to right (or top).
     y_ticks_.major_value_labels_side_ = cmd;
- return *this;
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_boxplot& svg_boxplot::x_major_labels_on(int cmd)
   { //< 0 means to left or down (default), 0 (false) means none, > 0 means to right (or top).
     x_ticks_.major_value_labels_side_ = cmd;
- return *this;
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_boxplot& svg_boxplot::median_values_on(bool cmd)
   {
     median_values_on_ = cmd;
- return *this;
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_boxplot& svg_boxplot::outlier_values_on(bool cmd)
   {
     outlier_values_on_ = cmd;
- return *this;
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
   svg_boxplot& svg_boxplot::extreme_outlier_values_on(bool cmd)
   {
     extreme_outlier_values_on_ = cmd;
- return *this;
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   bool svg_boxplot::median_values_on()
@@ -2092,25 +2101,25 @@
   svg_boxplot& svg_boxplot::y_major_tick_color(const svg_color& col)
   {
     image.g(boxplot::Y_MAJOR_TICKS).style().stroke_color(col);
- return *this;
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_boxplot& svg_boxplot::x_tick_color(const svg_color& col)
   {
     image.g(boxplot::X_TICKS).style().stroke_color(col);
- return *this;
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_boxplot& svg_boxplot::y_minor_tick_color(const svg_color& col)
   {
     image.g(detail::PLOT_Y_MINOR_TICKS).style().stroke_color(col);
- return *this;
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_boxplot& svg_boxplot::title_color(const svg_color& col)
   {
     image.g(boxplot::PLOT_TITLE).style().stroke_color(col);
- return *this;
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_boxplot& svg_boxplot::background_color(const svg_color& col)
@@ -2121,19 +2130,19 @@
   svg_boxplot& svg_boxplot::background_border_color(const svg_color& col)
   { // "imageBackground"
     image.g(boxplot::PLOT_BACKGROUND).style().stroke_color(col);
- return *this;
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_boxplot& svg_boxplot::plot_background_color(const svg_color& col)
   { // Plot Window "plotBackground"
     image.g(boxplot::PLOT_WINDOW_BACKGROUND).style().fill_color(col);
- return *this;
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_boxplot& svg_boxplot::plot_border_color(const svg_color& col)
   { // Plot window "plotBackground"
     image.g(boxplot::PLOT_WINDOW_BACKGROUND).style().stroke_color(col);
- return *this;
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_boxplot& svg_boxplot::y_range(double min_y, double max_y)
@@ -2157,7 +2166,7 @@
     y_axis_.min_ = min_y;
     y_axis_.max_ = max_y;
     y_autoscale_ = false;
- return *this;
+ return *this; // \return reference to svg_boxplot to make chainable.
   } // svg_boxplot& y_range(double y1, double y2)
 
   std::pair<double, double> svg_boxplot::y_range()
@@ -2171,36 +2180,36 @@
   svg_boxplot& svg_boxplot::y_label(const std::string& str)
   {
     y_label_info_.text(str);
- return *this;
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_boxplot& svg_boxplot::image_size(unsigned int x, unsigned int y)
   {
     image.image_size(x, y);
- return *this;
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_boxplot& svg_boxplot::y_label_font_size(unsigned int size)
   {
      y_axis_label_style_.font_size(size);
- return *this;
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_boxplot& svg_boxplot::y_label_color(const svg_color& col)
   {
     image.g(boxplot::Y_LABEL).style().fill_color(col);
- return *this;
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_boxplot& svg_boxplot::title(const std::string& str)
   {
     title_info_.text(str);
- return *this;
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
   svg_boxplot& svg_boxplot::title_size(unsigned int size)
   {
     y_label_info_.style().font_size(size);
- return *this;
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_boxplot& svg_boxplot::x_axis_position(int pos)
@@ -2210,7 +2219,7 @@
      // so this only changes the default position from bottom to top,
      // but will be changed if X-axis intersects the Y-axis
      // (that is if Y-axis includes zero).
- return *this; // Make chainable.
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   double svg_boxplot::x_axis_position()
@@ -2221,7 +2230,7 @@
   svg_boxplot& svg_boxplot::y_axis_position(int pos)
   { // Position of the vertical Y-axis line (on the border).
      y_axis_position_ = pos; // left or right
- return *this; // Make chainable.
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   double svg_boxplot::y_axis_position()
@@ -2232,18 +2241,18 @@
   svg_boxplot& svg_boxplot::x_label(const std::string& str)
   {
     x_label_info_.text(str);
- return *this;
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
   svg_boxplot& svg_boxplot::x_label_size(unsigned int size)
   {
     x_label_info_.style().font_size(size);
- return *this;
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_boxplot& svg_boxplot::x_label_color(const svg_color& col)
   {
     image.g(boxplot::X_LABEL).style().fill_color(col);
- return *this;
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_boxplot& svg_boxplot::y_major_interval(double inter)
@@ -2253,43 +2262,43 @@
   } svg_boxplot& svg_boxplot::x_tick_length(unsigned int length)
   {
     x_ticks_.major_tick_length_ = length;
- return *this;
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_boxplot& svg_boxplot::y_major_tick_length(unsigned int length)
   {
     y_ticks_.major_tick_length_ = length;
- return *this;
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_boxplot& svg_boxplot::y_minor_tick_length(unsigned int length)
   {
     y_ticks_.minor_tick_length_ = length;
- return *this;
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_boxplot& svg_boxplot::y_num_minor_ticks(unsigned int num)
   {
     y_ticks_.num_minor_ticks_ = num;
- return *this;
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_boxplot& svg_boxplot::x_tick_width(unsigned int width)
   {
     image.g(boxplot::X_TICKS).style().stroke_width(width);
- return *this;
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_boxplot& svg_boxplot::y_major_tick_width(unsigned int width)
   {
     image.g(boxplot::Y_MAJOR_TICKS).style().stroke_width(width);
- return *this;
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_boxplot& svg_boxplot::y_minor_tick_width(unsigned int width)
   {
     image.g(boxplot::Y_MINOR_TICKS).style().stroke_width(width);
- return *this;
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   unsigned int svg_boxplot::image_x_size()
@@ -2375,7 +2384,7 @@
   svg_boxplot& svg_boxplot::whisker_length(double width)
   {
     whisker_length_ = width;
- return *this;
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   double svg_boxplot::whisker_length()
@@ -2386,7 +2395,7 @@
  svg_boxplot& svg_boxplot::box_width(double width)
   { // Width of the box, not the border.
     box_width_ = width;
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   double svg_boxplot::box_width()
@@ -2397,7 +2406,7 @@
   svg_boxplot& svg_boxplot::box_fill(const svg_color& color)
   { // Color of box fill, not border.
     box_style_.fill_color(color);
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_color svg_boxplot::box_fill()
@@ -2408,7 +2417,7 @@
   svg_boxplot& svg_boxplot::box_border(const svg_color& color)
   { // Color of box fill, not border.
     box_style_.stroke_color(color);
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_color svg_boxplot::box_border()
@@ -2419,7 +2428,7 @@
   svg_boxplot& svg_boxplot::median_color(const svg_color& color)
   { // Color of median line in box.
     median_style_.stroke_color(color);
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_color svg_boxplot::median_color()
@@ -2430,7 +2439,7 @@
   svg_boxplot& svg_boxplot::median_width(double width)
   { // Width of the box, not the border.
     median_style_.stroke_width(width);
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   double svg_boxplot::median_width()
@@ -2441,7 +2450,7 @@
   svg_boxplot& svg_boxplot::axis_color(const svg_color& color)
   { // Color of vertical whisker axis line in box.
     axis_style_.stroke_color(color);
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_color svg_boxplot::axis_color()
@@ -2452,7 +2461,7 @@
   svg_boxplot& svg_boxplot::axis_width(double width)
   { // Width of the box, not the border.
     median_style_.stroke_width(width);
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   double svg_boxplot::axis_width()
@@ -2463,7 +2472,7 @@
   svg_boxplot& svg_boxplot::outlier_color(const svg_color& color)
   { // Color of axis line in box.
     mild_outlier_.stroke_color(color);
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_color svg_boxplot::outlier_color()
@@ -2474,7 +2483,7 @@
   svg_boxplot& svg_boxplot::outlier_fill(const svg_color& color)
   { // Color of axis line in box.
     mild_outlier_.fill_color(color);
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_color svg_boxplot::outlier_fill()
@@ -2485,7 +2494,7 @@
   svg_boxplot& svg_boxplot::extreme_outlier_color(const svg_color& color)
   { // Color of axis line in box.
     ext_outlier_.stroke_color(color);
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_color svg_boxplot::extreme_outlier_color()
@@ -2496,7 +2505,7 @@
   svg_boxplot& svg_boxplot::extreme_outlier_fill(const svg_color& color)
   { // Color of axis line in box.
     ext_outlier_.fill_color(color);
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_color svg_boxplot::extreme_outlier_fill()
@@ -2507,7 +2516,7 @@
   svg_boxplot& svg_boxplot::outlier_shape(point_shape shape)
   { // Shape of outlier marker.
     mild_outlier_.shape_ = shape;
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   point_shape svg_boxplot::outlier_shape()
@@ -2518,7 +2527,7 @@
   svg_boxplot& svg_boxplot::extreme_outlier_shape(point_shape shape)
   { // Shape of extreme outlier marker.
     ext_outlier_.shape_ = shape;
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   point_shape svg_boxplot::extreme_outlier_shape()
@@ -2529,7 +2538,7 @@
   svg_boxplot& svg_boxplot::outlier_size(int size)
   { // Size of outlier marker.
     mild_outlier_.size(size);
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   int svg_boxplot::outlier_size()
@@ -2541,7 +2550,7 @@
   svg_boxplot& svg_boxplot::extreme_outlier_size(int size)
   { // Size of extreme outlier marker.
     ext_outlier_.size(size);
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   int svg_boxplot::extreme_outlier_size()
@@ -2552,7 +2561,7 @@
   svg_boxplot& svg_boxplot::quartile_definition(int def)
   { //! Set size of extreme outlier marker.
     quartile_definition_ = def;
- return *this; // Chainable.
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   int svg_boxplot::quartile_definition()
@@ -2568,7 +2577,7 @@
   svg_boxplot& svg_boxplot::y_autoscale(bool b)
   {
     y_autoscale_ = b;
- return *this;
+ return *this; // \return reference to svg_boxplot to make chainable.
   }
 
   svg_boxplot& svg_boxplot::y_autoscale(std::pair<double, double> p)
@@ -2578,7 +2587,7 @@
     autoscale_check_limits_,
     y_include_zero_, y_tight_, y_min_ticks_, y_steps_);
     y_autoscale_ = true; // Change (from default false) to use calculated values.
- return *this; // Make chainable.
+ return *this; // \return reference to svg_boxplot to make chainable.
   } // autoscale(pair<double, double> p)
 
   svg_boxplot& svg_boxplot::y_autoscale(double first, double second)
@@ -2588,7 +2597,7 @@
     autoscale_check_limits_,
     y_include_zero_, y_tight_, y_min_ticks_, y_steps_);
     y_autoscale_ = true; // Change (from default false) to use calculated values.
- return *this; // Make chainable.
+ return *this; // \return reference to svg_boxplot to make chainable.
   } // autoscale(pair<double, double> p)
 
   template <class T> // T an STL container: array<double>, vector<double> ...
@@ -2599,7 +2608,7 @@
     autoscale_check_limits_,
     y_include_zero_, y_tight_, y_min_ticks_, y_steps_);
     y_autoscale_ = true; // Change (from default false) to use calculated values.
- return *this; // Make chainable.
+ return *this; // \return reference to svg_boxplot to make chainable.
   } // y_autoscale(const T& begin, const T& end)
 
   template <class T> // T an STL container: array, vector ...
@@ -2610,7 +2619,7 @@
     autoscale_check_limits_,
     y_include_zero_, y_tight_, y_min_ticks_, y_steps_);
     y_autoscale_ = true; // Change (from default false) to use calculated values.
- return *this; // Make chainable.
+ return *this; // \return reference to svg_boxplot to make chainable.
   } // y_autoscale(const T& container)
 
 

Modified: sandbox/SOC/2007/visualization/boost/svg_plot/svg_color.hpp
==============================================================================
--- sandbox/SOC/2007/visualization/boost/svg_plot/svg_color.hpp (original)
+++ sandbox/SOC/2007/visualization/boost/svg_plot/svg_color.hpp 2009-01-29 09:55:16 EST (Thu, 29 Jan 2009)
@@ -72,16 +72,20 @@
     unsigned char& r, unsigned char& g, unsigned char& b);
   std::ostream& operator<< (std::ostream&, const svg_color&);
 
- // --------------------------------------------------------------------
- // svg_color is the struct that contains information about RGB colors.
- //
   // For the constructor, the SVG standard specifies that numbers
   // outside the normal rgb range are to be accepted,
   // but are constrained to acceptable range of integer values [0, 255].
   // --------------------------------------------------------------------
 
   struct svg_color
- { //!
+ { /*! \struct boost::svg::svg_color
+ \brief svg_color holds information about RGB colors.
+ \details For the constructor, the SVG standard specifies that numbers
+ outside the normal rgb range are to be accepted,
+ but are constrained to acceptable range of integer values [0, 255].
+
+ */
+
     friend std::ostream& operator<< (std::ostream& os, const svg_color& rhs);
 
     unsigned char r; //!< unsigned char provides range [0 to 255].
@@ -91,9 +95,12 @@
     // If true should display & write as "none".
 
     svg_color(int red, int green, int blue) : is_blank(false)
- { //! \brief Construct a color from RGB values.
- /*! \details Constrain rgb to [0 .. 255].
+ { /*! \brief Construct a color from RGB values.
+ \details Constrain rgb to [0 .. 255].
           Default is to construct a blank 'pseudo-color'.
+ The SVG standard specifies that numbers
+ outside the normal rgb range are to be accepted,
+ but are constrained to acceptable range of integer values [0, 255].
        */
 
       red = ( red < 0 ) ? 0 : red;

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-01-29 09:55:16 EST (Thu, 29 Jan 2009)
@@ -1,8 +1,13 @@
 /*!
   \file svg_style.hpp
- \author Jacob Voytko and Paul A. Bristow
 
- \brief styles for SVG specifying font, sizes, shape, color etc for text, values, lines, axes etc.
+ \brief Styles for SVG specifying font, sizes, shape, color etc for text, values, lines, axes etc.
+ \details SVG style information is fill, stroke, width, line & bezier curve.
+ This module provides struct plot_point_style & struct plot_line_style
+ and class svg_style holding the styles.
+ See http://www.w3.org/TR/SVG11/styling.html
+
+ \author Jacob Voytko and Paul A. Bristow
 */
 
 // Copyright Jacob Voytko 2007
@@ -16,11 +21,6 @@
 #ifndef BOOST_SVG_SVG_STYLE_HPP
 #define BOOST_SVG_SVG_STYLE_HPP
 
-// svg style information is fill, stroke, width, line & bezier curve.
-// This module provides struct plot_point_style & struct plot_line_style
-// and class svg_style holding the styles.
-// http://www.w3.org/TR/SVG11/styling.html
-
 #include "svg_color.hpp"
 #include "detail/svg_style_detail.hpp"
 
@@ -57,7 +57,7 @@
   leftward= -180, //!< horizontal to left.
   rightward = 360, //!< horizontal to right.
   downhill = 45, //!< slope down.
- downward = 90, //!< vertical writing down.//! \enum
+ downward = 90, //!< vertical writing down.
   backdown = 135, //!< slope down backwards.
   upsidedown = 180 //!< upside down! (== -180)
 };
@@ -89,7 +89,7 @@
 // and this is not a graphic.
 
 class svg_style
-{ //! \class svg_style Holds the basic stroke, fill colors and width, and their switches.
+{ //! \class boost::svg::svg_style Holds the basic SVG stroke, fill colors and width, and their switches.
   friend std::ostream& operator<< (std::ostream&, svg_style&);
 
 private: // Accesses only by set and get member functions below.
@@ -174,7 +174,7 @@
   }
 
   svg_style& svg_style::fill_on(bool is)
- { // Set fill is wanted.
+ { //! Set fill is wanted.
     fill_on_ = is;
     return *this; // Make chainable.
     //! \return svg_style& to make chainable.
@@ -188,8 +188,7 @@
   svg_style& svg_style::stroke_on(bool is)
   {
     stroke_on_ = is;
- return *this; // Make chainable.
- //! \return svg_style& to make chainable.
+ return *this; //! \return svg_style& to make chainable.
   }
 
   bool svg_style::width_on() const
@@ -200,8 +199,7 @@
   svg_style& svg_style::width_on(bool is)
   {
     width_on_ = is;
- return *this; // Make chainable.
- //! \return svg_style& to make chainable.
+ return *this; //! \return svg_style& to make chainable.
   }
 
   // Set svg_style member functions to set fill, stroke & width.
@@ -209,24 +207,21 @@
   {
       stroke_ = col;
       stroke_on_ = true; // Assume want a stroke if color is set.
- return *this; // Make chainable.
- //! \return svg_style& to make chainable.
+ return *this; //! \return svg_style& to make chainable.
 }
 
   svg_style& svg_style::fill_color(const svg_color& col)
   {
       fill_ = col;
       fill_on_ = ! col.is_blank; // If blank fill is off or "none".
- return *this; // Make chainable.
- //! \return svg_style& to make chainable.
+ return *this; //! \return svg_style& to make chainable.
 }
 
   svg_style& svg_style::stroke_width(double width)
   {
       width_ = width;
       width_on_ = ((width > 0) ? true : false);
- return *this; // Make chainable.
- //! \return svg_style& to make chainable.
+ return *this; //! \return svg_style& to make chainable.
 }
 
   bool svg_style::operator==(svg_style& s)
@@ -292,7 +287,9 @@
   // End of svg_style definitions.
 
 class text_style
-{ //! \class text style font family, size, weight, style, stretch, decoration.
+{ /*! \class boost::svg::text_style
+ \brief font family, size, weight, style, stretch, decoration.
+ */
   friend std::ostream& operator<< (std::ostream&, const text_style&);
   friend bool operator== (const text_style&, const text_style&);
   friend bool operator!= (const text_style&, const text_style&);
@@ -362,7 +359,7 @@
   text_style& text_style::font_size(unsigned int i)
   { //! Set font size (svg units usually pixels) default 10.
     font_size_ = i;
- return *this; // Should be chainable.
+ return *this; //! \return text_style& to make chainable.
     //! \return reference to text_style to make chainable.
     // error C2663: 'boost::svg::text_style::font_size' : 2 overloads have no legal conversion for 'this' pointer
     // label_style.font_size(20).font_family("sans");
@@ -387,8 +384,7 @@
       <text font-family="'Lucida Console', 'Courier New', Courier, Monaco, 'MS Gothic', Osaka-Mono, monospace" x="20" y="240">A mono (iW) face</text>
     */
     font_family_ = s;
- return *this;
- //! \return reference to text_style to make chainable.
+ return *this; //! \return reference to text_style to make chainable.
   }
 
   const std::string& text_style::font_style() const
@@ -397,7 +393,6 @@
        Example "normal" is default.
      */
     return style_;
- //! \return reference to text_style to make chainable.
  }
 
   text_style& text_style::font_style(const std::string& s)
@@ -407,8 +402,7 @@
       http://www.croczilla.com/~alex/conformance_suite/svg/text-fonts-02-t.svg
     */
     style_ = s;
- return *this;
- //! \return reference to text_style to make chainable.
+ return *this; //! \return reference to text_style to make chainable.
   }
 
   const std::string& text_style::font_weight() const
@@ -435,8 +429,7 @@
   { // Examples: "wider" but implementation?
     // font-stretch: normal | wider | narrower ...
     stretch_ = s;
- return *this;
- //! \return reference to text_style to make chainable.
+ return *this; //! \return reference to text_style to make chainable.
   }
 
   const std::string& text_style::font_decoration() const
@@ -452,8 +445,7 @@
       But implementation varies.
     */
     decoration_ = s;
- return *this;
- //! \return reference to text_style to make chainable.
+ return *this; //! \return reference to text_style to make chainable.
   }
 
   // http://www.croczilla.com/~alex/conformance_suite/svg/text-align-02-b.svg
@@ -521,8 +513,11 @@
 text_style no_style; //!< Text style that uses all constructor defaults.
 
 class value_style
-{ //! Data series point value label information, text, color, orientation, uncertainty & df.
- //! \details For example, to output: 5.123 +- 0.01 (19)
+{ /*! \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.
+ */
 public:
   //private: // ??
   rotate_style value_label_rotation_; //< Direction point value labels written.
@@ -576,7 +571,7 @@
 // End class value_style Member Functions definitions.
 
 enum point_shape
-{ //! \enum Shape used for marking a data point.
+{ //! \enum point_shape used for marking a data point.
   // Used in draw_plot_point in axis_plot_frame.hpp
   none = 0, //!< No marker for data point.
   round, //!< Circle but name changed to round to avoid clash with function named circle.
@@ -609,7 +604,10 @@
 }; // enum point_shape
 
 class plot_point_style
-{ //! Shape, color, (optional value & uncertainty) of data point markers.
+{ /*! \class boost::svg::plot_point_style
+ \brief Shape, color, of data point markers.
+ \details (optional value & uncertainty) not implemented yet.
+ */
   friend std::ostream& operator<< (std::ostream&, plot_point_style);
 
 public:
@@ -763,7 +761,7 @@
 plot_point_style default_plot_point_style(); // Uses all the defaults.
 
 class plot_line_style
-{ //! \class plot_line_style Style of line joining data series values.
+{ //! \class boost::svg::plot_line_style Style of line joining data series values.
   // TODO dotted and dashed line style would be useful for B&W.
 public:
   svg_color stroke_color_; //!< Stroke color of line. (no fill color for lines)
@@ -875,8 +873,10 @@
 };
 
 class axis_line_style
-{ //! Style of the x and/or y axes lines.\n
- //! (But NOT the ticks and value labels because different styles for x and y are possible).
+{ /*! \class boost::svg::axis_line_style
+ \brief Style of the x and/or y axes lines.
+ \details (But NOT the ticks and value labels because different styles for x and y are possible).
+ */
 public:
   dim dim_; //!< X, Y or none.
   double min_; //!< minimum x value (Cartesian units).
@@ -935,17 +935,18 @@
     const svg_color col,
     double width,
     int axis_position,
+ int axis_,
     bool label_on,
     bool label_units_on,
     bool axis_lines_on)
     :
     dim_(d), min_(min), max_(max), color_(col), axis_width_(width),
     axis_position_(axis_position),
- label_on_(label_on),
- label_units_on_(label_units_on), // default is include units.
+ label_on_(label_on), // default is to include axis label.
+ label_units_on_(label_units_on), // default is to include units after axis label.
     axis_line_on_(axis_lines_on),
- axis_(-1) // Not calculated yet.
- { // Initialize all private data.
+ axis_(-1) // -1 means not calculated yet.
+ { // Initialize all private data.
     if(max_ <= min_)
     { // max_ <= min_.
       throw std::runtime_error("Axis range: max <= min!");
@@ -1022,12 +1023,14 @@
 
 // End class axis_line_style member functions definitions:
 
-
 class ticks_labels_style
-{ //! Style of the x and y axes ticks, grids and their value labels.
- //! But NOT the x and y axes lines.
- //! These can be either on the axis lines or on the plot window edge(s),
- //! (because different styles for x and y are possible).
+{ /*! \class boost::svg::ticks_labels_style
+ \brief Style of the x and y axes ticks, grids and their value labels.
+ \details
+ But NOT the x and y axes lines.
+ These can be either on the axis lines or on the plot window edge(s),
+ (because different styles for x and y are possible).
+ */
   friend class svg_2d_plot;
 
 public:
@@ -1240,7 +1243,7 @@
 }; // class ticks_labels_style
 
 class box_style
-{ //! \class box_style Style of a rectangular box. (Used for boxplot image and plot window).
+{ //! \class boost::svg::box_style Style of a rectangular box. (Used for boxplot image and plot window).
 public:
     svg_color stroke_; //!< Box line (stroke) color.
     svg_color fill_; //!< Box fill color.
@@ -1373,17 +1376,19 @@
 
 enum histogram_option
 { //! \enum histogram_option
- //row = -1, // Row line (stroke width) horizontal to Y-axis. Not implemented.
+ // row = -1, // Row line (stroke width) horizontal to Y-axis. Not implemented.
   // See svg_2d_plot for details of why not.
   no_histogram = 0, //!< No histogram.
   column = +1 //!< Stick or column line (stroke width) vertically to/from X-axis.
- // Column is the most common histogram style.
+ //! Column is the most common histogram style.
 };
 
 class histogram_style
-{ // Options for histograms.
+{ /*! \class boost::svg::histogram_style
+ \brief Histogram options.
+ */
 public:
- histogram_option histogram_option_; // bar, no_histogram or column.
+ histogram_option histogram_option_; //! default bar, no_histogram or column.
 
   histogram_style(histogram_option opt = no_histogram);
 
@@ -1417,7 +1422,9 @@
 // End class histogram_style Definitions.
 
 class bar_style
-{ //! \class bar_style Style (color, width, fill ...) of histogram bars.
+{ /*! \class boost::svg::bar_style
+ \brief Style (color, width, fill) of histogram bars.
+ */
   // TODO should inherit from svg_style?
 public:
   svg_color color_; //!< Color of line (stroke) (no fill color for lines).


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