Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r55694 - in sandbox/SOC/2007/visualization: boost/svg_plot boost/svg_plot/detail libs/svg_plot/doc libs/svg_plot/doc/html libs/svg_plot/doc/pdf libs/svg_plot/example libs/svg_plot/test
From: pbristow_at_[hidden]
Date: 2009-08-21 05:36:15


Author: pbristow
Date: 2009-08-21 05:36:12 EDT (Fri, 21 Aug 2009)
New Revision: 55694
URL: http://svn.boost.org/trac/boost/changeset/55694

Log:
updated Doxygen comments.
Added:
   sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_2d_bad_function.cpp (contents, props changed)
Binary files modified:
   sandbox/SOC/2007/visualization/libs/svg_plot/doc/pdf/svg_plot.pdf
   sandbox/SOC/2007/visualization/libs/svg_plot/example/1d_full_layout.svg
Text files modified:
   sandbox/SOC/2007/visualization/boost/svg_plot/detail/FP_compare.hpp | 124 ++++++++----
   sandbox/SOC/2007/visualization/boost/svg_plot/detail/auto_axes.hpp | 45 ++--
   sandbox/SOC/2007/visualization/boost/svg_plot/detail/axis_plot_frame.hpp | 142 ++++++++-------
   sandbox/SOC/2007/visualization/boost/svg_plot/detail/functors.hpp | 35 ++-
   sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_tag.hpp | 365 ++++++++++++++++++++-------------------
   sandbox/SOC/2007/visualization/boost/svg_plot/show_1d_settings.hpp | 4
   sandbox/SOC/2007/visualization/boost/svg_plot/show_2d_settings.hpp | 2
   sandbox/SOC/2007/visualization/boost/svg_plot/svg.hpp | 126 +++++++++---
   sandbox/SOC/2007/visualization/boost/svg_plot/svg_1d_plot.hpp | 4
   sandbox/SOC/2007/visualization/boost/svg_plot/svg_2d_plot.hpp | 96 +++++----
   sandbox/SOC/2007/visualization/boost/svg_plot/svg_boxplot.hpp | 218 +++++++++++------------
   sandbox/SOC/2007/visualization/boost/svg_plot/svg_style.hpp | 181 ++++++++++++-------
   sandbox/SOC/2007/visualization/boost/svg_plot/uncertain.hpp | 46 +++-
   sandbox/SOC/2007/visualization/libs/svg_plot/doc/Jamfile.v2 | 4
   sandbox/SOC/2007/visualization/libs/svg_plot/doc/how_to_use.qbk | 14
   sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/index.html | 35 ++-
   sandbox/SOC/2007/visualization/libs/svg_plot/doc/plothtml.log | 333 ++++++++++++++++++++++++++++++++++++
   sandbox/SOC/2007/visualization/libs/svg_plot/doc/plotpdf.log | 29 +-
   sandbox/SOC/2007/visualization/libs/svg_plot/doc/svg_plot.qbk | 32 ++-
   sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_1d_plot.cpp | 12
   sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_1d_tick_values.cpp | 6
   sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_1d_values.cpp | 6
   sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_2d_area_fill.cpp | 2
   sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_2d_plot.cpp | 16
   sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_2d_simple.cpp | 2
   sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_2d_weather.cpp | 90 ++++++--
   sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_FP_compare.cpp | 18
   sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_svg.cpp | 94 ++++-----
   sandbox/SOC/2007/visualization/libs/svg_plot/example/svg_test.cpp | 4
   sandbox/SOC/2007/visualization/libs/svg_plot/test/1d_color_consistency.cpp | 18
   sandbox/SOC/2007/visualization/libs/svg_plot/test/1d_tests.cpp | 18
   31 files changed, 1338 insertions(+), 783 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-08-21 05:36:12 EDT (Fri, 21 Aug 2009)
@@ -1,3 +1,27 @@
+/*! \file FP_compare.hpp
+ \brief Class for comparing floating point values to see if nearly equal.
+
+ \details
+ Two types of comparison are provided:
+ FPC_STRONG, "Very close" - Knuth equation 1', the default.
+ FPC_WEAK "Close enough" - equation 2'.
+ 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 being compared,
+ Weak only requires only closeness to EITHER ONE value.
+
+ This permits one to avoid some of the problems that can arise from comparing floating-point values
+ by circumnavigating the assumption that floating point operations always give exactly the same result.
+
+ See http://hal.archives-ouvertes.fr/docs/00/28/14/29/PDF/floating-point-article.pdf
+ for more about the pitfalls.
+
+
+ \author Paul A. Bristow
+ \date Aug 2009
+*/
+
 // Copyright Paul A. Bristow 2008
 // derived from Copyright Gennadiy Rozental 2001-2007.
 
@@ -5,7 +29,7 @@
 // (See accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)
 
-// See http://www.boost.org/libs/test for the library home page.
+// See http://www.boost.org/libs/test for the Boost.Test library home page.
 // Deliberately removed any treatment of percent!
 
 #ifndef BOOST_TEST_FLOATING_POINT_COMPARISON_HPP
@@ -20,14 +44,16 @@
 // Check floating-point value is smaller than a chosen small value.
 template<typename FPT> class smallest;
 
+//! \enum floating_point_comparison_type Two types of comparison of two floating point values.
 enum floating_point_comparison_type
-{ // Two types of comparison.
- FPC_STRONG, // "Very close" - Knuth equation 1' the default.
- FPC_WEAK // "Close enough" - equation 2'.
+{ //!< Two types of comparison of two floating point values.
+ FPC_STRONG, //!< "Very close" - Knuth equation 1', the default.
+ //!< Strong requires closeness relative to BOTH values being compared,
+
+ FPC_WEAK //!< "Close enough" - equation 2'.
+ //!< Weak only requires only closeness to EITHER ONE value.
   // 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.
 };
 
 // GNU int gsl_fcmp (double x, double y, double epsilon) provides similar function.
@@ -45,22 +71,22 @@
 // CNRS Ecole normale superieure, 1 Feb 2008, http://arxiv.org/abs/cs/0701192v4
 // submitted to ACM TOPLAS.
 
-// FPT is Floating-Point Type: float, double, long double, or User-Defined like NTL quad_float or RR.
+// \tparam FPT Floating-Point Type: float, double, long double, or User-Defined like NTL quad_float or RR.
 // from boost/math/tools/precision.hpp
-template <class T> T max_value(T);
-template <class T> T min_value(T);
-template <class T> T epsilon(T);
+template <class T> T max_value(T); //!< std::numeric_limits<>::max() or similar.
+template <class T> T min_value(T); //!< std::numeric_limits<>::min() or similar.
+template <class T> T epsilon(T); //!< std::numeric_limits<>::epsilon() or similar.
 
 template<typename FPT> FPT
 fpt_abs(FPT arg)
-{ // abs function (just in case abs is not defined for FPT).
+{ //! abs function (just in case abs is not defined for FPT).
   return arg <static_cast<FPT>(0) ? -arg : arg;
 }
 
 template<typename FPT> FPT
 safe_fpt_division(FPT f1, FPT f2)
-{ // Safe from under and overflow.
- // Both f1 and f2 must be unsigned here.
+{ //! Safe from under and overflow.
+ //! Both f1 and f2 must be unsigned here.
 
   if( (f2 < static_cast<FPT>(1)) && (f1 > f2 * boost::math::tools::max_value<FPT>()) )
   { // Avoid overflow.
@@ -76,36 +102,35 @@
   return f1 / f2;
 } // safe_fpt_division(FPT f1, FPT f2)
 
-// Check two floating-point values are close within a chosen tolerance.
-
+//! Check two floating-point values are close within a chosen tolerance.
 template<typename FPT = double>
 class close_to
 {
 public:
 
- // One constructor for fraction tolerance only.
+ // One only.
   template<typename FPT>
   explicit close_to(FPT tolerance,
     floating_point_comparison_type fpc_type = FPC_STRONG)
   :
     fraction_tolerance_(tolerance),
       strong_or_weak_(fpc_type)
- { // Fraction.
- // Check that tolerance isn't negative - which does not make sense,
- // and can be assumed to be a programmer error?
+ { //! Constructor for fraction tolerance and strength of comparison.
+ //! Checks that tolerance isn't negative - which does not make sense,
+ //! and can be assumed to be a programmer error?
     BOOST_ASSERT(tolerance >= static_cast<FPT>(0));
   }
 
- //template<typename FPT>
   close_to()
   :
   fraction_tolerance_(2 * boost::math::tools::epsilon<FPT>()),
     strong_or_weak_(FPC_STRONG)
- { // Default is two epsilon.
+ { //! Default constructor is strong comparison to twice numeric_limits<double>::epsilon().
   }
 
   bool operator()(FPT left, FPT right) const
- {
+ { //! Compare two floating point values
+ //! \return true if they are effectively equal (approximately) within tolerance & comparison strength.
     FPT diff = fpt_abs(left - right);
     FPT d1 = safe_fpt_division(diff, fpt_abs(right));
     FPT d2 = safe_fpt_division(diff, fpt_abs(left));
@@ -116,22 +141,21 @@
   }
 
   FPT size()
- { // Get function.
+ { //! \return fraction tolerance.
     return fraction_tolerance_;
   }
 
   floating_point_comparison_type strength()
- { // Get function.
+ { //! \return floating_point comparison type strength, FPC_STRONG or FPC_WEAK
     return strong_or_weak_;
   }
 
 private:
- FPT fraction_tolerance_;
- floating_point_comparison_type strong_or_weak_;
+ FPT fraction_tolerance_; //! Tolerance expressed as a fraction, 1% == 0.01
+ floating_point_comparison_type strong_or_weak_; //! floating_point comparison type strength, FPC_STRONG or FPC_WEAK
 
 }; // class close_to
 
-// Check floating-point value is smaller than a chosen small value.
 
 // David Monniaux, http://arxiv.org/abs/cs/0701192v4,
 // It is somewhat common for beginners to add a comparison check to 0 before
@@ -144,9 +168,21 @@
 // does - that is, the program may actually test that x 6= 0, then, further down,
 // find that x = 0 without any apparent change to x!
 
+//! Check floating-point value is smaller than a chosen small value.
 template<typename FPT = double>
 class smallest
-{
+{ /*!< \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
+ the generation of infinite results. A first objection to this practise is that, anyway,
+ computing 1/x for x very close to zero will generate very large numbers
+ that will most probably result in overflows later.
+ Another objection, which few programmers know about and that we wish to draw attention
+ to, is that it may actually fail to work, depending on what the compiler
+ does - that is, the program may actually test that x 6= 0, then, further down,
+ find that x = 0 without any apparent change to x!
+*/
 public:
   template<typename FPT>
   explicit smallest(FPT s)
@@ -158,18 +194,19 @@
   smallest()
   :
   smallest_(2 * boost::math::tools::min_value<FPT>())
- { // Default Constructor.
- // smallest_ = 2. * boost::math::tools::min_value<double>();
- // multiplier m = 2 (must be integer or static_cast<FPT>())
- // is chosen to allow for a few bits of computation error.
- // Pessimistic multiplier is the number of arithmetic operations,
- // assuming every operation causes a 1 least significant bit error,
- // but a more realistic average would be half this.
+ { /*!< Default Constructor.
+ Default smallest_ = 2. * boost::math::tools::min_value<double>();
+ multiplier m = 2 (must be integer or static_cast<FPT>())
+ is chosen to allow for a few bits of computation error.
+ Pessimistic multiplier is the number of arithmetic operations,
+ assuming every operation causes a 1 least significant bit error,
+ but a more realistic average would be half this.
+ */
   }
 
   template<typename FPT>
   bool operator()(FPT fp_value, FPT s)
- {
+ { //!< \return true if smaller than the given small value.
     if (fpt_abs(fp_value) == static_cast<FPT>(0))
     { // Test for zero first in case FPT is actually an integer type zero,
       // when the comparison < below would fail because
@@ -181,8 +218,7 @@
 
   template<typename FPT>
   bool operator()(FPT fp_value)
- {
-
+ { //!< \return true if smaller than the defined smallest effectively-zero value.
     if (fpt_abs(fp_value) == static_cast<FPT>(0))
     { // Test for zero first in case FPT is actually an integer type,
       // when the comparison < below would fail because
@@ -193,23 +229,21 @@
   } // bool operator()
 
   FPT size()
- { // Get function.
+ { //!< \return smallest value that will be counted as effectively zero.
     return smallest_;
   }
 
 private:
- // Smallest value that will be counted as effectively zero.
+ //!< Smallest value that will be counted as effectively zero.
   FPT smallest_;
-
 }; // class smallest
 
 // Since double and the default smallest value 2 * min_value = 4.45015e-308
 // is a very common requirement, provide an convenience alias for this:
-typedef smallest<double> tiny; // Allow tiny as a shorthand for 1e-308
+typedef smallest<double> tiny; //!< A shorthand for twice std::numeric_limits<double>::min_value(), often 4.4e-308.
 
-
-// Since double and the default smallest value 2 * min_value = 4.45015e-308
+// Since double and the default twice std::numeric_limits<double>::epsilon() = 2.220446e-016
 // is a very common requirement, provide an convenience alias for this:
-typedef close_to<double> neareq; // Allow tiny as a shorthand for epsilon
+typedef close_to<double> neareq; //!< A shorthand for twice std::numeric_limits<double>::epsilon(), often 2e-16.
 
 #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-08-21 05:36:12 EDT (Fri, 21 Aug 2009)
@@ -92,8 +92,12 @@
 
 //! Scale axis and update min and max axis values, and tick increment and number of ticks.
 void scale_axis(
- double min_value, double max_value, //! Scale axis from Input range min & max.
- double* axis_min_value, double* axis_max_value, double* axis_tick_increment, int* auto_ticks, // All 4 updated.
+ double min_value, //!< Scale axis from input range min & max.
+ double max_value, //!< Scale axis from input range min & max.
+ double* axis_min_value, //!< Computed minimum value for the axis, updated by scale_axis.
+ double* axis_max_value, //!< Computed maximum value for the axis, updated by scale_axis.
+ double* axis_tick_increment, //!< Computed tick increment for the axis, updated by scale_axis.
+ int* auto_ticks, //!< Computed number of ticks, updated by scale_axis.
    //! NO check_limits parameter.
    bool origin, //! Do not include the origin unless the range min_value <= 0 <= max_value.
    double tight, //! Tightness - fraction of 'overrun' allowed before another tick used.
@@ -175,7 +179,10 @@
 void scale_axis(
    double min_value, //!< Minimum value.
    double max_value, //!< Maximum value.
- double* axis_min_value, double* axis_max_value, double* axis_tick_increment, int* auto_ticks, //! All 4 updated.
+ double* axis_min_value, //!< Minimum value for the axis, updated by scale_axis.
+ double* axis_max_value, //!< Maximum value for the axis, updated by scale_axis.
+ double* axis_tick_increment, //!< Tick increment for the axis, updated by scale_axis.
+ int* auto_ticks, //!< Updated with number of ticks.
    bool check_limits, //!< Whether to check all values for infinity, NaN etc.
    double autoscale_plusminus, //!< Multiplier of uncertainty or standard deviations to allow for confidence ellipses.
    bool origin, //!< If true, ensures that zero is a tick value.
@@ -196,11 +203,11 @@
 void scale_axis(
    iter begin, //!< iterators into begin in STL container.
    iter end, //!< iterators into end in STL container.
- // (not necessarily ordered, so will find min and max).
- double* axis_min_value, //!< Updated with axis_min_value
- double* axis_max_value, //!< Updated with axis_max_value
- double* axis_tick_increment, //!< Updated with axis_tick_increment
- int* auto_ticks, //!< Updated with number of ticks
+ // (not necessarily ordered by size, so will find min and max).
+ double* axis_min_value, //!< Computed minimum value for the axis, updated by scale_axis.
+ double* axis_max_value, //!< Computed maximum value for the axis, updated by scale_axis.
+ double* axis_tick_increment, //!< Computed tick increment for the axis, updated by scale_axis.
+ int* auto_ticks, //!< Computed number of ticks, updated by scale_axis.
    bool check_limits, //!< Whether to check all values for infinity, NaN etc.
    double autoscale_plusminus, //!< Mutiplier of uncertainty or standard deviations to allow fo confidence ellipses.
    bool origin = false, //!< do not include the origin unless the range min_value <= 0 <= max_value.
@@ -246,11 +253,11 @@
 //! \tparam T type of STL container, vector, map ...
 template <class T>
 void scale_axis(
- const T& container, //!< STL container
- double* axis_min_value, //!< Updated with minimum value for the axis.
- double* axis_max_value, //!< Updated with maximum value for the axis.
- double* axis_tick_increment,//!< Updated with
- int* auto_ticks, //!< Updated with
+ const T& container, //!< STL container, usually of a data series.
+ double* axis_min_value, //!< Computed minimum value for the axis, updated by scale_axis.
+ double* axis_max_value, //!< Computed maximum value for the axis, updated by scale_axis.
+ double* axis_tick_increment, //!< Computed tick increment for the axis, updated by scale_axis.
+ int* auto_ticks, //!< Computed number of ticks, updated by scale_axis.
   bool check_limits, //!< Whether to check all values for infinity, NaN etc.
   double autoscale_plusminus = 3., //!< Multiplier of uncertainty or standard deviations to allow for confidence ellipses.
   bool origin = false, //!< do not include the origin unless the range min_value <= 0 <= max_value.
@@ -295,14 +302,14 @@
 template <class T> //!< \tparam T STL container of 2D pairs of X and Y.
 void scale_axis(
   const T& container, //!< Data series to plot - entire 2D container (not necessarily ordered, so will find min and max).
- double* x_axis_min_value, //!< Updated with x_axis_min_value.
- double* x_axis_max_value, //!< Updated with x_axis_max_value.
+ double* x_axis_min_value, //!< Computed minimum value for the X-axis, updated by scale_axis.
+ double* x_axis_max_value, //!< Computed minimum value for the X-axis, updated by scale_axis.
   double* x_axis_tick_increment, //!< Updated with X axis tick increment.
- int* x_auto_ticks, //!< Updated with x_auto_ticks.
- double* y_axis_min_value, //!< Updated with y_axis_min_value.
- double* y_axis_max_value, //!< Updated with y_axis_max_value.
+ int* x_auto_ticks, //!< Computed number of X axis ticks, updated by scale_axis.
+ double* y_axis_min_value, //!< Computed minimum value for the Y-axis, updated by scale_axis.
+ double* y_axis_max_value, //!< Computed maximum value for the Y-axis, updated by scale_axis.
   double* y_axis_tick_increment, //!< Updated with Y axis tick increment.
- int* y_auto_ticks, //!< Updated with number of Y axis ticks.
+ int* y_auto_ticks, //!< Computed number of Y-axis ticks, updated by scale_axis.
   bool check_limits = true, //!< Whether to check all values for infinity, NaN etc.
   double autoscale_plusminus = 3., //!< Mutiplier of uncertainty or standard deviations to allow fo confidence ellipses.
   bool x_origin = false, //!< do not include the origin unless the range min_value <= 0 <= max_value.

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-08-21 05:36:12 EDT (Fri, 21 Aug 2009)
@@ -1365,16 +1365,18 @@
 
           void draw_plot_point_values(double x, double y, g_element& x_g_ptr, g_element& y_g_ptr, const value_style& x_sty, const value_style& y_sty, unc uncx, unc uncy)
           { /*! \brief Write the \b pair of data point's X and Y values as a string.
- \details If a separator, then both on the same line, for example "1.23, 3.45", or "[5.6, 7.8]
+ \details
+ \verbatim If a separator, then both on the same line, for example "1.23, 3.45", or "[5.6, 7.8]
                  X value_style is used to provide the prefix and separator, and Y value_style to provide the suffix.
- For example, x_style prefix("[ X=", and separator ",\<ampersand\>\#x00A0;Y= ", " and Y value_style = "]"
+ For example, x_style prefix("[ X=", and separator ",&#x00A0;Y= ", " and Y value_style = "]"
                  will produce a value label like "[X=-1.23, Y=4.56]"
- Note the need to use a Unicode space \<ampersand\>\#x00A0; for get space for all browsers.
+ Note the need to use a Unicode space for get space for all browsers.
                  For as long a string as this you may need to make the total image size bigger,
                  and to orient the value labels with care.
                  draw_plot_point_values is only when both x and Y pairs are wanted.
+ \endverbatim
            */
- // verbatim needed to avoid a warning about using \&#x00A0; within Doxygen comment.
+ // verbatim needed to avoid a warning about using &#x00A0; within Doxygen comment.
             using std::string;
             using std::stringstream;
             double vx = uncx.value();
@@ -1680,13 +1682,13 @@
 
           Derived& x_size(unsigned int i); //!< Set SVG image X-axis size (SVG units, default pixels).
           unsigned int x_size(); //!< \return SVG image X-axis size as horizontal width (SVG units, default pixels).
- unsigned int image_x_size(); // Obselete - deprecated.
- Derived& image_x_size(unsigned int i); // Obselete - deprecated.
+ unsigned int image_x_size(); //!< Obselete - deprecated use x_size()
+ Derived& image_x_size(unsigned int i); //!< Obselete - deprecated - use x_size().
 
           unsigned int y_size(); //!< \return SVG image Y-axis size as horizontal width (SVG units, default pixels).
           Derived& y_size(unsigned int i); //!< Set SVG image Y-axis size (SVG units, default pixels).
- unsigned int image_y_size(); //!< Obselete - deprecated - use y_size().
- Derived& image_y_size(unsigned int i); // Obselete - deprecated - y_size(unsigned int i).
+ unsigned int image_y_size(); //!< Obselete - deprecated - use y_size()
+ Derived& image_y_size(unsigned int i); //!< Obselete - deprecated - use y_size()
 
           svg_color background_color(); //!< \return plot background color.
           Derived& background_color(const svg_color& col); //!< Set plot background color.
@@ -1694,25 +1696,27 @@
           svg_color background_border_color(); //!< \return plot background border color.
           Derived& background_border_width(double w); //!< Set plot background border width.
           double background_border_width(); //!< \return plot background border width.
- Derived& description(const std::string d); //!< Writes description to the document for header as <desc> My Description </desc>
- const std::string& description(); //!< \return description of the document for header as <desc> My description </desc>
- Derived& document_title(const std::string d);
- std::string document_title(); //!< \return document title to the document for header as \verbatim <title> My Title </title> \endverbatim
- Derived& copyright_holder(const std::string d);//!< Writes copyright_holder to the SVG document
- //! (for header as <!-- SVG Plot Copyright Paul A. Bristow 2007 --> )
- //! and as \verbatim metadata: <meta name="copyright" content="Paul A. Bristow" /> \endverbatim
+ Derived& description(const std::string d);
+ //!< Writes description to the document for header as \verbatim <desc> My Description </desc>. \endverbatim
+ const std::string& description(); //!< \return description of the document for header as \verbatim <desc> My description </desc>. \endverbatim
+ Derived& document_title(const std::string d); //!< Set document title to the document for header as \verbatim <title> My Title </title>. \endverbatim
+ std::string document_title(); //!< \return document title to the document for header as \verbatim <title> My Title </title>. \endverbatim
+ Derived& copyright_holder(const std::string d);/*!< Writes copyright_holder metadata to the SVG document
+ (for header as <!-- SVG Plot Copyright Paul A. Bristow 2007 --> )
+ /and as metadata: \verbatim <meta name="copyright" content="Paul A. Bristow" /> \endverbatim
+ */
           const std::string copyright_holder(); //!< \return SVG document copyright holder.
           Derived& copyright_date(const std::string d); //!< Writes copyright date to the SVG document.
- //! and as \verbatim metadata <meta name="date" content="2007" /> \endverbatim
+ //! and as metadata: \verbatim <meta name="date" content="2007" /> \endverbatim
           const std::string copyright_date(); //!< \return SVG document copyright_date.
           Derived& license(
             std::string repro= "permits",
             std::string distrib = "permits",
             std::string attrib = "requires",
             std::string commercial = "permits",
- std::string derivative = "permits"); //!< Set license conditions for reproduction, atribution, commercial use, and derivative works,
- //!< usually "permits", "requires", or "prohibits",
- //!< and set license_on == true.
+ std::string derivative = "permits"); /*!< Set license conditions for reproduction, attribution, commercial use, and derivative works,
+ usually "permits", "requires", or "prohibits", and set license_on == true.
+ */
           Derived& license_on(bool l); //!< Set if license conditions should be included in the SVG document.
           bool license_on(); //!< \return true if license conditions should be included in the SVG document.
           Derived& boost_license_on(bool l); //!< Set true if the Boost license conditions should be included in the SVG document.
@@ -1734,9 +1738,12 @@
               If the range of labels is very small, then more digits will be essential.
             */
           int x_value_precision(); //!< \return precision of X tick label values in decimal digits
- Derived& x_value_ioflags(int flags); /*! Set `iostream std::ios::fmtflags` for X value label (default decimal == 0X201).
- Mainly useful for changing to `scientific, fixed or hexadecimal` format.
- For example: `.x_value_ioflags(std::ios::dec | std::ios::scientific)`
+ Derived& x_value_ioflags(int flags); /*!< Set iostream std::ios::fmtflags for X value label (default decimal == 0X201).
+ Mainly useful for changing to scientific, fixed or hexadecimal format.
+ For example:
+ \code
+ myplot.x_value_ioflags(std::ios::dec | std::ios::scientific)
+ \endcode
             */
           int x_value_ioflags(); //!< \return stream std::ios::fmtflags for control of format of X value labels.
           Derived& x_labels_strip_e0s(bool cmd); //!< Set if to strip redundant zeros, signs and exponents, for example, reducing "1.2e+000" to "1.2"
@@ -1746,9 +1753,11 @@
               Set a title for plot.
               The string may include Unicode for greek letter and symbols.
               For example a title that includes a greek omega and degree symbols:
- `my_plot.title("Plot of \&\#x3A9; function (\&\#x00B0;C)");`
+ \code
+ my_plot.title("Plot of &#x3A9; function (&#x00B0;C)");
+ \endcode
 
- Unicode symbols are at http://unicode.org/charts/symbols.html .
+ Unicode symbols are at http://unicode.org/charts/symbols.html.
             */
           const std::string title(); //!< \return a title for plot, whose string may include Unicode for greek letter and symbols.
           Derived& title_font_size(unsigned int i); //!< Sets the font size for the title (svg units, default pixels).
@@ -1778,8 +1787,8 @@
           const std::string& legend_font_family(); //!< \return the font family for the legend title.
           Derived& legend_title_font_size(unsigned int size); //!< \return the font family for the legend title.
           unsigned int legend_title_font_size(); //!< \return the font size for the legend title (svg units, default pixels).
- Derived& legend_top_left(double x, double y);//!< Set position of top left of legend box (svg coordinates, default pixels).
- //!< Bottom right is controlled by contents, so the user cannot set it.
+ Derived& legend_top_left(double x, double y); //!< Set position of top left of legend box (svg coordinates, default pixels).
+ //! (Bottom right is controlled by contents, so the user cannot set it).
           const std::pair<double, double> legend_top_left(); //!< \return svg coordinate (default pixels) of top left of legend box.
           const std::pair<double, double> legend_bottom_right(); //!< \return svg coordinate (default pixels) of bottom right of legend box.
           Derived& legend_lines(bool is); /*!< Set true if legend should include samples of the lines joining data points.
@@ -1820,13 +1829,13 @@
           double y_minor_interval(); //!< \return interval between Y minor ticks.
           Derived& x_ticks_up_on(bool cmd); //!< Set true if X major ticks should mark upwards.
           bool x_ticks_up_on(); //!< \return true if X major ticks should mark upwards.
- Derived& x_ticks_down_on(bool cmd);
+ Derived& x_ticks_down_on(bool cmd); //!< Set true if Y major ticks should mark upwards.
           bool x_ticks_down_on(); //!< \return true if Y major ticks should mark upwards.
           Derived& x_label_on(bool cmd); //!< \return true if X major ticks should mark downwards.
           bool x_label_on(); /*!< Set true if want to show X-axis label text.
             Also switched on by setting label text.
             (on the assumption that if label text is set, display is also wanted,
- but can be switched off if *not* required).
+ but can be switched off if \b not required).
            */
           Derived& x_label_font_size(unsigned int i); //!< Set X axis label font size (svg units, default pixels).
           unsigned int x_label_font_size(); //!< \return X axis label font size (svg units, default pixels).
@@ -1836,8 +1845,10 @@
            Available fonts depend on the program rendering the SVG XML, usually a browser.
           The default font (usually "verdana") is used if a render program does not provide the font specified.
           These are probably usable:
- `"arial", "impact", "courier", "lucida console", "Lucida sans unicode", "verdana", "calibri", "century",
- "lucida calligraphy", "tahoma", "vivaldi", "informal roman", "lucida handwriting", "lucida bright", "helvetica"`
+ \code
+ "arial", "impact", "courier", "lucida console", "Lucida sans unicode", "verdana", "calibri", "century",
+ "lucida calligraphy", "tahoma", "vivaldi", "informal roman", "lucida handwriting", "lucida bright", "helvetica"
+ \endcode
           */
           const std::string& x_label_font_family(); //!< \return X tick value label font family.
           Derived& x_axis_label_color(const svg_color& col); //!< Set X axis label color, for example, red.
@@ -1850,41 +1861,42 @@
           Derived& x_ticks_values_ioflags(std::ios_base::fmtflags f); //!< Set iostream format flags of data point X values near data points markers.
           std::ios_base::fmtflags x_ticks_values_ioflags(); //!< \return iostream format flags of data point X values near data points markers.
 
- Derived& x_ticks_values_font_family(const std::string& family); //!< Set X ticks value label font family.
- //!< Available fonts depend on the program rendering the SVG XML, usually a browser.
- //!< The default font (usually "verdana") is used if a render program does not provide the font specified.
- //!< These are probably usable:
- //!< "arial", "impact", "courier", "lucida console", "Lucida sans unicode", "verdana", "calibri", "century",
- //!< "lucida calligraphy", "tahoma", "vivaldi", "informal roman", "lucida handwriting", "lucida bright", "helvetica"
-
+ Derived& x_ticks_values_font_family(const std::string& family); /*!< Set X ticks value label font family.
+ Available fonts depend on the program rendering the SVG XML, usually a browser.
+ The default font (usually "verdana") is used if a render program does not provide the font specified.
+ These are probably usable:
+ \code
+ "arial", "impact", "courier", "lucida console", "Lucida sans unicode", "verdana", "calibri", "century",
+ "lucida calligraphy", "tahoma", "vivaldi", "informal roman", "lucida handwriting", "lucida bright", "helvetica"
+ \endcode
+ */
           const std::string& x_ticks_values_font_family(); //!< \return X ticks value label font family.
           Derived& x_ticks_values_font_size(unsigned int i); //!< Set X ticks value label font size (svg units, default pixels).
           unsigned int x_ticks_values_font_size(); //!< Set X ticks value label font size (svg units, default pixels).
 
- Derived& x_ticks_on_window_or_axis(int cmd); /*! Set X ticks on window or axis
- \arg cmd -1 bottom of plot window,
- \arg cmd 0 on X axis.
- \arg cmd +1 top of plot window.
+ Derived& x_ticks_on_window_or_axis(int cmd); /*!< Set position of X ticks on window or axis.
+ \arg \c cmd -1 X ticks on bottom of plot window,
+ \arg \c cmd 0 X ticks on X axis horizontal line.
+ \arg \c cmd +1 X ticks top of plot window.
             */
- int x_ticks_on_window_or_axis();//!< \return true if X axis ticks wanted on the window (rather than on axis).\n
- //!< -1 bottom of plot window, 0 on X axis, +1 top of plot window.
+ int x_ticks_on_window_or_axis(); //!< \return true if X axis ticks wanted on the window (rather than on axis).\n
+ //!< -1 bottom of plot window, 0 on horiztonal X axis , +1 top of plot window.
           Derived& x_label_units_on(bool cmd); //!< Set true if want X axis label to include units (as well as label like "length").
             //!< \see x_label_units which also sets true.
           bool x_label_units_on(); //!< Set true if want X axis label to include units (as well as label like "length").
- Derived& x_major_labels_side(int cmd); /*! Position of labels for major ticks on horizontal X axis line.
- \arg \c place > 0 labels to left of Y axis line (default),
- \arg \c place = 0 (false) no major tick labels on Y axis.
- \arg \c place > 0 labels to right of Y axis line.
+ Derived& x_major_labels_side(int cmd); /*!< Position of labels for X major ticks on horizontal X axis line.
+ \arg \c cmd place > 0 X tick value labels to left of Y axis line (default),
+ \arg \c cmd place = 0 (false) no major X tick value labels on Y axis.
+ \arg \c cmd place > 0 X tick labels to right of Y axis line.
             */
           int x_major_labels_side(); //!< \return the side for X ticks major value labels.
- Derived& x_major_label_rotation(rotate_style rot); /*! Set rotation for X ticks major value labels. (Default horizontal).
+ Derived& x_major_label_rotation(rotate_style rot); /*!< Set rotation for X ticks major value labels. (Default horizontal).
                \see rotate_style
             */
- rotate_style x_major_label_rotation(); /*! \return rotation for X ticks major value labels.
+ rotate_style x_major_label_rotation(); /*!< \return rotation for X ticks major value labels.
                 \see rotate_style
              */
- Derived& title_on(bool cmd); //!< If set true, show a title for the plot.
- //!< Set true by setting a title.
+ Derived& title_on(bool cmd); //!< If set true, show a title for the plot. Note: is set true by setting a title.
           bool title_on(); //!< \return true if will show a title for the plot.
           Derived& x_major_grid_on(bool is); //!< If set true, will include a major X-axis grid.
           bool x_major_grid_on(); //!< \return true if will include a major X-axis grid.
@@ -1915,7 +1927,7 @@
           Derived& x_label_color(const svg_color& col); //!< \return the color of the Y-axis line.
           svg_color x_label_color(); //!< \return the color of X-axis label (including any units).
           Derived& x_label_width(double width); //!< Set the width (boldness) of X-axis label (including any units).
- //!< (not recommended until browsers implement better).
+ //! (not recommended until browsers implement better).
           double x_label_width(); //!< \return the width (boldness) of X-axis label (including any units).
           Derived& y_label_color(const svg_color& col); //!< Set the color of Y-axis label (including any units).
           svg_color y_label_color(); //!< \return the color of Y-axis label (including any units).
@@ -1972,8 +1984,8 @@
           svg_color x_df_color(); //!< \return the color of X degrees of freedom, for example, the color of 9 in "1.23 +-0.02 (9)".
           Derived& x_decor(const std::string& pre, const std::string& sep = "", const std::string& suf = "");
           /*!< Set prefix, separator and suffix together for x_ values.
- Note if you want a space, you must use a Unicode space "\&\#x00A0;",
- for example, ",\&\#x00A0;" rather than ASCII space", ".
+ Note if you want a space, you must use a Unicode space "&#x00A0;",
+ for example, ",&#x00A0;" rather than ASCII space", ".
             */
           const std::string x_suffix(); //!< \return the suffix (only used if separator != "")
           const std::string x_separator(); //!< \return the separator, perhaps including Unicode.
@@ -2000,7 +2012,7 @@
             */
           std::pair<double, double> x_range(); //!< \return the range of values on the X-axis.
           Derived& x_min(double min_x); //!< Set the minimum value on the X-axis.
- double x_min(); //! \return the minimum value on the X-axis.
+ double x_min(); //!< \return the minimum value on the X-axis.
           Derived& x_max(double x); //!< Set the maximum value on the X-axis.
           double x_max(); //!< \return the maximum value on the X-axis.
 
@@ -2016,10 +2028,10 @@
           bool autoscale(); //!< \return true if to use autoscale values for X-axis.
           Derived& autoscale(bool b); //!< Set true if to use autoscale values for X-axis.
           Derived& x_autoscale(std::pair<double, double> p); //!< autoscale X axis using a pair of doubles.
- template <class T> // T an STL container: array, vector ...
+ template <class T> //!< \tparam T an STL container: array, vector ...
           Derived& x_autoscale(const T& container); //!< autoscale X axis using the whole data series.
- template <class T> // T an STL container: array, vector ...
- Derived& x_autoscale(const T& begin, const T& end); // Data series using iterators.
+ template <class T> //!< \tparam T an STL container: array, vector ...
+ Derived& x_autoscale(const T& begin, const T& end); //!< Data series using iterators.
           Derived& x_with_zero(bool b); //!< Set X-axis autoscale to include zero (default = false).
           bool x_with_zero(); //!< \return true if X-axis autoscale to include zero (default = false).
           Derived& x_min_ticks(int min_ticks); //!< Set X-axis autoscale to include at least minimum number of ticks (default = 6).
@@ -2053,15 +2065,15 @@
             because the render engine does the centering.
           */
           Derived& draw_line(double x1, double y1, double x2, double y2, const svg_color& col = black);
- /*!< \brief Annotate plot with a line from SVG Coordinates X1, Y1 to X2, Y2.
- \details Default color black.
+ /*!< Annotate plot with a line from SVG Coordinates X1, Y1 to X2, Y2. (Default color black).
               Note \b NOT the data values. See draw_plot_line if want to use user coordinates.
             */
- Derived& draw_plot_line(double x1, double y1, double x2, double y2, const svg_color& col = black); /*!< \brief Annotate plot with a line from user's Cartesian Coordinates X1, Y1 to X2, Y2.
+ Derived& draw_plot_line(double x1, double y1, double x2, double y2, const svg_color& col = black);
+ /*!< \brief Annotate plot with a line from user's Cartesian Coordinates X1, Y1 to X2, Y2.
               \details For example, -10, -10, +10, +10, Default color black.
             */
           Derived& draw_plot_curve(double x1, double y1, double x2, double y2, double x3, double y3,const svg_color& col = black);
- /*! \brief Annotate plot with a line from user's Cartesian Coordinates X1, Y1 via X2, Y2 to X3, Y3.
+ /*!< \brief Annotate plot with a line from user's Cartesian Coordinates X1, Y1 via X2, Y2 to X3, Y3.
               \details For example, -10, -10, +10, +10, Default color black.
           */
 
@@ -2304,7 +2316,7 @@
             std::string attrib,
             std::string commercial,
             std::string derivative)
- { //! Set license conditions for reproduction, atribution, commercial use, and derivative works,
+ { //! Set license conditions for reproduction, attribution, commercial use, and derivative works,
             //! usually "permits", "requires", or "prohibits",
             //! and set license_on == true.
             // Might check these are "permits", "requires", or "prohibits"?
@@ -2916,7 +2928,7 @@
           { //! Set true if want to show X-axis label text.
             //! \details Also switched on by setting label text.
             //! (on the assumption that if label text is set, display is also wanted,
- //! but can be switched off if *not* required).
+ //! but can be switched off if \b not required).
             derived().x_axis_.label_on_ = cmd;
             return derived();
           }
@@ -3078,7 +3090,7 @@
 
           template <class Derived>
           int axis_plot_frame<Derived>::x_ticks_on_window_or_axis()
- { //! \return true if X axis ticks wanted on the window (rather than on axis).\n
+ { //! \return if X axis ticks wanted on the window (rather than on axis).\n
             //! -1 bottom of plot window, 0 on X axis, +1 top of plot window.
             return derived().x_ticks_.ticks_on_window_or_on_axis_;
           }

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-08-21 05:36:12 EDT (Fri, 21 Aug 2009)
@@ -41,6 +41,7 @@
 public:
     typedef double result_type; //!< result type is double.
 
+ //! \tparam T type convertable to double.
     template <class T>
     double operator()(T val) const //! Convert a single data value to double.
     {
@@ -55,12 +56,14 @@
 public:
     typedef std::pair<double, double> result_type; //!< result type is a pair (X and Y) of doubles.
     double i; //!< Start value.
- void start(double i) //!< Set a start value.
- {
+ void start(double i)
+ { //! Set a start value.
       i = i;
     }
 
- //!< Convert a pair of X and Y double type values to a pair of doubles.
+ //! Convert a pair of X and Y (whose types can be converted to double values) to a pair of doubles.
+ //! \tparam T type whose value can be converted to double.
+ //! \tparam U type whose value can be converted to double.
     template <class T, class U>
     std::pair<double, double> operator()(const std::pair<T, U>& a) const
     { //! Assumes that a conversion from double yields just the value component of the uncertain value.
@@ -68,8 +71,9 @@
     }
 
     template <class T>
- std::pair<double, double> operator()(T a) //!< Convert a pair of X and Y values to a pair of doubles.
- {
+ std::pair<double, double> operator()(T a)
+ { //! Convert a pair of X and Y values to a pair of doubles.
+ //! \return pair of doubles.
         return std::pair<double, double>(i++, (double)a);
     }
 }; // class pair_double_2d_convert
@@ -81,22 +85,23 @@
 public:
     typedef std::pair<unc, unc> result_type; //!< result type is pair of uncertain values.
     unc i; //!< Start uncertain value.
- void start(unc i) //!< Set a start value.
- {
- i = i;
+ void start(unc i)
+ { //!< Set a start value.
+ i = i;
     }
 
- //!< Convert a pair of X and Y uncertain type values to a pair of doubles.
+ //!< \tparam T type convertible to double.
     template <class T, class U>
     std::pair<unc, unc> operator()(const std::pair<T, U>& a) const
- {
- return std::pair<unc, unc>((unc)(a.first), (unc)(a.second));
+ { //!< Convert a pair of X and Y uncertain type values to a pair of doubles.
+ //! \return pair of uncs.
+ return std::pair<unc, unc>((unc)(a.first), (unc)(a.second));
     }
 
- template <class T>
+ template <class T> //!< \tparam T type convertible to double.
     std::pair<unc, unc> operator()(T a)
- {
- return std::pair<unc, unc>(i++, (unc)a);
+ { //!< Convert a pair of X and Y uncertain type values to a pair of unc.
+ return std::pair<unc, unc>(i++, (unc)a); //! \return pair of unc.
     }
 }; // class pair_unc_2d_convert
 
@@ -114,7 +119,7 @@
     degrees of freedom information, and type meaning undefined.
     \return uncertain.*/
     {
- return (unc)val;
+ return (unc)val; //! \return uncertain type (uncertainty, degrees of freedom information, and type meaning undefined).
       // warning C4244: 'argument' : conversion from 'long double' to 'double', possible loss of data.
       // because unc only holds double precision. Suppressed by pragma for MSVC above. Need similar for other compilers.
     }

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-08-21 05:36:12 EDT (Fri, 21 Aug 2009)
@@ -91,10 +91,10 @@
     */
 
   protected:
- svg_style style_info_; //! Colors fill, stroke, width, get by function style.
- std::string id_name_; //! SVG id name, set & get by function id.
- std::string class_name_; //! SVG class name, set & get by function class id.
- std::string clip_name_; //! SVG clip path name, set & get by function clip_id.
+ svg_style style_info_; //!< Colors fill, stroke, width, get by function style.
+ std::string id_name_; //!< SVG id name, set & get by function id.
+ std::string class_name_; //!< SVG class name, set & get by function class id.
+ std::string clip_name_; //!< SVG clip path name, set & get by function clip_id.
 
     void write_attributes(std::ostream& s_out)
     { //! Output group_element id and clip-path.
@@ -114,10 +114,10 @@
       // should transform be here allow translate and rotate?
       /*! \details
         Classes inherited from svg_element add other references, 5.3.1, like color, fill, stroke, gradients...
- \verbatim
- Example id: <g id="yMinorGrid" ></g>
- Example class: <g class="grid_style"></g>
- Example URI: fill="url(#Gradient01) // local URL
+ \verbatim
+ Example id: <g id="yMinorGrid" ></g>
+ Example class: <g class="grid_style"></g>
+ Example URI: fill="url(#Gradient01) // local URL
         \endverbatim
       */
     } // void write_attributes(std::ostream& s_out)
@@ -133,17 +133,17 @@
                 id_name_(id_name),
                 class_name_(class_name),
                 clip_name_(clip_name)
- { // Constructor.
+ { //! Constructor with some defaults.
     }
 
     svg_element()
- { // Default constructor.
+ { //! Default constructor.
     }
 
- virtual void write(std::ostream& rhs) = 0;
+ virtual void write(std::ostream& rhs) = 0; //!< write functions output SVG commands.
 
     virtual ~svg_element()
- {
+ { //! destructor.
     }
 
     bool operator==(const svg_element& lhs)
@@ -242,7 +242,7 @@
   public:
     line_element(double x1, double y1, double x2, double y2)
       : x1_(x1), y1_(y1), x2_(x2), y2_(y2)
- { // Constructor assigning all line_element private data.
+ { //! Constructor assigning all line_element private data.
     }
 
     line_element(double x1, double y1,
@@ -254,8 +254,8 @@
                  const std::string& clip_name = "")
                 : x1_(x1), y1_(y1), x2_(x2), y2_(y2),
                   svg_element(style_info, id_name, class_name, clip_name)
- { // Constructor assigning all line_element private data,
- // and also inherited svg_element data.
+ { //! Constructor assigning all line_element private data,
+ //! and also inherited svg_element data.
     }
 
     void write(std::ostream& rhs)
@@ -286,7 +286,7 @@
     // bool fill; now inherited from parent svg class.
     qurve_element(double x1, double y1, double x2, double y2, double x3, double y3)
       : x1_(x1), y1_(y1), x2_(x2), y2_(y2), x3_(x3), y3_(y3)
- {
+ { //!< Quadratic curved line constructor (info inherited from parent svg_element class).
     }
 
     qurve_element(double x1, double y1,
@@ -299,7 +299,7 @@
                  const std::string& clip_name = "")
                 : x1_(x1), y1_(y1), x2_(x2), y2_(y2), x3_(x3), y3_(y3),
                   svg_element(style_info, id_name, class_name, clip_name)
- {
+ { //!< Quadratic curved line constructor, including svg_element info.
     }
 
     void write(std::ostream& o_str)
@@ -319,7 +319,6 @@
         o_str << " fill = \"none\"";
       }
       o_str<<"/>";
- // Perhaps
     }
   }; // class qurve_element
 
@@ -336,12 +335,12 @@
   public: //temporary for experimental gil
 
 // 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 (0, 0) 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 (0, 0) 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)
@@ -357,7 +356,7 @@
                  const std::string& clip_name)
       : x_(x), y_(y), width_(w), height_(h),
         svg_element(style_info, id_name, class_name, clip_name)
- { // Constructor defines all private data (no defaults).
+ { //! Constructor defines all private data (inherites info from svg_element).
     }
 
     double x() const
@@ -395,11 +394,11 @@
     }
 
     bool operator==(const rect_element& lhs)
- { // Comparison 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)
- {
+ { //!< Comparison rect_elements (useful for Boost.Test).
       return (lhs.x() != x_) || (lhs.y() != y_) || (lhs.width() != width_) || (lhs.height() != height_);
     }
   }; // class rect_element
@@ -437,7 +436,9 @@
     double y;
     double radius;
   public:
- circle_element(double x, double y, double radius = 5)
+ circle_element(double x, //!< coordinate X of center of ellipse.
+ double y, //!< coordinate Y of center of ellipse.
+ double radius = 5) //!< radius of ellipse.
       : x(x), y(y), radius(radius)
     { //! Constructor defines all private data (default radius only).
     }
@@ -477,35 +478,42 @@
   private:
     double cx_; //!< coordinate x of center of ellipse, default 0.
     double cy_; //!< coordinate y, default 0.
- double rx_; //!< radius x.
- double ry_; //!< radius y.
+ double rx_; //!< radius x, default 4 pixels.
+ double ry_; //!< radius y, default 8 pixels.
     double rotate_; //! rotation in degrees from horizontal (default 0.).
     // Only hacked in - should be in attributes?
   public:
- ellipse_element(double cx, double cy, double rx = 4, double ry = 8)
+ ellipse_element(double cx, //!< coordinate X of center of ellipse.
+ double cy, //!< coordinate Y of center of ellipse.
+ double rx = 4, //!< X radius default.
+ double ry = 8) //!< Y radius default.
       : cx_(cx), cy_(cy), rx_(rx), ry_(ry), rotate_(0.)
     { //!< Constructor defines all private data (with default radii).
     }
 
- ellipse_element(double cx, double cy, double rx, double ry,
- const svg_style& style_info,
- const std::string& id_name="",
- const std::string& class_name="",
- const std::string& clip_name="")
+ ellipse_element(double cx, //!< coordinate X of center of ellipse.
+ double cy, //!< coordinate Y of center of ellipse.
+ double rx, //!< radius X.
+ double ry, //!< radius Y.
+ const svg_style& style_info, //!< style (color and width)
+ const std::string& id_name="", //!< ID of group, for example: PLOT_X_TICKS_VALUES.
+ const std::string& class_name="", //!< Name of SVG class, for example: "grid_style".
+ const std::string& clip_name="") //!< name of clip path.
       : cx_(cx), cy_(cy), rx_(rx), ry_(ry), rotate_(0.),
         svg_element(style_info, id_name, class_name, clip_name)
- { //!< Constructor defines all private data.
+ { //!< Constructor sets ellipse and its style (defaults define all private data).
     }
- // Constructor that also includes style, id, class and clip.
- ellipse_element(double cx, double cy,
- const svg_style& style_info, //! Colors & widths.
- const std::string& id_name = "",
- const std::string& class_name = "",
- const std::string& clip_name = "")
+ ellipse_element(
+ double cx, //!< coordinate X of center of ellipse.
+ double cy, //!< coordinate Y of center of ellipse.
+ const svg_style& style_info, //!< Style - Colors & widths.
+ const std::string& id_name = "", //!< ID of group, for example: PLOT_X_TICKS_VALUES.
+ const std::string& class_name = "", //!< Name of SVG class."grid_style"
+ const std::string& clip_name = "") //!< name of clip path.
       : cx_(cx), cy_(cy), rx_(4), ry_(8), // 4 and 8 are the same defaults used above.
- rotate_(0.),
+ rotate_(0.), // Horizontal.
         svg_element(style_info, id_name, class_name, clip_name)
- { // Define all private data.
+ { //!< Constructor that also includes style, id, class and clip.
     }
 
     void write(std::ostream& os)
@@ -537,18 +545,18 @@
     \details This allows an array of both types to be stored in text_element.
   */
   protected:
- std::string text_;
+ std::string text_; //!< Actual text string for SVG text.
 
   public:
     virtual void write(std::ostream& /* o_str */)
- {
+ { //! write functions output SVG commands.
     }
 
     text_parent(const std::string& text): text_(text)
- {
+ { //! Construct from text.
     }
     text_parent(const text_parent& rhs): text_(rhs.text_)
- {
+ { //! Copy construct.
     }
 }; // class text_parent
 
@@ -559,13 +567,13 @@
   */
 public:
   text_element_text(const std::string& text): text_parent(text)
- {
+ { //! Construct from text.
   }
   text_element_text(const text_element_text& rhs): text_parent(rhs)
- {
+ { //! Copy construct text element
   }
   void write(std::ostream& o_str)
- {
+ { //! write text to stream.
     o_str << text_;
   }
 }; // class text_element_text
@@ -590,18 +598,19 @@
   bool use_y_; //!> If true then use Y absolute position.
   bool use_text_length_; //!< If true then use user calculated length rather than SVG (not used).
   text_style style_; //!< font variants.
- bool use_style_;
+ bool use_style_; //!< If true to use
 
 public:
- tspan_element(const std::string& text, const text_style& style = no_style)
+ tspan_element(const std::string& text, //!< Text string to display.
+ const text_style& style = no_style) //!< Text style (font).
     :
     x_(0), y_(0), dx_(0), dy_(0), rotate_(0), text_length_(0),
     use_x_(false), use_y_(false), use_text_length_(false),
     style_(style), text_parent(text)
- {
+ { //! Construct tspan element (with all defaults except text string).
   }
 
- tspan_element(const tspan_element& rhs);
+ tspan_element(const tspan_element& rhs); //!< Copy contructor.
     // TODO all may need refactoring to separate declaration from definition - as example below.
 
   //tspan_element(const tspan_element& rhs)
@@ -627,19 +636,19 @@
 
 
   tspan_element& text(const std::string& text)
- {
+ { //! Set text string to use with SVG tspan command.
     text_=text;
     return *this; //! \return tspan_element& to make chainable.
   }
 
   tspan_element& dx(double dx)
- {
+ { //! Relative X position of a 1st single character of text string to use with SVG tspan command.
     dx_ = dx;
     return *this; //! \return tspan_element& to make chainable.
   }
 
   tspan_element& dy(double dy)
- {
+ { //! Relative Y position of a 1st single character of text string to use with SVG tspan command.
     dy_ = dy;
     return *this; //! \return tspan_element& to make chainable.
   }
@@ -652,14 +661,14 @@
   }
 
   tspan_element& x(double x)
- {
+ { //! Absolute X position of a 1st single character of text string to use with SVG tspan command.
     x_ = x;
     use_x_ = true;
     return *this; //! \return tspan_element& to make chainable.
   }
 
   tspan_element& y(double y)
- {
+ {//! Absolute Y position of a 1st single character of text string to use with SVG tspan command.
     y_ = y;
     use_y_ = true;
     return *this; //! \return tspan_element& to make chainable.
@@ -673,21 +682,22 @@
   }
 
   tspan_element& font_size(unsigned int size)
- {
+ { //! font size of 1st single character of text string to use with SVG tspan command.
     style_.font_size(size);
     use_style_ = true;
     return *this; //! \return tspan_element& to make chainable.
   }
 
   tspan_element& font_family(const std::string& family)
- {
+ {//! font family of 1st single character of text string to use with SVG tspan command.
     style_.font_family(family);
     use_style_ = true;
     return *this; //! \return tspan_element& to make chainable.
   }
 
   tspan_element& font_style(const std::string& style)
- { //! font-style: normal | bold | italic | oblique
+ { //! font style of 1st single character of text string to use with SVG tspan command.
+ //! 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);
@@ -696,7 +706,8 @@
   }
 
   tspan_element& font_weight(const std::string& w)
- { //! svg font-weight: normal | bold | bolder | lighter | 100 | 200 .. 900
+ { //! font weight of 1st single character of text string to use with SVG tspan command.
+ //! 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.
@@ -713,7 +724,7 @@
   }
 
   tspan_element& textstyle(const text_style& style)
- { //! Set text style for a tspan element.
+ { //! Set text style (font) for a tspan element.
     style_ = style;
     use_style_ = true;
     return *this; //! \return tspan_element& to make chainable.
@@ -732,12 +743,12 @@
   //const text_style& text_style() const;
 
   const text_style& textstyle()
- { // Access to font family, size ...
+ { //! \return text_style& to permit access to font family, size ...
     return style_;
   }
 
   const text_style& textstyle() const
- {// const version of access to font family, size ...
+ {//! \return text_style& to permit access to font family, size (const version).
     return style_;
   }
 
@@ -984,7 +995,7 @@
   }
 
   rotate_style rotation() const
- {
+ { //! \return rotation of text element.
     return rotate_;
   }
 
@@ -1031,16 +1042,16 @@
   }
 
   text_element(
- //! Coordinates of 1st character EM box, see
- //! http://www.w3.org/TR/SVG/text.html#TextElement 10.2
- double x = 0., //! X = Left edge.
- double y = 0., //! Y = Bottom left of (western) character (roman capital).
- //! So any text with Y coordinate = 0 shows only the roman lower case descenders!
- //! One must increase Y to allow for the height (font size) of the character.
- const std::string text = "",
- text_style ts = no_style, // Left to SVG defaults.
- align_style align = left_align,
- rotate_style rotate = horizontal)
+ //!< Coordinates of 1st character EM box, see
+ //!< http://www.w3.org/TR/SVG/text.html#TextElement 10.2
+ double x = 0., //!< X = Left edge.
+ double y = 0., //!< Y = Bottom left of (western) character (roman capital).
+ //!< So any text with Y coordinate = 0 shows only the roman lower case descenders!
+ //!< One must increase Y to allow for the height (font size) of the character.
+ const std::string text = "", //!< Text string to output (may include Unicode string like "&#x221A;" for square root symbol.
+ text_style ts = no_style, //!< Text font style,default left to SVG defaults.
+ align_style align = left_align, //!< Alighment of text, left, center or right, default left_align.
+ rotate_style rotate = horizontal) //!< orientation of text, default horizontal.
     : // Constructor.
     x_(x), y_(y), // location.
     data_(ptr_vector<text_parent>()),
@@ -1056,12 +1067,12 @@
   text_element(const text_element& rhs)
   :
     x_(rhs.x_), y_(rhs.y_), style_(rhs.style_), align_(rhs.align_), rotate_(rhs.rotate_)
- { // Copy constructor.
+ { //! Copy constructor.
      data_ = (const_cast<text_element&>(rhs)).data_.release();
   }
 
   text_element& operator=(const text_element& rhs)
- {
+ { //! Assignment operator.
     x_ = rhs.x_;
     y_ = rhs.y_;
     data_.clear(); // Copy data_
@@ -1069,11 +1080,11 @@
     style_ = rhs.style_;
     align_ = rhs.align_;
     rotate_ = rhs.rotate_;
- return *this; //! to make chainable.
+ return *this; //! \return text_element& to make chainable.
   }
 
   std::string text()
- {
+ { //! \return text string of a text_element.
     std::stringstream os;
     generate_text(os);
     return os.str();
@@ -1161,18 +1172,18 @@
     */
   public: //temporary for experimental gil
 // private:
- std::string element_id; // SVG element id.
- rect_element rect; //! Clipping rectangle.
+ std::string element_id; //!< SVG element id.
+ rect_element rect; //!< Clipping rectangle.
 
   public:
 
     clip_path_element(const std::string& id, const rect_element& rect)
       : element_id(id), rect(rect)
- { // Constructor defines all member variables.
+ { //!< Constructor defines all member variables.
       }
 
       void write(std::ostream& os)
- {
+ { //!< Write clip path to ostream.
         os << "<clipPath id=\"" << element_id << "\">";
         rect.write(os);
         os << "</clipPath>" << std::endl;
@@ -1187,27 +1198,27 @@
      */
     bool relative; //!< If true relative else absolute.
 
- virtual void write(std::ostream& rhs) = 0;
+ virtual void write(std::ostream& rhs) = 0; //!< write functions output SVG commands like "M1.2, 3.4",
     virtual ~path_point()
- {
+ { //! Destructor.
     }
 
     path_point(bool relative) : relative(relative)
- { // Constructor defines all member variables.
+ { //!< Constructor defines all member variables.
     }
   }; // struct path_point
 
 
   struct m_path: public path_point
   { /*! \struct boost::svg::m_path
- \brief moveto coordinates (x, y)
- \details 8.3.2 The "moveto" commands.
+ \brief move to coordinates (x, y)
+ \details See 8.3.2 The "moveto" commands.
      */
- double x;
- double y;
+ double x; //!< End of move SVG X coordinate.
+ double y; //!< End of move SVG Y coordinate.
 
     void write(std::ostream& o_str)
- { //! Example: "M52.8571,180 "
+ { //! write moveto X and Y coordinates to stream, for example: "M52.8571,180 "
       if(relative)
       {
         o_str << "m";
@@ -1216,13 +1227,13 @@
       { // absolute
         o_str << "M";
       }
- o_str << x << "," << y << " "; // separator changed to comma for clarity.
+ o_str << x << "," << y << " "; // separator changed to comma for clarity when reading XML source.
 
     } // void write(std::ostream& o_str)
 
     m_path(double x, double y, bool relative = false)
       : x(x), y(y), path_point(relative)
- {
+ { //! Construct a move to
     }
   }; // struct m_path
 
@@ -1236,12 +1247,12 @@
        from the current point to current subpath's initial point.
     */
     void write(std::ostream& o_str)
- {
+ { //! Write close current path SVG command.
       o_str << "Z";
     }
 
     z_path() : path_point(false)
- { // Constructor defines all member variables.
+ { //! Constructor defines all member variables.
     }
   }; // struct z_path
 
@@ -1251,11 +1262,10 @@
       \brief Draw a line from the current point to the given (x,y) coordinate
        which becomes the new current point.
     */
- double x;
- double y;
-
+ double x; //!< End of line SVG X coordinate.
+ double y; //!< End of line SVG Y coordinate.
     void write(std::ostream& o_str)
- {
+ { //! Write line to SVG command.
       if(relative)
       {
         o_str << "l";
@@ -1269,7 +1279,7 @@
 
     l_path(double x, double y, bool relative = false)
       : x(x), y(y), path_point(relative)
- { // Constructor defines all member variables.
+ { //! Constructor defines all member variables.
     }
   }; // struct l_path
 
@@ -1278,9 +1288,9 @@
       \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.
     */
- double x;
+ double x; //!< x horizontal SVG coordinate.
     void write(std::ostream& o_str)
- {
+ { //! Write horizontal line SVG command.
       if(relative)
       {
         o_str << "h";
@@ -1293,8 +1303,8 @@
     }
 
     h_path(double x, bool relative = false)
- : x(x), path_point(relative)
- { // Constructor defines all member variables.
+ : x(x), path_point(relative)
+ { //!< Constructor defines all member variables.
     }
   }; // struct h_path
 
@@ -1303,9 +1313,9 @@
         \brief Draws a vertical line from the current point (cpx, cpy) to (cpx, y).
         No x coordinate needed - use current point x.
     */
- double y;
+ double y; //!< Y vertical line SVG coordinate.
     void write(std::ostream& o_str)
- {
+ { //! Write vertical line SVG command.
       if(relative)
       {
         o_str << "v";
@@ -1319,7 +1329,7 @@
 
     v_path(double y, bool relative = false)
       : y(y), path_point(relative)
- { // Constructor defines all member variables.
+ { //!< Constructor (defines all member variables).
     }
   }; // struct v_path
 
@@ -1337,7 +1347,7 @@
     double y; //!< Current (start point).
 
     void write(std::ostream& o_str)
- {
+ { //!< Write a cubic Bezier curve SVG XML to ostream.
       if(relative)
       {
         o_str << "c";
@@ -1346,15 +1356,14 @@
       { // Absolute.
         o_str<<"C";
       }
- o_str << x1 << "," << y1 << " "
- << x2 << "," << y2 << " "
+ o_str << x1 << "," << y1 << " " << x2 << "," << y2 << " "
         << x << "," << y << " ";
     } // void write(ostream&)
 
     c_path(double x1, double y1, double x2, double y2,
             double x, double y, bool relative = false)
       : x1(x1), y1(y1), x2(x2), y2(y2), x(x), y(y), path_point(relative)
- { // Constructor defines all member variables.
+ { //!< Constructor defines all member variables.
     }
   }; // struct c_path
 
@@ -1363,10 +1372,13 @@
       \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;
+ double x1; //!< quadratic Bezier curve control X coordinate.
+ double y1; //!< quadratic Bezier curve control Y coordinate.
+ double x; //!< quadratic Bezier curve end X coordinate.
+ double y; //!< quadratic Bezier curve end Y coordinate.
 
     void write(std::ostream& o_str)
- {
+ { //!< Write a quadratic Bezier curve SVG XML to ostream.
       if(relative)
       {
         o_str << "q";
@@ -1375,13 +1387,12 @@
       { // Absolute.
         o_str << "Q";
       }
- o_str << x1 << " " << y1 << " "
- << x << " " << y << " ";
+ o_str << x1 << " " << y1 << " " << x << " " << y << " ";
     }
 
     q_path(double x1, double y1, double x, double y, bool relative = false)
       : x1(x1), y1(y1), x(x), y(y), path_point(relative)
- { // Constructor.
+ { //! Constructor quadratic Bezier curve.
     }
   }; //struct q_path
 
@@ -1391,10 +1402,12 @@
       \details see also t_path for a quadratic Bezier curve.
 
     */
- double x1, y1, x, y;
-
+ double x1; //!< Cubic Bezier curve control X coordinate.
+ double y1; //!< Cubic Bezier curve control Y coordinate.
+ double x; //!< Cubic Bezier curve end X coordinate.
+ double y; //!< Cubic Bezier curve end Y coordinate.
     void write(std::ostream& o_str)
- {
+ { //! Write SVG Cubic Bezier curve command.
       if(relative)
       {
         o_str << "s";
@@ -1409,7 +1422,7 @@
 
     s_path(double x1, double y1, double x, double y, bool relative = false)
       : x1(x1), y1(y1), x(x), y(y), path_point(relative)
- { // Constructor.
+ { //! Constructor Cubic Bezier curve.
     }
   }; // struct s_path
 
@@ -1418,11 +1431,11 @@
       \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;
+ double x; //!< SVG X coordinate.
+ double y; //!< SVG Y coordinate.
 
     void write(std::ostream& o_str)
- {
+ { //! Write SVG command for a cubic Bezier curve.
       if(relative)
       {
         o_str << "t";
@@ -1436,14 +1449,14 @@
 
     t_path(double x, double y, bool relative = false)
       : x(x), y(y), path_point(relative)
- { // Constructor
+ { //! Constructor of path that draws a quadratic Bezier curve from the current point to (x,y)
     }
   }; // struct t_path
 
   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.
+ using two radii, axis rotation, and two control flags.
       \details See 8.3.8 The elliptical arc curve commands.!
         Useful for pie charts, etc.
      */
@@ -1490,13 +1503,12 @@
      */
   public: //temporary for experimental gil
 // private:
- ptr_vector<path_point> path; // All the (x, y) coordinate pairs,
- // filled by calls of m, M, l , L... that push_back.
- public:
+ ptr_vector<path_point> path; //!< All the (x, y) coordinate pairs,
+ //!< filled by calls of m, M, l , L... that push_back.
     // bool fill; now inherited from parent svg class.
 
     path_element(const path_element& rhs)
- {
+ { //! Copy constructor.
       path = (const_cast<path_element&>(rhs)).path.release();
     }
 
@@ -1506,22 +1518,22 @@
       const std::string& clip_name="")
       :
       svg_element(style_info, id_name, class_name, clip_name)
- {
+ { //! Construct empty path element.
     }
 
     path_element()
- {
+ { //! Construct an empty path element.
       // fill now got from the parent svg fill color.
     }
 
     path_element& fill_on(bool on_)
- { // Set area fill, on or off.
+ { //! Set area fill, on or off.
       style_info_.fill_on(on_);
       return *this; //! \return path_element& to make chainable.
     }
 
     bool fill_on()
- { // Get area fill, on or off.
+ { //! \return area fill, on or off.
       return style_info_.fill_on();
     }
     // Note 1: return of path_element& permits chaining calls like
@@ -1532,116 +1544,117 @@
     // but upper case (like M) calls m_path(x, y, false) for absolute.
 
     path_element& m(double x, double y)
- { // relative.
+ { //! Move relative by x and y.
       path.push_back(new m_path(x, y, true));
       return *this; //! \return path_element& to make chainable.
     }
 
     path_element& M(double x, double y)
- { // absolute.
+ { //! Move to absolute x and y.
       path.push_back(new m_path(x, y, false));
       return *this; //! \return path_element& to make chainable.
     }
 
     path_element& z()
- { // Note lower case z, see path_element& Z() below.
+ { //! Path end. Note lower case z, see path_element& Z() below.
       path.push_back(new z_path());
       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 end. Note 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 path_element& to make chainable.
     }
 
     path_element& l(double x, double y)
- {
+ { //! Line to (relative).
       path.push_back(new l_path(x, y, true));
       return *this; //! \return path_element& to make chainable.
     }
 
     path_element& L(double x, double y)
- {
+ { //! Line to (absolute).
       path.push_back(new l_path(x, y, false));
       return *this; //! \return path_element& to make chainable.
     }
 
     path_element& h(double x)
- {
+ { //! Line horizontal (relative).
       path.push_back(new h_path(x, true));
       return *this; //! \return path_element& to make chainable.
     }
 
     path_element& H(double x)
- {
+ { //! Line horizontal (absolute).
       path.push_back(new h_path(x, false));
       return *this; //! \return path_element& to make chainable.
     }
 
     path_element& v(double y)
- {
+ { //! Line vertical (relative).
       path.push_back(new v_path(y, true));
       return *this; //! \return path_element& to make chainable.
     }
 
     path_element& V(double y)
- {
+ {//! Line vertical (absolute).
       path.push_back(new v_path(y, false));
       return *this; //! \return path_element& to make chainable.
     }
 
     path_element& c(double x1, double y1, double x2, double y2, double x, double y)
- {
+ { //! Draws a cubic Bezier curve from the current point to (x,y) using (x1,y1).(relative).
       path.push_back(new c_path(x1, y1, x2, y2, x, y, true));
       return *this; //! \return path_element& to make chainable.
     }
 
     path_element& C(double x1, double y1, double x2, double y2, double x, double y)
- {
+ { //! Draws a cubic Bezier curve from the current point to (x,y) using (x1,y1).(absolute).
       path.push_back(new c_path(x1, y1, x2, y2, x, y, false));
       return *this; //! \return path_element& to make chainable.
     }
 
     path_element& q(double x1, double y1, double x, double y)
- {
+ { //! Quadratic Curve Bezier (relative).
       path.push_back(new q_path(x1, y1, x, y, true));
       return *this; //! \return path_element& to make chainable.
     }
 
     path_element& Q(double x1, double y1, double x, double y)
- {
+ { //! Quadratic Curve Bezier (absolute).
       path.push_back(new q_path(x1, y1, x, y, false));
       return *this; //! \return path_element& to make chainable.
     }
 
     path_element& s(double x1, double y1, double x, double y)
- {
+ { //! Draws a cubic Bezier curve from the current point to (x,y) (relative).
       path.push_back(new s_path(x1, y1, x, y, true));
       return *this; //! \return path_element& to make chainable.
     }
 
     path_element& S(double x1, double y1, double x, double y)
- { //
+ { //! Draws a cubic Bezier curve from the current point to (x,y) (absolute).
       path.push_back(new s_path(x1, y1, x, y, false));
       return *this; //! \return path_element& to make chainable.
     }
 
     path_element& t(double x, double y)
- {
+ { //! Draws a quadratic Bezier curve from the current point to (x,y)(relative).
       path.push_back(new t_path(x, y, true));
       return *this; //! \return path_element& to make chainable.
     }
 
     path_element& T(double x, double y)
- {
+ { //! Draws a quadratic Bezier curve from the current point to (x,y)(absolute).
       path.push_back(new t_path(x, y, false));
       return *this; //! \return path_element& to make chainable.
     }
 
     void write(std::ostream& o_str)
- {
+ { //! Write SVG path command.
+ //! Example: \verbatim <path d="M5,175 L5,195 M148.571,175" /> \endverbatim
       if (path.begin() != path.end() )
       { // Is some path info (trying to avoid useless <path d=""/>"
         // TODO or would this omit useful style & attributes?
@@ -1664,7 +1677,7 @@
         }
         o_str<<"/>"; // closing to match <path d=
       }
- // Example: <path d="M5,175 L5,195 M148.571,175" />
+
     } // void write(std::ostream& o_str)
   }; // class path_element
 
@@ -1673,8 +1686,8 @@
       \brief polyline or polygon point coordinates (x, y)
       \details 9.6 polyline & 9.7 The 'polygon' element.
       */
- double x;
- double y;
+ double x; //!< polygon or polyline path point X SVG coordinate.
+ double y; //!< polygon or polyline path point Y SVG coordinate.
     // Polygon & polyline points are always absolute, never relative,
     // and values have no preceeding letter like M or L,
     // So NOT derived from path_point.
@@ -1689,12 +1702,12 @@
 
     poly_path_point(double x, double y)
       : x(x), y(y)
- {
+ { //! Construct a polygon or polyline path point from X and Y SVG coordinate.
     }
 
     poly_path_point()
       : x(0.), y(0.)
- { // Default constructor.
+ { //! Default constructor.
     }
 
   }; // struct poly_path_point
@@ -1728,16 +1741,16 @@
     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.
+ bool fill; //!< polygon to have fill color.
 
     polygon_element(const polygon_element& rhs)
- { // Copy constructor.
+ { //! Copy constructor.
       poly_points = (const_cast<polygon_element&>(rhs)).poly_points.release();
       // 'empty' the vector of points.
     }
 
     polygon_element() : fill(true)
- {
+ { //! Default constructor empty polygon (with fill on).
     }
 
     polygon_element (double x, double y, bool f = true) : fill(f)
@@ -1917,7 +1930,7 @@
     //bool fill; // not needed for polyline, unlike polygon.
 
     polyline_element(const polyline_element& rhs)
- { // copy constructor.
+ { //! copy constructor.
       poly_points = (const_cast<polyline_element&>(rhs)).poly_points.release();
     }
 
@@ -1994,33 +2007,33 @@
   class g_element: public svg_element
   { /*! \class boost::svg::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.
 
- \verbatim
- '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, an image background rectangle with border and fill:
- <g id="background" fill="rgb(255,255,255)"><rect width="500" height="350"/></g>
- \endverbatim.
+ \verbatim <g id="background" fill="rgb(255,255,255)"><rect width="500" height="350"/></g>
+ \endverbatim
    */
   public: //temporary for experimental gil
 
 // private:
- ptr_vector<svg_element> children; /*! Children of this group element node,
+ ptr_vector<svg_element> children; /*!< Children of this group element node,
       containg graphics elements like text, circle line, polyline...
     */
- std::string clip_name;
- bool clip_on;
+ std::string clip_name; //!< Name of clip path.
+ bool clip_on; //!< true if to clip anything outside the clip path.
   public:
 
     g_element() : clip_on(false)
- {
+ { //! Construct g_element (with no clipping).
     }
 
     svg_element& operator[](unsigned int i)
- {
+ { //! \return child svg_element node.
       return children[i];
     }
 

Modified: sandbox/SOC/2007/visualization/boost/svg_plot/show_1d_settings.hpp
==============================================================================
--- sandbox/SOC/2007/visualization/boost/svg_plot/show_1d_settings.hpp (original)
+++ sandbox/SOC/2007/visualization/boost/svg_plot/show_1d_settings.hpp 2009-08-21 05:36:12 EDT (Fri, 21 Aug 2009)
@@ -1,8 +1,8 @@
 /*! \file show_1d_settings.hpp
   \author Jacob Voytko & Paul A. Bristow
 
- \brief Shows settings and options for 1-D Plot.
- \details Outputs a full list of all settings and options for 1-D Plot to std::cout.
+ \brief Shows settings and options for 1D Plot.
+ \details Outputs a full list of all settings and options for 1D Plot to std::cout.
   This is useful for diagnosing why your plot doesn't look as you hoped!
   \warning This creates about 100 lines of output, so should be used sparingly!
 

Modified: sandbox/SOC/2007/visualization/boost/svg_plot/show_2d_settings.hpp
==============================================================================
--- sandbox/SOC/2007/visualization/boost/svg_plot/show_2d_settings.hpp (original)
+++ sandbox/SOC/2007/visualization/boost/svg_plot/show_2d_settings.hpp 2009-08-21 05:36:12 EDT (Fri, 21 Aug 2009)
@@ -5,7 +5,7 @@
   \details Outputs a full list of all settings and options for 2D Plot to std::cout.
   This is useful for diagnosing why your plot doesn't look as you hoped!
   (See also show_1d_settings.cpp for 1D plot).
- \warning This creates about 100 lines of output, so should be used sparingly!
+ \warning This creates over 100 lines of output, so should be used sparingly!
 */
 
 // Copyright Jacob Voytko 2007

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-08-21 05:36:12 EDT (Fri, 21 Aug 2009)
@@ -23,12 +23,12 @@
   \htmlonly
     <a href="http://en.wikipedia.org/wiki/C%2B%2B#Standard_library"> Standard Template Library (STL) </a>
   \endhtmlonly
- does not currently offer a way to bridge the gap.
+ do not currently offer a way to bridge the gap.
 
   This library helps the user to easily plot data stored in STL containers.
 
- This project is focused on using STL containers in order to graph data on a
- one-dimensional (1D) and two-dimensional (2D) (and in future, perhaps, 3D) plot.
+ This project is focused on using STL containers in order to graph data on
+ one-dimensional (1D) and two-dimensional (2D) plots.
   The plot will currently be written to a
 
   \htmlonly
@@ -52,27 +52,74 @@
     \endhtmlonly
 
   - \htmlonly
+ Adobe Illustrator
+ \endhtmlonly
+
+ - \htmlonly
       <a href="www.opera.com"> Opera</a>
     \endhtmlonly
     has
     \htmlonly
       <a href="http://www.opera.com/docs/specs/svg/"> SVG support</a>
     \endhtmlonly
- but the quality of rendering is often not as good as other browsers.
+ but the quality of rendering is sometimes not as good as other browsers.
 
- - Microsoft Internet Explorer, provided a suitable
+ - Microsoft Internet Explorer, \b provided a suitable
     \htmlonly
- Adobe SVG Viewer plug-in for SVG files]
+ Adobe SVG Viewer plug-in for SVG files
     \endhtmlonly
     is installed.
 
   - \htmlonly
       <a href="http://www.inkscape.org"> Inkscape</a>
     \endhtmlonly
- , a fine Open Source SVG viewer with excellent rendering, full scaling and other editing features,
+ , a fine Open Source SVG editor with excellent rendering, full scaling and other editing features,
     including conversion to wide variety of other graphics formats like Portable Network Graphics .png.
 
- - and by many other graphics programs.
+ The Inkscape download also includes Inkview, a convenient <b>SVG viewer and slide show </b>.
+
+ Inkview also allows window resizing, showing the scalability of SVG files without any loss of quality,
+ unlike bit image files that eventually reveal pixels as you zoom in.
+
+ You may find it especially convenient to use the viewer, Inkview, on Microsoft Windows,
+ and make this the default program for files of type .svg.
+ To do this, you will need to download install the Inkscape package from http://www.inkscape.org.
+ Inkview.exe is included in the directory you chose for the install,
+ usually \verbatim C:\Program Files\Inkscape\ \endverbatim
+ You will need to use the Explorer, Tools, Folder Options,
+ and add extension .svg if necessary, and then associate svg files with \c inkview.exe.
+
+ You may also find it convenient to add \verbatim "c:\Program Files\inkscape" \endverbatim to your Path using
+ Control Panel, System, Advanced system settings, Environment variables, Path, and edit
+ to append the folder (needs restart of comand window).
+ You can then use commands like "inkview my_picture.svg" from any command window.
+
+ Inkview allows one to open many svg files as a slideshow
+ and move forward and back with the cursor keys.
+
+ This works as expected using a command window,
+ for example after changing to the directory containing your SVG files,
+ and running "inkview *.svg" to display all the images in the directory as a slideshow.
+
+ Sadly, by default, if you select many files (but not more than 15!) in Windows Explorer,
+ multiple windows (instances of inkview.exe) are opened instead of a slideshow.
+ If you know how to change this 'by design' feature, please tell me.
+
+ You may instead find it useful to create a batch file, for example called view_my_plots.bat containing
+ \verbatim START "Inkview" /MIN inkview.exe C:\Users\Paul\Desktop\My_Plots\*.svg \endverbatim
+ that will display all the svg images in folder My_Plots in turn as the cursor keys are pressed.
+ Of course, you can also omit the folder specification, and just have `*.svg` when the location of the
+ batch file will determine which svg files are being viewed.
+
+ - Google www.google.com/chrome Chrome,
+
+
+ - And by Many other graphics programs, for example
+ \htmlonly
+ Most popular SVG software
+ \endhtmlonly
+
+
 
   The goals of the project are:
 
@@ -93,18 +140,26 @@
   SVG files are microscopic when compressed using a zip program
   to convert to types like .zip, or the specific compressed SVG file type (.svgz).
 
+ SVG files can be added to other documents like Adobe PDF, and display well, without bloat.
+
   \section plot_types_sec 1D, 2D and Boxplot
 
- Three types of plots can be produced:
+ Many types of plots can be produced:
 
- 1D plots are to show the spread of repeated observations of a single variable,
+ - 1D plots are to show the spread of repeated observations of a single variable,
   for example, the measured length of an object
   (where the object's length is assumed to stay exactly the same but the measurements have some uncertainty)
-
   or observations of a single attribute, for example,
   the heights of boys in a school
   (where the measurement is assumed exact but the heights really do vary).
 
+ - 2D plots allow X versus Y variables to be displayed. You can show values,
+ and optionally their uncertainty (the deprecated term is 'error bars').
+
+ - Boxplots can be produced, optionally with values and outliers.
+
+ - Bar charts can also be produced.
+
   This page generated from file svg.hpp.
 
 */
@@ -171,14 +226,14 @@
       "<!-- or copy at http://www.boost.org/LICENSE_1_0.txt) --> \n";
 
   /*
- \verbatim
      Copyright notice to be inserted into plot image produced by this program.
      Note: can have more than one copyright date, or a range.
      Produces a copyright notice as an SVG comment like this:
      "<!-- Copyright Paul A. Bristow, 2007 --> \n"
      and as a meta item:
- <meta name="copyright" content="Paul A. Bristow" />
- \endverbatim
+ \verbatim
+ <meta name="copyright" content="Paul A. Bristow" />
+ \endverbatim
    */
 
 //! Class to output Scalable Vector Graph XML graph elements: point, path, line, circle, rect, polygon and text.
@@ -356,6 +411,7 @@
   svg(const svg& rhs) : x_size_(rhs.x_size_), y_size_(rhs.y_size_)
   { //! Define image size copy constructor.
     // TODO Other member data items are NOT copied. OK?
+ // I think this means that in practicecan't copy an existing customised SVG?!
   }
 
   // Set & get functions for x_size_ and y_size_
@@ -498,9 +554,9 @@
     { // Output copyright & date as both comment and meta data.
       s_out << "<!-- SVG Plot Copyright " << holder_copyright_ << " " << date_copyright_ << " --> "<< std::endl;
       s_out << "<meta name=\"copyright\" content=\"" << holder_copyright_ << "\" />" << std::endl;
- // Example: <meta name="copyright" content="Paul A. Bristow" />
+ // Example: \verbatim <meta name="copyright" content="Paul A. Bristow" /> \endverbatim
       s_out << "<meta name=\"date\" content=\"" << date_copyright_ << "\" />" << std::endl;
- // Example: <meta name="Date" content="20071101">
+ // Example: \verbatim <meta name="Date" content="20071101"> \endverbatim
     }
     if (image_desc_ != "")
     {
@@ -580,9 +636,7 @@
     const std::string attribution = "requires",
     const std::string commercialuse = "permits",
     const std::string derivative = "permits")
- { //! Set several license requirements for the svg document.
-
- /*!
+ { /*! Set several license requirements for the svg document.
        If any are set, then a license is wanted, so svg#is_license is set true.
        This can be changed using function license_on().
      */
@@ -595,8 +649,8 @@
   } // void license
 
   void license_on(bool l)
- { //! Set (or not) license using all requirement (default permits).
- //! Implicitly set by setting a license requirement using license above.
+ { //! Set (or not) license using all requirements (default permits).
+ //! Implicitly set by setting a license requirement using #license function.
     is_license_ = l;
   }
 
@@ -644,62 +698,62 @@
   }
 
   void description(const std::string d)
- { //! \verbatim Write description to the document (for header as <desc> ... </desc>). \endverbatim
+ { //! Write description to the SVG document \verbatim (for header as <desc> ... </desc>). \endverbatim
     image_desc_ = d;
   }
 
   const std::string& description()
- { //! \return \verbatim description of the document (for header as <desc>).\endverbatim
+ { //! \return description of the SVG document \verbatim (for header as <desc>).\endverbatim
     return image_desc_;
   }
 
   void author(const std::string a)
- { //! \verbatim Set author for the document (default is copyright_holder).\endverbatim
+ { //! Set author for the SVG document \verbatim (default is copyright_holder).\endverbatim
     author_ = a;
   }
 
   const std::string& author()
- { //! \return \verbatim author of the document (for header as <author>).\endverbatim
+ { //! \return author of the SVG document \verbatim (for header as <author>).\endverbatim
     return author_;
   }
 
   void document_title(const std::string title)
- { //! \verbatim Set document title for the document (for header as <title> ... </title>). \endverbatim
+ { //! Set document title for the SVG document \verbatim (for header as <title> ... </title>). \endverbatim
     title_document_ = title;
   }
 
   const std::string document_title()
- { //! \return \verbatim document title for the document (for header as <title>). \endverbatim
+ { //! \return document title for the SVG document (\verbatim for header as <title>). \endverbatim
     return title_document_;
   }
 
   void copyright_holder(const std::string copyright_holder)
- { //! \verbatim Set document title for the document (for header as <copyright_holder>). \endverbatim
+ { //! Set document title for the SVG document (for header as \verbatim <copyright_holder>). \endverbatim
     holder_copyright_ = copyright_holder;
   }
 
   const std::string copyright_holder()
- { //! \verbatim \return document title for the document (for header as <copyright_holder>). \endverbatim
+ { //! \return document title for the SVG document (for header as\verbatim <copyright_holder> \endverbatim ).
     return holder_copyright_;
   }
 
   void copyright_date(const std::string copyright_date)
- { //! \verbatim Set document title for the document (for header as <copyright_date>). \endverbatim
+ { //! Set copyright date for the SVG document \verbatim (for header as <copyright_date>). \endverbatim
     date_copyright_ = copyright_date;
   }
 
   const std::string copyright_date()
- { //! \return \verbatim document title for the document (for header as <copyright_date>). \endverbatim
+ { //! \return copyright date for the SVG document \verbatim (for header as <copyright_date>). \endverbatim
     return date_copyright_;
   }
 
   void image_filename(const std::string filename)
- { //! \verbatim Set image filename for the document (for header as <filename>). \endverbatim
+ { //! Set image filename for the SVG document \verbatim (for header as <filename>). \endverbatim
     filename_ = filename;
   }
 
   const std::string image_filename()
- { //! \return \verbatim image filename for the document (for header as <filename>). \endverbatim
+ { //! \return image filename for the SVG document \verbatim (for header as <filename>). \endverbatim
     return filename_;
   }
 
@@ -715,7 +769,7 @@
 
   rect_element& rect(double x1, double y1, double x2, double y2)
   { //! push_back information about a rectangle to the document.
- //! 'lRect' element defines a rect segment with one point (x1, y1) and opposite vertex is (x2, y2).
+ //! 'Rect' element defines a rect segment with one point (x1, y1) and opposite vertex is (x2, y2).
     return document.rect(x1, y1, x2, y2);
   }
 
@@ -804,12 +858,12 @@
   g_element& add_g_element()
   { //! Add information about a group element to the document.
     //! Increments the size of the array of g_elements, returned by g_element.size().
- return document.add_g_element(); //! return reference to the added group element.
+ return document.add_g_element(); //! \return reference to the added group element.
   }
 
   g_element& g(int i)
   { //! from array of g_elements, indexed by group type, PLOT_BACKGROUND, PLOT_WINDOW_BACKGROUND, ... SVG_PLOT_DOC_CHILDREN,
- return document.g(i); //! return reference to the ith group element.
+ return document.g(i); //! \return reference to the ith 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-08-21 05:36:12 EDT (Fri, 21 Aug 2009)
@@ -339,7 +339,7 @@
   bool outside_legend_on_; //!< If true, place legend box outside the plot window.
   bool legend_lines_; //!< If true, include data colored line type in legend box.
   bool plot_window_on_; //!< Use a separate plot window (not whole image).
- bool x_ticks_on_; // TODO check these are really useful.
+ bool x_ticks_on_; //!< Ticks on X axis will be shown.
   bool x_values_on_; //!< values of data are shown by markers.
   int x_axis_position_; //!< \see #x_axis_intersect
   bool autoscale_check_limits_; //!< If true, then check autoscale values for infinity, NaN, max, min.
@@ -902,7 +902,7 @@
     );
     //! For example: my_1d_plot.plot(my_data.begin(), my_data.end(), "My container");
     //! my_1d_plot.plot(&my_data[1], &my_data[4], "my_data 1 to 4"); // Add part of data series.
- //! Care: last == end which is one past the last, so this only does 1, 2 & 3 - *not* 4!
+ //! Care: last == end which is one past the last, so this only does 1, 2 & 3 - \b not 4!
     return serieses_[serieses_.size() - 1]; // Reference to data series just added.
   } // plot
 

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-08-21 05:36:12 EDT (Fri, 21 Aug 2009)
@@ -57,8 +57,8 @@
   {
     // Forward declarations.
     const std::string strip_e0s(std::string s); // Strip unncessary zeros and e and sign.
- class svg_2d_plot; // Plot framework.
- class svg_2d_plot_series; // One series of data to plot.
+ class svg_2d_plot; //! Plot framework.
+ class svg_2d_plot_series; //! One series of data to plot.
 
     class svg_2d_plot_series
     { /*! \class boost::svg::svg_2d_plot_series
@@ -88,10 +88,10 @@
       //! Constructor for a data series to plot.
       template <class T> //! \tparam T an STL container: for example: multimap.
       svg_2d_plot_series(
- T begin, //! starting iterator into container of data series begin() to start at the beginning.
- T end, //! ending iterator into container of data series, end() to finish with the last item.
- std::string title = ""); // !Title of data series.
-
+ T begin, //!< starting iterator into container of data series begin() to start at the beginning.
+ T end, //!< ending iterator into container of data series, end() to finish with the last item.
+ std::string title = "" //!< Title of data series.
+ );
       // Function declarations only - definitions may be in .ipp file).
       // Set functions for the plot series.
       svg_2d_plot_series& fill_color(const svg_color& col_);
@@ -132,9 +132,11 @@
    // svg_2d_plot_series constructor.
 
   template <class T> // \tparam T an STL container: for example: multimap.
- svg_2d_plot_series::svg_2d_plot_series(T begin, //! \param begin of data series.
- T end, //! \param end of data series.
- std::string title) //! \param std::string title Title of data series.
+ svg_2d_plot_series::svg_2d_plot_series(
+ T begin, //!< \param begin of data series.
+ T end, //!< \param end of data series.
+ std::string title //!< Title of data series \param std::string title Title of data series.
+ )
     :
     title_(title), //!< Title of a series of data values.
     // plot_point_style(const svg_color& fill = blank, const svg_color& stroke = black,
@@ -361,7 +363,7 @@
 
       text_style a_style_; //!< Defaults for text_style (contains font size & type etc).
       text_style title_style_; //!< Style for plot title.
- text_style legend_style_; //! Style for legend title and text.
+ text_style legend_style_; //!< Style for legend title and text.
       text_style x_axis_label_style_; //!< Style for tick labels on X axis.
       text_style x_value_label_style_; //!< Style for data point value labels on X axis.
       text_style y_axis_label_style_; //!< Style for tick labels on Y axis.
@@ -418,14 +420,14 @@
 
       bool title_on_; //!< true if to display a title for the whole plot.
       bool legend_on_; //!< true if to provide a legend box.
- bool outside_legend_on_; //! true if legend box should be outside the plot window.
- bool legend_lines_; //! true if to add a colored line for each data series in legend box.
+ bool outside_legend_on_; //!< true if legend box should be outside the plot window.
+ bool legend_lines_; //!< true if to add a colored line for each data series in legend box.
       bool plot_window_on_; //!< true if to use a separate plot window (not the whole image).
       bool x_ticks_on_; //!< true if X axis to have ticks.
       bool y_ticks_on_; //!< true if Y axis to have ticks.
- bool x_values_on_; // If values of X data are shown (as 1.23).
- bool y_values_on_; // If values of Y data are shown (as 3.45).
- bool xy_values_on_; // If values of X & Y pairs are shown (as 1.23, 3.43).
+ bool x_values_on_; //!< true if values of X data are shown (as 1.23).
+ bool y_values_on_; //!< true if values of Y data are shown (as 3.45).
+ bool xy_values_on_; //!< true if values of X & Y pairs are shown (as 1.23, 3.43).
 
       int x_axis_position_; //!< Intersection with Y axis, or not.
       int y_axis_position_; //!< Intersection with X axis, or not.
@@ -449,7 +451,7 @@
 
       bool y_autoscale_; //!< true if to use any y_axis autoscale values.
       bool y_include_zero_; //!< true if autoscale to include zero.
- int y_min_ticks_; // If autoscaled, set a minimum number of Y ticks.
+ int y_min_ticks_; //!< If autoscaled, set a minimum number of Y ticks.
       double y_tight_; //!< Tolerance used by autoscale to avoid extra ticks.
       int y_steps_; //!< If autoscaled, set any prescaling to decimal 1, 2, 5, 10 etc.
 
@@ -817,8 +819,7 @@
 
         // Ensure both axis and ticks have the *same* range.
         // (To use the separation, made to give the potential for different ranges,
- // one would have to *not* do this,
- // but to make sure they are both assigned correctly).
+ // one would have to *not* do this, but to make sure they are both assigned correctly).
         x_ticks_.max_ = x_axis_.max_;
         x_ticks_.min_ = x_axis_.min_;
         y_ticks_.max_ = y_axis_.max_;
@@ -1811,7 +1812,6 @@
               { // show the value of the Y data point too.
                 draw_plot_point_value(x, y, g_ptr_vy, y_values_style_,serieses_[i].point_style_, uy);
               }
-
               if (xy_values_on_)
               { // Show the values of the X & Y data as a pair.
                 draw_plot_point_values(x, y, g_ptr_vx, g_ptr_vy, x_values_style_, y_values_style_, ux, uy);
@@ -2109,8 +2109,8 @@
 
     public: // Declarations of member functions (definitions in separate file).
 
- // All return *this to permit chaining, doucmented with
- //! \return reference to svg_2d_plot_series to make chainable.
+ // All return *this to permit chaining, documented 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.
@@ -2259,7 +2259,7 @@
       svg_2d_plot& y_values_ioflags(std::ios_base::fmtflags f);
       std::ios_base::fmtflags y_values_ioflags();
 
- // Versions of plot functions to add data series, all or part.
+ // Versions of plot functions to add data series from a container, all or part.
       template <class T>
       svg_2d_plot_series& plot(const T& container, const std::string& title = "");
       template <class T, class U>
@@ -2294,18 +2294,18 @@
       }
 
       svg_2d_plot& svg_2d_plot::y_label_on(bool cmd)
- { // If Y axis name or label.
+ { //!< If to label Y axis with name (and units).
         y_axis_.label_on_ = cmd;
         return *this; //! \return reference to svg_2d_plot to make chainable.
       }
 
       bool svg_2d_plot::y_label_on()
- { //! \return true if Y label is on.
+ { //! \return true if Y-axis is to labelled.
         return y_axis_.label_on_;
       }
 
       svg_2d_plot& svg_2d_plot::x_label_on(bool cmd)
- {//! Set to include an X axis text label.
+ { //! Set to include an X axis text label.
         //! \see x_label_units
         x_axis_.label_on_ = cmd;
         return *this; //! \return reference to svg_2d_plot to make chainable.
@@ -2821,21 +2821,21 @@
       }
 
       svg_2d_plot& svg_2d_plot::x_ticks_on_window_or_axis(int side)
- { //! Set if ticks on the plot window or on the X axis.
- //! \param side -1 ticks downward.
- //! \param side 0 no ticks.
- //! \param side +1 ticks upward.
+ { // Set if ticks on the plot window or on the X axis.
+ // \param side -1 ticks downward.
+ // \param side 0 no ticks.
+ // \param side +1 ticks upward.
         x_ticks_.ticks_on_window_or_on_axis_ = side;
         return *this; //! \return reference to svg_2d_plot to make chainable.
       }
 
       int svg_2d_plot::x_ticks_on_window_or_axis()
- { //! \return if ticks on the plot window or on the X axis.
+ { // \return if ticks on the plot window or on the X axis.
         return x_ticks_.ticks_on_window_or_on_axis_;
       }
 
       svg_2d_plot& svg_2d_plot::x_major_labels_side(int side)
- { /*! Side for major ticks label values:
+ { /* Side for major ticks label values:
          \param side -1 labels downward.
          \param side 0 no labels.
          \param side +1 labels upward.
@@ -2845,7 +2845,7 @@
       }
 
       int svg_2d_plot::x_major_labels_side()
- { //! \return Label values side for major ticks.
+ { // \return side for label values for major ticks.
         return x_ticks_.major_value_labels_side_;
       }
 
@@ -2877,7 +2877,7 @@
       }
 
       svg_2d_plot& svg_2d_plot::y_ticks_right_on(bool cmd)
- {//! Set true if ticks on the Y axis are to be on right of axis line.
+ { //! Set true if ticks on the Y axis are to be on right of axis line.
         y_ticks_.right_ticks_on_ = cmd;
         return *this; //! \return reference to svg_2d_plot to make chainable.
       }
@@ -2964,12 +2964,15 @@
       }
 
       svg_2d_plot& svg_2d_plot::y_label_font_family(const std::string& family)
- { //! Set Y axis label text font family (for example: "Lucida console sans").
- //! Available fonts depend on the program rendering the SVG XML, usually a browser.
- //! The default font (usually "verdana") is used if a render program does not provide the font specified.
- //! These are probably usable:
- //! "arial", "impact", "courier", "lucida console", "Lucida sans unicode", "verdana", "calibri", "century",
- //! "lucida calligraphy", "tahoma", "vivaldi", "informal roman", "lucida handwriting", "lucida bright", "helvetica"
+ { /*! Set Y axis label text font family (for example: "Lucida console sans").
+ Available fonts depend on the program rendering the SVG XML, usually a browser.
+ The default font (usually "verdana") is used if a render program does not provide the font specified.
+ These are probably usable:
+ \code
+ "arial", "impact", "courier", "lucida console", "Lucida sans unicode", "verdana", "calibri", "century",
+ "lucida calligraphy", "tahoma", "vivaldi", "informal roman", "lucida handwriting", "lucida bright", "helvetica"
+ \endcode
+ */
         y_axis_label_style_.font_family(family);
         y_label_info_.textstyle().font_family(family);
         return *this; //! \return reference to svg_2d_plot to make chainable.
@@ -3040,12 +3043,15 @@
       }
 
       svg_2d_plot& svg_2d_plot::y_ticks_values_font_family(const std::string& family)
- { //! Set font family for Y axis ticks values.
- //! Available fonts depend on the program rendering the SVG XML, usually a browser.
- //! The default font (usually "verdana") is used if a render program does not provide the font specified.
- //! These are probably usable:
- //! "arial", "impact", "courier", "lucida console", "Lucida sans unicode", "verdana", "calibri", "century",
- //! "lucida calligraphy", "tahoma", "vivaldi", "informal roman", "lucida handwriting", "lucida bright", "helvetica"
+ { /*! Set font family for Y axis ticks values.
+ Available fonts depend on the program rendering the SVG XML, usually a browser.
+ The default font (usually "verdana") is used if a render program does not provide the font specified.
+ These are probably usable:
+ \code
+"arial", "impact", "courier", "lucida console", "Lucida sans unicode", "verdana", "calibri", "century",
+"lucida calligraphy", "tahoma", "vivaldi", "informal roman", "lucida handwriting", "lucida bright", "helvetica"
+ \endcode
+ */
 
         y_ticks_.value_label_style_.font_family(family);
         return *this; //! \return reference to svg_2d_plot to make chainable.

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-08-21 05:36:12 EDT (Fri, 21 Aug 2009)
@@ -8,7 +8,7 @@
   Show 1st quartile, median and 3rd quartile as a box.
   http://en.wikipedia.org/wiki/Boxplot
 
- Some Implementations of the Boxplot
+ 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
 
@@ -17,7 +17,7 @@
   The American Statistician, Vol. 53, No. 4 (Nov., 1999), pp. 382-387
 
   \author Jacob Voytko & Paul A. Bristow
- \date Mar 2009
+ \date Aug 2009
  */
 
 // Copyright Jacob Voytko 2007
@@ -99,7 +99,7 @@
         Median, whiskers and outliers are computed for each series.
         \see http://en.wikipedia.org/wiki/Boxplot
      */
- public: // TODO private?
+ public: // private?
     std::vector<double> series_; //!< Data series for the boxplot.
     double whisker_min_; //!< Minimum of whisker.
     double whisker_max_; //!< Maximum of whisker.
@@ -136,7 +136,7 @@
     svg_boxplot_series( //! Constructor, providing default values for all data members.
       T begin, //!< Data container interator begin.
       T end, //!< Data container interator end.
- const std::string& title, // Data series title.
+ const std::string& title, //!< Data series title.
       double bw, //!< box width
       svg_style bs, //!< box style
       svg_style ms, //!< median marker style
@@ -596,8 +596,7 @@
     return quartile_definition_;
   }
 
-
- // Not implemented yet - so these are only available for ALL boxplots.
+ // Not implemented yet - so these are only available for ALL *series* boxplot.
   //svg_boxplot_series& svg_boxplot_series::outlier_values_on(bool cmd)
   //{
   // outlier_values_on_ = cmd;
@@ -633,113 +632,110 @@
   friend class detail::axis_plot_frame<svg_boxplot>;
   // axis_plot_frame.hpp contains functions common to 1 and 2-D, and boxplot.
 
- public: //temporary for experimental gil
-//private:
- svg image_; // Stored so as to avoid rewriting style information constantly.
- // image_.size(500, 500);
-
- double x_scale_; //! Used by function transform()
- double x_shift_; //! to go from Cartesian to SVG coordinates.
- double y_scale_; //! SVG coordinates origin is at top left,
- double y_shift_; //! and y coordinates increase DOWN the page!
+ public: //temporary for experimental gil was private:
+
+ svg image_; //!< svg image data, stored so as to avoid rewriting style information constantly.
+
+ double x_scale_; //!< Used by function transform()
+ double x_shift_; //!< to go from Cartesian to SVG coordinates.
+ double y_scale_; //!< SVG coordinates origin is at top left,
+ double y_shift_; //!< and y coordinates increase DOWN the page!
 
- double x_axis_position_; //! < Intersection of X axis, or not.
- double y_axis_position_; //! < Intersection of Y axis, or not.
+ double x_axis_position_; //!< Intersection of X axis, or not.
+ double y_axis_position_; //!< Intersection of Y axis, or not.
 
   // Plot window (calculate_plot_window() sets these values).
- double plot_left_;
- double plot_top_;
- double plot_right_;
- double plot_bottom_;
+ double plot_left_; //!< SVG coordinate of left of plot window.
+ double plot_top_; //!< SVG coordinate of top of plot window.
+ double plot_right_; //!< SVG coordinate of right of plot window.
+ double plot_bottom_; //!< SVG coordinate of bottom of plot window.
 
   // Order of these declarations (not definitions) seems to matter - styles 1st.
- text_style a_style_; // Defaults.
- text_style title_style_;
- text_style x_axis_label_style_;
- text_style x_value_label_style_;
- text_style y_axis_label_style_;
- text_style y_value_label_style_;
- text_style point_symbols_style_; // Used for data point marking.
- text_style value_style_; // Used for data point value label.
+ // text_style contains font size & type etc.
+ text_style a_style_; //!< Default text style (font etc).
+ text_style title_style_; //!< text style (font) used for plot title.
+ text_style x_axis_label_style_; //!< text style (font) used for Y axis label.
+ text_style x_value_label_style_; //!< text style (font) used for X data point value label.
+ text_style y_axis_label_style_; //!< text style (font) used for Y axis label.
+ text_style y_value_label_style_; //!< text style (font) used for Y data point value label.
+ text_style point_symbols_style_; //!< text style (font) used for symbol used for data point marking.
+ text_style value_style_; //!< style used for data point value label.
 
- axis_line_style x_axis_;
- axis_line_style y_axis_;
+ axis_line_style x_axis_; //!< style of X axis line.
+ axis_line_style y_axis_; //!< style of Y axis line.
 
  // text_style contains font size & type etc.
- value_style values_style_; // Data point value marking.
+ value_style values_style_; //!< Data point value marking style.
 
- text_element title_info_;
- text_element x_label_info_;
- text_element y_label_info_;
- text_element x_units_info_; // For example: "mm"
- text_element y_units_info_; // 2-D only.
+ text_element title_info_; //!< plot title info.
+ text_element x_label_info_; //!< X axis label info.
+ text_element y_label_info_; //!< Y axis label info (used for 2-D only).
+ text_element x_units_info_; //!< X axis unit label, For example: "mm"
+ text_element y_units_info_; //!< Y axis unit label (used for 2-D only).
 
   // Should use axis_style?
- // x_axis_(X, -10., +10., black, 1, 0, true, false, true),
- box_style image_border_; // rectangular border of all image width, color...
- box_style plot_window_border_; // rectangular border of plot window width, color...
-
- ticks_labels_style x_ticks_;
- ticks_labels_style y_ticks_; // Added to permit shared code!
-
- bool autoscale_check_limits_; // Whether to check autoscale values for infinity, NaN, max, min.
- bool x_autoscale_; // Whether to use any X-axis autoscale values.
- bool x_include_zero_; // If autoscaled, include zero.
- int x_min_ticks_; // If autoscaled, set a minimum number of X ticks.
- double x_tight_;
- int x_steps_; // If autoscaled, set any prescaling to decimal 1, 2, 5, 10 etc.
+ // x_axis_(X, -10., +10., black, 1, 0, true, false, true),
+ box_style image_border_; //!< rectangular border of all image width, color...
+ box_style plot_window_border_; //!< rectangular border of plot window width, color...
+
+ ticks_labels_style x_ticks_; //!< style of X axis ticks.
+ ticks_labels_style y_ticks_; //!< style of X axis ticks. (Added to permit shared code!)
+
+ bool autoscale_check_limits_; //!< If true then to check autoscale values for infinity, NaN, max, min.
+ bool x_autoscale_; //!< If thrue then to use any X-axis autoscale values.
+ bool x_include_zero_; //!< If true and autoscaled, include zero.
+ int x_min_ticks_; //!< If autoscaled, set a minimum number of X ticks.
+ double x_tight_; //!< How much a point is allowed beyond the X minimum or maximum before another tick is used.
+ int x_steps_; //!< If autoscaled, set any prescaling to decimal 1, 2, 5, 10 etc.
 
   // Values calculated by scale_axis, and is used only if x_autoscale == true.
- double x_auto_min_value_;
- double x_auto_max_value_;
- double x_auto_tick_interval_; // tick major interval.
- int x_auto_ticks_; // Number of ticks.
+ double x_auto_min_value_; //!< Value calculated by scale_axis, and is used only if x_autoscale == true.
+ double x_auto_max_value_; //!< Value calculated by scale_axis, and is used only if x_autoscale == true.
+ double x_auto_tick_interval_; //!< tick major interval calculated by scale_axis.
+ int x_auto_ticks_; //!< Number of ticks calculated by scale_axis.
 
- bool y_autoscale_; // Whether to use any y_axis autoscale values.
+ bool y_autoscale_; //!< If true then to use any y_axis autoscale values.
   double autoscale_plusminus_; //!< For uncertain values, allow for plusminus ellipses showing 67%, 95% and 99% confidence limits.\n
   //!< For example, if a max value is 1.2 +or- 0.02, then 1.4 will be used for autoscaling the maximum.\n
   //!< Similarly, if a min value is 1.2 +or- 0.02, then 1.0 will be used for autoscaling the minimum.
 
- bool y_include_zero_; // If autoscaled, include zero.
- int y_min_ticks_; // If autoscaled, set a minimum number of Y ticks.
- double y_tight_;
- int y_steps_; // If autoscaled, set any prescaling to decimal 1, 2, 5, 10 etc.
-
- // Values calculated by scale_axis, and is used only if y_autoscale == true.
- double y_auto_min_value_;
- double y_auto_max_value_;
- double y_auto_tick_interval_; // tick major interval.
- int y_auto_ticks_; // Number of ticks.
-
- double text_margin_; // Marginal space around text items like title,
- // text_margin_ * font_size to get distance in svg units.
- bool title_on_;
-
- std::string plot_window_clip_;
- bool plot_window_on_;
- bool median_values_on_; // If values of data are shown as well as a marker like square.
- bool outlier_values_on_; // If values of data are shown.
- bool extreme_outlier_values_on_; // If values of data are shown.
+ bool y_include_zero_; //!< If autoscaled, include zero.
+ int y_min_ticks_; //!< If autoscaled, set a minimum number of Y ticks.
+ double y_tight_; //!< How much a point is allowed beyond the Y minimum or maximum before another tick is used.
+ int y_steps_; //!< If autoscaled, set any prescaling to decimal 1, 2, 5, 10 etc.
+
+ double y_auto_min_value_; //!< Value calculated by scale_axis, and is used only if y_autoscale == true.
+ double y_auto_max_value_; //!< Value calculated by scale_axis, and is used only if y_autoscale == true.
+ double y_auto_tick_interval_; //!< tick major interval calculated by scale_axis.
+ int y_auto_ticks_; //!< Number of ticks calculated by scale_axis.
+
+ double text_margin_; //!< Marginal character space around text items like title,
+ //!< (Use text_margin_ * font_size to get distance in svg units).
+ bool title_on_; //!< If true then should the plot title (set true if a title requested).
+
+ std::string plot_window_clip_; //!< name of plot window clip (all lines and text is clipped outside).
+ bool plot_window_on_; //!< true if a central plot window (rather than the whole image rectangle) to be used.
+ bool median_values_on_; //!< true if median of data is shown as well as a line marker.
+ bool outlier_values_on_; //!< true if outlier values of data are shown.
+ bool extreme_outlier_values_on_; //!< true if values of extreme outlier data are shown.
 
- // For storing the data points for sorting.
- std::vector<svg_boxplot_series> series;
+ std::vector<svg_boxplot_series> series; //!< Storing the data points for sorting by value.
 
   // Defaults (see below) for the box'n'whiskers
   // can be changed by functions like boxplot.box_width(50)
   // for all following plot(data,"title") calls
   // But can also change each plot data series separately.
- double box_width_;
- svg_style box_style_;
-
- svg_style median_style_;
- text_style series_style_;
- svg_style axis_style_;
- double whisker_length_;
- svg_style min_whisker_style_;
- svg_style max_whisker_style_;
- int quartile_definition_;
- plot_point_style mild_outlier_;
- plot_point_style ext_outlier_;
+ double box_width_; //!< Width of box used to show limit of most data items.
+ svg_style box_style_; //!< style (color ...) of box used to show limit of most data items.
+ svg_style median_style_; //!< style (color ...) used to show median.
+ text_style series_style_; //!< font style for name of series.
+ svg_style axis_style_; //!< line style for axis.
+ double whisker_length_; //!< length of whisker showing outliers.
+ svg_style min_whisker_style_; //!< line style for minimum whisker.
+ svg_style max_whisker_style_; //!< line style for maximum whisker.
+ int quartile_definition_; //!< Quartile definition type.
+ plot_point_style mild_outlier_; //!< Style of points that are mild outliers.
+ plot_point_style ext_outlier_; //!< Style of points that are extreme outliers.
 
 public:
  // text_element(double x = 0., double y = 0., const std::string text = "", text_style ts = no_style, align_style align = left_align, rotate_style rotate = horizontal)
@@ -1904,29 +1900,29 @@
 
   // svg_boxplot Member Functions to control all box and whisker settings.
 
- svg_boxplot& whisker_length(double width);
- double whisker_length(); //!
+ svg_boxplot& whisker_length(double width); //! Set length of whiskers.
+ double whisker_length(); //! \return length of whiskers.
   svg_boxplot& box_width(double width); //! Width of the actual box (not the border).
   double box_width(); //! \return Width of the box (not the border).
- svg_boxplot& x_axis_position(int pos); // Position of the horizontal X-axis line (on the border).
- double x_axis_position(); // Position of the horizontal X-axis line (on the border).
- svg_boxplot& y_axis_position(int pos); // Position of the vertical Y-axis line (on the border).
- double y_axis_position(); // Position of the vertical Y-axis line (on the border).
+ svg_boxplot& x_axis_position(int pos); //! Position of the horizontal X-axis line (on the border).
+ double x_axis_position(); //! Position of the horizontal X-axis line (on the border).
+ svg_boxplot& y_axis_position(int pos); //! Position of the vertical Y-axis line (on the border).
+ double y_axis_position(); //! Position of the vertical Y-axis line (on the border).
   svg_boxplot& box_fill(const svg_color& color); // Color of box fill, not border.
- svg_color box_fill(); // Color of box fill, not border.
+ svg_color box_fill(); //! Color of box fill, not border.
   svg_boxplot& box_border(const svg_color& color); // Color of border (not fill) to box.
- svg_color box_border(); // Color of border (not fill) to box.
+ svg_color box_border(); //! Color of border (not fill) to box.
   svg_boxplot& median_color(const svg_color& color); // Color of median line in box.
- svg_color median_color(); // Color of median line in box.
- svg_boxplot& median_width(double l); // Width of median line in box.
- double median_width(); // Width of median line in box.
- svg_boxplot& axis_color(const svg_color& color);
- svg_color axis_color(); // Color of median line in box.
- svg_boxplot& axis_width(double l); // Width of vertical whisker axis line in box.
- double axis_width(); // Width of vertical whisker axis line in box.
+ svg_color median_color(); //! Color of median line in box.
+ svg_boxplot& median_width(double l); //! Width of median line in box.
+ double median_width(); //! Width of median line in box.
+ svg_boxplot& axis_color(const svg_color& color);//! Color of median line in box.
+ svg_color axis_color(); //! \return Color of median line in box.
+ svg_boxplot& axis_width(double l); // !Width of vertical whisker axis line in box.
+ double axis_width(); //! Width of vertical whisker axis line in box.
 
- plot_point_style& outlier_style(); //
- svg_boxplot& outlier_style(plot_point_style& os);
+ plot_point_style& outlier_style(); //! \return style of points used to mark outliers.
+ svg_boxplot& outlier_style(plot_point_style& os); //! Set style of points used to mark outliers.
 
   svg_boxplot& outlier_color(const svg_color& color); //! Set Color of outlier marker.
   svg_color outlier_color(); //! \return Color of outlier marker.
@@ -1964,7 +1960,7 @@
   // explicit svg_boxplot::y_autoscale causes C2442 here, but omitting svg_boxplot:: is OK????
 
   template <class T> // T an STL container: array, vector ...
- svg_boxplot& y_autoscale(const T& container); //// Autoscale using whole container.
+ svg_boxplot& y_autoscale(const T& container); // Autoscale using whole container.
 
   // Plot member function to add a Data Series Boxplot.
 
@@ -1979,7 +1975,7 @@
     svg_style as, //!< axis style.
     double wl, //!< whisker length.
     svg_style minws, //!< min whisker style.
- svg_style maxws, //<! max whisker style.
+ svg_style maxws, //!< max whisker style.
     plot_point_style os, //!< mild outlier style.
     plot_point_style extos, //!< extreme outlier style.
     int q_def, //!< Quartile definition H&F \#.
@@ -2000,9 +1996,9 @@
       return series[series.size() - 1]; // Number of data series added so far.
   } // svg_boxplot_series& plot(const T& container, const std::string& title )
 
- template <class T> //! \tparam T data series value type (must be convertible to double).
- svg_boxplot_series& plot(const T& container, //! Add a data series to boxplot.
- const std::string& title = "") //! Warning given if this default is used.
+ template <class T> //!< \tparam T data series value type (must be convertible to double).
+ svg_boxplot_series& plot(const T& container, //!< Add a container of data series to boxplot.
+ const std::string& title = "") //!< Warning given if this default is used.
   { //! plot version copying box'n'whiskers parameters from parent boxplot.
     if (title.size() == 0)
     {

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-08-21 05:36:12 EDT (Fri, 21 Aug 2009)
@@ -298,7 +298,7 @@
 
 class text_style
 { /*! \class boost::svg::text_style
- \brief font family, font size, weight, style, stretch & decoration.
+ \brief Font family, font size, weight, style, stretch & decoration.
   */
   friend std::ostream& operator<< (std::ostream&, const text_style&);
   friend bool operator== (const text_style&, const text_style&);
@@ -315,13 +315,13 @@
   std::string decoration_; //!< Font decoration, examples: "underline" | "overline" | "line-through".
 
 public:
- text_style(
- int size = 12, // Default font size.
- const std::string& font = "", // Examples: "Arial", "Times New Roman", "Verdana", "Lucida Sans Unicode"
- const std::string& style = "", // font-style: normal | bold | italic | oblique
- const std::string& weight = "", // Examples: "bold", "normal"
- const std::string& stretch = "", // font-stretch: normal | wider | narrower ...
- const std::string& decoration = ""); // Examples: "underline" | "overline" | "line-through"
+ text_style( //!
+ int size = 12, //!< Default font size (12 pixels).
+ const std::string& font = "", //!< Examples: "Arial", "Times New Roman", "Verdana", "Lucida Sans Unicode"
+ const std::string& style = "", //!< font-style: normal | bold | italic | oblique
+ const std::string& weight = "", //!< Examples: "bold", "normal"
+ const std::string& stretch = "", //!< font-stretch: normal | wider | narrower ...
+ const std::string& decoration = ""); //!< Examples: "underline" | "overline" | "line-through"
 
   text_style& font_size(unsigned int i);
   text_style& font_family(const std::string& s);
@@ -347,9 +347,10 @@
 }; // class text_style
 
 // class text_style function *Definitions*.
+//!< Default constructor only sets font size = 20, and leaves other font details as SVG defaults.
 
- text_style::text_style( //!< Default constructor only sets font size = 20, and leaves other font details as SVG defaults.
- int size,
+ text_style::text_style( //!< Constructor to allow all text style (font etc) to be set.
+ int size, //!< Font size.
     const std::string& font, //!< Default for browser is sans with Firefox & IE but serif with Opera.
     const std::string& style, //!< font-style: normal
     const std::string& weight, //!< font weight "normal"
@@ -409,7 +410,7 @@
 
   text_style& text_style::font_style(const std::string& s)
   { /*! Set font style.
- Examples: my_text_style.font_style("italic");\n
+ Example: my_text_style.font_style("italic");\n
        See also browser conformance tests:\n
        http://www.croczilla.com/~alex/conformance_suite/svg/text-fonts-02-t.svg
     */
@@ -418,7 +419,11 @@
   }
 
   const std::string& text_style::font_weight() const
- {
+ { /*! Set font weight.
+ Example: my_text_style.font_style("bold");\n
+ See also browser conformance tests:\n
+ http://www.croczilla.com/~alex/conformance_suite/svg/text-fonts-02-t.svg
+ */
     return weight_;
   }
 
@@ -539,13 +544,13 @@
      Uncertainty and degrees of freedom estimate.
      Prefix, separator and suffix allow X and Y values to be together on one line, for example\n
      [1.23+- 0.01 (3), 4.56 +-0.2 (10)]\n
- Used in draw_plot_point_values (note plural - not used in draw_plot_point_value)
+ Used in draw_plot_point_values (note plural - not used in singular draw_plot_point_value)
      where X value_style is used to provide the prefix and separator, and Y value_style to provide the suffix.
      Prefix, separator and suffix are ignored when X or Y are shown separately using draw_plot_point_value.
   */
+// private: // would require lots of set/get functions or lots of friend statements?
 public:
-// private: // would require lots of set/get functions or lots of friend statements.
- rotate_style value_label_rotation_; //< Direction point value labels written.
+ rotate_style value_label_rotation_; //!< Direction point value labels written.
   int value_precision_; //!< Decimal digits of precision of value.
   std::ios_base::fmtflags value_ioflags_; //!< Control of scientific, fixed, hex etc.
   bool strip_e0s_; //!< If true, then unnecessary zeros and + sign will be stripped to reduce length.
@@ -553,9 +558,8 @@
   // svg_style
   svg_color fill_color_; //!< Fill color for value.
   svg_color stroke_color_; //!< Stroke color for value.
- bool plusminus_on_; //!< If an uncertainty estimate is to be appended (as + or - value).
- /* \details See \n
- http://en.wikipedia.org/wiki/Plus-minus_sign
+ bool plusminus_on_; /*!< If an uncertainty estimate is to be appended (as + or - value).
+ \details See http://en.wikipedia.org/wiki/Plus-minus_sign
     */
   svg_color plusminus_color_; //!< Color for uncertainty, for example: 0.02 in "1.23 +-0.02".
   bool df_on_; //!< If a degrees of freedom estimate is to be appended.
@@ -567,9 +571,21 @@
   public:
     value_style(); //!< Default style for a data point value label.
     value_style( //!< Set style for a data point value label.
- rotate_style r, int p, std::ios_base::fmtflags f, bool s,
- text_style ts, const svg_color& scol /* = black */, svg_color fcol, bool pm /*= false*/, bool df /*= false*/,
- std::string pre /* = "" */, std::string sep /* = ", " */, std::string suf /* = "" */);
+ rotate_style r, //!< Label orientation, default horizontal.
+ int p, //!< Precision, reduced from default of 6 which is usually too long.
+ std::ios_base::fmtflags f, //!< Any std::ios::ioflags, for example, hex, fixed, scientific.
+ bool s, //!< If true, then unnecessary zeros will be stripped to reduce length.
+ text_style ts, //!< Value text style, all defaults, black etc.
+ const svg_color& scol, //!< stroke color == black.
+ const svg_color& fcol, //!< fill color== black.
+ bool pm, //!< If uncertainty estimate to be appended. == false,
+ const svg_color& plusminus_color, //!< Default color for uncertainty of value.
+ bool df, //!< If a degrees of freedom estimate to be appended. == false,
+ const svg_color& df_color, //!< Default color for degrees of freedom.
+ std::string pre, //!< Prefix, for example: "[",
+ std::string sep, //!< separator, for example: ",&#x00A0;",
+ //!< (If just put ", " the trailing space seems to be ignored, so add Unicode explicit space).
+ std::string suf ); //!< suffix, for example: "]"
 
 }; // class value_style
 
@@ -579,34 +595,40 @@
  value_style::value_style()
     :
     value_label_rotation_(horizontal), //!< Label orientation, default horizontal.
- value_precision_(4), //!< Reduced from default of 6 which is usually too long.
+ value_precision_(4), //!< Precision, reduced from default of 6 which is usually too long.
     value_ioflags_(std::ios::dec), //!< Any std::ios::ioflags, for example, hex, fixed, scientific.
     strip_e0s_(true), //!< If true, then unnecessary zeros will be stripped to reduce length.
     values_text_style_(no_style), //!< All defaults, black etc.
     stroke_color_(black), //!< == black.
     fill_color_(svg_color(0, 0, 0)), //!< no fill.
- // TODO should be
- // fill_color_(false), //!< no fill.
     plusminus_on_(false), //!< If uncertainty estimate to be appended.
- plusminus_color_(black), //! Default color for uncertainty of value.
+ plusminus_color_(black), //!< Default color for uncertainty of value.
     df_on_(false), //!< If a degrees of freedom estimate to be appended.
     df_color_(black) //!< Default color for degrees of freedom.
- { // Default constructor initialises all private data.
+ { //! Default constructor initialises all private data.
     }
 
- value_style::value_style(rotate_style r, int p, std::ios_base::fmtflags f, bool s,
- text_style ts, const svg_color& scol = black, svg_color fcol = black, bool pm = false, bool df = false,
+ value_style::value_style(rotate_style r, //!< Label orientation, default horizontal.
+ int p, //!< Reduced from default of 6 which is usually too long.
+ std::ios_base::fmtflags f, //!< Any std::ios::ioflags, for example, hex, fixed, scientific.
+ bool s, //!< If true, then unnecessary zeros will be stripped to reduce length.
+ text_style ts, //!< All defaults, black etc.
+ const svg_color& scol = black, //!< == black.
+ const svg_color& fcol = black, //!< no fill.
+ bool pm = false, //!< If uncertainty estimate to be appended.
+ const svg_color& plusminus_color = black, //!< Default color for uncertainty of value.
+ bool df = false, //!< If a degrees of freedom estimate to be appended.
+ const svg_color& df_color = black,//!< Default color for uncertainty of value.
       // Separators [,] provide, for example: [1.23+-0.01 (3), 4.56 +-0.2 (10)]
- // default color black.
- std::string pre = "", // "[",
- std::string sep = "", // ,\&#x00A0;", // If put ", " the trailing space seems to be ignored, so add Unicode explicit space.
- std::string suf = "") // "]")
+ std::string pre = "", //!< Prefix, for example: "[",
+ std::string sep = "", //!< separator, for example: ,\&\#x00A0;", // If put ", " the trailing space seems to be ignored, so add Unicode explicit space.
+ std::string suf = "") //!< suffix, for example: "]")
     :
     value_label_rotation_(r), value_precision_(p), value_ioflags_(f), strip_e0s_(s),
     values_text_style_(ts), stroke_color_(scol), fill_color_(fcol),
- plusminus_on_(pm),plusminus_color_(blue), df_on_(df), df_color_(blue),
+ plusminus_on_(pm), plusminus_color_(plusminus_color), df_on_(df), df_color_(df_color),
     prefix_(pre), separator_(sep), suffix_(suf)
- { // Constructor.
+ { //! Constructor setting parameters with some defaults.
     }
 
 // End class value_style Member Functions definitions.
@@ -680,8 +702,11 @@
   //text_style value_style_; // Size, font, color etc of the value.
 
   plot_point_style( //!< Constructor with all defaults.
- const svg_color& stroke = black, const svg_color& fill = blank,
- int size = 5, point_shape shape = round, const std::string& symbols = "X");
+ const svg_color& stroke = black, //!< Color of circumference of shape.
+ const svg_color& fill = blank, //!< Fill color of the centre of the shape.
+ int size = 5, //!< Diameter of circle, height of square, font_size ...
+ point_shape shape = round, //!< shape: round, square, point...
+ const std::string& symbols = "X"); //!< Unicode symbol(s) (letters, digits, squiggles etc).
 
   plot_point_style& size(int i);
   int size();
@@ -701,8 +726,11 @@
 // Constructor.
 
   plot_point_style::plot_point_style( //!< Constructor set defaults for data members. (see declaration).
- const svg_color& stroke, const svg_color& fill,
- int size, point_shape shape, const std::string& symbols)
+ const svg_color& stroke, //!< Color of circumference of shape.
+ const svg_color& fill, //!< Fill color of the centre of the shape.
+ int size, //!< Diameter of circle, height of square, font_size ...
+ point_shape shape, //!< shape: round, square, point...
+ const std::string& symbols) //!< Unicode symbol(s) (letters, digits, squiggles etc).
   :
     fill_color_(fill), stroke_color_(stroke), size_(size),
     shape_(shape), symbols_(symbols),
@@ -713,12 +741,12 @@
     symbols_style_.font_size(size);
   }
 
-// Member function Definitions.
+// Member Function Definitions.
 
  plot_point_style& plot_point_style::size(int i)
   { //! Set size of shape or symbol used to mark data value plot point(s).
- size_ = i; // Shapes.
- symbols_style_.font_size(i); // In case using a symbol.
+ size_ = i; //!< Diameter of circle, height of square, font_size ...
+ symbols_style_.font_size(i); // Font size, in case using a symbol as marker.
     return *this;
     //! \return plot_point_style& to make chainable.
   }
@@ -819,6 +847,7 @@
   bool line_on_; //!< If true, data points will be joined by straight line(s).
   bool bezier_on_; //!< If true, data points will be joined by bezier curved line(s).
 
+ //! Constructor to set plot line style, but providing defaults for all member data.
   plot_line_style(const svg_color& col = black, const svg_color& fill_col = blank, double width = 2, bool line_on = true, bool bezier_on = false);
 
   plot_line_style& width(double w);
@@ -836,7 +865,7 @@
 
 // class plot_line_style function Definitions.
 
-// Constructor.
+ //! Constructor to set plot line style, but providing defaults for all member data.
   plot_line_style::plot_line_style(const svg_color& col, const svg_color& fill_col, double width, bool line_on, bool bezier_on)
     :
     stroke_color_(col), area_fill_(fill_col), width_(width), line_on_(line_on), bezier_on_(bezier_on)
@@ -946,20 +975,30 @@
   bool label_units_on_; //!< Label axis units, example: "cm".
   bool axis_line_on_; //!< Draw an X horizontal or Y vertical axis line.
   double axis_; //!< Depending on value of dim, either X-axis (y = 0) transformed into SVG Y coordinates or Y-axis (x = 0) transformed into SVG X coordinates (-1 if not calculated yet).
+
   // Used in axis_plot_frame.hpp
- axis_line_style( //!< class axis_line_style default constructor, sets default values for all member data items.
- dim d = X,
- double min = -10.,
- double max = +10., // Defaults.
+ // class axis_line_style default constructor, sets default values for all member data items.
+ //! Constructor that provides defaults all axis style items.
+ axis_line_style(
+ dim d = X, //!< X or Y axis.
+ double min = -10., //!< Minimum of axis line.
+ double max = +10., //!< Maximum of axis line.
     // See also default in ticks_labels_style.
- const svg_color col = black,
- double width = 1,
- int axis_position = 0,
- bool label_on = true,
- bool label_units_on = false,
- bool axis_lines_on = true,
- double axis = -1); // -1 means not calculated yet.
-
+ const svg_color col = black, //!< Axis line color.
+ double width = 1, //!< Axis line width.
+ int axis_position = 0, /*!< How the axes intersect with values as below:\n
+ enum x_axis_intersect {bottom = -1, x_intersects_y = 0, top = +1};
+ enum y_axis_intersect {left = -1, y_intersects_x = 0, right = +1};
+ If axes look like an L, then is bottom left.
+ If a T then y intersects and X is at bottom.
+ */
+ bool label_on = true, //!< Label axis with text - example: "length".
+ bool label_units_on = false, //!< Label axis units, example: "cm".
+ bool axis_lines_on = true, //!< Draw an X horizontal or a Y vertical axis line.
+ double axis = -1 /*!< Depending on value of dim,
+ either X-axis (y = 0) transformed into SVG Y coordinates,
+ or Y-axis (x = 0) transformed into SVG X coordinates (-1 if not calculated yet). */
+ );
   // class axis_line_style member functions Declarations:
   // Set and get member functions.
   axis_line_style& color(const svg_color& color);
@@ -1133,12 +1172,14 @@
 
     text_style value_label_style_; //!< text style (font, size...) for value labels.
 
- ticks_labels_style( //! Constructor, providing defaults values for all member data.
- dim d = X,
- const text_style& style = no_style, // Default style.
- double max = 10., double min = -10.,
- double major_interval = 2.,
- unsigned int num_minor_ticks = 4)
+ //! Constructor setting several parameters, but providing default values for all member data.
+ ticks_labels_style(
+ dim d = X, //!< X or Y axis (-1 if not assigned yet).
+ const text_style& style = no_style, //!< Default text font style.
+ double max = 10., //!< Maximum x value (Cartesian units).
+ double min = -10., //!< Minimum x value (Cartesian units).
+ double major_interval = 2., //!< Interval between major ticks.
+ unsigned int num_minor_ticks = 4) //!< Number of minor ticks between major ticks.
       : // Constructor.
       dim_(d),
       value_label_style_(style),
@@ -1187,7 +1228,6 @@
     ticks_on_window_or_on_axis_(-1) // Value labels & ticks on the plot window,
     // rather than on X or Y-axis.
     // Default -1 means left or bottom of plot window.
-
   {
       if(max_ <= min_)
       { // max_ <= min_.
@@ -1314,14 +1354,15 @@
     bool border_on_; //!< Display the border of the box.
     bool fill_on_; //!< Color fill the box.
 
- box_style( //! Constructor provides defaults for all member variables.
+ //! Constructor to set parameters but provides defaults for all variables.
+ box_style(
       const svg_color& scolor = black, //!< stroke color
       const svg_color& fcolor = white, //!< fill color (white = no fill).
       double width = 1, //!< of border.
       double margin = 4., //!< Margin around box (SVG units, default pixels).
       bool border_on = true, //!< Draw a border of specified width.
- bool fill_on = false); //!< Apply fill color.
-
+ bool fill_on = false //!< Apply fill color.
+ );
   box_style& stroke(const svg_color& color);
   svg_color stroke();
   box_style& fill(const svg_color& color);
@@ -1339,8 +1380,7 @@
 
 // class box_style Definitions.
 
-// Constructor.
-
+//! Constructor to set parameters but provides defaults for all variables.
 box_style::box_style(
   const svg_color& scolor, // = black,
   const svg_color& fcolor, // = white, // No fill.
@@ -1421,7 +1461,7 @@
   box_style& box_style::fill_on(bool is)
   {//! Set true if the box should be filled.
     fill_on_ = is;
- return *this; // Make chainable.
+ return *this; //! \return box_style& to make chainable.
   }
 
 // End class box_style Definitions.
@@ -1456,7 +1496,8 @@
   histogram_style(histogram_option opt = no_histogram); //!< Set any histogram option.
 
   histogram_style& histogram(histogram_option opt); //!< Set any histogram option.
- double histogram(); //!
+
+ double histogram(); //!< \return Histogram option.
 }; // class histogram_style
 
 
@@ -1479,8 +1520,8 @@
 }
 
 double histogram_style::histogram()
-{ // \return Histogram option.
- return histogram_option_;
+{
+ return histogram_option_; //!< \return Histogram option.
 }
 // End class histogram_style Definitions.
 

Modified: sandbox/SOC/2007/visualization/boost/svg_plot/uncertain.hpp
==============================================================================
--- sandbox/SOC/2007/visualization/boost/svg_plot/uncertain.hpp (original)
+++ sandbox/SOC/2007/visualization/boost/svg_plot/uncertain.hpp 2009-08-21 05:36:12 EDT (Fri, 21 Aug 2009)
@@ -1,5 +1,5 @@
 /*! \file uncertain.hpp
- \brief Class for storing Uncertainties and handling simple Propagation of according to a pure Gaussian model.
+ \brief Class for storing Uncertainties and simple propagation according to a pure Gaussian model.
   \details
     This simplifed version assuming uncorrelated uncertainties (the common case)
     is based on code by Evan Manning (manning_at_[hidden])
@@ -55,7 +55,16 @@
 public:
   unc(); // Default constructor.
   unc(double v, float u, short unsigned df, short unsigned ty);
+ /*! \brief Output an value with (if defined) uncertainty and degrees of freedom (and type).
+ For example: "1.23 +/- 0.01 (13)".\n
+ \details Note that the uncertainty is input and stored as one standard deviation,
+ but output multiplied for a user configurable 'confidence factor' plusminus,
+ default two for about 95% confidence (but could also be one for 67% or 3 for 99% confidence).
+ */
   friend std::ostream& operator<< (std::ostream& os, const unc& u);
+ /*! Output a pair (X and Y) value with (if defined) uncertainty and degrees of freedom.
+ \details For example: "1.23 +/- 0.01 (13), 3.45 +/- 0.06 (78)".
+ */
   friend std::ostream& operator<< (std::ostream& os, const std::pair<unc, unc>& u);
   bool operator<(const unc& rhs)const;
   bool operator<(unc& rhs)const;
@@ -94,15 +103,15 @@
 unc::unc(double v, float u = -1.f, short unsigned df = (std::numeric_limits<unsigned short int>::max)(), short unsigned ty = 0U)
 :
   value_(v), uncertainty_(u), deg_free_(df), types_(ty)
-{ // Constructor.
- // Note the defaults so that unspecified variables have 'undefined' status.
+{ //! Constructor allowing an unc to be constructed from just value providing defaults for all other parameters.
+ //! Note the defaults so that unspecified variables have 'undefined' status.
 }
 
 unc::unc()
 :
   value_(0.), uncertainty_(-1.F), deg_free_((std::numeric_limits<unsigned short int>::max)()), types_(0U)
-{ // Default constructor.
- // Note the defaults so that value is zero, but others have 'undefined' status.
+{ //! Default constructor.
+ //! Note the defaults so that value is zero, but others have 'undefined' status.
 }
 
 bool unc::operator<(const unc& u) const
@@ -179,15 +188,17 @@
   if (u.uncertainty_ > 0.F)
   { // Uncertainty is defined, so output it.
     //! Note that the plus or minus can be output using several methods.
- os << '\361' //! 256 character 8-bit codepage plusminus symbol octal 361, or
- // os << char(241)
- //! decimal 241 or
- // os << char(0xF1)
- //! hexadecimal F1, or
- // os << "&#x00A0;&#x00B1;"
- //! Unicode space plusminus glyph, or\n
- //! os << " +or-" << u.uncertainty_;
- //! Plain ANSI 7 bit code chars.
+ os << '\361'
+ /*! \details 256 character 8-bit codepage plusminus symbol octal 361, or
+ os << char(241)
+ decimal 241 or
+ os << char(0xF1)
+ hexadecimal F1, or
+ os << "&#x00A0;&#x00B1;"
+ Unicode space plusminus glyph, or\n
+ os << " +or-" << u.uncertainty_;
+ Plain ANSI 7 bit code chars.
+ */
       << u.uncertainty_ * plusminus; // Typically two standard deviation.
   };
   if (u.deg_free_ != (std::numeric_limits<unsigned short int>::max)())
@@ -203,8 +214,9 @@
 } // ostream& operator<< (ostream& os, const unc& u)
 
 std::ostream& operator<< (std::ostream& os, const std::pair<unc, unc>& u)
-{ //! Output a pair (X and Y) value with (if defined) uncertainty and degrees of freedom.
- //! \details For example: "1.23 +/- 0.01 (13), 3.45 +/- 0.06 (78)".
+{ /*! Output a pair (X and Y) value with (if defined) uncertainty and degrees of freedom.
+ \details For example: "1.23 +/- 0.01 (13), 3.45 +/- 0.06 (78)".
+ */
   os << u.first << ", " << u.second;
   return os;
 } // std::ostream& operator<< (ostream& os, const pair<unc, unc>& u)
@@ -215,7 +227,7 @@
 template <class T>
 double value_of(T v);
 
-template <class T>
+template <class T> //!< \tparam value type convertible to double.
 double value_of(T v)
 { //! \return value as a double.
   return double(v);

Modified: sandbox/SOC/2007/visualization/libs/svg_plot/doc/Jamfile.v2
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/doc/Jamfile.v2 (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/doc/Jamfile.v2 2009-08-21 05:36:12 EDT (Fri, 21 Aug 2009)
@@ -59,7 +59,9 @@
     <doxygen:param>MULTILINE_CPP_IS_BRIEF=YES # Treat a multi-line C++ special comment block (i.e. a block of //! or /// comments) as a brief description.
     # May be best to always use \brief and \details to avoid ambiguity?
     <doxygen:param>INCLUDE_PATH=$(BOOST_ROOT)
- <doxygen:param>WARN_LOGFILE=../../../libs/svg_plot/doc/doxywarnings.log
+ <doxygen:param>WARN_LOGFILE=../../../libs/svg_plot/doc/doxywarnings.log # Specific log file - ideally this should be empty!
+ #<doxygen:param>EXCLUDE=../../../boost/svg_plot/stylesheet.hpp
+ <doxygen:param>EXCLUDE=../../../boost/svg_plot/svg_fwd.hpp # Try to avoid warnings - file(s) undocumented.
 ;
     #<doxygen:param>"PREDEFINED=\"BOOST_DEDUCED_TYPENAME=typename\" "
 # See Doxygen configuration for detailed explanation of these options

Modified: sandbox/SOC/2007/visualization/libs/svg_plot/doc/how_to_use.qbk
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/doc/how_to_use.qbk (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/doc/how_to_use.qbk 2009-08-21 05:36:12 EDT (Fri, 21 Aug 2009)
@@ -1,17 +1,13 @@
 [section:howtouse How To Use This Documentation]
 
-* Tutorial pages are intended for those who do not know how to use the program.
+* Tutorials are listed in the Table of Contents and include many examples that should help you get started quickly.
 
- * The pages that begin with the tag "Tutorial: Simple" are for absolute beginners.
+* Source code of the many Examples will often be your quickest option. They often deliberately use many features,
+often producing examples of outstandingly bad taste!
 
- * "Tutorial: Full" should give the intermediate user a good
- reference, as well as show how the program can be used
+* Reference section prepared using Doxygen will help fine-tuning the appearance of your graphs.
 
- * "Tutorial: Special" shows other features/options that the headers
- provide to the user.
-
-* The pages labelled "*Reference*" give Doxygen reference information.
-You can find all features with some descriptions, and some examples, in these sections.
+* Several indexes (especially the function index) will also help you find which of the several hundred options you need.
 
 * If you have a feature request, or if it appears that the implementation
 is in error, please check the __todo page first, as well

Modified: sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/index.html
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/index.html (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/index.html 2009-08-21 05:36:12 EDT (Fri, 21 Aug 2009)
@@ -33,7 +33,7 @@
 </div></div>
 <div><p class="copyright">Copyright © 2007 to 2009 Jake Voytko and Paul A. Bristow</p></div>
 <div><div class="legalnotice">
-<a name="id1015997"></a><p>
+<a name="id737679"></a><p>
         Distributed under the Boost Software License, Version 1.0. (See accompanying
         file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       </p>
@@ -118,13 +118,11 @@
 <dt><span class="section">Header <boost/svg_plot/quantile.hpp></span></dt>
 <dt><span class="section">Header <boost/svg_plot/show_1d_settings.hpp></span></dt>
 <dt><span class="section">Header <boost/svg_plot/show_2d_settings.hpp></span></dt>
-<dt><span class="section">Header <boost/svg_plot/stylesheet.hpp></span></dt>
 <dt><span class="section">Header <boost/svg_plot/svg.hpp></span></dt>
 <dt><span class="section">Header <boost/svg_plot/svg_1d_plot.hpp></span></dt>
 <dt><span class="section">Header <boost/svg_plot/svg_2d_plot.hpp></span></dt>
 <dt><span class="section">Header <boost/svg_plot/svg_boxplot.hpp></span></dt>
 <dt><span class="section">Header <boost/svg_plot/svg_color.hpp></span></dt>
-<dt><span class="section">Header <boost/svg_plot/svg_fwd.hpp></span></dt>
 <dt><span class="section">Header <boost/svg_plot/svg_style.hpp></span></dt>
 <dt><span class="section">Header <boost/svg_plot/uncertain.hpp></span></dt>
 </dl></dd>
@@ -142,26 +140,31 @@
 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../../../../../boost_trunk/doc/html/images/important.png"></td>
 <th align="left">Important</th>
 </tr>
-<tr><td align="left" valign="top"><p>
+<tr><td align="left" valign="top">
+<p>
       This is not (yet) an official Boost library. It was a <a href="http://code.google.com/soc/2007/boost/about.html" target="_top">Google
       Summer of Code project (2007)</a> whose mentor organization was Boost.
       It remains a library under construction, the code is quite functional, but
       interfaces, library structure, and names may still be changed without notice.
- </p></td></tr>
-</table></div>
-<div class="note"><table border="0" summary="Note">
-<tr>
-<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../../boost_trunk/doc/html/images/note.png"></td>
-<th align="left">Note</th>
-</tr>
-<tr><td align="left" valign="top"><p>
- Comments and suggestions (even bugs) to Paul.A.Bristow (at) hetp (dot) u-net
- (dot) com or Jake Voytko at jakevoytko (at) gmail (dot) com
- </p></td></tr>
+ The current version is available at
+ </p>
+<p>
+ <span class="bold"><strong>https://svn.boost.org/svn/boost/sandbox/SOC/2007/visualization/libs/svg_plot/doc/pdf/svg_plot.pdf
+ PDF documentation</strong></span>
+ </p>
+<p>
+ <span class="bold"><strong>https://svn.boost.org/svn/boost/sandbox/SOC/2007/visualization
+ Boost Sandbox source code</strong></span>
+ </p>
+<p>
+ [note Comments and suggestions (even bugs) to Paul.A.Bristow (at) hetp (dot)
+ u-net (dot) com or Jake Voytko at jakevoytko (at) gmail (dot) com
+ </p>
+</td></tr>
 </table></div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: August 04, 2009 at 11:32:47 GMT</small></p></td>
+<td align="left"><p><small>Last revised: August 21, 2009 at 09:15:43 GMT</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>

Modified: sandbox/SOC/2007/visualization/libs/svg_plot/doc/pdf/svg_plot.pdf
==============================================================================
Binary files. No diff available.

Modified: sandbox/SOC/2007/visualization/libs/svg_plot/doc/plothtml.log
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/doc/plothtml.log (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/doc/plothtml.log 2009-08-21 05:36:12 EDT (Fri, 21 Aug 2009)
@@ -1,3 +1,334 @@
 ...patience...
-...found 1131 targets...
+...found 755 targets...
 ...updating 10 targets...
+quickbook.quickbook-to-boostbook ..\bin.v2\doc\msvc-9.0\debug\threading-multi\svg_plot.xml
+Generating Output File: ..\bin.v2\doc\msvc-9.0\debug\threading-multi\svg_plot.xml
+doxygen-action ..\bin.v2\doc\msvc-9.0\debug\threading-multi\autodoc-xml.xml-dir
+Searching for include files...
+Searching for example files...
+Searching for images...
+Searching for dot files...
+Searching for files to exclude
+Searching for files to process...
+Reading and parsing tag files
+Preprocessing I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/quantile.hpp...
+Parsing file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/quantile.hpp...
+Preprocessing I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/show_1d_settings.hpp...
+Parsing file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/show_1d_settings.hpp...
+Preprocessing I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/show_2d_settings.hpp...
+Parsing file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/show_2d_settings.hpp...
+Preprocessing I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg.hpp...
+Parsing file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg.hpp...
+Preprocessing I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_1d_plot.hpp...
+Parsing file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_1d_plot.hpp...
+Preprocessing I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_2d_plot.hpp...
+Parsing file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_2d_plot.hpp...
+Preprocessing I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_boxplot.hpp...
+Parsing file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_boxplot.hpp...
+Preprocessing I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_color.hpp...
+Parsing file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_color.hpp...
+Preprocessing I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_style.hpp...
+Parsing file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_style.hpp...
+Preprocessing I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/uncertain.hpp...
+Parsing file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/uncertain.hpp...
+Preprocessing I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/auto_axes.hpp...
+Parsing file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/auto_axes.hpp...
+Preprocessing I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/axis_plot_frame.hpp...
+Parsing file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/axis_plot_frame.hpp...
+Preprocessing I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/FP_compare.hpp...
+Parsing file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/FP_compare.hpp...
+Preprocessing I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/functors.hpp...
+Parsing file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/functors.hpp...
+Preprocessing I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/numeric_limits_handling.hpp...
+Parsing file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/numeric_limits_handling.hpp...
+Preprocessing I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/pair.hpp...
+Parsing file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/pair.hpp...
+Preprocessing I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_boxplot_detail.hpp...
+Parsing file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_boxplot_detail.hpp...
+Preprocessing I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_style_detail.hpp...
+Parsing file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_style_detail.hpp...
+Preprocessing I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_tag.hpp...
+Parsing file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_tag.hpp...
+Building group list...
+Building directory list...
+Building namespace list...
+Building file list...
+Building class list...
+Associating documentation with classes...
+Computing nesting relations for classes...
+Building example list...
+Searching for enumerations...
+Searching for documented typedefs...
+Searching for members imported via using declarations...
+Searching for included using directives...
+Searching for documented variables...
+Building member list...
+Searching for friends...
+Searching for documented defines...
+Computing class inheritance relations...
+Computing class usage relations...
+Flushing cached template relations that have become invalid...
+Creating members for template instances...
+Computing class relations...
+Add enum values to enums...
+Searching for member function documentation...
+Building page list...
+Search for main page...
+Computing page relations...
+Determining the scope of groups...
+Sorting lists...
+Freeing entry tree
+Determining which enums are documented
+Computing member relations...
+Building full member lists recursively...
+Adding members to member groups.
+Computing member references...
+Inheriting documentation...
+Generating disk names...
+Adding source references...
+Adding xrefitems...
+Counting data structures...
+Resolving user defined references...
+Finding anchors and sections in the documentation...
+Combining using relations...
+Adding members to index pages...
+Generating style sheet...
+Generating index page...
+Generating page index...
+Generating example documentation...
+Generating file sources...
+Generating code for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/auto_axes.hpp...
+Generating code for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/axis_plot_frame.hpp...
+Generating code for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/FP_compare.hpp...
+Generating code for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/functors.hpp...
+Generating code for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/numeric_limits_handling.hpp...
+Generating code for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/pair.hpp...
+Generating code for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_boxplot_detail.hpp...
+Generating code for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_style_detail.hpp...
+Generating code for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_tag.hpp...
+Generating code for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/quantile.hpp...
+Generating code for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/show_1d_settings.hpp...
+Generating code for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/show_2d_settings.hpp...
+Generating code for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg.hpp...
+Generating code for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_1d_plot.hpp...
+Generating code for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_2d_plot.hpp...
+Generating code for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_boxplot.hpp...
+Generating code for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_color.hpp...
+Generating code for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_style.hpp...
+Generating code for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/uncertain.hpp...
+Generating file documentation...
+Generating docs for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/auto_axes.hpp...
+Generating docs for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/axis_plot_frame.hpp...
+Generating docs for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/FP_compare.hpp...
+Generating docs for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/functors.hpp...
+Generating docs for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/numeric_limits_handling.hpp...
+Generating docs for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/pair.hpp...
+Generating docs for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_boxplot_detail.hpp...
+Generating docs for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_style_detail.hpp...
+Generating docs for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_tag.hpp...
+Generating docs for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/quantile.hpp...
+Generating docs for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/show_1d_settings.hpp...
+Generating docs for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/show_2d_settings.hpp...
+Generating docs for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg.hpp...
+Generating docs for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_1d_plot.hpp...
+Generating docs for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_2d_plot.hpp...
+Generating docs for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_boxplot.hpp...
+Generating docs for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_color.hpp...
+Generating docs for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_style.hpp...
+Generating docs for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/uncertain.hpp...
+Generating page documentation...
+Generating group documentation...
+Generating group index...
+Generating class documentation...
+Generating annotated compound index...
+Generating alphabetical compound index...
+Generating hierarchical class index...
+Generating member index...
+Generating docs for compound close_to...
+Generating docs for compound smallest...
+Generating namespace index...
+Generating docs for namespace boost
+Generating docs for namespace boost::math
+Generating docs for namespace boost::math::detail
+Generating docs for namespace boost::svg
+Generating docs for compound boost::svg::a_path...
+Generating docs for compound boost::svg::axis_line_style...
+Generating docs for compound boost::svg::bar_style...
+Generating docs for compound boost::svg::box_style...
+Generating docs for compound boost::svg::c_path...
+Generating docs for compound boost::svg::circle_element...
+Generating docs for compound boost::svg::clip_path_element...
+Generating docs for compound boost::svg::ellipse_element...
+Generating docs for compound boost::svg::g_element...
+Generating docs for compound boost::svg::h_path...
+Generating docs for compound boost::svg::histogram_style...
+Generating docs for compound boost::svg::l_path...
+Generating docs for compound boost::svg::line_element...
+Generating docs for compound boost::svg::m_path...
+Generating docs for compound boost::svg::path_element...
+Generating docs for compound boost::svg::path_point...
+Generating docs for compound boost::svg::plot_line_style...
+Generating docs for compound boost::svg::plot_point_style...
+Generating docs for compound boost::svg::poly_path_point...
+Generating docs for compound boost::svg::polygon_element...
+Generating docs for compound boost::svg::polyline_element...
+Generating docs for compound boost::svg::q_path...
+Generating docs for compound boost::svg::qurve_element...
+Generating docs for compound boost::svg::rect_element...
+Generating docs for compound boost::svg::s_path...
+Generating docs for compound boost::svg::svg...
+Generating docs for compound boost::svg::svg_1d_plot...
+Generating docs for compound boost::svg::svg_1d_plot_series...
+Generating docs for compound boost::svg::svg_2d_plot...
+Generating docs for compound boost::svg::svg_2d_plot_series...
+Generating docs for compound boost::svg::svg_boxplot...
+Generating docs for compound boost::svg::svg_boxplot_series...
+Generating docs for compound boost::svg::svg_color...
+Generating docs for compound boost::svg::svg_element...
+Generating docs for compound boost::svg::svg_style...
+Generating docs for compound boost::svg::t_path...
+Generating docs for compound boost::svg::text_element...
+Generating docs for compound boost::svg::text_element_text...
+Generating docs for compound boost::svg::text_parent...
+Generating docs for compound boost::svg::text_style...
+Generating docs for compound boost::svg::ticks_labels_style...
+Generating docs for compound boost::svg::tspan_element...
+Generating docs for compound boost::svg::unc...
+Generating docs for compound boost::svg::v_path...
+Generating docs for compound boost::svg::value_style...
+Generating docs for compound boost::svg::z_path...
+Generating docs for namespace boost::svg::boxplot
+Generating docs for namespace boost::svg::detail
+Generating docs for compound boost::svg::detail::axis_plot_frame...
+Generating docs for compound boost::svg::detail::double_1d_convert...
+Generating docs for compound boost::svg::detail::pair_double_2d_convert...
+Generating docs for compound boost::svg::detail::pair_unc_2d_convert...
+Generating docs for compound boost::svg::detail::unc_1d_convert...
+Generating docs for namespace detail
+Generating docs for namespace svg
+Generating namespace member index...
+Generating graph info page...
+Generating file index...
+Generating example index...
+Generating file member index...
+Generating XML output...
+Generating XML output for class boost::svg::a_path
+Generating XML output for class boost::svg::axis_line_style
+Generating XML output for class boost::svg::detail::axis_plot_frame
+Generating XML output for class boost::svg::bar_style
+Generating XML output for class boost::svg::box_style
+Generating XML output for class boost::svg::c_path
+Generating XML output for class boost::svg::circle_element
+Generating XML output for class boost::svg::clip_path_element
+Generating XML output for class close_to
+Generating XML output for class boost::svg::detail::double_1d_convert
+Generating XML output for class boost::svg::ellipse_element
+Generating XML output for class boost::svg::g_element
+Generating XML output for class boost::svg::h_path
+Generating XML output for class boost::svg::histogram_style
+Generating XML output for class boost::svg::l_path
+Generating XML output for class boost::svg::line_element
+Generating XML output for class boost::svg::m_path
+Generating XML output for class boost::svg::detail::pair_double_2d_convert
+Generating XML output for class boost::svg::detail::pair_unc_2d_convert
+Generating XML output for class boost::svg::path_element
+Generating XML output for class boost::svg::path_point
+Generating XML output for class boost::svg::plot_line_style
+Generating XML output for class boost::svg::plot_point_style
+Generating XML output for class boost::svg::poly_path_point
+Generating XML output for class boost::svg::polygon_element
+Generating XML output for class boost::svg::polyline_element
+Generating XML output for class boost::svg::q_path
+Generating XML output for class boost::svg::qurve_element
+Generating XML output for class boost::svg::rect_element
+Generating XML output for class boost::svg::s_path
+Generating XML output for class smallest
+Generating XML output for class boost::svg::svg
+Generating XML output for class boost::svg::svg_1d_plot
+Generating XML output for class boost::svg::svg_1d_plot_series
+Generating XML output for class boost::svg::svg_2d_plot
+Generating XML output for class boost::svg::svg_2d_plot_series
+Generating XML output for class boost::svg::svg_boxplot
+Generating XML output for class boost::svg::svg_boxplot_series
+Generating XML output for class boost::svg::svg_color
+Generating XML output for class boost::svg::svg_element
+Generating XML output for class boost::svg::svg_style
+Generating XML output for class boost::svg::t_path
+Generating XML output for class boost::svg::text_element
+Generating XML output for class boost::svg::text_element_text
+Generating XML output for class boost::svg::text_parent
+Generating XML output for class boost::svg::text_style
+Generating XML output for class boost::svg::ticks_labels_style
+Generating XML output for class boost::svg::tspan_element
+Generating XML output for class boost::svg::unc
+Generating XML output for class boost::svg::detail::unc_1d_convert
+Generating XML output for class boost::svg::v_path
+Generating XML output for class boost::svg::value_style
+Generating XML output for class boost::svg::z_path
+Generating XML output for namespace boost
+Generating XML output for namespace boost::math
+Generating XML output for namespace boost::math::detail
+Generating XML output for namespace boost::svg
+Generating XML output for namespace boost::svg::boxplot
+Generating XML output for namespace boost::svg::detail
+Generating XML output for namespace detail
+Generating XML output for namespace svg
+Generating XML output for file auto_axes.hpp
+Generating XML output for file axis_plot_frame.hpp
+Generating XML output for file FP_compare.hpp
+Generating XML output for file functors.hpp
+Generating XML output for file numeric_limits_handling.hpp
+Generating XML output for file pair.hpp
+Generating XML output for file svg_boxplot_detail.hpp
+Generating XML output for file svg_style_detail.hpp
+Generating XML output for file svg_tag.hpp
+Generating XML output for file quantile.hpp
+Generating XML output for file show_1d_settings.hpp
+Generating XML output for file show_2d_settings.hpp
+Generating XML output for file svg.hpp
+Generating XML output for file svg_1d_plot.hpp
+Generating XML output for file svg_2d_plot.hpp
+Generating XML output for file svg_boxplot.hpp
+Generating XML output for file svg_color.hpp
+Generating XML output for file svg_style.hpp
+Generating XML output for file uncertain.hpp
+Generate XML output for dir I:/boost-sandbox/SOC/2007/visualization/boost/
+Generate XML output for dir I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/
+Generate XML output for dir I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/
+Generating XML output for the main page
+xslt-xsltproc ..\bin.v2\doc\msvc-9.0\debug\threading-multi\autodoc-xml.doxygen
+xslt-xsltproc ..\bin.v2\doc\msvc-9.0\debug\threading-multi\autodoc-xml.boostbook
+I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_tag.hpp:1736: Cannot handle memberdef element with kind=friend (name=operator<<)
+I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_tag.hpp:1735: Cannot handle memberdef element with kind=friend (name=operator<<)
+I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_tag.hpp:1923: Cannot handle memberdef element with kind=friend (name=operator<<)
+I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_tag.hpp:333: Cannot handle memberdef element with kind=friend (name=operator!=)
+I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_tag.hpp:332: Cannot handle memberdef element with kind=friend (name=operator==)
+I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_1d_plot.hpp:265: Cannot handle memberdef element with kind=friend (name=detail::axis_plot_frame< svg_1d_plot >)
+I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_1d_plot.hpp:263: Cannot handle memberdef element with kind=friend (name=show_1d_plot_settings)
+I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_2d_plot.hpp:345: Cannot handle memberdef element with kind=friend (name=detail::axis_plot_frame< svg_2d_plot >)
+I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_2d_plot.hpp:343: Cannot handle memberdef element with kind=friend (name=show_2d_plot_settings)
+I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_2d_plot.hpp:74: Cannot handle memberdef element with kind=friend (name=draw_straight_lines)
+I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_boxplot.hpp:632: Cannot handle memberdef element with kind=friend (name=detail::axis_plot_frame< svg_boxplot >)
+I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_color.hpp:88: Cannot handle memberdef element with kind=friend (name=constant_to_rgb)
+I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_color.hpp:87: Cannot handle memberdef element with kind=friend (name=constant_to_rgb)
+I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_color.hpp:89: Cannot handle memberdef element with kind=friend (name=is_blank)
+I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_color.hpp:86: Cannot handle memberdef element with kind=friend (name=operator!=)
+I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_color.hpp:84: Cannot handle memberdef element with kind=friend (name=operator<<)
+I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_color.hpp:85: Cannot handle memberdef element with kind=friend (name=operator==)
+I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_style.hpp:678: Cannot handle memberdef element with kind=friend (name=operator<<)
+I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_style.hpp:105: Cannot handle memberdef element with kind=friend (name=operator<<)
+I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_style.hpp:305: Cannot handle memberdef element with kind=friend (name=operator!=)
+I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_style.hpp:303: Cannot handle memberdef element with kind=friend (name=operator<<)
+I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_style.hpp:304: Cannot handle memberdef element with kind=friend (name=operator==)
+I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_style.hpp:1124: Cannot handle memberdef element with kind=friend (name=svg_2d_plot)
+I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/uncertain.hpp:68: Cannot handle memberdef element with kind=friend (name=operator<<)
+I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/uncertain.hpp:64: Cannot handle memberdef element with kind=friend (name=operator<<)
+common.copy autodoc.xml
+..\bin.v2\doc\msvc-9.0\debug\threading-multi\autodoc-xml.boostbook
+ 1 file(s) copied.
+xslt-xsltproc ..\bin.v2\doc\msvc-9.0\debug\auto-index-internal-on\auto-index-on\threading-multi\svg_plot.docbook
+auto-index.auto-index ..\bin.v2\doc\msvc-9.0\debug\auto-index-internal-on\auto-index-on\threading-multi\svg_plot.modified.docbook
+Indexing 521 terms...
+xslt-xsltproc-dir html\standalone_HTML.manifest
+Writing standalone_HTML.manifest
+...updated 10 targets...

Modified: sandbox/SOC/2007/visualization/libs/svg_plot/doc/plotpdf.log
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/doc/plotpdf.log (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/doc/plotpdf.log 2009-08-21 05:36:12 EDT (Fri, 21 Aug 2009)
@@ -125,6 +125,7 @@
 Generating file documentation...
 Generating docs for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/auto_axes.hpp...
 Generating docs for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/axis_plot_frame.hpp...
+Generating docs for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/FP_compare.hpp...
 Generating docs for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/functors.hpp...
 Generating docs for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/numeric_limits_handling.hpp...
 Generating docs for file I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/pair.hpp...
@@ -151,6 +152,8 @@
 Generating alphabetical compound index...
 Generating hierarchical class index...
 Generating member index...
+Generating docs for compound close_to...
+Generating docs for compound smallest...
 Generating namespace index...
 Generating docs for namespace boost
 Generating docs for namespace boost::math
@@ -309,15 +312,15 @@
 Generating XML output for the main page
 xslt-xsltproc ..\bin.v2\doc\msvc-9.0\debug\threading-multi\autodoc-xml.doxygen
 xslt-xsltproc ..\bin.v2\doc\msvc-9.0\debug\threading-multi\autodoc-xml.boostbook
-I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_tag.hpp:1711: Cannot handle memberdef element with kind=friend (name=operator<<)
-I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_tag.hpp:1710: Cannot handle memberdef element with kind=friend (name=operator<<)
-I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_tag.hpp:1897: Cannot handle memberdef element with kind=friend (name=operator<<)
-I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_tag.hpp:327: Cannot handle memberdef element with kind=friend (name=operator!=)
-I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_tag.hpp:326: Cannot handle memberdef element with kind=friend (name=operator==)
+I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_tag.hpp:1732: Cannot handle memberdef element with kind=friend (name=operator<<)
+I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_tag.hpp:1731: Cannot handle memberdef element with kind=friend (name=operator<<)
+I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_tag.hpp:1919: Cannot handle memberdef element with kind=friend (name=operator<<)
+I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_tag.hpp:334: Cannot handle memberdef element with kind=friend (name=operator!=)
+I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/detail/svg_tag.hpp:333: Cannot handle memberdef element with kind=friend (name=operator==)
 I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_1d_plot.hpp:265: Cannot handle memberdef element with kind=friend (name=detail::axis_plot_frame< svg_1d_plot >)
 I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_1d_plot.hpp:263: Cannot handle memberdef element with kind=friend (name=show_1d_plot_settings)
-I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_2d_plot.hpp:343: Cannot handle memberdef element with kind=friend (name=detail::axis_plot_frame< svg_2d_plot >)
-I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_2d_plot.hpp:341: Cannot handle memberdef element with kind=friend (name=show_2d_plot_settings)
+I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_2d_plot.hpp:345: Cannot handle memberdef element with kind=friend (name=detail::axis_plot_frame< svg_2d_plot >)
+I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_2d_plot.hpp:343: Cannot handle memberdef element with kind=friend (name=show_2d_plot_settings)
 I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_2d_plot.hpp:74: Cannot handle memberdef element with kind=friend (name=draw_straight_lines)
 I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_boxplot.hpp:633: Cannot handle memberdef element with kind=friend (name=detail::axis_plot_frame< svg_boxplot >)
 I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_color.hpp:88: Cannot handle memberdef element with kind=friend (name=constant_to_rgb)
@@ -326,12 +329,12 @@
 I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_color.hpp:86: Cannot handle memberdef element with kind=friend (name=operator!=)
 I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_color.hpp:84: Cannot handle memberdef element with kind=friend (name=operator<<)
 I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_color.hpp:85: Cannot handle memberdef element with kind=friend (name=operator==)
-I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_style.hpp:654: Cannot handle memberdef element with kind=friend (name=operator<<)
+I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_style.hpp:678: Cannot handle memberdef element with kind=friend (name=operator<<)
 I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_style.hpp:105: Cannot handle memberdef element with kind=friend (name=operator<<)
 I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_style.hpp:305: Cannot handle memberdef element with kind=friend (name=operator!=)
 I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_style.hpp:303: Cannot handle memberdef element with kind=friend (name=operator<<)
 I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_style.hpp:304: Cannot handle memberdef element with kind=friend (name=operator==)
-I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_style.hpp:1083: Cannot handle memberdef element with kind=friend (name=svg_2d_plot)
+I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/svg_style.hpp:1123: Cannot handle memberdef element with kind=friend (name=svg_2d_plot)
 I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/uncertain.hpp:59: Cannot handle memberdef element with kind=friend (name=operator<<)
 I:/boost-sandbox/SOC/2007/visualization/boost/svg_plot/uncertain.hpp:58: Cannot handle memberdef element with kind=friend (name=operator<<)
 common.copy autodoc.xml
@@ -339,7 +342,7 @@
         1 file(s) copied.
 xslt-xsltproc ..\bin.v2\doc\msvc-9.0\debug\auto-index-on\threading-multi\svg_plot.docbook
 auto-index.auto-index ..\bin.v2\doc\msvc-9.0\debug\auto-index-on\threading-multi\svg_plot.modified.docbook
-Indexing 524 terms...
+Indexing 525 terms...
 xslt-xsltproc I:\boost-sandbox\SOC\2007\visualization\libs\svg_plot\doc\..\bin.v2\doc\msvc-9.0\debug\auto-index-on\threading-multi\svg_plot.modified.fo
 Making portrait pages on A4 paper (210mmx297mm)
 fop.render.pdf I:\boost-sandbox\SOC\2007\visualization\libs\svg_plot\doc\..\bin.v2\doc\msvc-9.0\debug\auto-index-on\threading-multi\svg_plot.modified.pdf
@@ -388,11 +391,11 @@
       (flow [flow-name xsl-region-body])))
   (format
     (sequence [master-reference body]
- (flow [1][2][3][4][5][6][7][8][9][10][11][12][13][14][15][16][17][18][19][20][21][22][23][24][25][26][27][28][29][30][31][32][33][34][35][36][37][38][39][40][41][42][43][44][45][46][47][48][49][50][51][52][53][54][55][56][57][58][59][60][61][62][63][64][65][66][67][68][69][70][71][72][73][74][75][76][77][78][79][80][81][82][83][84][85][86][87][88][89][90][91][92][93][94][95][96][97][98][99][100][101][102][103][104][105][106][107][108][109][110][111][112][113][114][115][116][117][118][119][120][121][122][123][124][125][126][127][128][129][130][131][132][133][134][135][136][137][138][139][140][141][142][143][144][145][146][147][148][149][150][151][152][153][154][155][156][157][158][159][160][161][162][163][164][165][166][167][168][169][170][171][172][173][174][175][176][177][178][179][180][181][182][183][184][185][186][187][188][189][190][191][192][193][194][195][196][197][198][199][200][201][202][203][204][205][206][207][208][209][210][211][212][213][214][215][216][217][218][219][220][221][222][223][22
4][225][226][227][228][229][230][231][232][233][234][235][236][237][238][239][240][241][242][243][244][245][246][247][248][249][250][251][252][253][254][255][256][257][258][259][260][261][262][263][264][265][266][267][268][269][270][271][272][273][274][275][276][277][278][279][280][281][282][283][284][285][286][287][288][289][290][291][292][293][294][295][296][297][298][299][300][301][302][303][304][305][306][307][308][309][310][311][312][313][314][315][316][317][318][319][320][321][322][323][324][325][326][327][328][329][330][331][332][333][334][335][336][337][338][339][340][341][342][343][344][345][346][347][348][349][350][351][352][353][354][355][356][357][358][359][360][361][362][363][364][365][366][367][368][369][370][371][372][373][374][375][376][377][378][379][380][381][382][383][384][385][386][387][388][389][390][391][392][393][394][395][396][397][398][399][400][401][402][403][404][405][406][407][408][409][410][411][412][413][414][415][416][417][418][419][420][421][422][423][424][425][426][427][428][
429][430][431][432][433][434][435][436][437][438][439][440][441][442][443][444][445][446][447][448][449][450][451][452][453][454][455][456][457][458][459][460][461][462][463][464][465][466][467][468][469][470][471][472][473][474][475][476][477][478][479][480][481][482][483][484][485][486][487][488][489][490][491][492][493][494][495][496][497][498][499][500][501][502][503][504][505][506][507][508][509][510][511][512][513][514][515][516][517][518][519][520][521][522][523][524][525][526][527][528][529][530][531][532][533][534][535][536][537][538][539][540][541][542][543][544][545][546][547][548][549][550][551][552])
- (static-content [1]|xsl-region-after-first||xsl-region-before-first|[2]|xsl-region-after-odd||xsl-region-before-odd|[3]|xsl-region-after-odd||xsl-region-before-odd|[4]|xsl-region-after-odd||xsl-region-before-odd|[5]|xsl-region-after-odd||xsl-region-before-odd|[6]|xsl-region-after-odd||xsl-region-before-odd|[7]|xsl-region-after-odd||xsl-region-before-odd|[8]|xsl-region-after-odd||xsl-region-before-odd|[9]|xsl-region-after-odd||xsl-region-before-odd|[10]|xsl-region-after-odd||xsl-region-before-odd|[11]|xsl-region-after-odd||xsl-region-before-odd|[12]|xsl-region-after-odd||xsl-region-before-odd|[13]|xsl-region-after-odd||xsl-region-before-odd|[14]|xsl-region-after-odd||xsl-region-before-odd|[15]|xsl-region-after-odd||xsl-region-before-odd|[16]|xsl-region-after-odd||xsl-region-before-odd|[17]|xsl-region-after-odd||xsl-region-before-odd|[18]|xsl-region-after-odd||xsl-region-before-odd|[19]|xsl-region-after-odd||xsl-region-before-odd|[20]|xsl-region-after-odd||xsl-region-before-odd|[21]|xsl-region-after-odd
||xsl-region-before-odd|[22]|xsl-region-after-odd||xsl-region-before-odd|[23]|xsl-region-after-odd||xsl-region-before-odd|[24]|xsl-region-after-odd||xsl-region-before-odd|[25]|xsl-region-after-odd||xsl-region-before-odd|[26]|xsl-region-after-odd||xsl-region-before-odd|[27]|xsl-region-after-odd||xsl-region-before-odd|[28]|xsl-region-after-odd||xsl-region-before-odd|[29]|xsl-region-after-odd||xsl-region-before-odd|[30]|xsl-region-after-odd||xsl-region-before-odd|[31]|xsl-region-after-odd||xsl-region-before-odd|[32]|xsl-region-after-odd||xsl-region-before-odd|[33]|xsl-region-after-odd||xsl-region-before-odd|[34]|xsl-region-after-odd||xsl-region-before-odd|[35]|xsl-region-after-odd||xsl-region-before-odd|[36]|xsl-region-after-odd||xsl-region-before-odd|[37]|xsl-region-after-odd||xsl-region-before-odd|[38]|xsl-region-after-odd||xsl-region-before-odd|[39]|xsl-region-after-odd||xsl-region-before-odd|[40]|xsl-region-after-odd||xsl-region-before-odd|[41]|xsl-region-after-odd||xsl-region-before-odd|[42]|xsl-region-aft
er-odd||xsl-region-before-odd|[43]|xsl-region-after-odd||xsl-region-before-odd|[44]|xsl-region-after-odd||xsl-region-before-odd|[45]|xsl-region-after-odd||xsl-region-before-odd|[46]|xsl-region-after-odd||xsl-region-before-odd|[47]|xsl-region-after-odd||xsl-region-before-odd|[48]|xsl-region-after-odd||xsl-region-before-odd|[49]|xsl-region-after-odd||xsl-region-before-odd|[50]|xsl-region-after-odd||xsl-region-before-odd|[51]|xsl-region-after-odd||xsl-region-before-odd|[52]|xsl-region-after-odd||xsl-region-before-odd|[53]|xsl-region-after-odd||xsl-region-before-odd|[54]|xsl-region-after-odd||xsl-region-before-odd|[55]|xsl-region-after-odd||xsl-region-before-odd|[56]|xsl-region-after-odd||xsl-region-before-odd|[57]|xsl-region-after-odd||xsl-region-before-odd|[58]|xsl-region-after-odd||xsl-region-before-odd|[59]|xsl-region-after-odd||xsl-region-before-odd|[60]|xsl-region-after-odd||xsl-region-before-odd|[61]|xsl-region-after-odd||xsl-region-before-odd|[62]|xsl-region-after-odd||xsl-region-before-odd|[63]|xsl-regi
on-after-odd||xsl-region-before-odd|[64]|xsl-region-after-odd||xsl-region-before-odd|[65]|xsl-region-after-odd||xsl-region-before-odd|[66]|xsl-region-after-odd||xsl-region-before-odd|[67]|xsl-region-after-odd||xsl-region-before-odd|[68]|xsl-region-after-odd||xsl-region-before-odd|[69]|xsl-region-after-odd||xsl-region-before-odd|[70]|xsl-region-after-odd||xsl-region-before-odd|[71]|xsl-region-after-odd||xsl-region-before-odd|[72]|xsl-region-after-odd||xsl-region-before-odd|[73]|xsl-region-after-odd||xsl-region-before-odd|[74]|xsl-region-after-odd||xsl-region-before-odd|[75]|xsl-region-after-odd||xsl-region-before-odd|[76]|xsl-region-after-odd||xsl-region-before-odd|[77]|xsl-region-after-odd||xsl-region-before-odd|[78]|xsl-region-after-odd||xsl-region-before-odd|[79]|xsl-region-after-odd||xsl-region-before-odd|[80]|xsl-region-after-odd||xsl-region-before-odd|[81]|xsl-region-after-odd||xsl-region-before-odd|[82]|xsl-region-after-odd||xsl-region-before-odd|[83]|xsl-region-after-odd||xsl-region-before-odd|[84]|xs
l-region-after-odd||xsl-region-before-odd|[85]|xsl-region-after-odd||xsl-region-before-odd|[86]|xsl-region-after-odd||xsl-region-before-odd|[87]|xsl-region-after-odd||xsl-region-before-odd|[88]|xsl-region-after-odd||xsl-region-before-odd|[89]|xsl-region-after-odd||xsl-region-before-odd|[90]|xsl-region-after-odd||xsl-region-before-odd|[91]|xsl-region-after-odd||xsl-region-before-odd|[92]|xsl-region-after-odd||xsl-region-before-odd|[93]|xsl-region-after-odd||xsl-region-before-odd|[94]|xsl-region-after-odd||xsl-region-before-odd|[95]|xsl-region-after-odd||xsl-region-before-odd|[96]|xsl-region-after-odd||xsl-region-before-odd|[97]|xsl-region-after-odd||xsl-region-before-odd|[98]|xsl-region-after-odd||xsl-region-before-odd|[99]|xsl-region-after-odd||xsl-region-before-odd|[100]|xsl-region-after-odd||xsl-region-before-odd|[101]|xsl-region-after-odd||xsl-region-before-odd|[102]|xsl-region-after-odd||xsl-region-before-odd|[103]|xsl-region-after-odd||xsl-region-before-odd|[104]|xsl-region-after-odd||xsl-region-before-
odd|[105]|xsl-region-after-odd||xsl-region-before-odd|[106]|xsl-region-after-odd||xsl-region-before-odd|[107]|xsl-region-after-odd||xsl-region-before-odd|[108]|xsl-region-after-odd||xsl-region-before-odd|[109]|xsl-region-after-odd||xsl-region-before-odd|[110]|xsl-region-after-odd||xsl-region-before-odd|[111]|xsl-region-after-odd||xsl-region-before-odd|[112]|xsl-region-after-odd||xsl-region-before-odd|[113]|xsl-region-after-odd||xsl-region-before-odd|[114]|xsl-region-after-odd||xsl-region-before-odd|[115]|xsl-region-after-odd||xsl-region-before-odd|[116]|xsl-region-after-odd||xsl-region-before-odd|[117]|xsl-region-after-odd||xsl-region-before-odd|[118]|xsl-region-after-odd||xsl-region-before-odd|[119]|xsl-region-after-odd||xsl-region-before-odd|[120]|xsl-region-after-odd||xsl-region-before-odd|[121]|xsl-region-after-odd||xsl-region-before-odd|[122]|xsl-region-after-odd||xsl-region-before-odd|[123]|xsl-region-after-odd||xsl-region-before-odd|[124]|xsl-region-after-odd||xsl-region-before-odd|[125]|xsl-region-af
ter-odd||xsl-region-before-odd|[126]|xsl-region-after-odd||xsl-region-before-odd|[127]|xsl-region-after-odd||xsl-region-before-odd|[128]|xsl-region-after-odd||xsl-region-before-odd|[129]|xsl-region-after-odd||xsl-region-before-odd|[130]|xsl-region-after-odd||xsl-region-before-odd|[131]|xsl-region-after-odd||xsl-region-before-odd|[132]|xsl-region-after-odd||xsl-region-before-odd|[133]|xsl-region-after-odd||xsl-region-before-odd|[134]|xsl-region-after-odd||xsl-region-before-odd|[135]|xsl-region-after-odd||xsl-region-before-odd|[136]|xsl-region-after-odd||xsl-region-before-odd|[137]|xsl-region-after-odd||xsl-region-before-odd|[138]|xsl-region-after-odd||xsl-region-before-odd|[139]|xsl-region-after-odd||xsl-region-before-odd|[140]|xsl-region-after-odd||xsl-region-before-odd|[141]|xsl-region-after-odd||xsl-region-before-odd|[142]|xsl-region-after-odd||xsl-region-before-odd|[143]|xsl-region-after-odd||xsl-region-before-odd|[144]|xsl-region-after-odd||xsl-region-before-odd|[145]|xsl-region-after-odd||xsl-region-bef
ore-odd|[146]|xsl-region-after-odd||xsl-region-before-odd|[147]|xsl-region-after-odd||xsl-region-before-odd|[148]|xsl-region-after-odd||xsl-region-before-odd|[149]|xsl-region-after-odd||xsl-region-before-odd|[150]|xsl-region-after-odd||xsl-region-before-odd|[151]|xsl-region-after-odd||xsl-region-before-odd|[152]|xsl-region-after-odd||xsl-region-before-odd|[153]|xsl-region-after-odd||xsl-region-before-odd|[154]|xsl-region-after-odd||xsl-region-before-odd|[155]|xsl-region-after-odd||xsl-region-before-odd|[156]|xsl-region-after-odd||xsl-region-before-odd|[157]|xsl-region-after-odd||xsl-region-before-odd|[158]|xsl-region-after-odd||xsl-region-before-odd|[159]|xsl-region-after-odd||xsl-region-before-odd|[160]|xsl-region-after-odd||xsl-region-before-odd|[161]|xsl-region-after-odd||xsl-region-before-odd|[162]|xsl-region-after-odd||xsl-region-before-odd|[163]|xsl-region-after-odd||xsl-region-before-odd|[164]|xsl-region-after-odd||xsl-region-before-odd|[165]|xsl-region-after-odd||xsl-region-before-odd|[166]|xsl-regio
n-after-odd||xsl-region-before-odd|[167]|xsl-region-after-odd||xsl-region-before-odd|[168]|xsl-region-after-odd||xsl-region-before-odd|[169]|xsl-region-after-odd||xsl-region-before-odd|[170]|xsl-region-after-odd||xsl-region-before-odd|[171]|xsl-region-after-odd||xsl-region-before-odd|[172]|xsl-region-after-odd||xsl-region-before-odd|[173]|xsl-region-after-odd||xsl-region-before-odd|[174]|xsl-region-after-odd||xsl-region-before-odd|[175]|xsl-region-after-odd||xsl-region-before-odd|[176]|xsl-region-after-odd||xsl-region-before-odd|[177]|xsl-region-after-odd||xsl-region-before-odd|[178]|xsl-region-after-odd||xsl-region-before-odd|[179]|xsl-region-after-odd||xsl-region-before-odd|[180]|xsl-region-after-odd||xsl-region-before-odd|[181]|xsl-region-after-odd||xsl-region-before-odd|[182]|xsl-region-after-odd||xsl-region-before-odd|[183]|xsl-region-after-odd||xsl-region-before-odd|[184]|xsl-region-after-odd||xsl-region-before-odd|[185]|xsl-region-after-odd||xsl-region-before-odd|[186]|xsl-region-after-odd||xsl-region
-before-odd|[187]|xsl-region-after-odd||xsl-region-before-odd|[188]|xsl-region-after-odd||xsl-region-before-odd|[189]|xsl-region-after-odd||xsl-region-before-odd|[190]|xsl-region-after-odd||xsl-region-before-odd|[191]|xsl-region-after-odd||xsl-region-before-odd|[192]|xsl-region-after-odd||xsl-region-before-odd|[193]|xsl-region-after-odd||xsl-region-before-odd|[194]|xsl-region-after-odd||xsl-region-before-odd|[195]|xsl-region-after-odd||xsl-region-before-odd|[196]|xsl-region-after-odd||xsl-region-before-odd|[197]|xsl-region-after-odd||xsl-region-before-odd|[198]|xsl-region-after-odd||xsl-region-before-odd|[199]|xsl-region-after-odd||xsl-region-before-odd|[200]|xsl-region-after-odd||xsl-region-before-odd|[201]|xsl-region-after-odd||xsl-region-before-odd|[202]|xsl-region-after-odd||xsl-region-before-odd|[203]|xsl-region-after-odd||xsl-region-before-odd|[204]|xsl-region-after-odd||xsl-region-before-odd|[205]|xsl-region-after-odd||xsl-region-before-odd|[206]|xsl-region-after-odd||xsl-region-before-odd|[207]|xsl-r
egion-after-odd||xsl-region-before-odd|[208]|xsl-region-after-odd||xsl-region-before-odd|[209]|xsl-region-after-odd||xsl-region-before-odd|[210]|xsl-region-after-odd||xsl-region-before-odd|[211]|xsl-region-after-odd||xsl-region-before-odd|[212]|xsl-region-after-odd||xsl-region-before-odd|[213]|xsl-region-after-odd||xsl-region-before-odd|[214]|xsl-region-after-odd||xsl-region-before-odd|[215]|xsl-region-after-odd||xsl-region-before-odd|[216]|xsl-region-after-odd||xsl-region-before-odd|[217]|xsl-region-after-odd||xsl-region-before-odd|[218]|xsl-region-after-odd||xsl-region-before-odd|[219]|xsl-region-after-odd||xsl-region-before-odd|[220]|xsl-region-after-odd||xsl-region-before-odd|[221]|xsl-region-after-odd||xsl-region-before-odd|[222]|xsl-region-after-odd||xsl-region-before-odd|[223]|xsl-region-after-odd||xsl-region-before-odd|[224]|xsl-region-after-odd||xsl-region-before-odd|[225]|xsl-region-after-odd||xsl-region-before-odd|[226]|xsl-region-after-odd||xsl-region-before-odd|[227]|xsl-region-after-odd||xsl-re
gion-before-odd|[228]|xsl-region-after-odd||xsl-region-before-odd|[229]|xsl-region-after-odd||xsl-region-before-odd|[230]|xsl-region-after-odd||xsl-region-before-odd|[231]|xsl-region-after-odd||xsl-region-before-odd|[232]|xsl-region-after-odd||xsl-region-before-odd|[233]|xsl-region-after-odd||xsl-region-before-odd|[234]|xsl-region-after-odd||xsl-region-before-odd|[235]|xsl-region-after-odd||xsl-region-before-odd|[236]|xsl-region-after-odd||xsl-region-before-odd|[237]|xsl-region-after-odd||xsl-region-before-odd|[238]|xsl-region-after-odd||xsl-region-before-odd|[239]|xsl-region-after-odd||xsl-region-before-odd|[240]|xsl-region-after-odd||xsl-region-before-odd|[241]|xsl-region-after-odd||xsl-region-before-odd|[242]|xsl-region-after-odd||xsl-region-before-odd|[243]|xsl-region-after-odd||xsl-region-before-odd|[244]|xsl-region-after-odd||xsl-region-before-odd|[245]|xsl-region-after-odd||xsl-region-before-odd|[246]|xsl-region-after-odd||xsl-region-before-odd|[247]|xsl-region-after-odd||xsl-region-before-odd|[248]|x
sl-region-after-odd||xsl-region-before-odd|[249]|xsl-region-after-odd||xsl-region-before-odd|[250]|xsl-region-after-odd||xsl-region-before-odd|[251]|xsl-region-after-odd||xsl-region-before-odd|[252]|xsl-region-after-odd||xsl-region-before-odd|[253]|xsl-region-after-odd||xsl-region-before-odd|[254]|xsl-region-after-odd||xsl-region-before-odd|[255]|xsl-region-after-odd||xsl-region-before-odd|[256]|xsl-region-after-odd||xsl-region-before-odd|[257]|xsl-region-after-odd||xsl-region-before-odd|[258]|xsl-region-after-odd||xsl-region-before-odd|[259]|xsl-region-after-odd||xsl-region-before-odd|[260]|xsl-region-after-odd||xsl-region-before-odd|[261]|xsl-region-after-odd||xsl-region-before-odd|[262]|xsl-region-after-odd||xsl-region-before-odd|[263]|xsl-region-after-odd||xsl-region-before-odd|[264]|xsl-region-after-odd||xsl-region-before-odd|[265]|xsl-region-after-odd||xsl-region-before-odd|[266]|xsl-region-after-odd||xsl-region-before-odd|[267]|xsl-region-after-odd||xsl-region-before-odd|[268]|xsl-region-after-odd||xs
l-region-before-odd|[269]|xsl-region-after-odd||xsl-region-before-odd|[270]|xsl-region-after-odd||xsl-region-before-odd|[271]|xsl-region-after-odd||xsl-region-before-odd|[272]|xsl-region-after-odd||xsl-region-before-odd|[273]|xsl-region-after-odd||xsl-region-before-odd|[274]|xsl-region-after-odd||xsl-region-before-odd|[275]|xsl-region-after-odd||xsl-region-before-odd|[276]|xsl-region-after-odd||xsl-region-before-odd|[277]|xsl-region-after-odd||xsl-region-before-odd|[278]|xsl-region-after-odd||xsl-region-before-odd|[279]|xsl-region-after-odd||xsl-region-before-odd|[280]|xsl-region-after-odd||xsl-region-before-odd|[281]|xsl-region-after-odd||xsl-region-before-odd|[282]|xsl-region-after-odd||xsl-region-before-odd|[283]|xsl-region-after-odd||xsl-region-before-odd|[284]|xsl-region-after-odd||xsl-region-before-odd|[285]|xsl-region-after-odd||xsl-region-before-odd|[286]|xsl-region-after-odd||xsl-region-before-odd|[287]|xsl-region-after-odd||xsl-region-before-odd|[288]|xsl-region-after-odd||xsl-region-before-odd|[28
9]|xsl-region-after-odd||xsl-region-before-odd|[290]|xsl-region-after-odd||xsl-region-before-odd|[291]|xsl-region-after-odd||xsl-region-before-odd|[292]|xsl-region-after-odd||xsl-region-before-odd|[293]|xsl-region-after-odd||xsl-region-before-odd|[294]|xsl-region-after-odd||xsl-region-before-odd|[295]|xsl-region-after-odd||xsl-region-before-odd|[296]|xsl-region-after-odd||xsl-region-before-odd|[297]|xsl-region-after-odd||xsl-region-before-odd|[298]|xsl-region-after-odd||xsl-region-before-odd|[299]|xsl-region-after-odd||xsl-region-before-odd|[300]|xsl-region-after-odd||xsl-region-before-odd|[301]|xsl-region-after-odd||xsl-region-before-odd|[302]|xsl-region-after-odd||xsl-region-before-odd|[303]|xsl-region-after-odd||xsl-region-before-odd|[304]|xsl-region-after-odd||xsl-region-before-odd|[305]|xsl-region-after-odd||xsl-region-before-odd|[306]|xsl-region-after-odd||xsl-region-before-odd|[307]|xsl-region-after-odd||xsl-region-before-odd|[308]|xsl-region-after-odd||xsl-region-before-odd|[309]|xsl-region-after-odd
||xsl-region-before-odd|[310]|xsl-region-after-odd||xsl-region-before-odd|[311]|xsl-region-after-odd||xsl-region-before-odd|[312]|xsl-region-after-odd||xsl-region-before-odd|[313]|xsl-region-after-odd||xsl-region-before-odd|[314]|xsl-region-after-odd||xsl-region-before-odd|[315]|xsl-region-after-odd||xsl-region-before-odd|[316]|xsl-region-after-odd||xsl-region-before-odd|[317]|xsl-region-after-odd||xsl-region-before-odd|[318]|xsl-region-after-odd||xsl-region-before-odd|[319]|xsl-region-after-odd||xsl-region-before-odd|[320]|xsl-region-after-odd||xsl-region-before-odd|[321]|xsl-region-after-odd||xsl-region-before-odd|[322]|xsl-region-after-odd||xsl-region-before-odd|[323]|xsl-region-after-odd||xsl-region-before-odd|[324]|xsl-region-after-odd||xsl-region-before-odd|[325]|xsl-region-after-odd||xsl-region-before-odd|[326]|xsl-region-after-odd||xsl-region-before-odd|[327]|xsl-region-after-odd||xsl-region-before-odd|[328]|xsl-region-after-odd||xsl-region-before-odd|[329]|xsl-region-after-odd||xsl-region-before-odd
|[330]|xsl-region-after-odd||xsl-region-before-odd|[331]|xsl-region-after-odd||xsl-region-before-odd|[332]|xsl-region-after-odd||xsl-region-before-odd|[333]|xsl-region-after-odd||xsl-region-before-odd|[334]|xsl-region-after-odd||xsl-region-before-odd|[335]|xsl-region-after-odd||xsl-region-before-odd|[336]|xsl-region-after-odd||xsl-region-before-odd|[337]|xsl-region-after-odd||xsl-region-before-odd|[338]|xsl-region-after-odd||xsl-region-before-odd|[339]|xsl-region-after-odd||xsl-region-before-odd|[340]|xsl-region-after-odd||xsl-region-before-odd|[341]|xsl-region-after-odd||xsl-region-before-odd|[342]|xsl-region-after-odd||xsl-region-before-odd|[343]|xsl-region-after-odd||xsl-region-before-odd|[344]|xsl-region-after-odd||xsl-region-before-odd|[345]|xsl-region-after-odd||xsl-region-before-odd|[346]|xsl-region-after-odd||xsl-region-before-odd|[347]|xsl-region-after-odd||xsl-region-before-odd|[348]|xsl-region-after-odd||xsl-region-before-odd|[349]|xsl-region-after-odd||xsl-region-before-odd|[350]|xsl-region-after
-odd||xsl-region-before-odd|[351]|xsl-region-after-odd||xsl-region-before-odd|[352]|xsl-region-after-odd||xsl-region-before-odd|[353]|xsl-region-after-odd||xsl-region-before-odd|[354]|xsl-region-after-odd||xsl-region-before-odd|[355]|xsl-region-after-odd||xsl-region-before-odd|[356]|xsl-region-after-odd||xsl-region-before-odd|[357]|xsl-region-after-odd||xsl-region-before-odd|[358]|xsl-region-after-odd||xsl-region-before-odd|[359]|xsl-region-after-odd||xsl-region-before-odd|[360]|xsl-region-after-odd||xsl-region-before-odd|[361]|xsl-region-after-odd||xsl-region-before-odd|[362]|xsl-region-after-odd||xsl-region-before-odd|[363]|xsl-region-after-odd||xsl-region-before-odd|[364]|xsl-region-after-odd||xsl-region-before-odd|[365]|xsl-region-after-odd||xsl-region-before-odd|[366]|xsl-region-after-odd||xsl-region-before-odd|[367]|xsl-region-after-odd||xsl-region-before-odd|[368]|xsl-region-after-odd||xsl-region-before-odd|[369]|xsl-region-after-odd||xsl-region-before-odd|[370]|xsl-region-after-odd||xsl-region-before
-odd|[371]|xsl-region-after-odd||xsl-region-before-odd|[372]|xsl-region-after-odd||xsl-region-before-odd|[373]|xsl-region-after-odd||xsl-region-before-odd|[374]|xsl-region-after-odd||xsl-region-before-odd|[375]|xsl-region-after-odd||xsl-region-before-odd|[376]|xsl-region-after-odd||xsl-region-before-odd|[377]|xsl-region-after-odd||xsl-region-before-odd|[378]|xsl-region-after-odd||xsl-region-before-odd|[379]|xsl-region-after-odd||xsl-region-before-odd|[380]|xsl-region-after-odd||xsl-region-before-odd|[381]|xsl-region-after-odd||xsl-region-before-odd|[382]|xsl-region-after-odd||xsl-region-before-odd|[383]|xsl-region-after-odd||xsl-region-before-odd|[384]|xsl-region-after-odd||xsl-region-before-odd|[385]|xsl-region-after-odd||xsl-region-before-odd|[386]|xsl-region-after-odd||xsl-region-before-odd|[387]|xsl-region-after-odd||xsl-region-before-odd|[388]|xsl-region-after-odd||xsl-region-before-odd|[389]|xsl-region-after-odd||xsl-region-before-odd|[390]|xsl-region-after-odd||xsl-region-before-odd|[391]|xsl-region-a
fter-odd||xsl-region-before-odd|[392]|xsl-region-after-odd||xsl-region-before-odd|[393]|xsl-region-after-odd||xsl-region-before-odd|[394]|xsl-region-after-odd||xsl-region-before-odd|[395]|xsl-region-after-odd||xsl-region-before-odd|[396]|xsl-region-after-odd||xsl-region-before-odd|[397]|xsl-region-after-odd||xsl-region-before-odd|[398]|xsl-region-after-odd||xsl-region-before-odd|[399]|xsl-region-after-odd||xsl-region-before-odd|[400]|xsl-region-after-odd||xsl-region-before-odd|[401]|xsl-region-after-odd||xsl-region-before-odd|[402]|xsl-region-after-odd||xsl-region-before-odd|[403]|xsl-region-after-odd||xsl-region-before-odd|[404]|xsl-region-after-odd||xsl-region-before-odd|[405]|xsl-region-after-odd||xsl-region-before-odd|[406]|xsl-region-after-odd||xsl-region-before-odd|[407]|xsl-region-after-odd||xsl-region-before-odd|[408]|xsl-region-after-odd||xsl-region-before-odd|[409]|xsl-region-after-odd||xsl-region-before-odd|[410]|xsl-region-after-odd||xsl-region-before-odd|[411]|xsl-region-after-odd||xsl-region-be
fore-odd|[412]|xsl-region-after-odd||xsl-region-before-odd|[413]|xsl-region-after-odd||xsl-region-before-odd|[414]|xsl-region-after-odd||xsl-region-before-odd|[415]|xsl-region-after-odd||xsl-region-before-odd|[416]|xsl-region-after-odd||xsl-region-before-odd|[417]|xsl-region-after-odd||xsl-region-before-odd|[418]|xsl-region-after-odd||xsl-region-before-odd|[419]|xsl-region-after-odd||xsl-region-before-odd|[420]|xsl-region-after-odd||xsl-region-before-odd|[421]|xsl-region-after-odd||xsl-region-before-odd|[422]|xsl-region-after-odd||xsl-region-before-odd|[423]|xsl-region-after-odd||xsl-region-before-odd|[424]|xsl-region-after-odd||xsl-region-before-odd|[425]|xsl-region-after-odd||xsl-region-before-odd|[426]|xsl-region-after-odd||xsl-region-before-odd|[427]|xsl-region-after-odd||xsl-region-before-odd|[428]|xsl-region-after-odd||xsl-region-before-odd|[429]|xsl-region-after-odd||xsl-region-before-odd|[430]|xsl-region-after-odd||xsl-region-before-odd|[431]|xsl-region-after-odd||xsl-region-before-odd|[432]|xsl-regi
on-after-odd||xsl-region-before-odd|[433]|xsl-region-after-odd||xsl-region-before-odd|[434]|xsl-region-after-odd||xsl-region-before-odd|[435]|xsl-region-after-odd||xsl-region-before-odd|[436]|xsl-region-after-odd||xsl-region-before-odd|[437]|xsl-region-after-odd||xsl-region-before-odd|[438]|xsl-region-after-odd||xsl-region-before-odd|[439]|xsl-region-after-odd||xsl-region-before-odd|[440]|xsl-region-after-odd||xsl-region-before-odd|[441]|xsl-region-after-odd||xsl-region-before-odd|[442]|xsl-region-after-odd||xsl-region-before-odd|[443]|xsl-region-after-odd||xsl-region-before-odd|[444]|xsl-region-after-odd||xsl-region-before-odd|[445]|xsl-region-after-odd||xsl-region-before-odd|[446]|xsl-region-after-odd||xsl-region-before-odd|[447]|xsl-region-after-odd||xsl-region-before-odd|[448]|xsl-region-after-odd||xsl-region-before-odd|[449]|xsl-region-after-odd||xsl-region-before-odd|[450]|xsl-region-after-odd||xsl-region-before-odd|[451]|xsl-region-after-odd||xsl-region-before-odd|[452]|xsl-region-after-odd||xsl-regio
n-before-odd|[453]|xsl-region-after-odd||xsl-region-before-odd|[454]|xsl-region-after-odd||xsl-region-before-odd|[455]|xsl-region-after-odd||xsl-region-before-odd|[456]|xsl-region-after-odd||xsl-region-before-odd|[457]|xsl-region-after-odd||xsl-region-before-odd|[458]|xsl-region-after-odd||xsl-region-before-odd|[459]|xsl-region-after-odd||xsl-region-before-odd|[460]|xsl-region-after-odd||xsl-region-before-odd|[461]|xsl-region-after-odd||xsl-region-before-odd|[462]|xsl-region-after-odd||xsl-region-before-odd|[463]|xsl-region-after-odd||xsl-region-before-odd|[464]|xsl-region-after-odd||xsl-region-before-odd|[465]|xsl-region-after-odd||xsl-region-before-odd|[466]|xsl-region-after-odd||xsl-region-before-odd|[467]|xsl-region-after-odd||xsl-region-before-odd|[468]|xsl-region-after-odd||xsl-region-before-odd|[469]|xsl-region-after-odd||xsl-region-before-odd|[470]|xsl-region-after-odd||xsl-region-before-odd|[471]|xsl-region-after-odd||xsl-region-before-odd|[472]|xsl-region-after-odd||xsl-region-before-odd|[473]|xsl-
region-after-odd||xsl-region-before-odd|[474]|xsl-region-after-odd||xsl-region-before-odd|[475]|xsl-region-after-odd||xsl-region-before-odd|[476]|xsl-region-after-odd||xsl-region-before-odd|[477]|xsl-region-after-odd||xsl-region-before-odd|[478]|xsl-region-after-odd||xsl-region-before-odd|[479]|xsl-region-after-odd||xsl-region-before-odd|[480]|xsl-region-after-odd||xsl-region-before-odd|[481]|xsl-region-after-odd||xsl-region-before-odd|[482]|xsl-region-after-odd||xsl-region-before-odd|[483]|xsl-region-after-odd||xsl-region-before-odd|[484]|xsl-region-after-odd||xsl-region-before-odd|[485]|xsl-region-after-odd||xsl-region-before-odd|[486]|xsl-region-after-odd||xsl-region-before-odd|[487]|xsl-region-after-odd||xsl-region-before-odd|[488]|xsl-region-after-odd||xsl-region-before-odd|[489]|xsl-region-after-odd||xsl-region-before-odd|[490]|xsl-region-after-odd||xsl-region-before-odd|[491]|xsl-region-after-odd||xsl-region-before-odd|[492]|xsl-region-after-odd||xsl-region-before-odd|[493]|xsl-region-after-odd||xsl-r
egion-before-odd|[494]|xsl-region-after-odd||xsl-region-before-odd|[495]|xsl-region-after-odd||xsl-region-before-odd|[496]|xsl-region-after-odd||xsl-region-before-odd|[497]|xsl-region-after-odd||xsl-region-before-odd|[498]|xsl-region-after-odd||xsl-region-before-odd|[499]|xsl-region-after-odd||xsl-region-before-odd|[500]|xsl-region-after-odd||xsl-region-before-odd|[501]|xsl-region-after-odd||xsl-region-before-odd|[502]|xsl-region-after-odd||xsl-region-before-odd|[503]|xsl-region-after-odd||xsl-region-before-odd|[504]|xsl-region-after-odd||xsl-region-before-odd|[505]|xsl-region-after-odd||xsl-region-before-odd|[506]|xsl-region-after-odd||xsl-region-before-odd|[507]|xsl-region-after-odd||xsl-region-before-odd|[508]|xsl-region-after-odd||xsl-region-before-odd|[509]|xsl-region-after-odd||xsl-region-before-odd|[510]|xsl-region-after-odd||xsl-region-before-odd|[511]|xsl-region-after-odd||xsl-region-before-odd|[512]|xsl-region-after-odd||xsl-region-before-odd|[513]|xsl-region-after-odd||xsl-region-before-odd|[514]|
xsl-region-after-odd||xsl-region-before-odd|[515]|xsl-region-after-odd||xsl-region-before-odd|[516]|xsl-region-after-odd||xsl-region-before-odd|[517]|xsl-region-after-odd||xsl-region-before-odd|[518]|xsl-region-after-odd||xsl-region-before-odd|[519]|xsl-region-after-odd||xsl-region-before-odd|[520]|xsl-region-after-odd||xsl-region-before-odd|[521]|xsl-region-after-odd||xsl-region-before-odd|[522]|xsl-region-after-odd||xsl-region-before-odd|[523]|xsl-region-after-odd||xsl-region-before-odd|[524]|xsl-region-after-odd||xsl-region-before-odd|[525]|xsl-region-after-odd||xsl-region-before-odd|[526]|xsl-region-after-odd||xsl-region-before-odd|[527]|xsl-region-after-odd||xsl-region-before-odd|[528]|xsl-region-after-odd||xsl-region-before-odd|[529]|xsl-region-after-odd||xsl-region-before-odd|[530]|xsl-region-after-odd||xsl-region-before-odd|[531]|xsl-region-after-odd||xsl-region-before-odd|[532]|xsl-region-after-odd||xsl-region-before-odd|[533]|xsl-region-after-odd||xsl-region-before-odd|[534]|xsl-region-after-odd||x
sl-region-before-odd|[535]|xsl-region-after-odd||xsl-region-before-odd|[536]|xsl-region-after-odd||xsl-region-before-odd|[537]|xsl-region-after-odd||xsl-region-before-odd|[538]|xsl-region-after-odd||xsl-region-before-odd|[539]|xsl-region-after-odd||xsl-region-before-odd|[540]|xsl-region-after-odd||xsl-region-before-odd|[541]|xsl-region-after-odd||xsl-region-before-odd|[542]|xsl-region-after-odd||xsl-region-before-odd|[543]|xsl-region-after-odd||xsl-region-before-odd|[544]|xsl-region-after-odd||xsl-region-before-odd|[545]|xsl-region-after-odd||xsl-region-before-odd|[546]|xsl-region-after-odd||xsl-region-before-odd|[547]|xsl-region-after-odd||xsl-region-before-odd|[548]|xsl-region-after-odd||xsl-region-before-odd|[549]|xsl-region-after-odd||xsl-region-before-odd|[550]|xsl-region-after-odd||xsl-region-before-odd|[551]|xsl-region-after-odd||xsl-region-before-odd|[552]|xsl-region-after-odd||xsl-region-before-odd|)))
+ (flow [1][2][3][4][5][6][7][8][9][10][11][12][13][14][15][16][17][18][19][20][21][22][23][24][25][26][27][28][29][30][31][32][33][34][35][36][37][38][39][40][41][42][43][44][45][46][47][48][49][50][51][52][53][54][55][56][57][58][59][60][61][62][63][64][65][66][67][68][69][70][71][72][73][74][75][76][77][78][79][80][81][82][83][84][85][86][87][88][89][90][91][92][93][94][95][96][97][98][99][100][101][102][103][104][105][106][107][108][109][110][111][112][113][114][115][116][117][118][119][120][121][122][123][124][125][126][127][128][129][130][131][132][133][134][135][136][137][138][139][140][141][142][143][144][145][146][147][148][149][150][151][152][153][154][155][156][157][158][159][160][161][162][163][164][165][166][167][168][169][170][171][172][173][174][175][176][177][178][179][180][181][182][183][184][185][186][187][188][189][190][191][192][193][194][195][196][197][198][199][200][201][202][203][204][205][206][207][208][209][210][211][212][213][214][215][216][217][218][219][220][221][222][223][22
4][225][226][227][228][229][230][231][232][233][234][235][236][237][238][239][240][241][242][243][244][245][246][247][248][249][250][251][252][253][254][255][256][257][258][259][260][261][262][263][264][265][266][267][268][269][270][271][272][273][274][275][276][277][278][279][280][281][282][283][284][285][286][287][288][289][290][291][292][293][294][295][296][297][298][299][300][301][302][303][304][305][306][307][308][309][310][311][312][313][314][315][316][317][318][319][320][321][322][323][324][325][326][327][328][329][330][331][332][333][334][335][336][337][338][339][340][341][342][343][344][345][346][347][348][349][350][351][352][353][354][355][356][357][358][359][360][361][362][363][364][365][366][367][368][369][370][371][372][373][374][375][376][377][378][379][380][381][382][383][384][385][386][387][388][389][390][391][392][393][394][395][396][397][398][399][400][401][402][403][404][405][406][407][408][409][410][411][412][413][414][415][416][417][418][419][420][421][422][423][424][425][426][427][428][
429][430][431][432][433][434][435][436][437][438][439][440][441][442][443][444][445][446][447][448][449][450][451][452][453][454][455][456][457][458][459][460][461][462][463][464][465][466][467][468][469][470][471][472][473][474][475][476][477][478][479][480][481][482][483][484][485][486][487][488][489][490][491][492][493][494][495][496][497][498][499][500][501][502][503][504][505][506][507][508][509][510][511][512][513][514][515][516][517][518][519][520][521][522][523][524][525][526][527][528][529][530][531][532][533][534][535][536][537][538][539][540][541][542][543][544][545][546][547][548][549][550][551][552][553][554][555][556][557][558][559][560][561][562][563][564][565][566][567][568][569][570][571][572][573][574][575][576][577])
+ (static-content [1]|xsl-region-after-first||xsl-region-before-first|[2]|xsl-region-after-odd||xsl-region-before-odd|[3]|xsl-region-after-odd||xsl-region-before-odd|[4]|xsl-region-after-odd||xsl-region-before-odd|[5]|xsl-region-after-odd||xsl-region-before-odd|[6]|xsl-region-after-odd||xsl-region-before-odd|[7]|xsl-region-after-odd||xsl-region-before-odd|[8]|xsl-region-after-odd||xsl-region-before-odd|[9]|xsl-region-after-odd||xsl-region-before-odd|[10]|xsl-region-after-odd||xsl-region-before-odd|[11]|xsl-region-after-odd||xsl-region-before-odd|[12]|xsl-region-after-odd||xsl-region-before-odd|[13]|xsl-region-after-odd||xsl-region-before-odd|[14]|xsl-region-after-odd||xsl-region-before-odd|[15]|xsl-region-after-odd||xsl-region-before-odd|[16]|xsl-region-after-odd||xsl-region-before-odd|[17]|xsl-region-after-odd||xsl-region-before-odd|[18]|xsl-region-after-odd||xsl-region-before-odd|[19]|xsl-region-after-odd||xsl-region-before-odd|[20]|xsl-region-after-odd||xsl-region-before-odd|[21]|xsl-region-after-odd
||xsl-region-before-odd|[22]|xsl-region-after-odd||xsl-region-before-odd|[23]|xsl-region-after-odd||xsl-region-before-odd|[24]|xsl-region-after-odd||xsl-region-before-odd|[25]|xsl-region-after-odd||xsl-region-before-odd|[26]|xsl-region-after-odd||xsl-region-before-odd|[27]|xsl-region-after-odd||xsl-region-before-odd|[28]|xsl-region-after-odd||xsl-region-before-odd|[29]|xsl-region-after-odd||xsl-region-before-odd|[30]|xsl-region-after-odd||xsl-region-before-odd|[31]|xsl-region-after-odd||xsl-region-before-odd|[32]|xsl-region-after-odd||xsl-region-before-odd|[33]|xsl-region-after-odd||xsl-region-before-odd|[34]|xsl-region-after-odd||xsl-region-before-odd|[35]|xsl-region-after-odd||xsl-region-before-odd|[36]|xsl-region-after-odd||xsl-region-before-odd|[37]|xsl-region-after-odd||xsl-region-before-odd|[38]|xsl-region-after-odd||xsl-region-before-odd|[39]|xsl-region-after-odd||xsl-region-before-odd|[40]|xsl-region-after-odd||xsl-region-before-odd|[41]|xsl-region-after-odd||xsl-region-before-odd|[42]|xsl-region-aft
er-odd||xsl-region-before-odd|[43]|xsl-region-after-odd||xsl-region-before-odd|[44]|xsl-region-after-odd||xsl-region-before-odd|[45]|xsl-region-after-odd||xsl-region-before-odd|[46]|xsl-region-after-odd||xsl-region-before-odd|[47]|xsl-region-after-odd||xsl-region-before-odd|[48]|xsl-region-after-odd||xsl-region-before-odd|[49]|xsl-region-after-odd||xsl-region-before-odd|[50]|xsl-region-after-odd||xsl-region-before-odd|[51]|xsl-region-after-odd||xsl-region-before-odd|[52]|xsl-region-after-odd||xsl-region-before-odd|[53]|xsl-region-after-odd||xsl-region-before-odd|[54]|xsl-region-after-odd||xsl-region-before-odd|[55]|xsl-region-after-odd||xsl-region-before-odd|[56]|xsl-region-after-odd||xsl-region-before-odd|[57]|xsl-region-after-odd||xsl-region-before-odd|[58]|xsl-region-after-odd||xsl-region-before-odd|[59]|xsl-region-after-odd||xsl-region-before-odd|[60]|xsl-region-after-odd||xsl-region-before-odd|[61]|xsl-region-after-odd||xsl-region-before-odd|[62]|xsl-region-after-odd||xsl-region-before-odd|[63]|xsl-regi
on-after-odd||xsl-region-before-odd|[64]|xsl-region-after-odd||xsl-region-before-odd|[65]|xsl-region-after-odd||xsl-region-before-odd|[66]|xsl-region-after-odd||xsl-region-before-odd|[67]|xsl-region-after-odd||xsl-region-before-odd|[68]|xsl-region-after-odd||xsl-region-before-odd|[69]|xsl-region-after-odd||xsl-region-before-odd|[70]|xsl-region-after-odd||xsl-region-before-odd|[71]|xsl-region-after-odd||xsl-region-before-odd|[72]|xsl-region-after-odd||xsl-region-before-odd|[73]|xsl-region-after-odd||xsl-region-before-odd|[74]|xsl-region-after-odd||xsl-region-before-odd|[75]|xsl-region-after-odd||xsl-region-before-odd|[76]|xsl-region-after-odd||xsl-region-before-odd|[77]|xsl-region-after-odd||xsl-region-before-odd|[78]|xsl-region-after-odd||xsl-region-before-odd|[79]|xsl-region-after-odd||xsl-region-before-odd|[80]|xsl-region-after-odd||xsl-region-before-odd|[81]|xsl-region-after-odd||xsl-region-before-odd|[82]|xsl-region-after-odd||xsl-region-before-odd|[83]|xsl-region-after-odd||xsl-region-before-odd|[84]|xs
l-region-after-odd||xsl-region-before-odd|[85]|xsl-region-after-odd||xsl-region-before-odd|[86]|xsl-region-after-odd||xsl-region-before-odd|[87]|xsl-region-after-odd||xsl-region-before-odd|[88]|xsl-region-after-odd||xsl-region-before-odd|[89]|xsl-region-after-odd||xsl-region-before-odd|[90]|xsl-region-after-odd||xsl-region-before-odd|[91]|xsl-region-after-odd||xsl-region-before-odd|[92]|xsl-region-after-odd||xsl-region-before-odd|[93]|xsl-region-after-odd||xsl-region-before-odd|[94]|xsl-region-after-odd||xsl-region-before-odd|[95]|xsl-region-after-odd||xsl-region-before-odd|[96]|xsl-region-after-odd||xsl-region-before-odd|[97]|xsl-region-after-odd||xsl-region-before-odd|[98]|xsl-region-after-odd||xsl-region-before-odd|[99]|xsl-region-after-odd||xsl-region-before-odd|[100]|xsl-region-after-odd||xsl-region-before-odd|[101]|xsl-region-after-odd||xsl-region-before-odd|[102]|xsl-region-after-odd||xsl-region-before-odd|[103]|xsl-region-after-odd||xsl-region-before-odd|[104]|xsl-region-after-odd||xsl-region-before-
odd|[105]|xsl-region-after-odd||xsl-region-before-odd|[106]|xsl-region-after-odd||xsl-region-before-odd|[107]|xsl-region-after-odd||xsl-region-before-odd|[108]|xsl-region-after-odd||xsl-region-before-odd|[109]|xsl-region-after-odd||xsl-region-before-odd|[110]|xsl-region-after-odd||xsl-region-before-odd|[111]|xsl-region-after-odd||xsl-region-before-odd|[112]|xsl-region-after-odd||xsl-region-before-odd|[113]|xsl-region-after-odd||xsl-region-before-odd|[114]|xsl-region-after-odd||xsl-region-before-odd|[115]|xsl-region-after-odd||xsl-region-before-odd|[116]|xsl-region-after-odd||xsl-region-before-odd|[117]|xsl-region-after-odd||xsl-region-before-odd|[118]|xsl-region-after-odd||xsl-region-before-odd|[119]|xsl-region-after-odd||xsl-region-before-odd|[120]|xsl-region-after-odd||xsl-region-before-odd|[121]|xsl-region-after-odd||xsl-region-before-odd|[122]|xsl-region-after-odd||xsl-region-before-odd|[123]|xsl-region-after-odd||xsl-region-before-odd|[124]|xsl-region-after-odd||xsl-region-before-odd|[125]|xsl-region-af
ter-odd||xsl-region-before-odd|[126]|xsl-region-after-odd||xsl-region-before-odd|[127]|xsl-region-after-odd||xsl-region-before-odd|[128]|xsl-region-after-odd||xsl-region-before-odd|[129]|xsl-region-after-odd||xsl-region-before-odd|[130]|xsl-region-after-odd||xsl-region-before-odd|[131]|xsl-region-after-odd||xsl-region-before-odd|[132]|xsl-region-after-odd||xsl-region-before-odd|[133]|xsl-region-after-odd||xsl-region-before-odd|[134]|xsl-region-after-odd||xsl-region-before-odd|[135]|xsl-region-after-odd||xsl-region-before-odd|[136]|xsl-region-after-odd||xsl-region-before-odd|[137]|xsl-region-after-odd||xsl-region-before-odd|[138]|xsl-region-after-odd||xsl-region-before-odd|[139]|xsl-region-after-odd||xsl-region-before-odd|[140]|xsl-region-after-odd||xsl-region-before-odd|[141]|xsl-region-after-odd||xsl-region-before-odd|[142]|xsl-region-after-odd||xsl-region-before-odd|[143]|xsl-region-after-odd||xsl-region-before-odd|[144]|xsl-region-after-odd||xsl-region-before-odd|[145]|xsl-region-after-odd||xsl-region-bef
ore-odd|[146]|xsl-region-after-odd||xsl-region-before-odd|[147]|xsl-region-after-odd||xsl-region-before-odd|[148]|xsl-region-after-odd||xsl-region-before-odd|[149]|xsl-region-after-odd||xsl-region-before-odd|[150]|xsl-region-after-odd||xsl-region-before-odd|[151]|xsl-region-after-odd||xsl-region-before-odd|[152]|xsl-region-after-odd||xsl-region-before-odd|[153]|xsl-region-after-odd||xsl-region-before-odd|[154]|xsl-region-after-odd||xsl-region-before-odd|[155]|xsl-region-after-odd||xsl-region-before-odd|[156]|xsl-region-after-odd||xsl-region-before-odd|[157]|xsl-region-after-odd||xsl-region-before-odd|[158]|xsl-region-after-odd||xsl-region-before-odd|[159]|xsl-region-after-odd||xsl-region-before-odd|[160]|xsl-region-after-odd||xsl-region-before-odd|[161]|xsl-region-after-odd||xsl-region-before-odd|[162]|xsl-region-after-odd||xsl-region-before-odd|[163]|xsl-region-after-odd||xsl-region-before-odd|[164]|xsl-region-after-odd||xsl-region-before-odd|[165]|xsl-region-after-odd||xsl-region-before-odd|[166]|xsl-regio
n-after-odd||xsl-region-before-odd|[167]|xsl-region-after-odd||xsl-region-before-odd|[168]|xsl-region-after-odd||xsl-region-before-odd|[169]|xsl-region-after-odd||xsl-region-before-odd|[170]|xsl-region-after-odd||xsl-region-before-odd|[171]|xsl-region-after-odd||xsl-region-before-odd|[172]|xsl-region-after-odd||xsl-region-before-odd|[173]|xsl-region-after-odd||xsl-region-before-odd|[174]|xsl-region-after-odd||xsl-region-before-odd|[175]|xsl-region-after-odd||xsl-region-before-odd|[176]|xsl-region-after-odd||xsl-region-before-odd|[177]|xsl-region-after-odd||xsl-region-before-odd|[178]|xsl-region-after-odd||xsl-region-before-odd|[179]|xsl-region-after-odd||xsl-region-before-odd|[180]|xsl-region-after-odd||xsl-region-before-odd|[181]|xsl-region-after-odd||xsl-region-before-odd|[182]|xsl-region-after-odd||xsl-region-before-odd|[183]|xsl-region-after-odd||xsl-region-before-odd|[184]|xsl-region-after-odd||xsl-region-before-odd|[185]|xsl-region-after-odd||xsl-region-before-odd|[186]|xsl-region-after-odd||xsl-region
-before-odd|[187]|xsl-region-after-odd||xsl-region-before-odd|[188]|xsl-region-after-odd||xsl-region-before-odd|[189]|xsl-region-after-odd||xsl-region-before-odd|[190]|xsl-region-after-odd||xsl-region-before-odd|[191]|xsl-region-after-odd||xsl-region-before-odd|[192]|xsl-region-after-odd||xsl-region-before-odd|[193]|xsl-region-after-odd||xsl-region-before-odd|[194]|xsl-region-after-odd||xsl-region-before-odd|[195]|xsl-region-after-odd||xsl-region-before-odd|[196]|xsl-region-after-odd||xsl-region-before-odd|[197]|xsl-region-after-odd||xsl-region-before-odd|[198]|xsl-region-after-odd||xsl-region-before-odd|[199]|xsl-region-after-odd||xsl-region-before-odd|[200]|xsl-region-after-odd||xsl-region-before-odd|[201]|xsl-region-after-odd||xsl-region-before-odd|[202]|xsl-region-after-odd||xsl-region-before-odd|[203]|xsl-region-after-odd||xsl-region-before-odd|[204]|xsl-region-after-odd||xsl-region-before-odd|[205]|xsl-region-after-odd||xsl-region-before-odd|[206]|xsl-region-after-odd||xsl-region-before-odd|[207]|xsl-r
egion-after-odd||xsl-region-before-odd|[208]|xsl-region-after-odd||xsl-region-before-odd|[209]|xsl-region-after-odd||xsl-region-before-odd|[210]|xsl-region-after-odd||xsl-region-before-odd|[211]|xsl-region-after-odd||xsl-region-before-odd|[212]|xsl-region-after-odd||xsl-region-before-odd|[213]|xsl-region-after-odd||xsl-region-before-odd|[214]|xsl-region-after-odd||xsl-region-before-odd|[215]|xsl-region-after-odd||xsl-region-before-odd|[216]|xsl-region-after-odd||xsl-region-before-odd|[217]|xsl-region-after-odd||xsl-region-before-odd|[218]|xsl-region-after-odd||xsl-region-before-odd|[219]|xsl-region-after-odd||xsl-region-before-odd|[220]|xsl-region-after-odd||xsl-region-before-odd|[221]|xsl-region-after-odd||xsl-region-before-odd|[222]|xsl-region-after-odd||xsl-region-before-odd|[223]|xsl-region-after-odd||xsl-region-before-odd|[224]|xsl-region-after-odd||xsl-region-before-odd|[225]|xsl-region-after-odd||xsl-region-before-odd|[226]|xsl-region-after-odd||xsl-region-before-odd|[227]|xsl-region-after-odd||xsl-re
gion-before-odd|[228]|xsl-region-after-odd||xsl-region-before-odd|[229]|xsl-region-after-odd||xsl-region-before-odd|[230]|xsl-region-after-odd||xsl-region-before-odd|[231]|xsl-region-after-odd||xsl-region-before-odd|[232]|xsl-region-after-odd||xsl-region-before-odd|[233]|xsl-region-after-odd||xsl-region-before-odd|[234]|xsl-region-after-odd||xsl-region-before-odd|[235]|xsl-region-after-odd||xsl-region-before-odd|[236]|xsl-region-after-odd||xsl-region-before-odd|[237]|xsl-region-after-odd||xsl-region-before-odd|[238]|xsl-region-after-odd||xsl-region-before-odd|[239]|xsl-region-after-odd||xsl-region-before-odd|[240]|xsl-region-after-odd||xsl-region-before-odd|[241]|xsl-region-after-odd||xsl-region-before-odd|[242]|xsl-region-after-odd||xsl-region-before-odd|[243]|xsl-region-after-odd||xsl-region-before-odd|[244]|xsl-region-after-odd||xsl-region-before-odd|[245]|xsl-region-after-odd||xsl-region-before-odd|[246]|xsl-region-after-odd||xsl-region-before-odd|[247]|xsl-region-after-odd||xsl-region-before-odd|[248]|x
sl-region-after-odd||xsl-region-before-odd|[249]|xsl-region-after-odd||xsl-region-before-odd|[250]|xsl-region-after-odd||xsl-region-before-odd|[251]|xsl-region-after-odd||xsl-region-before-odd|[252]|xsl-region-after-odd||xsl-region-before-odd|[253]|xsl-region-after-odd||xsl-region-before-odd|[254]|xsl-region-after-odd||xsl-region-before-odd|[255]|xsl-region-after-odd||xsl-region-before-odd|[256]|xsl-region-after-odd||xsl-region-before-odd|[257]|xsl-region-after-odd||xsl-region-before-odd|[258]|xsl-region-after-odd||xsl-region-before-odd|[259]|xsl-region-after-odd||xsl-region-before-odd|[260]|xsl-region-after-odd||xsl-region-before-odd|[261]|xsl-region-after-odd||xsl-region-before-odd|[262]|xsl-region-after-odd||xsl-region-before-odd|[263]|xsl-region-after-odd||xsl-region-before-odd|[264]|xsl-region-after-odd||xsl-region-before-odd|[265]|xsl-region-after-odd||xsl-region-before-odd|[266]|xsl-region-after-odd||xsl-region-before-odd|[267]|xsl-region-after-odd||xsl-region-before-odd|[268]|xsl-region-after-odd||xs
l-region-before-odd|[269]|xsl-region-after-odd||xsl-region-before-odd|[270]|xsl-region-after-odd||xsl-region-before-odd|[271]|xsl-region-after-odd||xsl-region-before-odd|[272]|xsl-region-after-odd||xsl-region-before-odd|[273]|xsl-region-after-odd||xsl-region-before-odd|[274]|xsl-region-after-odd||xsl-region-before-odd|[275]|xsl-region-after-odd||xsl-region-before-odd|[276]|xsl-region-after-odd||xsl-region-before-odd|[277]|xsl-region-after-odd||xsl-region-before-odd|[278]|xsl-region-after-odd||xsl-region-before-odd|[279]|xsl-region-after-odd||xsl-region-before-odd|[280]|xsl-region-after-odd||xsl-region-before-odd|[281]|xsl-region-after-odd||xsl-region-before-odd|[282]|xsl-region-after-odd||xsl-region-before-odd|[283]|xsl-region-after-odd||xsl-region-before-odd|[284]|xsl-region-after-odd||xsl-region-before-odd|[285]|xsl-region-after-odd||xsl-region-before-odd|[286]|xsl-region-after-odd||xsl-region-before-odd|[287]|xsl-region-after-odd||xsl-region-before-odd|[288]|xsl-region-after-odd||xsl-region-before-odd|[28
9]|xsl-region-after-odd||xsl-region-before-odd|[290]|xsl-region-after-odd||xsl-region-before-odd|[291]|xsl-region-after-odd||xsl-region-before-odd|[292]|xsl-region-after-odd||xsl-region-before-odd|[293]|xsl-region-after-odd||xsl-region-before-odd|[294]|xsl-region-after-odd||xsl-region-before-odd|[295]|xsl-region-after-odd||xsl-region-before-odd|[296]|xsl-region-after-odd||xsl-region-before-odd|[297]|xsl-region-after-odd||xsl-region-before-odd|[298]|xsl-region-after-odd||xsl-region-before-odd|[299]|xsl-region-after-odd||xsl-region-before-odd|[300]|xsl-region-after-odd||xsl-region-before-odd|[301]|xsl-region-after-odd||xsl-region-before-odd|[302]|xsl-region-after-odd||xsl-region-before-odd|[303]|xsl-region-after-odd||xsl-region-before-odd|[304]|xsl-region-after-odd||xsl-region-before-odd|[305]|xsl-region-after-odd||xsl-region-before-odd|[306]|xsl-region-after-odd||xsl-region-before-odd|[307]|xsl-region-after-odd||xsl-region-before-odd|[308]|xsl-region-after-odd||xsl-region-before-odd|[309]|xsl-region-after-odd
||xsl-region-before-odd|[310]|xsl-region-after-odd||xsl-region-before-odd|[311]|xsl-region-after-odd||xsl-region-before-odd|[312]|xsl-region-after-odd||xsl-region-before-odd|[313]|xsl-region-after-odd||xsl-region-before-odd|[314]|xsl-region-after-odd||xsl-region-before-odd|[315]|xsl-region-after-odd||xsl-region-before-odd|[316]|xsl-region-after-odd||xsl-region-before-odd|[317]|xsl-region-after-odd||xsl-region-before-odd|[318]|xsl-region-after-odd||xsl-region-before-odd|[319]|xsl-region-after-odd||xsl-region-before-odd|[320]|xsl-region-after-odd||xsl-region-before-odd|[321]|xsl-region-after-odd||xsl-region-before-odd|[322]|xsl-region-after-odd||xsl-region-before-odd|[323]|xsl-region-after-odd||xsl-region-before-odd|[324]|xsl-region-after-odd||xsl-region-before-odd|[325]|xsl-region-after-odd||xsl-region-before-odd|[326]|xsl-region-after-odd||xsl-region-before-odd|[327]|xsl-region-after-odd||xsl-region-before-odd|[328]|xsl-region-after-odd||xsl-region-before-odd|[329]|xsl-region-after-odd||xsl-region-before-odd
|[330]|xsl-region-after-odd||xsl-region-before-odd|[331]|xsl-region-after-odd||xsl-region-before-odd|[332]|xsl-region-after-odd||xsl-region-before-odd|[333]|xsl-region-after-odd||xsl-region-before-odd|[334]|xsl-region-after-odd||xsl-region-before-odd|[335]|xsl-region-after-odd||xsl-region-before-odd|[336]|xsl-region-after-odd||xsl-region-before-odd|[337]|xsl-region-after-odd||xsl-region-before-odd|[338]|xsl-region-after-odd||xsl-region-before-odd|[339]|xsl-region-after-odd||xsl-region-before-odd|[340]|xsl-region-after-odd||xsl-region-before-odd|[341]|xsl-region-after-odd||xsl-region-before-odd|[342]|xsl-region-after-odd||xsl-region-before-odd|[343]|xsl-region-after-odd||xsl-region-before-odd|[344]|xsl-region-after-odd||xsl-region-before-odd|[345]|xsl-region-after-odd||xsl-region-before-odd|[346]|xsl-region-after-odd||xsl-region-before-odd|[347]|xsl-region-after-odd||xsl-region-before-odd|[348]|xsl-region-after-odd||xsl-region-before-odd|[349]|xsl-region-after-odd||xsl-region-before-odd|[350]|xsl-region-after
-odd||xsl-region-before-odd|[351]|xsl-region-after-odd||xsl-region-before-odd|[352]|xsl-region-after-odd||xsl-region-before-odd|[353]|xsl-region-after-odd||xsl-region-before-odd|[354]|xsl-region-after-odd||xsl-region-before-odd|[355]|xsl-region-after-odd||xsl-region-before-odd|[356]|xsl-region-after-odd||xsl-region-before-odd|[357]|xsl-region-after-odd||xsl-region-before-odd|[358]|xsl-region-after-odd||xsl-region-before-odd|[359]|xsl-region-after-odd||xsl-region-before-odd|[360]|xsl-region-after-odd||xsl-region-before-odd|[361]|xsl-region-after-odd||xsl-region-before-odd|[362]|xsl-region-after-odd||xsl-region-before-odd|[363]|xsl-region-after-odd||xsl-region-before-odd|[364]|xsl-region-after-odd||xsl-region-before-odd|[365]|xsl-region-after-odd||xsl-region-before-odd|[366]|xsl-region-after-odd||xsl-region-before-odd|[367]|xsl-region-after-odd||xsl-region-before-odd|[368]|xsl-region-after-odd||xsl-region-before-odd|[369]|xsl-region-after-odd||xsl-region-before-odd|[370]|xsl-region-after-odd||xsl-region-before
-odd|[371]|xsl-region-after-odd||xsl-region-before-odd|[372]|xsl-region-after-odd||xsl-region-before-odd|[373]|xsl-region-after-odd||xsl-region-before-odd|[374]|xsl-region-after-odd||xsl-region-before-odd|[375]|xsl-region-after-odd||xsl-region-before-odd|[376]|xsl-region-after-odd||xsl-region-before-odd|[377]|xsl-region-after-odd||xsl-region-before-odd|[378]|xsl-region-after-odd||xsl-region-before-odd|[379]|xsl-region-after-odd||xsl-region-before-odd|[380]|xsl-region-after-odd||xsl-region-before-odd|[381]|xsl-region-after-odd||xsl-region-before-odd|[382]|xsl-region-after-odd||xsl-region-before-odd|[383]|xsl-region-after-odd||xsl-region-before-odd|[384]|xsl-region-after-odd||xsl-region-before-odd|[385]|xsl-region-after-odd||xsl-region-before-odd|[386]|xsl-region-after-odd||xsl-region-before-odd|[387]|xsl-region-after-odd||xsl-region-before-odd|[388]|xsl-region-after-odd||xsl-region-before-odd|[389]|xsl-region-after-odd||xsl-region-before-odd|[390]|xsl-region-after-odd||xsl-region-before-odd|[391]|xsl-region-a
fter-odd||xsl-region-before-odd|[392]|xsl-region-after-odd||xsl-region-before-odd|[393]|xsl-region-after-odd||xsl-region-before-odd|[394]|xsl-region-after-odd||xsl-region-before-odd|[395]|xsl-region-after-odd||xsl-region-before-odd|[396]|xsl-region-after-odd||xsl-region-before-odd|[397]|xsl-region-after-odd||xsl-region-before-odd|[398]|xsl-region-after-odd||xsl-region-before-odd|[399]|xsl-region-after-odd||xsl-region-before-odd|[400]|xsl-region-after-odd||xsl-region-before-odd|[401]|xsl-region-after-odd||xsl-region-before-odd|[402]|xsl-region-after-odd||xsl-region-before-odd|[403]|xsl-region-after-odd||xsl-region-before-odd|[404]|xsl-region-after-odd||xsl-region-before-odd|[405]|xsl-region-after-odd||xsl-region-before-odd|[406]|xsl-region-after-odd||xsl-region-before-odd|[407]|xsl-region-after-odd||xsl-region-before-odd|[408]|xsl-region-after-odd||xsl-region-before-odd|[409]|xsl-region-after-odd||xsl-region-before-odd|[410]|xsl-region-after-odd||xsl-region-before-odd|[411]|xsl-region-after-odd||xsl-region-be
fore-odd|[412]|xsl-region-after-odd||xsl-region-before-odd|[413]|xsl-region-after-odd||xsl-region-before-odd|[414]|xsl-region-after-odd||xsl-region-before-odd|[415]|xsl-region-after-odd||xsl-region-before-odd|[416]|xsl-region-after-odd||xsl-region-before-odd|[417]|xsl-region-after-odd||xsl-region-before-odd|[418]|xsl-region-after-odd||xsl-region-before-odd|[419]|xsl-region-after-odd||xsl-region-before-odd|[420]|xsl-region-after-odd||xsl-region-before-odd|[421]|xsl-region-after-odd||xsl-region-before-odd|[422]|xsl-region-after-odd||xsl-region-before-odd|[423]|xsl-region-after-odd||xsl-region-before-odd|[424]|xsl-region-after-odd||xsl-region-before-odd|[425]|xsl-region-after-odd||xsl-region-before-odd|[426]|xsl-region-after-odd||xsl-region-before-odd|[427]|xsl-region-after-odd||xsl-region-before-odd|[428]|xsl-region-after-odd||xsl-region-before-odd|[429]|xsl-region-after-odd||xsl-region-before-odd|[430]|xsl-region-after-odd||xsl-region-before-odd|[431]|xsl-region-after-odd||xsl-region-before-odd|[432]|xsl-regi
on-after-odd||xsl-region-before-odd|[433]|xsl-region-after-odd||xsl-region-before-odd|[434]|xsl-region-after-odd||xsl-region-before-odd|[435]|xsl-region-after-odd||xsl-region-before-odd|[436]|xsl-region-after-odd||xsl-region-before-odd|[437]|xsl-region-after-odd||xsl-region-before-odd|[438]|xsl-region-after-odd||xsl-region-before-odd|[439]|xsl-region-after-odd||xsl-region-before-odd|[440]|xsl-region-after-odd||xsl-region-before-odd|[441]|xsl-region-after-odd||xsl-region-before-odd|[442]|xsl-region-after-odd||xsl-region-before-odd|[443]|xsl-region-after-odd||xsl-region-before-odd|[444]|xsl-region-after-odd||xsl-region-before-odd|[445]|xsl-region-after-odd||xsl-region-before-odd|[446]|xsl-region-after-odd||xsl-region-before-odd|[447]|xsl-region-after-odd||xsl-region-before-odd|[448]|xsl-region-after-odd||xsl-region-before-odd|[449]|xsl-region-after-odd||xsl-region-before-odd|[450]|xsl-region-after-odd||xsl-region-before-odd|[451]|xsl-region-after-odd||xsl-region-before-odd|[452]|xsl-region-after-odd||xsl-regio
n-before-odd|[453]|xsl-region-after-odd||xsl-region-before-odd|[454]|xsl-region-after-odd||xsl-region-before-odd|[455]|xsl-region-after-odd||xsl-region-before-odd|[456]|xsl-region-after-odd||xsl-region-before-odd|[457]|xsl-region-after-odd||xsl-region-before-odd|[458]|xsl-region-after-odd||xsl-region-before-odd|[459]|xsl-region-after-odd||xsl-region-before-odd|[460]|xsl-region-after-odd||xsl-region-before-odd|[461]|xsl-region-after-odd||xsl-region-before-odd|[462]|xsl-region-after-odd||xsl-region-before-odd|[463]|xsl-region-after-odd||xsl-region-before-odd|[464]|xsl-region-after-odd||xsl-region-before-odd|[465]|xsl-region-after-odd||xsl-region-before-odd|[466]|xsl-region-after-odd||xsl-region-before-odd|[467]|xsl-region-after-odd||xsl-region-before-odd|[468]|xsl-region-after-odd||xsl-region-before-odd|[469]|xsl-region-after-odd||xsl-region-before-odd|[470]|xsl-region-after-odd||xsl-region-before-odd|[471]|xsl-region-after-odd||xsl-region-before-odd|[472]|xsl-region-after-odd||xsl-region-before-odd|[473]|xsl-
region-after-odd||xsl-region-before-odd|[474]|xsl-region-after-odd||xsl-region-before-odd|[475]|xsl-region-after-odd||xsl-region-before-odd|[476]|xsl-region-after-odd||xsl-region-before-odd|[477]|xsl-region-after-odd||xsl-region-before-odd|[478]|xsl-region-after-odd||xsl-region-before-odd|[479]|xsl-region-after-odd||xsl-region-before-odd|[480]|xsl-region-after-odd||xsl-region-before-odd|[481]|xsl-region-after-odd||xsl-region-before-odd|[482]|xsl-region-after-odd||xsl-region-before-odd|[483]|xsl-region-after-odd||xsl-region-before-odd|[484]|xsl-region-after-odd||xsl-region-before-odd|[485]|xsl-region-after-odd||xsl-region-before-odd|[486]|xsl-region-after-odd||xsl-region-before-odd|[487]|xsl-region-after-odd||xsl-region-before-odd|[488]|xsl-region-after-odd||xsl-region-before-odd|[489]|xsl-region-after-odd||xsl-region-before-odd|[490]|xsl-region-after-odd||xsl-region-before-odd|[491]|xsl-region-after-odd||xsl-region-before-odd|[492]|xsl-region-after-odd||xsl-region-before-odd|[493]|xsl-region-after-odd||xsl-r
egion-before-odd|[494]|xsl-region-after-odd||xsl-region-before-odd|[495]|xsl-region-after-odd||xsl-region-before-odd|[496]|xsl-region-after-odd||xsl-region-before-odd|[497]|xsl-region-after-odd||xsl-region-before-odd|[498]|xsl-region-after-odd||xsl-region-before-odd|[499]|xsl-region-after-odd||xsl-region-before-odd|[500]|xsl-region-after-odd||xsl-region-before-odd|[501]|xsl-region-after-odd||xsl-region-before-odd|[502]|xsl-region-after-odd||xsl-region-before-odd|[503]|xsl-region-after-odd||xsl-region-before-odd|[504]|xsl-region-after-odd||xsl-region-before-odd|[505]|xsl-region-after-odd||xsl-region-before-odd|[506]|xsl-region-after-odd||xsl-region-before-odd|[507]|xsl-region-after-odd||xsl-region-before-odd|[508]|xsl-region-after-odd||xsl-region-before-odd|[509]|xsl-region-after-odd||xsl-region-before-odd|[510]|xsl-region-after-odd||xsl-region-before-odd|[511]|xsl-region-after-odd||xsl-region-before-odd|[512]|xsl-region-after-odd||xsl-region-before-odd|[513]|xsl-region-after-odd||xsl-region-before-odd|[514]|
xsl-region-after-odd||xsl-region-before-odd|[515]|xsl-region-after-odd||xsl-region-before-odd|[516]|xsl-region-after-odd||xsl-region-before-odd|[517]|xsl-region-after-odd||xsl-region-before-odd|[518]|xsl-region-after-odd||xsl-region-before-odd|[519]|xsl-region-after-odd||xsl-region-before-odd|[520]|xsl-region-after-odd||xsl-region-before-odd|[521]|xsl-region-after-odd||xsl-region-before-odd|[522]|xsl-region-after-odd||xsl-region-before-odd|[523]|xsl-region-after-odd||xsl-region-before-odd|[524]|xsl-region-after-odd||xsl-region-before-odd|[525]|xsl-region-after-odd||xsl-region-before-odd|[526]|xsl-region-after-odd||xsl-region-before-odd|[527]|xsl-region-after-odd||xsl-region-before-odd|[528]|xsl-region-after-odd||xsl-region-before-odd|[529]|xsl-region-after-odd||xsl-region-before-odd|[530]|xsl-region-after-odd||xsl-region-before-odd|[531]|xsl-region-after-odd||xsl-region-before-odd|[532]|xsl-region-after-odd||xsl-region-before-odd|[533]|xsl-region-after-odd||xsl-region-before-odd|[534]|xsl-region-after-odd||x
sl-region-before-odd|[535]|xsl-region-after-odd||xsl-region-before-odd|[536]|xsl-region-after-odd||xsl-region-before-odd|[537]|xsl-region-after-odd||xsl-region-before-odd|[538]|xsl-region-after-odd||xsl-region-before-odd|[539]|xsl-region-after-odd||xsl-region-before-odd|[540]|xsl-region-after-odd||xsl-region-before-odd|[541]|xsl-region-after-odd||xsl-region-before-odd|[542]|xsl-region-after-odd||xsl-region-before-odd|[543]|xsl-region-after-odd||xsl-region-before-odd|[544]|xsl-region-after-odd||xsl-region-before-odd|[545]|xsl-region-after-odd||xsl-region-before-odd|[546]|xsl-region-after-odd||xsl-region-before-odd|[547]|xsl-region-after-odd||xsl-region-before-odd|[548]|xsl-region-after-odd||xsl-region-before-odd|[549]|xsl-region-after-odd||xsl-region-before-odd|[550]|xsl-region-after-odd||xsl-region-before-odd|[551]|xsl-region-after-odd||xsl-region-before-odd|[552]|xsl-region-after-odd||xsl-region-before-odd|[553]|xsl-region-after-odd||xsl-region-before-odd|[554]|xsl-region-after-odd||xsl-region-before-odd|[5
55]|xsl-region-after-odd||xsl-region-before-odd|[556]|xsl-region-after-odd||xsl-region-before-odd|[557]|xsl-region-after-odd||xsl-region-before-odd|[558]|xsl-region-after-odd||xsl-region-before-odd|[559]|xsl-region-after-odd||xsl-region-before-odd|[560]|xsl-region-after-odd||xsl-region-before-odd|[561]|xsl-region-after-odd||xsl-region-before-odd|[562]|xsl-region-after-odd||xsl-region-before-odd|[563]|xsl-region-after-odd||xsl-region-before-odd|[564]|xsl-region-after-odd||xsl-region-before-odd|[565]|xsl-region-after-odd||xsl-region-before-odd|[566]|xsl-region-after-odd||xsl-region-before-odd|[567]|xsl-region-after-odd||xsl-region-before-odd|[568]|xsl-region-after-odd||xsl-region-before-odd|[569]|xsl-region-after-odd||xsl-region-before-odd|[570]|xsl-region-after-odd||xsl-region-before-odd|[571]|xsl-region-after-odd||xsl-region-before-odd|[572]|xsl-region-after-odd||xsl-region-before-odd|[573]|xsl-region-after-odd||xsl-region-before-odd|[574]|xsl-region-after-odd||xsl-region-before-odd|[575]|xsl-region-after-od
d||xsl-region-before-odd|[576]|xsl-region-after-odd||xsl-region-before-odd|[577]|xsl-region-after-odd||xsl-region-before-odd|)))
   (generate [output-format pdf][1][2][3][4][5][6][7][8][9][10][11][12][13][14][15][16][17][18][19][20][21][22][23][24]
     [warning] could not find any font family matching "lucida console"; replaced by Helvetica
     [25][26][27][28][29][30][31][32][33][34][35][36][37][38][39][40][41][42][43][44][45][46][47][48][49][50][51][52][53][54][55][56][57][58][59][60][61][62][63][64][65][66][67][68][69][70][71][72][73][74][75][76]
     [warning] could not find any font family matching "sans"; replaced by Helvetica
- [77][78][79][80][81][82][83][84][85][86][87][88][89][90][91][92][93][94][95][96][97][98][99][100][101][102][103][104][105][106][107][108][109][110][111][112][113][114][115][116][117][118][119][120][121][122][123][124][125][126][127][128][129][130][131][132][133][134][135][136][137][138][139][140][141][142][143][144][145][146][147][148][149][150][151][152][153][154][155][156][157][158][159][160][161][162][163][164][165][166][167][168][169][170][171][172][173][174][175][176][177][178][179][180][181][182][183][184][185][186][187][188][189][190][191][192][193][194][195][196][197][198][199][200][201][202][203][204][205][206][207][208][209][210][211][212][213][214][215][216][217][218][219][220][221][222][223][224][225][226][227][228][229][230][231][232][233][234][235][236][237][238][239][240][241][242][243][244][245][246][247][248][249][250][251][252][253][254][255][256][257][258][259][260][261][262][263][264][265][266][267][268][269][270][271][272][273][274][275][276][277][278][279][280][281][282][283][284][
285][286][287][288][289][290][291][292][293][294][295][296][297][298][299][300][301][302][303][304][305][306][307][308][309][310][311][312][313][314][315][316][317][318][319][320][321][322][323][324][325][326][327][328][329][330][331][332][333][334][335][336][337][338][339][340][341][342][343][344][345][346][347][348][349][350][351][352][353][354][355][356][357][358][359][360][361][362][363][364][365][366][367][368][369][370][371][372][373][374][375][376][377][378][379][380][381][382][383][384][385][386][387][388][389][390][391][392][393][394][395][396][397][398][399][400][401][402][403][404][405][406][407][408][409][410][411][412][413][414][415][416][417][418][419][420][421][422][423][424][425][426][427][428][429][430][431][432][433][434][435][436][437][438][439][440][441][442][443][444][445][446][447][448][449][450][451][452][453][454][455][456][457][458][459][460][461][462][463][464][465][466][467][468][469][470][471][472][473][474][475][476][477][478][479][480][481][482][483][484][485][486][487][488][489
][490][491][492][493][494][495][496][497][498][499][500][501][502][503][504][505][506][507][508][509][510][511][512][513][514][515][516][517][518][519][520][521][522][523][524][525][526][527][528][529][530][531][532][533][534][535][536][537][538][539][540][541][542][543][544][545][546][547][548][549][550][551][552]))
+ [77][78][79][80][81][82][83][84][85][86][87][88][89][90][91][92][93][94][95][96][97][98][99][100][101][102][103][104][105][106][107][108][109][110][111][112][113][114][115][116][117][118][119][120][121][122][123][124][125][126][127][128][129][130][131][132][133][134][135][136][137][138][139][140][141][142][143][144][145][146][147][148][149][150][151][152][153][154][155][156][157][158][159][160][161][162][163][164][165][166][167][168][169][170][171][172][173][174][175][176][177][178][179][180][181][182][183][184][185][186][187][188][189][190][191][192][193][194][195][196][197][198][199][200][201][202][203][204][205][206][207][208][209][210][211][212][213][214][215][216][217][218][219][220][221][222][223][224][225][226][227][228][229][230][231][232][233][234][235][236][237][238][239][240][241][242][243][244][245][246][247][248][249][250][251][252][253][254][255][256][257][258][259][260][261][262][263][264][265][266][267][268][269][270][271][272][273][274][275][276][277][278][279][280][281][282][283][284][
285][286][287][288][289][290][291][292][293][294][295][296][297][298][299][300][301][302][303][304][305][306][307][308][309][310][311][312][313][314][315][316][317][318][319][320][321][322][323][324][325][326][327][328][329][330][331][332][333][334][335][336][337][338][339][340][341][342][343][344][345][346][347][348][349][350][351][352][353][354][355][356][357][358][359][360][361][362][363][364][365][366][367][368][369][370][371][372][373][374][375][376][377][378][379][380][381][382][383][384][385][386][387][388][389][390][391][392][393][394][395][396][397][398][399][400][401][402][403][404][405][406][407][408][409][410][411][412][413][414][415][416][417][418][419][420][421][422][423][424][425][426][427][428][429][430][431][432][433][434][435][436][437][438][439][440][441][442][443][444][445][446][447][448][449][450][451][452][453][454][455][456][457][458][459][460][461][462][463][464][465][466][467][468][469][470][471][472][473][474][475][476][477][478][479][480][481][482][483][484][485][486][487][488][489
][490][491][492][493][494][495][496][497][498][499][500][501][502][503][504][505][506][507][508][509][510][511][512][513][514][515][516][517][518][519][520][521][522][523][524][525][526][527][528][529][530][531][532][533][534][535][536][537][538][539][540][541][542][543][544][545][546][547][548][549][550][551][552][553][554][555][556][557][558][559][560][561][562][563][564][565][566][567][568][569][570][571][572][573][574][575][576][577]))
 ...updated 11 targets...

Modified: sandbox/SOC/2007/visualization/libs/svg_plot/doc/svg_plot.qbk
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/doc/svg_plot.qbk (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/doc/svg_plot.qbk 2009-08-21 05:36:12 EDT (Fri, 21 Aug 2009)
@@ -13,7 +13,7 @@
 ]
 
 [/ Images]
-[/ $images is ref to folder where images are held.]
+[/ $images is reference to a folder where images are held.]
 [def __detail__ [$images/note.png]]
 [def __note__ [$images/note.png]]
 [def __alert__ [$images/alert.png]]
@@ -24,7 +24,7 @@
 [def __Boost_Assign [@$(BOOST_ROOT)/libs/assign/doc/index.html Boost.Assign]]
 
 [/ Links ]
-[/ By Eric's convention prefix *and* suffix _ means a defined value. But Use JM and SW double underscore prefix convention.]
+[/ By Eric's convention prefix *and* suffix _ means a defined value. But here use JM and SW double underscore prefix convention.]
 [def __boost [@http://www.boost.org Boost]]
 
 [/ Generating docs for compound boost::svg::svg]
@@ -103,7 +103,7 @@
 to append the folder. You can then use commands like "inkview my_picture.svg" from a command window.
 
 Inkview allows one to open many svg files as a slideshow
-and move forward and back with the cursor keys.
+and move forward and backward (and back to start) with the cursor keys.
 
 This works as expected using a command window,
 for example after changing to the directory containing your SVG files,
@@ -113,16 +113,22 @@
 multiple windows are opened instead of a slideshow.
 If you know how to change this 'by design' feature, please tell me.
 
-You may instead find is useful to create a batch file, for example called demo_plots.bat containing
+You can use this conveniently from your desktop (for example), by creating a shortcut to inkview.exe
+(right click in the inkscape install directory and choose Create Shortcut). Drag the shortcut to the desktop.
+Append "*.svg" to the Target, usually \c "C:\Program Files\Inkscape\inkview.exe", or perhaps the name of
+a single file. If necessary, change Start in to the folder containing the svg files, for example,
+\c C:\Users\Paul\Desktop\My_Plots\. You can add comment describing what it will do, and change the
+name of the shortcut file to something more helpful, for example, "View My Plots".
 
- START "Inkview" /MIN inkview.exe C:\Users\Paul\Desktop\Demo_Plots\*.svg
+You may instead find it useful to create a batch file, for example called view_demo_plots.bat containing, for example:
 
-that will display all the svg images in folder \Demo_Plots in turn as the cursor keys are pressed.
-Of course, you can also omit the folder specification and just have `*.svg` when the location of the
-batch file will determine which svg files are being viewed.
+ START "Inkview" /MIN inkview.exe C:\Users\Paul\Desktop\My_Plots\*.svg
 
+that will display all the svg images in folder \My_Plots in turn as the cursor keys are pressed.
+Of course, you can also omit the folder specification, and just have `*.svg` when the location of the
+batch file will determine which svg files are being viewed.
 
-* [@www.google.com/chrome Google Chrome]
+* [@http:/www.google.com/chrome Google Chrome]
 
 * Many other graphics programs, for example see
 [@http://svg.software.informer.com/software/ Most popular SVG software].
@@ -133,7 +139,7 @@
 * To allow users to easily customize plots but allow very fine-grained control of appearance.
 * To provide very high quality plots suitable for publication, including printing, but with tiny file sizes.
 * To allow the user to talk to the plot classes using coordinate units
-rather than pixels or other arbitrary units.
+rather than pixels or other arbitrary units
 * To create the backbone of a `svg` class that can be extended to fully support
 the standard.
 * Compliance with the
@@ -175,7 +181,11 @@
 [@http://code.google.com/soc/2007/boost/about.html Google Summer of Code project (2007)]
 whose mentor organization was Boost. It remains a library under construction,
 the code is quite functional, but interfaces, library structure, and names
-may still be changed without notice.]
+may still be changed without notice. The current version is available at
+
+[*https://svn.boost.org/svn/boost/sandbox/SOC/2007/visualization/libs/svg_plot/doc/pdf/svg_plot.pdf PDF documentation]
+
+[*https://svn.boost.org/svn/boost/sandbox/SOC/2007/visualization Boost Sandbox source code]
 
 [note Comments and suggestions (even bugs) to Paul.A.Bristow (at) hetp (dot) u-net (dot) com
 or Jake Voytko at jakevoytko (at) gmail (dot) com]

Modified: sandbox/SOC/2007/visualization/libs/svg_plot/example/1d_full_layout.svg
==============================================================================
Binary files. No diff available.

Modified: sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_1d_plot.cpp
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_1d_plot.cpp (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_1d_plot.cpp 2009-08-21 05:36:12 EDT (Fri, 21 Aug 2009)
@@ -94,13 +94,13 @@
   my_data5.push_back(numeric_limits<double>::infinity());
 
   svg_1d_plot my_1d_plot; // Construct with all the default constructor values.
- cout << "Image x & y " << my_1d_plot.image_x_size() << " by " << my_1d_plot.image_y_size() << endl;
+ cout << "Image x & y " << my_1d_plot.x_size() << " by " << my_1d_plot.y_size() << endl;
   //my_1d_plot.size(100,100); // Alter both together.
- //cout << "Image x & y " << my_1d_plot.image_x_size() << " by " << my_1d_plot.image_y_size() << endl;
+ //cout << "Image x & y " << my_1d_plot.x_size() << " by " << my_1d_plot.y_size() << endl;
   //// And alter both separately.
- //my_1d_plot.image_x_size(200);
- //my_1d_plot.image_y_size(600);
- //cout << "Image x & y " << my_1d_plot.image_x_size() << " by " << my_1d_plot.image_y_size() << endl;
+ //my_1d_plot.x_size(200);
+ //my_1d_plot.y_size(600);
+ //cout << "Image x & y " << my_1d_plot.x_size() << " by " << my_1d_plot.y_size() << endl;
 
   my_1d_plot.document_title("Document title demo_1d_plot"); // This text shows on the browser tab.
   my_1d_plot.description("My demo_1d_plot description");
@@ -113,7 +113,7 @@
   cout << "font-family was " << my_1d_plot.title_font_family() << endl;
 
   my_1d_plot
- .image_y_size(250)
+ .y_size(250)
   .background_color(ghostwhite) // whole image.
   .background_border_color(aqua) //
   .background_border_width(10.) //

Modified: sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_1d_tick_values.cpp
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_1d_tick_values.cpp (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_1d_tick_values.cpp 2009-08-21 05:36:12 EDT (Fri, 21 Aug 2009)
@@ -124,9 +124,9 @@
 */
     //show_1d_plot_settings(my_1d_plot);
 
- cout << "my_1d_plot.image_size() " << my_1d_plot.image_size() << endl;
- cout << "my_1d_plot.image_x_size() " << my_1d_plot.image_x_size() << endl;
- cout << "my_1d_plot.image_y_size() " << my_1d_plot.image_y_size() << endl;
+ cout << "my_1d_plot.size() " << my_1d_plot.size() << endl;
+ cout << "my_1d_plot.x_size() " << my_1d_plot.x_size() << endl;
+ cout << "my_1d_plot.y_size() " << my_1d_plot.y_size() << endl;
 
     cout << "my_1d_plot.x_axis_label_color() " << my_1d_plot.x_axis_label_color() << endl;
     cout << "my_1d_plot.x_label_font_family() " << my_1d_plot.x_label_font_family() << endl;

Modified: sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_1d_values.cpp
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_1d_values.cpp (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_1d_values.cpp 2009-08-21 05:36:12 EDT (Fri, 21 Aug 2009)
@@ -138,9 +138,9 @@
 */
     //show_1d_plot_settings(my_1d_plot);
 
- cout << "my_1d_plot.image_size() " << my_1d_plot.image_size() << endl;
- cout << "my_1d_plot.image_x_size() " << my_1d_plot.image_x_size() << endl;
- cout << "my_1d_plot.image_y_size() " << my_1d_plot.image_y_size() << endl;
+ cout << "my_1d_plot.image_size() " << my_1d_plot.size() << endl;
+ cout << "my_1d_plot.image x_size() " << my_1d_plot.x_size() << endl;
+ cout << "my_1d_plot.image y_size() " << my_1d_plot.y_size() << endl;
     cout << "my_1d_plot.x_values_font_size() " << my_1d_plot.x_values_font_size() << endl;
     cout << "my_1d_plot.x_values_font_family() " << my_1d_plot.x_values_font_family() << endl;
     cout << "my_1d_plot.x_values_color() " << my_1d_plot.x_values_color() << endl;

Modified: sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_2d_area_fill.cpp
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_2d_area_fill.cpp (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_2d_area_fill.cpp 2009-08-21 05:36:12 EDT (Fri, 21 Aug 2009)
@@ -1,4 +1,4 @@
-/*! \file 2d_area_fill.cpp
+/*! \file demo_2d_area_fill.cpp
   \brief Demonstration of area fill below curves.
   \details Using some trig functions to show how to area fill.
 

Added: sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_2d_bad_function.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_2d_bad_function.cpp 2009-08-21 05:36:12 EDT (Fri, 21 Aug 2009)
@@ -0,0 +1,141 @@
+/*! \file demo_2d_bad_function.cpp
+ \brief Demonstration of badly behaved function like tan
+ \details Problemn with line not being draw because of singularity.
+
+ \date 2009
+ \author Paul A. Bristow
+*/
+
+// Copyright Paul A. Bristow 2009
+
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt
+// or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#include <boost/svg_plot/svg_2d_plot.hpp>
+ using namespace boost::svg; // Needed to get svg colors and others.
+ using boost::svg::svg_2d_plot;
+
+#include <map>
+ using std::map; // STL container for data.
+#include <cmath>
+ using std::tan;
+
+double my_tan(double x)
+{
+ return 50. * tan(x);
+}
+
+int main()
+{
+ // Container for some trig data.
+ map<double, double> data_tan;
+
+ double inter = 3.141592653589793 / 8.; // 16 points per cycle of 2 pi.
+ // Problem here if pi is more accurate (adding 3 at end) = 3.141592653589793
+ // tan line - going to infinity and back does not show.
+ // This is because tan is at +infinity or -infinity.
+ // tan is very badly behaved and floating-point is evil!
+
+ // Problem seems to be caused by the line going to large minus instead of large plus
+ // But changing anything seems to make things come right again.
+ // TODO perhaps resolve this. May not be a common problem.
+
+ double x_min = 0.;
+ double x_max = 10.;
+
+ for(double i = 0.; i <= x_max; i += inter)
+ { //
+ data_tan[i] = my_tan(i);
+ cout << i << ' '<< data_tan[i] << endl;
+ } // for
+
+ svg_2d_plot my_plot;
+
+ // Size & scale settings.
+ my_plot.size(700, 500)
+ .x_range(x_min -1, x_max) // Leave blank space below x_min.
+ .y_range(-75, 75);
+
+ // Text settings.
+ my_plot.title("Plot of 50 * tan(x)")
+ .title_font_size(20)
+ .title_color(red)
+ .x_label("x")
+ .y_label("50 * f(x)")
+ .x_major_labels_side(bottom) // X axis label below bottom of plot window (default).
+ .y_major_labels_side(left) // Y axis label to left of plot window (default).
+ .x_major_grid_on(true) // Use grids.
+ .y_major_grid_on(true)
+ .x_major_grid_color(cyan)
+ .y_major_grid_color(cyan)
+ ;
+
+ // Color settings.
+ my_plot.background_color(whitesmoke)
+ .legend_background_color(lightyellow)
+ .legend_border_color(yellow)
+ .plot_background_color(ghostwhite)
+ ;
+ // X axis settings.
+ my_plot.x_major_interval(2)
+ .x_major_tick_length(14)
+ .x_major_tick_width(1)
+ .x_minor_tick_length(7)
+ .x_minor_tick_width(1)
+ .x_num_minor_ticks(3)
+
+ // Y axis settings.
+ .y_major_interval(25)
+ .y_num_minor_ticks(4); // 4 minor ticks between 0 to 25, so mark major 0, minor 5, 10, 15, 20, major 25 ...
+
+
+ // svg_2d_plot_series& s_tan =
+ my_plot.plot(data_tan, "tan(x)").shape(cone).line_on(true).line_color(red);
+
+ std::cout << my_plot.title() << std::endl; // "Plot of 50 * (x)"
+
+ my_plot.write("./demo_2d_bad_function_1.svg");
+
+
+
+ return 0;
+} // int main()
+
+/*
+
+Output:
+
+Autorun "j:\Cpp\SVG\Debug\demo_2d_bad_function.exe
+0 0
+0.392699 20.7107
+0.785398 50
+1.1781 120.711
+1.5708 8.16562e+017
+1.9635 -120.711
+2.35619 -50
+2.74889 -20.7107
+3.14159 -6.12323e-015
+3.53429 20.7107
+3.92699 50
+4.31969 120.711
+4.71239 2.72187e+017
+5.10509 -120.711
+5.49779 -50
+5.89049 -20.7107
+6.28319 7.65714e-014
+6.67588 20.7107
+7.06858 50
+7.46128 120.711
+7.85398 -1.5401e+016
+8.24668 -120.711
+8.63938 -50
+9.03208 -20.7107
+9.42478 2.48084e-013
+9.81748 20.7107
+Plot of 50 * tan(x)
+Build Time 0:05
+
+
+*/

Modified: sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_2d_plot.cpp
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_2d_plot.cpp (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_2d_plot.cpp 2009-08-21 05:36:12 EDT (Fri, 21 Aug 2009)
@@ -290,7 +290,7 @@
 copyright_holder
 description
 document_title
-image_x_size 700
+x_size 700
 image_y_size 500
 image_size 700, 500
 image_filename
@@ -454,7 +454,7 @@
 copyright_holder
 description
 document_title
-image_x_size 700
+x_size 700
 image_y_size 500
 image_size 700, 500
 image_filename
@@ -618,7 +618,7 @@
 copyright_holder
 description
 document_title
-image_x_size 700
+x_size 700
 image_y_size 500
 image_size 700, 500
 image_filename
@@ -782,7 +782,7 @@
 copyright_holder
 description
 document_title
-image_x_size 700
+x_size 700
 image_y_size 500
 image_size 700, 500
 image_filename
@@ -946,7 +946,7 @@
 copyright_holder
 description
 document_title
-image_x_size 700
+x_size 700
 image_y_size 500
 image_size 700, 500
 image_filename
@@ -1110,7 +1110,7 @@
 copyright_holder
 description
 document_title
-image_x_size 700
+x_size 700
 image_y_size 500
 image_size 700, 500
 image_filename
@@ -1274,7 +1274,7 @@
 copyright_holder
 description
 document_title
-image_x_size 700
+x_size 700
 image_y_size 500
 image_size 700, 500
 image_filename
@@ -1438,7 +1438,7 @@
 copyright_holder
 description
 document_title
-image_x_size 700
+x_size 700
 image_y_size 500
 image_size 700, 500
 image_filename

Modified: sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_2d_simple.cpp
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_2d_simple.cpp (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_2d_simple.cpp 2009-08-21 05:36:12 EDT (Fri, 21 Aug 2009)
@@ -4,7 +4,7 @@
     This demonstrates plotting some simple math functions with most of the 2-D defaults,
     just changing a few typical details.
     The detailed output shows the plot settings for each plot.
- See default_2d_plot.cpp for using *all* defaults.
+ See default_2d_plot.cpp for using \b all defaults.
     See also demo_2d_plot.cpp for use of some of the very many options.
     \date Feb 2009
     \author Jacob Voytko and Paul A. Bristow

Modified: sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_2d_weather.cpp
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_2d_weather.cpp (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_2d_weather.cpp 2009-08-21 05:36:12 EDT (Fri, 21 Aug 2009)
@@ -108,10 +108,11 @@
 
   const char comma_or_tab = ','; // separator - assumed comma for .csv file.
 
- bool diag = false;
+ //bool diag = false;
 
   map<double, double> in_temps; // record number and value.
   map<double, double> out_temps;
+ map<double, double> rain_hours;
 
   const char* weather("I:\\boost-sandbox\\SOC\\2007\\visualization\\libs\\svg_plot\\example\\EasyWeather7mar09.csv"); // The weather data, comma separated, with one column title line.
   ifstream fin(weather, ios_base::in);
@@ -337,6 +338,7 @@
       plotted++;
       in_temps[j] = in_temp;
       out_temps[j] = out_temp;
+ rain_hours[j] = rain_hour;
     }
   }
   while (line.size() > 0);
@@ -353,18 +355,18 @@
 /*` The code below shows plotting just the inside and outside temperatures,
 selecting the range of the axis by a user choice or automatically.
 */
-
  
- /*` SVG_plot range_all is another mechanism for handling multiple containers
+/*` SVG_plot range_all is another mechanism for handling multiple containers
  providing a more convenient way to find the minimum of minimums and maximum of maximums.
 It is especially convenient when there are many containers (of the same type),
 and there may be 'missing' data items.
-
 */
     {
       svg_2d_plot my_plot; // Construct a 2D plot.
 
- my_plot.legend_on(true) // Set title and legend, and X axis range.
+ my_plot.x_size(1000)
+ .image_y_size(400)
+ .legend_on(true) // Set title and legend, and X axis range.
              .title("Temperatures at Long: 2:45:16.2W, Lat:54:17:47.1N")
              .x_range(0., 2000.)
              .x_major_interval(500.)
@@ -393,7 +395,7 @@
       //my_plot.plot(out_temps, "Outside (&#x00B0;C)"); // default is black circle, 5 pixel size, with no fill.
       my_plot.plot(out_temps, "Outside (&#x00B0;C)").stroke_color(blue).shape(point);
 
-/*`Note how the point markers are switch off for the inside temperatures,
+/*`Note how the point markers are switched off for the inside temperatures,
 and a bezier line chosen
 but the point markers are set to `round` for the outside temperatures,
 giving an less attractive spotty appearance, but showing the actual data points.
@@ -404,28 +406,62 @@
 so one can either use autoscale or explicitly set the number of X ticks.
 
 */
- my_plot.write("./demo_2d_weather.svg"); // Write the plot to another file.
+ my_plot.write("./demo_2d_weather_1.svg"); // Write the plot to file.
 
- // Show the ticks styling
-cout << "my_plot.x_ticks_values_color() " << my_plot.x_ticks_values_color() << endl;
-cout << "my_plot.x_ticks_values_font_family() " << my_plot.x_ticks_values_font_family() << endl;
-cout << "my_plot.x_ticks_values_color() " << my_plot.x_ticks_values_color() << endl;
-cout << "my_plot.x_ticks_values_precision() " << my_plot.x_ticks_values_precision() << endl;
-cout << "my_plot.x_ticks_values_ioflags() " << hex << my_plot.x_ticks_values_ioflags() << dec << endl;
-
-cout << "my_plot.y_ticks_values_color() " << my_plot.y_ticks_values_color() << endl;
-//cout << "my_plot.y_ticks_values_font_family() " << my_plot.y_ticks_values_font_family() << endl;
-cout << "my_plot.y_ticks_values_color() " << my_plot.y_ticks_values_color() << endl;
-cout << "my_plot.y_ticks_values_precision() " << my_plot.y_ticks_values_precision() << endl;
-cout << "my_plot.y_ticks_values_ioflags() " << hex << my_plot.y_ticks_values_ioflags() << dec << endl;
-
-// Show the X, Y styling.
-cout << "my_plot.x_values_color() " << my_plot.x_values_color() << endl;
-cout << "my_plot.x_values_font_family() " << my_plot.x_values_font_family() << endl;
-cout << "my_plot.x_values_color() " << my_plot.x_values_color() << endl;
-cout << "my_plot.x_values_precision() " << my_plot.x_values_precision() << endl;
-cout << "my_plot.x_values_ioflags() " << hex << my_plot.x_values_ioflags() << dec << endl;
- }
+ // Show the ticks styling
+ cout << "my_plot.x_ticks_values_color() " << my_plot.x_ticks_values_color() << endl;
+ cout << "my_plot.x_ticks_values_font_family() " << my_plot.x_ticks_values_font_family() << endl;
+ cout << "my_plot.x_ticks_values_color() " << my_plot.x_ticks_values_color() << endl;
+ cout << "my_plot.x_ticks_values_precision() " << my_plot.x_ticks_values_precision() << endl;
+ cout << "my_plot.x_ticks_values_ioflags() " << hex << my_plot.x_ticks_values_ioflags() << dec << endl;
+
+ cout << "my_plot.y_ticks_values_color() " << my_plot.y_ticks_values_color() << endl;
+ //cout << "my_plot.y_ticks_values_font_family() " << my_plot.y_ticks_values_font_family() << endl;
+ cout << "my_plot.y_ticks_values_color() " << my_plot.y_ticks_values_color() << endl;
+ cout << "my_plot.y_ticks_values_precision() " << my_plot.y_ticks_values_precision() << endl;
+ cout << "my_plot.y_ticks_values_ioflags() " << hex << my_plot.y_ticks_values_ioflags() << dec << endl;
+
+ // Show the X, Y styling.
+ cout << "my_plot.x_values_color() " << my_plot.x_values_color() << endl;
+ cout << "my_plot.x_values_font_family() " << my_plot.x_values_font_family() << endl;
+ cout << "my_plot.x_values_color() " << my_plot.x_values_color() << endl;
+ cout << "my_plot.x_values_precision() " << my_plot.x_values_precision() << endl;
+ cout << "my_plot.x_values_ioflags() " << hex << my_plot.x_values_ioflags() << dec << endl;
+ }
+ { // Plot another graph.
+ svg_2d_plot my_plot; // Construct a 2D plot.
+
+ my_plot.x_size(1000)
+ .image_y_size(400)
+ .legend_on(true) // Set title and legend, and X axis range.
+ .title("Rainfall at Long: 2:45:16.2W, Lat:54:17:47.1N")
+ .x_range(0., 2000.)
+ .x_major_interval(500.)
+ .x_ticks_values_color(red)
+ .x_num_minor_ticks(4)
+ .x_axis_label_color(green)
+ .x_ticks_values_precision(0)
+ .x_ticks_values_ioflags(ios_base::fixed)
+ .x_ticks_values_font_family("arial")
+ .x_ticks_values_font_size(20)
+ //.autoscale_check_limits(true) // Is default, but check for NaN, infinity etc.
+ //.xy_autoscale(in_temps) // Autoscale BOTH axes.
+ // Implementation does not (yet) permit use of the container for .x_autoscale(in_temps),
+ // but can ignore the autoscale range thus:
+ .y_range(0., 10.) // User chosen range, over-riding the autoscale.
+ .y_ticks_values_color(magenta)
+ .y_ticks_values_precision(1)
+ //.y_ticks_values_ioflags(ios_base::scientific)
+ .y_axis_label_color(blue)
+ ;
+
+ my_plot.x_label("time (hr)").y_label("rain (mm/hr)"); // Note chaining.
+ my_plot.plot(rain_hours, "rain (mm/hr)").stroke_color(red).line_on(true).line_color(red);
+
+ my_plot.write("./demo_2d_weather_2.svg"); // Write the plot to file.
+
+
+ }
   }
   catch(const std::exception& e)
   {

Modified: sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_FP_compare.cpp
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_FP_compare.cpp (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_FP_compare.cpp 2009-08-21 05:36:12 EDT (Fri, 21 Aug 2009)
@@ -1,5 +1,5 @@
-/* \file demo_FP_compare.cpp
- \brief demonstrate features of floating-point comparisons to find if values are close to each other,
+/*! \file demo_FP_compare.cpp
+ \brief Demonstrate features of floating-point comparisons to find if values are close to each other,
     or are too small to be significantly different from zero.
 
   \author Paul A. Bristow
@@ -173,17 +173,17 @@
 false
 false
 close_to() t1.size() 1e-015 weak
-close_to<float> tdf.size() = 2.38419e-007 strong
-close_to<double> tds.size() = 1e-014 strong
+close_to<float> tdf.size() = 2.38419e-007 strong
+close_to<double> tds.size() = 1e-014 strong
 close_to<double> tdw.size() = 1e-014 weak
-close_to<double> tdd.size() = 4.44089e-016 strong
-close_to<double> tdds.size() = 1e-014 strong
-close_to<double> t.size() = 4.44089e-016 strong
-close_to<double> tdd.size() = 4.44089e-016 strong
+close_to<double> tdd.size() = 4.44089e-016 strong
+close_to<double> tdds.size() = 1e-014 strong
+close_to<double> t.size() = 4.44089e-016 strong
+close_to<double> tdd.size() = 4.44089e-016 strong
 neq(0) true
 neq(0.) true
 neq(1 * numeric_limits<double>::min()) false
-2.22507e-3082.22507e-308 strong
+2.22507e-3082.22507e-308 strong
 2.22507e-3082.22507e-308 weak
 false
 true

Modified: sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_svg.cpp
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_svg.cpp (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/example/demo_svg.cpp 2009-08-21 05:36:12 EDT (Fri, 21 Aug 2009)
@@ -33,10 +33,11 @@
 #include <boost/svg_plot/svg_fwd.hpp>
 
   using namespace boost::svg;
- // Is most convenient because otherwise all the colors used must be specified thus
+ // Is most convenient because otherwise all the colors used must be specified thus:
   using boost::svg::black;
   using boost::svg::white;
   using boost::svg::red;
+ using boost::svg::blue;
   // ... which may get tedious!
 
 #include <iostream>
@@ -69,14 +70,14 @@
   cout << endl;
   // Can't return ref to shape because goes out of scope :-(
   g.push_back(new polygon_element(shaped, true) );
- return;
+ return; // reference to g_element just added.
 } // vector<poly_path_point>& symb
 
 int main()
 {
   svg my_svg;
 
- cout << "my_svg.document_size() " << my_svg.document_size() << endl; // == 0
+ cout << "Initial my_svg.document_size() " << my_svg.document_size() << endl; // == 0
 
   // Check default and change image size.
   cout << "my_svg.x_size() = " << my_svg.x_size() << ", my_svg.y_size() = " << my_svg.y_size() << endl;
@@ -87,7 +88,10 @@
 
   boost::svg::text_element t;
   t.textstyle().font_family("arial");
- cout << t.textstyle().font_family() << endl; // arial
+ cout << t.textstyle().font_family() << endl; // echos "arial".
+
+ // Exercise a few document metadata items.
+ my_svg.document_title("Demo SVG document title");
 
   my_svg.license("permits", "permits", "permits", "permits");
   my_svg.license_on(true);
@@ -96,7 +100,7 @@
   my_svg.boost_license_on(true);
   cout << "my_svg.boost_license_on() " << my_svg.boost_license_on() << endl;
 
- my_svg.image_filename("demo_svg");
+ my_svg.image_filename("demo_svg"); // File into which SVG XML will be written.
   cout << "my_svg.image_filename() " << my_svg.image_filename() << endl;
 
   // Default background color is black, rgb(0,0,0)
@@ -104,24 +108,23 @@
   // my_svg.g(0).push_back(new rect_element(0, 0, my_svg.x_size(), my_svg.y_size() ) );
   // background
 
- // g_element& a1 =
- my_svg.add_g_element(); // Add first (zeroth) new element,
+ my_svg.add_g_element(); // Add first (zeroth) new element to the document,
 
- cout << "my_svg.document_size() " << my_svg.document_size() << endl;
+ cout << "After one add_g_element my_svg.document_size() = " << my_svg.document_size() << endl;
 
   g_element& g0 = my_svg.g(0); // so index is zero.
   cout << "my_svg.document_size() = number of g_elements = " << my_svg.document_size() << endl; // == 1
   my_svg.g(0).push_back(new rect_element(0, 0, my_svg.x_size(), my_svg.y_size() ) ); // border to image.
- g0.id("group element 0");
- cout << g0.id() << endl;
-
- cout << "my_svg.document_size() = number of g_elements = " << my_svg.document_size() << endl; // == 1
+ g0.id("group element 0"); // Add an ID to this group.
+ cout << "g0.id() " << g0.id() << endl; // echo it.
 
+ // Show the default colors of the group element g0 added above.
   cout << "fill color = " << g0.style().fill_color() << endl; // fill color = RGB(0,0,0) == black
   cout << "fill on " << boolalpha << g0.style().fill_on() << endl; // false
   cout << "stroke color = " << g0.style().stroke_color() << endl; // stroke color = RGB(0,0,0)
   cout << "stroke on " << boolalpha << g0.style().stroke_on() << endl; // stroke on false
- cout << "stroke width " << boolalpha << g0.style().stroke_width() << endl; //
+ cout << "stroke width " << boolalpha << g0.style().stroke_width() << endl;
+ // Change a svg style - color and width, and fill.
   g0.style().stroke_on(true); // stroke on true
   g0.style().stroke_color(red); //
   g0.style().stroke_width(5);
@@ -131,20 +134,27 @@
   cout << "fill color = " << g0.style().fill_color() << endl; // fill color = RGB(0,0,0) == black
   cout << "fill on " << boolalpha << g0.style().fill_on() << endl; // false
   cout << "stroke color = " << g0.style().stroke_color() << endl; // stroke color = RGB(0,0,0)
- cout << "stroke on " << boolalpha << g0.style().stroke_on() << endl; // stroke on false
- cout << "width on " << boolalpha << g0.style().width_on() << endl;
+ cout << "stroke on " << boolalpha << g0.style().stroke_on() << endl; // stroke on true
+ cout << "width on " << boolalpha << g0.style().width_on() << endl; // width on true
   g0.style().stroke_on(true); // stroke on true
+ // This might generate svg xml like this:
   //<g stroke="rgb(255,0,0)" fill="rgb(255,255,255)" stroke-width="10"><rect x="0" y="0" width="500" height="600"/></g>
 
- rect_element r(20, 20, 50, 50);
- cout << r << endl; // rect(20, 20, 50, 50)
+ rect_element r(30, 30, 40, 40);
+ cout << "rect_element r(30, 30, 40, 40); " << r << endl; // rect(30, 30, 40, 40)
 
   g0.push_back(new line_element(100, 50, 50, 100) ); // red border width 10 white fill.
   // <g stroke="rgb(255,0,0)" fill="rgb(0,0,255)" stroke-width="10"><line x1="100" y1="50" x2="50" y2="100"/></g>
+
+ cout << "After adding a line my_svg.document_size() = number of g_elements = " << my_svg.document_size() << endl; // == 1
+
   g0.push_back(new rect_element(20, 20, 50, 50) ); //
   g0.push_back(new polygon_element(30, 40, true) );
   g0.push_back(new circle_element(100, 200, 10) ); //
   g0.push_back(new ellipse_element(300, 300, 5, 3) ); //
+ cout << "After adding several shape elements my_svg.document_size() = number of g_elements = " << my_svg.document_size() << endl; // == 1
+ cout << "After adding several shape elements g0.size() = number of child elements = " << g0.size() << endl; // == 6
+
   my_svg.ellipse(300, 300, 50, 30); // has similar effect, but since not in group, is black stroke & fill.
 
   //Note: my_svg.line(100, 50, 50, 100); // only generates <line x1="100" y1="50" x2="50" y2="100"/>
@@ -153,23 +163,27 @@
   // <line stroke-width="5" stroke="red" x1="100" y1="300" x2="300" y2="100"/>
 
   poly_path_point p0(100, 200);
- cout << p0 << endl; // Ouptuts: (100, 200)
+ cout << " poly_path_point p0(100, 200); " << p0 << endl; // Outputs: (100, 200)
 
   path_element my_path;
   my_path.M(1, 2).L(3, 4).L(5, 6).z();
- path_element& my_path2 = my_svg.g(0).path();
- path_element& my_path0 = g0.path();
- my_path2.M(1, 2).L(3, 6).L(5, 4).z(); // <path d="M1,2 L3,4 L5,6 Z " />
- path_element& path = g0.path(); // OK
+ //path_element& my_path2 = my_svg.g(0).path();
+ //path_element& my_path0 = g0.path();
+ // my_path.M(1, 2).L(3, 6).L(5, 4).z(); // <path d="M1,2 L3,4 L5,6 Z " />
+ //path_element& path = g0.path(); // OK
+
+ cout << "After adding path_element my_svg.document_size() " << my_svg.document_size() << endl; // == 2
 
   polygon_element& pp = g0.polygon(); // 'empty' polygon.
   polygon_element& ppp(pp); // copy constructor.
   pp.P(400, 500); // Add a single vertex.
- pp.P(200, 300).P(100, 400).P(100, 100); // add several vertices.
+ pp.P(200, 300).P(100, 400).P(100, 100); // add several more vertices.
+ cout << "After adding polygon my_svg.document_size() " << my_svg.document_size() << endl; // 2
 
   my_svg.triangle(400, 20, 300, 100, 450, 50, false);
+ cout << "After adding triangle my_svg.document_size() " << my_svg.document_size() << endl; // 3
   my_svg.triangle(200, 20, 350, 100, 250, 100);
- cout << "my_svg.document_size() " << my_svg.document_size() << endl; // 4
+ cout << "After adding triangle my_svg.document_size() " << my_svg.document_size() << endl; // 4
   my_svg.rhombus(10, 500, 10, 550, 450, 550, 300, 500, true);
   my_svg.pentagon(100, 10, 120, 10, 130, 30, 110, 50, 110, 30, true);
   my_svg.hexagon(300, 10, 420, 10, 330, 130, 350, 150, 210, 30, 250, 60, true);
@@ -259,8 +273,7 @@
  
   //cout.precision(17);
   //double pi = 3.14159265359;
- //cout << cos(pi/6) << endl; // == cos(30)
- // == 0.86602540378442139;
+ //cout << cos(pi/6) << endl; // == cos(30) == 0.86602540378442139;
 
   array<const poly_path_point, 6> hexup =
   { // Regular point up hexagon!
@@ -286,15 +299,15 @@
 
   cout << "my_svg.document_size() " << my_svg.document_size() << endl; // 8
 
- // Adding a new group element.
- g_element& g1 = my_svg.g(1); // so index is now one.
+ // Adding a 2nd new group element.
+ g_element& g1 = my_svg.g(1); // so its index is now one.
 
- g1.id("element 1");
- cout << g1.id() << endl; // Output: element 1
+ g1.id("element 1"); // Add an ID
+ cout << "g1.id() "<< g1.id() << endl; // Outputs: element 1
   cout << "my_svg.document_size() " << my_svg.document_size() << endl; // 8 ???
 
   cout << "my_svg.add_g_element().size() " << my_svg.add_g_element().size() << endl; // 0
-
+ // Nothing added to gorup yet.
 
   my_svg.write("demo_svg.svg");
 
@@ -303,25 +316,6 @@
 
 /*
 
- svg my_svg;
- my_svg .write("demo_svg.svg");
-
-?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/graphics/svg/1.1/dtd/svg11.dtd">
-<svg width="400" height ="400" version="1.1" xmlns="http://www.w3.org/2000/svg">
-<!-- SVG plot written using Boost.Plot program (Creator Jacob Voytko) -->
-<!-- Use, modification and distribution of Boost.Plot subject to the -->
-<!-- Boost Software License, Version 1.0.-->
-<!-- (See accompanying file LICENSE_1_0.txt -->
-<!-- or copy at http://www.boost.org/LICENSE_1_0.txt) -->
-
-<!-- File test_svg.svg -->
-</svg>
-
-
-
-
-
-
 
 
 */

Modified: sandbox/SOC/2007/visualization/libs/svg_plot/example/svg_test.cpp
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/example/svg_test.cpp (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/example/svg_test.cpp 2009-08-21 05:36:12 EDT (Fri, 21 Aug 2009)
@@ -1,9 +1,9 @@
-/* \file svg_test.cpp
+/*! \file svg_test.cpp
    \brief demonstrate boxplot of common functions.
    \details This shows the distribution of the function from the median, quartiles etc.
     This is now obselete - see demo_boxplot.cpp.
 
- \author Jake Voytko
+ \author Jake Voytko
   \date Mar 2009
 */
 

Modified: sandbox/SOC/2007/visualization/libs/svg_plot/test/1d_color_consistency.cpp
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/test/1d_color_consistency.cpp (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/test/1d_color_consistency.cpp 2009-08-21 05:36:12 EDT (Fri, 21 Aug 2009)
@@ -127,21 +127,21 @@
 
   svg_1d_plot my_plot;
   // Check the default image sizes:
- BOOST_CHECK_EQUAL(my_plot.image_x_size(), 500U);
- BOOST_CHECK_EQUAL(my_plot.image_y_size(), 200U);
+ BOOST_CHECK_EQUAL(my_plot.x_size(), 500U);
+ BOOST_CHECK_EQUAL(my_plot.y_size(), 200U);
 
   my_plot.size(200U, 100U);
- BOOST_CHECK_EQUAL(my_plot.image_x_size(), 200U);
+ BOOST_CHECK_EQUAL(my_plot.x_size(), 200U);
   my_plot.size(500U, 100U); // update x
- BOOST_CHECK_EQUAL(my_plot.image_x_size(), 500U); // & check
+ BOOST_CHECK_EQUAL(my_plot.x_size(), 500U); // & check
   my_plot.size(500U, 300U); // update y
- BOOST_CHECK_EQUAL(my_plot.image_y_size(), 300U); // & check
+ BOOST_CHECK_EQUAL(my_plot.y_size(), 300U); // & check
 
- // // cout << my_plot.image_x_size() << endl; // 500
- //BOOST_CHECK_EQUAL(my_plot.image_x_size(), 500U);
+ // // cout << my_plot.x_size() << endl; // 500
+ //BOOST_CHECK_EQUAL(my_plot.x_size(), 500U);
  // // Check that test really works by checking the wrong answer!
- ////BOOST_CHECK_EQUAL(my_plot.image_x_size(), 400U);
- // // check my_plot.image_x_size() == 400U failed [500 != 400]
+ ////BOOST_CHECK_EQUAL(my_plot.x_size(), 400U);
+ // // check my_plot.x_size() == 400U failed [500 != 400]
 
  // BOOST_CHECK_EQUAL(my_plot.legend_top_left(), std::pair(-1., -1.); // default position unassigned = -1..
  // my_plot.legend_top_left(10., 20.);

Modified: sandbox/SOC/2007/visualization/libs/svg_plot/test/1d_tests.cpp
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/test/1d_tests.cpp (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/test/1d_tests.cpp 2009-08-21 05:36:12 EDT (Fri, 21 Aug 2009)
@@ -138,21 +138,21 @@
 
   svg_1d_plot my_plot;
   // Check the default image sizes:
- BOOST_CHECK_EQUAL(my_plot.image_x_size(), 500U);
- BOOST_CHECK_EQUAL(my_plot.image_y_size(), 200U);
+ BOOST_CHECK_EQUAL(my_plot.x_size(), 500U);
+ BOOST_CHECK_EQUAL(my_plot.y_size(), 200U);
 
   my_plot.size(200U, 100U);
- BOOST_CHECK_EQUAL(my_plot.image_x_size(), 200U);
+ BOOST_CHECK_EQUAL(my_plot.x_size(), 200U);
   my_plot.size(500U, 100U); // update x
- BOOST_CHECK_EQUAL(my_plot.image_x_size(), 500U); // & check
+ BOOST_CHECK_EQUAL(my_plot.x_size(), 500U); // & check
   my_plot.size(500U, 300U); // update y
- BOOST_CHECK_EQUAL(my_plot.image_y_size(), 300U); // & check
+ BOOST_CHECK_EQUAL(my_plot.y_size(), 300U); // & check
 
- // cout << my_plot.image_x_size() << endl; // 500
- BOOST_CHECK_EQUAL(my_plot.image_x_size(), 500U);
+ // cout << my_plot.x_size() << endl; // 500
+ BOOST_CHECK_EQUAL(my_plot.x_size(), 500U);
  // Check that test really works by checking the wrong answer!
-// BOOST_CHECK_EQUAL(my_plot.image_x_size(), 400U);
- // // check my_plot.image_x_size() == 400U failed [500 != 400]
+// BOOST_CHECK_EQUAL(my_plot.x_size(), 400U);
+ // // check my_plot.x_size() == 400U failed [500 != 400]
 
   std::pair<double, double> const def(-1., -1.); // needs operator<<
   std::pair<double, double> tl(my_plot.legend_top_left()); //


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