<?xml version="1.0"?>
<doc>
    <assembly>
        <name>TreemapGenerator</name>
    </assembly>
    <members>
        <member name="T:Microsoft.Research.CommunityTechnologies.GraphicsLib.ColorGradientMapper">
            <summary>
            Maps a range of color metric values to colors within a gradient.
            </summary>
            
            <remarks>
            Call the Initialize() method to specify the color metric range, the color
            gradient to map the range to, and the number of discrete colors to split
            the gradient into.  You can then call ColorMetricToColor() to map a color
            metric within the range to one of the discrete colors within the gradient,
            or ColorMetricToBrush() to get a corresponding brush.
            
            <para>
            Call Dispose() when you are done using the object.
            </para>
            
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.GraphicsLib.ColorGradientMapper.Initialize(System.Drawing.Graphics,System.Single,System.Single,System.Drawing.Color,System.Drawing.Color,System.Int32,System.Boolean)">
            <summary>
            Initializes the object.
            </summary>
            
            <param name="oGraphics">
            Graphics object that will use the colors created by this object.
            </param>
            
            <param name="fMinColorMetric">
            Minimum color metric to map.
            </param>
            
            <param name="fMaxColorMetric">
            Maximum color metric to map.
            </param>
            
            <param name="oMinColor">
            Color to map to fMinColorMetric.
            </param>
            
            <param name="oMaxColor">
            Color to map to fMaxColorMetric.
            </param>
            
            <param name="iDiscreteColorCount">
            Number of discrete colors to split the color gradient into.  Must be
            between 2 and 256.
            </param>
            
            <param name="bCreateBrushes">
            true to create an array of brushes so that ColorMetricToBrush() can be
            called.
            </param>
            
            <remarks>
            This must be called before any other methods or properties are used.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.GraphicsLib.ColorGradientMapper.ColorMetricToColor(System.Single)">
            <summary>
            Maps a color metric to a color.
            </summary>
            
            <param name="fColorMetric">
            Color metric to map.
            </param>
            
            <returns>
            Color within the gradient specified in the Initialize() method.
            </returns>
            
            <remarks>
            This method maps a color metric to a discrete color within the
            gradient specified in the Initialize() call.
            
            <para>
            If fColorMetric is less than the fMinColorMetric value specified in
            Initialize(), the minimum color is returned.  If fColorMetric is
            greater than the fMaxColorMetric value, the maximum color is returned.
            </para>
            
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.GraphicsLib.ColorGradientMapper.ColorMetricToBrush(System.Single)">
            <summary>
            Maps a color metric to a brush.
            </summary>
            
            <param name="fColorMetric">
            Color metric to map.
            </param>
            
            <returns>
            Brush with a color within the gradient specified in the Initialize()
            method.
            </returns>
            
            <remarks>
            This method maps a color metric to a brush with a discrete color within
            the gradient specified in the Initialize() call.
            
            <para>
            The returned brush is owned by the ColorGradientMapper object.  Do
            not call the brush's Dispose() method.
            </para>
            
            <para>
            If fColorMetric is less than the fMinColorMetric value specified in
            Initialize(), the minimum color brush is returned.  If fColorMetric is
            greater than the fMaxColorMetric value, the maximum color brush is
            returned.
            </para>
            
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.GraphicsLib.ColorGradientMapper.Dispose">
            <summary>
            Releases all resources used by this object.
            </summary>
            
            <remarks>
            Call this when you are done with the object.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.GraphicsLib.ColorGradientMapper.CreateDiscreteColors(System.Drawing.Graphics,System.Drawing.Color,System.Drawing.Color,System.Int32)">
            <summary>
            Creates an array of discrete colors.
            </summary>
            
            <param name="oGraphics">
            Graphics object that will use the colors created by this object.
            </param>
            
            <param name="oMinColor">
            Color to map to fMinColorMetric.
            </param>
            
            <param name="oMaxColor">
            Color to map to fMaxColorMetric.
            </param>
            
            <param name="iDiscreteColorCount">
            Number of discrete colors to split the color gradient into.  Must be
            between 2 and 256.
            </param>
            
            <returns>
            Array of discrete colors.
            </returns>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.GraphicsLib.ColorGradientMapper.CreateDiscreteBrushes(System.Drawing.Color[])">
            <summary>
            Creates an array of brushes with the specified colors.
            </summary>
            
            <param name="aoDiscreteColors">
            Array of colors.  One brush is created for each color.
            </param>
            
            <returns>
            Array of brushes.
            </returns>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.GraphicsLib.ColorGradientMapper.ColorMetricToArrayIndex(System.Single)">
            <summary>
            Maps a color metric to an index into the m_aoDiscreteColors and
            m_aoDiscreteBrushes arrays.
            </summary>
            
            <param name="fColorMetric">
            Color metric to map.
            </param>
            
            <returns>
            Index into the m_aoDiscreteColors and m_aoDiscreteBrushes arrays.
            </returns>
        </member>
        <member name="T:Microsoft.Research.CommunityTechnologies.GraphicsLib.ColorModifier">
            <summary>
            Performs various modifications on Color objects.
            </summary>
            
            <remarks>
            This class adds functionality to the System.Drawing.Color class.  A better
            design would have a new ColorPlus class inherit from Color, with new
            methods added to ColorPlus, but because the Color class is sealed, that
            isn't possible.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.GraphicsLib.ColorModifier.RGBToHSB(System.Drawing.Color,System.Single@,System.Single@,System.Single@)">
            <summary>
            RGBToHSB method.
            </summary>
            
            <param name="oColor">
            Color.  RGB color to convert to HSB.
            </param>
            
            <param name="fHue">
            Single.  Where the hue component gets stored, in degrees.  Ranges from
            0 to 360.
            </param>
            
            <param name="fSaturation">
            Single.  Where the saturation component gets stored.  Ranges from 0
            to 1.0, where 0 is grayscale and 1.0 is the most saturated.
            </param>
            
            <param name="fBrightness">
            Single.  Where the brightness component gets stored.  Ranges from 0
            to 1.0, where 0 represents black and 1.0 represents white.
            </param>
            
            <remarks>
            This method converts a Color object to the HSB color space.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.GraphicsLib.ColorModifier.HSBToRGB(System.Single,System.Single,System.Single)">
            <summary>
            HSBToRGB method.
            </summary>
            
            <param name="fHue">
            Single.  Hue component, in degrees.  Ranges from 0 to 360.
            </param>
            
            <param name="fSaturation">
            Single.  Saturation component.  Ranges from 0 to 1.0, where 0 is
            grayscale and 1.0 is the most saturated.
            </param>
            
            <param name="fBrightness">
            Single.  Brightness component.  Ranges from 0 to 1.0, where 0
            represents black and 1.0 represents white.
            </param>
            
            <returns>
            Color.  RGB Color object.
            </returns>
            
            <remarks>
            This method converts an HSB color to an RGB Color object.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.GraphicsLib.ColorModifier.SetBrightness(System.Drawing.Color,System.Single)">
            <summary>
            SetBrightness method.
            </summary>
            
            <param name="oColor">
            Color.  RGB color to set the brightness for.
            </param>
            
            <param name="fBrightness">
            Single.  Brightness to set oColor to.  Ranges from 0 to 1.0, where 0
            represents black and 1.0 represents white.
            </param>
            
            <returns>
            Color.  Copy of oColor with modified brightness.
            </returns>
            
            <remarks>
            This method modifies the brightness of an RGB Color object without
            affecting the hue or saturation.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.GraphicsLib.ColorModifier.ColorRGBToHLS(System.Int32,System.Int32@,System.Int32@,System.Int32@)">
            <summary>
            ColorRGBToHLS method.
            </summary>
            
            <param name="clrRGB">
            Int32.  RGB color to convert to HLS.
            </param>
            
            <param name="pwHue">
            Int32.  Where the hue component gets stored, in degrees.  Ranges from
            0 to 240.
            </param>
            
            <param name="pwLuminance">
            Int32.  Where the luminance component gets stored.  Ranges from 0
            to 240, where 0 represents black and 240 represents white.
            </param>
            
            <param name="pwSaturation">
            Int32.  Where the saturation component gets stored.  Ranges from 0
            to 240, where 0 is grayscale and 240 is the most saturated.
            </param>
            
            <remarks>
            This Windows API converts an RGB color to the HLS color space.  Note
            the parameter order, which corresponds to H-B-S, not H-S-B.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.GraphicsLib.ColorModifier.ColorHLSToRGB(System.Int32,System.Int32,System.Int32)">
            <summary>
            ColorHLSToRGB method.
            </summary>
            
            <param name="wHue">
            Int32.  Hue component.  Ranges from 0 to 240.
            </param>
            
            <param name="wLuminance">
            Int32.  Luminance component.  Ranges from 0 to 240, where 0 represents
            black and 240 represents white.
            </param>
            
            <param name="wSaturation">
            Int32.  Saturation component.  Ranges from 0 to 240, where 0 is
            grayscale and 240 is the most saturated.
            </param>
            
            <returns>
            Int32.  RGB color.
            </returns>
            
            <remarks>
            This Windows API converts an HLS color to the RGB color space.
            </remarks>
        </member>
        <member name="T:Microsoft.Research.CommunityTechnologies.Treemap.EmptySpace">
            <summary>
            Represents the empty space within a parent rectangle.
            </summary>
            
            <remarks>
            The <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.Nodes"/> collection owned by each <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/>
            object has an <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Nodes.EmptySpace"/> property.  EmptySpace has a
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.EmptySpace.SizeMetric"/> property that determines how much empty space
            appears in the upper right corner of the parent rectangle corresponding to
            the <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/>.
            
            <para>
            See <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.SizeMetric"/> for details on how the size of each
            node rectangle is computed and how EmptySpace is involved in the
            computations.
            </para>
            
            </remarks>
            
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.SizeMetric"/>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.EmptySpace.#ctor">
            <summary>
            Initializes a new instance of the EmptySpace class.
            </summary>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.EmptySpace.AssertValid">
            <summary>
            Displays a message if the object is in an invalid state.
            </summary>
            
            <remarks>
            This is available in the debug build only.  It checks the object's
            internal state and calls <see cref="M:System.Diagnostics.Debug.Assert(System.Boolean)"/> if it detects a
            problem.
            </remarks>
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.EmptySpace.m_fSizeMetric">
            Determines the size of the empty space.
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.EmptySpace.SizeMetric">
            <summary>
            Gets or sets the size of the empty space in the parent rectangle.
            </summary>
            
            <value>
            A metric that determines the size of the empty space in the parent
            rectangle.  Must be greater than or equal to zero.
            </value>
        </member>
        <member name="T:Microsoft.Research.CommunityTechnologies.Treemap.FontForRectangle">
            <summary>
            Provides a Font object to use for drawing text inside a rectangle.
            </summary>
            
            <remarks>
            Call the Initialize() method to specify font information.  You can then
            call CanFitInRectangle() to determine whether the font can be used to draw
            specified text inside a specified rectangle without exceeding the
            rectangle's bounds.
            
            <para>
            Call Dispose() when you are done using the object.
            </para>
            
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.FontForRectangle.Initialize(System.String,System.Single,System.Drawing.Graphics)">
            <summary>
            Initialize method.
            </summary>
            
            <param name="sFamily">
            String.  Font family.
            </param>
            
            <param name="fEmSize">
            Single.  Font size.
            </param>
            
            <param name="oGraphics">
            Graphics.  Used to obtain font metrics.
            </param>
            
            <remarks>
            This must be called before any other methods or properties are used.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.FontForRectangle.CanFitInRectangle(System.String,System.Drawing.RectangleF)">
            <summary>
            CanFitInRectangle method.
            </summary>
            
            <param name="sText">
            String.  Text that will be drawn in oRectangle.
            </param>
            
            <param name="oRectangle">
            RectangleF.  Rectangle that sText will be drawn in.
            </param>
            
            <returns>
            true if the font can be used to draw the text into the rectangle.
            </returns>
            
            <remarks>
            Determines whether the font can be used to draw the specified text
            inside the specified rectangle without exceeding the rectangle's
            bounds.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.FontForRectangle.Dispose">
            <summary>
            Dispose method.
            </summary>
            
            <remarks>
            Frees resources.  Call this when you are done with the object.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.FontForRectangle.AssertValid">
            <summary>
            AssertValid method.
            </summary>
            
            <remarks>
            Asserts if the object is in an invalid state.  Debug-only.
            </remarks>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.FontForRectangle.Font">
            <summary>
            Font property.
            </summary>
            
            <value>
            Font.  Font represented by the object.  Read-only.
            </value>
        </member>
        <member name="T:Microsoft.Research.CommunityTechnologies.Treemap.FontMapper">
            <summary>
            Provides a Font object to use for drawing text inside a rectangle.
            </summary>
            
            <remarks>
            Call the Initialize() method to specify a range of font sizes to use.  You
            can then call TextAndRectangleToFont() to get a Font object for drawing
            specified text in a specified rectangle.  The font is appropriate for the
            length of the text and the size of the rectangle.
            
            <para>
            Call Dispose() when you are done using the object.
            </para>
            
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.FontMapper.#ctor">
            <summary>
            FontMapper constructor.
            </summary>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.FontMapper.Initialize(System.String,System.Single,System.Single,System.Single,System.Drawing.Graphics)">
            <summary>
            Initialize method.
            </summary>
            
            <param name="sFamily">
            String.  Font family.
            </param>
            
            <param name="fMinSizePt">
            Single.  Minimum font size, in points.
            </param>
            
            <param name="fMaxSizePt">
            Single.  Maximum font size, in points.
            </param>
            
            <param name="fIncrementPt">
            Single.  Increment between fonts.
            </param>
            
            <param name="oGraphics">
            Graphics.  Used to obtain font metrics.
            </param>
            
            <remarks>
            This must be called before any other methods or properties are used.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.FontMapper.TextAndRectangleToFont(System.String,System.Drawing.RectangleF,System.Drawing.Font@)">
            <summary>
            TextAndRectangleToFont method.
            </summary>
            
            <param name="sText">
            String.  Text that will be drawn in oRectangle.
            </param>
            
            <param name="oRectangle">
            RectangleF.  Rectangle that sText will be drawn in.
            </param>
            
            <param name="oFont">
            Font.  Where the font gets stored.  The font is owned by the
            FontMapper object.  Do not call the font's Dispose() method.
            </param>
            
            <returns>
            true if a Font object was stored in oFont, false if there is no
            appropriate font.
            </returns>
            
            <remarks>
            Returns a Font object to use for drawing text in a rectangle.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.FontMapper.Dispose">
            <summary>
            Dispose method.
            </summary>
            
            <remarks>
            Frees resources.  Call this when you are done with the object.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.FontMapper.ValidateSizeRange(System.Single,System.Single,System.Single,System.String)">
            <summary>
            ValidateSizeRange method.
            </summary>
            
            <param name="fMinSizePt">
            Single.  Minimum font size, in points.  Must be > 0.
            </param>
            
            <param name="fMaxSizePt">
            Single.  Maximum font size, in points.  Must be > 0 and >= fMinSizePt.
            </param>
            
            <param name="fIncrementPt">
            Single.  Increment between fonts.  Must be > 0.
            </param>
            
            <param name="sCaller">
            String.  Name of the caller.  Used in exception messages.  Sample:
            "FontMapper.Initialize()".
            </param>
            
            <remarks>
            Throws an exception if one of the parameters is invalid.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.FontMapper.AssertValid">
            <summary>
            AssertValid method.
            </summary>
            
            <remarks>
            Asserts if the object is in an invalid state.  Debug-only.
            </remarks>
        </member>
        <member name="T:Microsoft.Research.CommunityTechnologies.GraphicsLib.GraphicsUtil">
            <summary>
            Set of static methods that perform graphics operations not available
            directly through GDI+.
            </summary>
            
            <remarks>
            Do not instantiate an object of this type.  All methods are static.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.GraphicsLib.GraphicsUtil.#ctor">
            <summary>
            Do not use this contructor.
            </summary>
            
            <remarks>
            The constructor throws an exception.  All methods on this class are
            static, so there is no need to create a GraphicsUtil object.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.GraphicsLib.GraphicsUtil.DrawCircle(System.Drawing.Graphics,System.Drawing.Pen,System.Single,System.Single,System.Single)">
            <summary>
            Draws a circle defined by a center point and radius.
            </summary>
            
            <param name="oGraphics">
            Object to draw on.
            </param>
            
            <param name="oPen">
            Pen to draw with.
            </param>
            
            <param name="fXCenter">
            x-coordinate of the circle's center.
            </param>
            
            <param name="fYCenter">
            y-coordinate of the circle's center.
            </param>
            
            <param name="fRadius">
            Radius of the circle.
            </param>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.GraphicsLib.GraphicsUtil.FillCircle(System.Drawing.Graphics,System.Drawing.Brush,System.Single,System.Single,System.Single)">
            <summary>
            Fills the interior of a circle defined by a center point and radius.
            </summary>
            
            <param name="oGraphics">
            Object to draw on.
            </param>
            
            <param name="oBrush">
            Brush to draw with.
            </param>
            
            <param name="fXCenter">
            x-coordinate of the circle's center.
            </param>
            
            <param name="fYCenter">
            y-coordinate of the circle's center.
            </param>
            
            <param name="fRadius">
            Radius of the circle.
            </param>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.GraphicsLib.GraphicsUtil.FillCircle3D(System.Drawing.Graphics,System.Drawing.Color,System.Single,System.Single,System.Single)">
            <summary>
            Fills the interior of a circle defined by a center point and radius
            using 3-D shading.
            </summary>
            
            <param name="oGraphics">
            Object to draw on.
            </param>
            
            <param name="oColor">
            Color to use.
            </param>
            
            <param name="fXCenter">
            x-coordinate of the circle's center.
            </param>
            
            <param name="fYCenter">
            y-coordinate of the circle's center.
            </param>
            
            <param name="fRadius">
            Radius of the circle.
            </param>
            
            <remarks>
            This circle is shaded to make it look as if it's a 3-D sphere.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.GraphicsLib.GraphicsUtil.RadiusToArea(System.Double)">
            <summary>
            Returns the area of a circle given its radius.
            </summary>
            
            <param name="dRadius">
            The circle's radius.
            </param>
            
            <returns>
            The circle's area.
            </returns>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.GraphicsLib.GraphicsUtil.AreaToRadius(System.Double)">
            <summary>
            Returns the radius of a circle given its area.
            </summary>
            
            <param name="dArea">
            The circle's area.
            </param>
            
            <returns>
            The circle's radius.
            </returns>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.GraphicsLib.GraphicsUtil.RectangleFToRectangle(System.Drawing.RectangleF,System.Int32)">
            <summary>
            Converts a RectangleF to a Rectangle.
            </summary>
            
            <param name="oRectangle">
            Rectangle to convert.
            </param>
            
            <param name="iPenWidthPx">
            Width of the pen that will be used to draw the rectangle.
            </param>
            
            <returns>
            Converted rectangle.
            </returns>
            
            <remarks>
            This method converts a floating-point RectangleF to an integer
            Rectangle, compensating for some GDI oddities in the process.
            
            <para>
            If precise rectangle drawing is required, the caller should convert
            all RectangleF objects to Rectangles using this method, then use the
            Graphics.DrawRectangle(Pen, Rectangle) method to draw them.  The
            floating-point version of Graphics.DrawRectangle() should not be used.
            </para>
            
            </remarks>
        </member>
        <member name="T:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent">
            <summary>
            Public properties and methods shared by the TreemapGenerator and
            TreemapControl components.
            </summary>
            
            <remarks>
            The public interfaces for the TreemapGenerator and TreemapControl
            components are nearly identical.  To make it easy for developers to write
            code that can work with either component, the components' shared properties
            and methods are defined in the ITreemapComponent interface.  Both
            components implement this interface.  Application code that needs to work
            with either component can then manipulate the ITreemapComponent interface,
            which can be obtained from either TreemapGenerator or TreemapControl.
            
            <para>
            Application code that is meant to work with only one of the components does
            not need to concern itself with this interface.
            </para>
            
            <para>
            The properties and methods in this interface are documented within the
            TreemapGenerator and TreemapControl components.  The complete documentation
            is not repeated here.
            </para>
            
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent.GetNodeLevelsWithTextRange(System.Int32@,System.Int32@)">
            <summary>
            Gets the range of node levels for which text is shown.
            </summary>
            
            <param name="minLevel">
            Minimum node level.  Level 0 is the top level.
            </param>
            
            <param name="maxLevel">
            Maximum node level.  Level 0 is the top level.
            </param>
            
            <remarks>
            For more information, see <see cref="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.GetNodeLevelsWithTextRange(System.Int32@,System.Int32@)"/>, the
            TreemapGenerator implementation of this method.  The method is also
            implemented by TreemapControl.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent.SetNodeLevelsWithTextRange(System.Int32,System.Int32)">
            <summary>
            Sets the range of node levels for which text is displayed.
            </summary>
            
            <param name="minLevel">
            Minimum node level.  Level 0 is the top level.  Must be greater than or
            equal to 0.
            </param>
            
            <param name="maxLevel">
            Maximum node level.  Level 0 is the top level.  Must be greater than or
            equal to zero and greater than or equal to <paramref name="minLevel"/>.
            </param>
            
            <remarks>
            For more information, see <see cref="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.SetNodeLevelsWithTextRange(System.Int32,System.Int32)"/>, the
            TreemapGenerator implementation of this method.  The method is also
            implemented by TreemapControl.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent.GetFontSizeRange(System.Single@,System.Single@,System.Single@)">
            <summary>
            Gets the range of font sizes used for drawing node text.
            </summary>
            
            <param name="minSizePt">
            Minimum font size, in points.
            </param>
            
            <param name="maxSizePt">
            Maximum font size, in points.
            </param>
            
            <param name="incrementPt">
            Increment between font sizes, in points.
            </param>
            
            <remarks>
            For more information, see <see cref="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.GetFontSizeRange(System.Single@,System.Single@,System.Single@)"/>, the TreemapGenerator
            implementation of this method.  The method is also implemented by
            TreemapControl.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent.SetFontSizeRange(System.Single,System.Single,System.Single)">
            <summary>
            Sets the range of font sizes used for drawing node text.
            </summary>
            
            <param name="minSizePt">
            Minimum font size, in points.
            </param>
            
            <param name="maxSizePt">
            Maximum font size, in points.
            </param>
            
            <param name="incrementPt">
            Increment between font sizes, in points.
            </param>
            
            <remarks>
            For more information, see <see cref="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.SetFontSizeRange(System.Single,System.Single,System.Single)"/>, the TreemapGenerator
            implementation of this method.  The method is also implemented by
            TreemapControl.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent.GetFontAlphaRange(System.Int32@,System.Int32@,System.Int32@)">
            <summary>
            Gets the range of transparency used for drawing node text.
            </summary>
            
            <param name="minAlpha">
            Alpha value used for the level with maximum transparency.
            </param>
            
            <param name="maxAlpha">
            Alpha value used for the level with minimum transparency.
            </param>
            
            <param name="incrementPerLevel">
            Amount that alpha is incremented from level to level.
            </param>
            
            <remarks>
            For more information, see <see cref="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.GetFontAlphaRange(System.Int32@,System.Int32@,System.Int32@)"/>, the TreemapGenerator
            implementation of this method.  The method is also implemented by
            TreemapControl.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent.SetFontAlphaRange(System.Int32,System.Int32,System.Int32)">
            <summary>
            Sets the range of transparency used for drawing node text.
            </summary>
            
            <param name="minAlpha">
            Alpha value to use for the level with maximum transparency.  Must be
            between 0 and 255.
            </param>
            
            <param name="maxAlpha">
            Alpha value to use for the level with minimum transparency.  Must be
            between 0 and 255.  Must be &gt;= <paramref name="minAlpha"/>.
            </param>
            
            <param name="incrementPerLevel">
            Amount that alpha should be incremented from level to level.  Must
            be &gt; 0.
            </param>
            
            <remarks>
            For more information, see <see cref="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.SetFontAlphaRange(System.Int32,System.Int32,System.Int32)"/>, the TreemapGenerator
            implementation of this method.  The method is also implemented by
            TreemapControl.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent.ClearNodes">
            <summary>
            Removes all nodes from the <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent.Nodes"/> collection.
            </summary>
            
            <remarks>
            For more information, see <see cref="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.ClearNodes"/>,
            the TreemapGenerator implementation of this method.  The method is also
            implemented by TreemapControl.
            </remarks>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent.Nodes">
            <summary>
            Gets the collection of top-level <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> objects.
            </summary>
            
            <value>
            For more information, see <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.Nodes"/>, the
            TreemapGenerator implementation of this property.  The property is also
            implemented by TreemapControl.
            </value>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent.NodesXml">
            <summary>
            Gets or sets the entire nested node hierarchy as an XML string.
            </summary>
            
            <value>
            For more information, see <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.NodesXml"/>, the
            TreemapGenerator implementation of this property.  The property is also
            implemented by TreemapControl.
            </value>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent.PaddingPx">
            <summary>
            Gets or sets the padding that is added to the rectangles for top-level
            nodes.
            </summary>
            
            <value>
            For more information, see <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.PaddingPx"/>,
            the TreemapGenerator implementation of this property.  The property is
            also implemented by TreemapControl.
            </value>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent.PaddingDecrementPerLevelPx">
            <summary>
            Gets or sets the number of pixels that is subtracted from the padding
            at each node level.
            </summary>
            
            <value>
            For more information, see <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.PaddingDecrementPerLevelPx"/>, the
            TreemapGenerator implementation of this property.  The property is also
            implemented by TreemapControl.
            </value>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent.PenWidthPx">
            <summary>
            Gets or sets the pen width that is used to draw the rectangles for the
            top-level nodes.
            </summary>
            
            <value>
            For more information, see <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.PenWidthPx"/>,
            the TreemapGenerator implementation of this property.  The property is
            also implemented by TreemapControl.
            </value>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent.PenWidthDecrementPerLevelPx">
            <summary>
            Gets or sets the number of pixels that is subtracted from the pen
            width at each node level.
            </summary>
            
            <value>
            For more information, see <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.PenWidthDecrementPerLevelPx"/>, the
            TreemapGenerator implementation of this property.  The property is also
            implemented by TreemapControl.
            </value>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent.BackColor">
            <summary>
            Gets or sets the treemap's background color.
            </summary>
            
            <value>
            For more information, see <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.BackColor"/>,
            the TreemapGenerator implementation of this property.  The property is
            also implemented by TreemapControl.
            </value>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent.BorderColor">
            <summary>
            Gets or sets the color of rectangle borders.
            </summary>
            
            <value>
            For more information, see <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.BorderColor"/>,
            the TreemapGenerator implementation of this property.  The property is
            also implemented by TreemapControl.
            </value>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent.MinColor">
            <summary>
            Gets or sets the maximum negative fill color.
            </summary>
            
            <value>
            For more information, see <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MinColor"/>, the
            TreemapGenerator implementation of this property.  The property is also
            implemented by TreemapControl.
            </value>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent.MaxColor">
            <summary>
            Gets or sets the maximum positive fill color.
            </summary>
            
            <value>
            For more information, see <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MaxColor"/>, the
            TreemapGenerator implementation of this property.  The property is also
            implemented by TreemapControl.
            </value>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent.MinColorMetric">
            <summary>
            Gets or sets the <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/> value to map to 
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent.MinColor"/>.
            </summary>
            
            <value>
            For more information, see <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MinColorMetric"/>, the TreemapGenerator
            implementation of this property.  The property is also implemented by
            TreemapControl.
            </value>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent.MaxColorMetric">
            <summary>
            Gets or sets the <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/> value to map to 
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent.MaxColor"/>.
            </summary>
            
            <value>
            For more information, see <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MaxColorMetric"/>, the TreemapGenerator
            implementation of this property.  The property is also implemented by
            TreemapControl.
            </value>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent.DiscreteNegativeColors">
            <summary>
            Gets or sets the number of discrete fill colors to use in the negative
            color range.
            </summary>
            
            <value>
            For more information, see <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.DiscreteNegativeColors"/>, the TreemapGenerator
            implementation of this property.  The property is also implemented by
            TreemapControl.
            </value>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent.DiscretePositiveColors">
            <summary>
            Gets or sets the number of discrete fill colors to use in the positive
            color range.
            </summary>
            
            <value>
            For more information, see <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.DiscretePositiveColors"/>, the TreemapGenerator
            implementation of this property.  The property is also implemented by
            TreemapControl.
            </value>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent.FontFamily">
            <summary>
            Gets or sets the font family to use for drawing node text.
            </summary>
            
            <value>
            For more information, see <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.FontFamily"/>,
            the TreemapGenerator implementation of this property.  The property is
            also implemented by TreemapControl.
            </value>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent.FontSolidColor">
            <summary>
            Gets or sets the color to use for node text.
            </summary>
            
            <value>
            For more information, see <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.FontSolidColor"/>, the TreemapGenerator
            implementation of this property.  The property is also implemented by
            TreemapControl.
            </value>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent.NodeLevelsWithText">
            <summary>
            Gets or sets the node levels to show text for.
            </summary>
            
            <value>
            For more information, see <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.NodeLevelsWithText"/>, the TreemapGenerator
            implementation of this property.  The property is also implemented by
            TreemapControl.
            </value>
        </member>
        <member name="T:Microsoft.Research.CommunityTechnologies.Treemap.Node">
            <summary>
            Represents one rectangle within a treemap.
            </summary>
            
            <remarks>
            Node objects are arranged in a hierarchy.  The
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent.Nodes"/> property on <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent"/> returns a <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Nodes"/>
            collection containing the top-level Node objects.  Each Node object has a
            <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Nodes"/>
            collection containing its child Node objects.  A leaf Node object has an
            empty <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Nodes"/>
            collection.
            
            <para>
            To add a Node to the hierarchy, you can use an Add method on the
            <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Nodes"/>
            collection that creates the Node and adds it in one step.  You can also
            explicitly create a new Node object and add it to the collection using the
            Add method that takes a Node object.
            </para>
            
            </remarks>
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.Node.UninitializedText">
            Values used to detect uninitialized properties.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.Node.UninitializedSizeMetric">
            
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.Node.UninitializedColorMetric">
            
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.Node.#ctor(System.String,System.Single,System.Single)">
            <overloads>
            Initializes a new instance of the Node class.
            </overloads>
            
            <summary>
            Initializes a new instance of the Node class with the specified text,
            size metric, and color metric.
            </summary>
            
            <param name="text">
            Text to display within the node's rectangle.
            </param>
            
            <param name="sizeMetric">
            Determines the size of the node's rectangle.  See
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.SizeMetric"/>.
            </param>
            
            <param name="colorMetric">
            Determines the fill color of the node's rectangle.  See
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/>.
            </param>
            
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.SizeMetric"/>
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.Node.#ctor(System.String,System.Single,System.Single,System.Object)">
            <summary>
            Initializes a new instance of the Node class with the specified text,
            size metric, color metric, and tag.
            </summary>
            
            <param name="text">
            Text to display within the node's rectangle.
            </param>
            
            <param name="sizeMetric">
            Determines the size of the node's rectangle.  See
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.SizeMetric"/>.
            </param>
            
            <param name="colorMetric">
            Determines the fill color of the node's rectangle.  See
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/>.
            </param>
            
            <param name="tag">
            Arbitrary object to associate with the node.
            </param>
            
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.SizeMetric"/>
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.Node.#ctor(System.String,System.Single,System.Single,System.Object,System.String)">
            <summary>
            Initializes a new instance of the Node class with the specified text,
            size metric, color metric, tag, and tooltip.
            </summary>
            
            <param name="text">
            Text to display within the node's rectangle.
            </param>
            
            <param name="sizeMetric">
            Determines the size of the node's rectangle.  See
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.SizeMetric"/>.
            </param>
            
            <param name="colorMetric">
            Determines the fill color of the node's rectangle.  See
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/>.
            </param>
            
            <param name="tag">
            Arbitrary object to associate with the node.
            </param>
            
            <param name="toolTip">
            Tooltip to show for the node.  This is used by the
            <see cref="!:TreemapControl"/>.  It is not used by the
            <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator"/>.
            </param>
            
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.SizeMetric"/>
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.Node.#ctor">
            <summary>
            Do not use this.
            </summary>
            
            <remarks>
            This default constructor is required for internal use by the
            XmlSerializer object.  It should not be used for anything else.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.Node.CompareTo(System.Object)">
            <summary>
            Compares this instance to a specified object and returns an indication
            of their relative values.
            </summary>
            
            <param name="otherNode">
            <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> to compare this one to.
            </param>
            
            <returns>
            See <see cref="M:System.Single.CompareTo(System.Object)"/>.
            </returns>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.Node.ToString">
            <summary>
            This member overrides <see cref="M:System.Object.ToString"/>.
            </summary>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.Node.InitializeWithValidation(System.String,System.Single,System.Single)">
            <summary>
            InitializeWithValidation() method.
            </summary>
            
            <param name="sText">
            String.  Text to display within the node's rectangle.
            </param>
            
            <param name="fSizeMetric">
            Single.  Determines the size of the node's rectangle.
            </param>
            
            <param name="fColorMetric">
            Single.  Determines the fill color of the node's rectangle.
            </param>
            
            <remarks>
            Validates the arguments and initializes the object.  This is used by
            several constructors.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.Node.GetNodeFromPoint(System.Drawing.PointF,Microsoft.Research.CommunityTechnologies.Treemap.Node@)">
            <summary>
            GetNodeFromPoint method.
            </summary>
            
            <param name="oPointF">
            PointF.  Point to get a Node object for.
            </param>
            
            <param name="oNode">
            Node.  Where the Node object gets stored.
            </param>
            
            <returns>
            Boolean.  true if a Node object was found, false if not.
            </returns>
            
            <remarks>
            Looks for the innermost node whose rectangle contains the specified
            point.  If found, the Node object is stored in oNode and true is
            returned.  false is returned otherwise.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.Node.ValidateSizeMetric(System.Single,System.String)">
            <summary>
            ValidateSizeMetric method.
            </summary>
            
            <param name="fValue">
            Single.  Value to validate.
            </param>
            
            <param name="sCaller">
            String.  Name of the caller.  Used in exception messages.  Sample:
            "Nodes.Add()".
            </param>
            
            <remarks>
            Throws an exception if iValue is not a valid SizeMetric value.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.Node.ValidateColorMetric(System.Single,System.String)">
            <summary>
            ValidateColorMetric method.
            </summary>
            
            <param name="fValue">
            Single.  Value to validate.
            </param>
            
            <param name="sCaller">
            String.  Name of the caller.  Used in exception messages.  Sample:
            "Nodes.Add()".
            </param>
            
            <remarks>
            Throws an exception if iValue is not a valid ColorMetric value.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.Node.SaveRectangle">
            <summary>
            SaveRectangle method.
            </summary>
            
            <remarks>
            Saves the Rectangle property in an internal variable.  The saved
            value can be restored by calling RestoreRectangle().  These methods
            are provided as helpers for the NodeRectangleCalculator object.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.Node.RestoreRectangle">
            <summary>
            RestoreRectangle method.
            </summary>
            
            <remarks>
            Restores the Rectangle property saved by SaveRectangle().  There can
            be only one RestoreRectangle() call for each SaveRectangle() call.
            <seealso cref="M:Microsoft.Research.CommunityTechnologies.Treemap.Node.SaveRectangle"/>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.Node.AssertValid">
            <summary>
            Displays a message if the object is in an invalid state.
            </summary>
            
            <remarks>
            This is available in the debug build only.  It checks the object's
            internal state and calls <see cref="M:System.Diagnostics.Debug.Assert(System.Boolean)"/> if it detects a
            problem.
            </remarks>
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.Node.m_sText">
            Text to display within the node's rectangle.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.Node.m_fSizeMetric">
            Determines the size of the node's rectangle.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.Node.m_fColorMetric">
            Determines the fill color of the node's rectangle.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.Node.m_oTag">
            Object the caller wants to associate with this node, or null for none.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.Node.m_sToolTip">
            Tooltip to display for this node.  This is used by the TreemapControl
            object.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.Node.m_oNodes">
            Collection of this node's child Node objects.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.Node.m_oRectangle">
            Where the node's rectangle will be drawn.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.Node.m_oSavedRectangle">
            Saved version of m_oRectangle.  See SaveRectangle().
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.Node.m_iPenWidthPx">
            Width of the pen that should be used to draw the rectangle.  This is
            stored in the Node object along with the rectangle because it's one of
            the factors used to calculate the rectangle, and it's needed again when
            the rectangle is drawn.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.Node.m_bRectangleSet">
            true if the Rectangle property has been set.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.Node.m_bRectangleSaved">
            true if SaveRectangle() has been called.
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.Text">
            <summary>
            Gets or sets the node's text.
            </summary>
            
            <value>
            The text that gets displayed in the center of the node's rectangle.
            </value>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.SizeMetric">
            <summary>
            Gets or sets the metric that determines the size of the node's
            rectangle.
            </summary>
            
            <value>
            The metric that determines the size of the node's rectangle within the
            parent rectangle.  Must be greater than or equal to zero.
            </value>
            
            <remarks>
            To compute the rectangle sizes for the nodes in a
            <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Nodes"/>
            collection, the drawing engine adds up the SizeMetric value for the
            <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> objects, adds the <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.EmptySpace.SizeMetric"/> value from the
            <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.EmptySpace"/> object owned by the
            <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Nodes"/>
            collection, and divides the sum by the size of the parent rectangle.
            This "area per SizeMetric" factor is multiplied by each node's
            SizeMetric value to obtain the size of the node's rectangle.
            
            <para>
            Thus, the size of the node's rectangle depends on the following:
            
            <list type="bullet">
            
            <item>
            <description>The node's SizeMetric value</description>
            </item>
            
            <item>
            <description>The SizeMetric values of the node's siblings</description>
            </item>
            
            <item>
            <description>The SizeMetric value of the Nodes.EmptySpace object
            </description>
            </item>
            
            <item>
            <description>The size of the parent rectangle</description>
            </item>
            
            </list>
            
            </para>
            
            </remarks>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric">
            <summary>
            Gets or sets the metric that determines the fill color of the node's
            rectangle.
            </summary>
            
            <value>
            The metric that determines fill color of the node's rectangle.
            </value>
            
            <remarks>
            The fill color of the node's rectangle is determined as follows.  Note
            that TreemapGenerator.MinColorMetric is a negative number and
            TreemapGenerator.MaxColorMetric is positive.
            
            <list type="table">
            
            <listheader>
            <term>ColorMetric Value</term>
            <description>Color</description>
            </listheader>
            
            <item>
            <term>&lt;= TreemapGenerator.MinColorMetric</term>
            <description>TreemapGenerator.MinColor</description>
            </item>
            
            <item>
            <term>&gt; TreemapGenerator.MinColorMetric and &lt; 0</term>
            <description>A color on the gradient between TreemapGenerator.MinColor
            and white</description>
            </item>
            
            <item>
            <term>0</term>
            <description>White</description>
            </item>
            
            <item>
            <term>&gt; 0 and &lt; TreemapGenerator.MaxColorMetric</term>
            <description>A color on the gradient between white and
            TreemapGenerator.MaxColor</description>
            </item>
            
            <item>
            <term>&gt;= TreemapGenerator.MaxColorMetric</term>
            <description>TreemapGenerator.MaxColor</description>
            </item>
            
            </list>
            
            </remarks>
            
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MaxColor"/>
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MaxColorMetric"/>
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MinColor"/>
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MinColorMetric"/>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.Tag">
            <summary>
            Gets or sets the arbitrary object associated with the node.
            </summary>
            
            <value>
            The arbitrary object associated with the node, as an
            <see cref="T:System.Object"/>.  The default value is null.
            </value>
            
            <remarks>
            This property exists only for the caller's convenience.  It is not used
            by the treemap components.
            </remarks>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ToolTip">
            <summary>
            Gets or sets the node's tooltip.
            </summary>
            
            <value>
            The tooltip to display for the node.
            </value>
            
            <remarks>
            The tooltip is used by the <see cref="!:TreemapControl"/>.  It is
            not used by the <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator"/>.
            </remarks>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.Nodes">
            <summary>
            Gets the collection of child <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> objects.
            </summary>
            
            <value>
            A <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Nodes"/>
            collection of child <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> objects.
            </value>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.HasBeenDrawn">
            <summary>
            HasBeenDrawn property.
            </summary>
            
            <value>
            Boolean.  true if the rectangle has been drawn.
            </value>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.Rectangle">
            <summary>
            Rectangle property.
            </summary>
            
            <value>
            RectangleF.  The node's rectangle.
            </value>
            
            <remarks>
            This property provides the floating-point rectangle that should be
            used in all rectangle calculations.  To draw the rectangle, use the
            RectangleToDraw property instead.
            
            <para>
            Do not get this property without setting it first.
            </para>
            
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.RectangleToDraw"/>
            
            </remarks>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.RectangleToDraw">
            <summary>
            RectangleToDraw property.
            </summary>
            
            <value>
            Rectangle.  The integer rectangle to draw.  Read-only.
            </value>
            
            <remarks>
            This property provides the integer rectangle that should be used for
            drawing the node's rectangle.  All rectangle calculations should use
            the floating-point Rectangle property instead.
            
            <para>
            Do not get this property without setting Rectangle first.
            </para>
            
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.Rectangle"/>
            
            </remarks>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.AspectRatio">
            <summary>
            AspectRatio property.
            </summary>
            
            <value>
            Double.  Aspect ratio of the node's rectangle.  Read-only.
            </value>
            
            <remarks>
            The aspect ratio is the ratio of the rectangle's longer side to its
            shorter side.  Do not get this property without setting
            Node.Rectangle first.  If the shorter side has a length of zero,
            Double.MaxValue is returned.
            
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.Rectangle"/>
            
            </remarks>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.PenWidthPx">
            <summary>
            PenWidthPx property.
            </summary>
            
            <value>
            Int32.  Width of the pen used to draw the node's rectangle, in pixels.
            </value>
            
            <remarks>
            Do not get this property without setting it first.
            </remarks>
        </member>
        <member name="T:Microsoft.Research.CommunityTechnologies.Treemap.NodeRectangleCalculator">
            <summary>
            Calculates rectangles for a collection of sibling Node objects so that
            they fit into a parent rectangle with no overlap.
            </summary>
            
            <remarks>
            CalculateSquarifiedRectangles() can be used to create a squarified
            treemap.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.NodeRectangleCalculator.#ctor">
            <summary>
            NodeRectangleCalculator constructor.
            </summary>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.NodeRectangleCalculator.CalculateSquarifiedRectangles(Microsoft.Research.CommunityTechnologies.Treemap.Nodes,System.Drawing.RectangleF,Microsoft.Research.CommunityTechnologies.Treemap.Node)">
            <summary>
            CalculateSquarifiedRectangles method.
            </summary>
            
            <param name="oNodes">
            Nodes.  Collection of sibling Node objects.
            </param>
            
            <param name="oParentRectangle">
            RectangleF.  Parent rectangle the nodes should be inserted into.
            Can't be empty -- must have positive width and height.
            </param>
            
            <param name="oParentNode">
            Node.  Parent of oNodes, or null if oNodes are top-level.
            </param>
            
            <remarks>
            This method uses a squarified treemap algorithm to set the Rectangle
            property on each Node object so that all the rectangles fit within a
            parent rectangle, do not overlap, are as square as possible.  In one
            call, it deals with just one set of sibling nodes and one parent
            rectangle.  To create a complete nested treemap, call
            CalculateSquarifiedRectangles() for the top-level nodes, then again for
            each node's set of child nodes, again for their children, and so on.
            
            <para>
            The calculated rectangles have borders with zero widths.  If oNodeB is
            immediately to the right of oNodeA, for example, then
            oNodeA.Rectangle.Right = oNodeB.Rectangle.Left.  The rectangles have
            no padding.
            </para>
            
            <para>
            This code is based on an algoritm presented in "Squarified Treemaps,"
            by Mark Bruls, Kees Huizing, and Jarke J. van Wijk.
            </para>
            
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.NodeRectangleCalculator.SetNodeRectanglesToEmpty(Microsoft.Research.CommunityTechnologies.Treemap.Nodes,System.Boolean)">
            <summary>
            SetNodeRectanglesToEmpty method.
            </summary>
            
            <param name="oNodes">
            Nodes.  Collection of Node objects.
            </param>
            
            <param name="bRecursive">
            Boolean.  If true, the rectangles for all descendent nodes are also
            set to empty.
            </param>
            
            <remarks>
            This method sets each node's rectangle to an empty rectangle at 0,0.
            If bRecursive is true, it then does the same to all descendent nodes.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.NodeRectangleCalculator.SetNodeRectanglesToEmpty(Microsoft.Research.CommunityTechnologies.Treemap.Node[],System.Int32,System.Int32)">
            <summary>
            SetNodeRectanglesToEmpty method.
            </summary>
            
            <param name="aoNodes">
            Array of Node objects.
            </param>
            
            <param name="iIndexOfFirstNodeToSet">
            Int32.  Index of the first node to set to empty.
            </param>
            
            <param name="iIndexOfLastNodeToSet">
            Int32.  Index of the last node to set to empty.
            </param>
            
            <remarks>
            This method sets each specified node's rectangle to an empty rectangle
            at 0,0.  It does the same for all descendent nodes.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.NodeRectangleCalculator.CalculateSquarifiedRectangles(Microsoft.Research.CommunityTechnologies.Treemap.Node[],System.Drawing.RectangleF,System.Double)">
            <summary>
            CalculateSquarifiedRectangles method.
            </summary>
            
            <param name="aoSortedNodes">
            Array of Node objects.  Contains a complete set of sibling nodes,
            sorted by Node.SizeMetric in descending order.
            </param>
            
            <param name="oParentRectangle">
            RectangleF.  Parent rectangle that the nodes should be inserted into.
            </param>
            
            <param name="dAreaPerSizeMetric">
            Double.  Area that will be taken up by each SizeMetric unit.
            </param>
            
            <remarks>
            This protected method does most of the work for the public method of
            the same name.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.NodeRectangleCalculator.InsertNodesInRectangle(Microsoft.Research.CommunityTechnologies.Treemap.Node[],System.Drawing.RectangleF,System.Int32,System.Int32,System.Double,System.Double)">
            <summary>
            InsertNodesInRectangle method.
            </summary>
            
            <param name="aoSortedNodes">
            Array of Node objects.  Contains a complete set of sibling nodes,
            sorted by Node.SizeMetric in descending order.
            </param>
            
            <param name="oParentRectangle">
            RectangleF.  Parent rectangle that the nodes should be inserted into.
            </param>
            
            <param name="iIndexOfFirstNodeToInsert">
            Int32.  Zero-based index of the first node to insert.
            </param>
            
            <param name="iIndexOfLastNodeToInsert">
            Int32.  Zero-based index of the last node to insert.
            </param>
            
            <param name="dSizeMetricSum">
            Double.  Sum of the SizeMetric values for the nodes to be inserted.
            </param>
            
            <param name="dAreaPerSizeMetric">
            Double.  Area that will be taken up by each SizeMetric unit.
            </param>
            
            <remarks>
            This method inserts a set of nodes into a rectangle.  If the rectangle
            is wider than it is tall, the nodes are inserted on top of each other
            so that they fill the left part of the rectangle from bottom to top.
            (That probably leaves some space on the right side of the rectangle.)
            If the rectangle is taller than it is wide, the nodes are inserted to
            the right of each other so that they fill the bottom of the rectangle
            from left to right.  (That probably leaves some space at the top of the
            rectangle.)
            
            <para>
            Note that the results of this method call may not be optimal.  It's up
            to the caller to determine whether the results are good and to take
            corrective action if they are not.
            </para>
            
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.NodeRectangleCalculator.SaveInsertedRectangles(Microsoft.Research.CommunityTechnologies.Treemap.Node[],System.Int32,System.Int32)">
            <summary>
            SaveInsertedRectangles method.
            </summary>
            
            <param name="aoNodes">
            Array of Node objects.
            </param>
            
            <param name="iIndexOfFirstInsertedNode">
            Int32.  Zero-based index of the first node that has been inserted.
            </param>
            
            <param name="iIndexOfLastInsertedNode">
            Int32.  Zero-based index of the last node that has been inserted.
            </param>
            
            <remarks>
            This method calls Node.SaveRectangle() for each inserted node.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.NodeRectangleCalculator.RestoreInsertedRectangles(Microsoft.Research.CommunityTechnologies.Treemap.Node[],System.Int32,System.Int32)">
            <summary>
            RestoreInsertedRectangles method.
            </summary>
            
            <param name="aoNodes">
            Array of Node objects.
            </param>
            
            <param name="iIndexOfFirstInsertedNode">
            Int32.  Zero-based index of the first node that has been inserted.
            </param>
            
            <param name="iIndexOfLastInsertedNode">
            Int32.  Zero-based index of the last node that has been inserted.
            </param>
            
            <remarks>
            This method calls Node.RestoreRectangle() for each inserted node.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.NodeRectangleCalculator.GetAreaPerSizeMetric(Microsoft.Research.CommunityTechnologies.Treemap.Nodes,System.Drawing.RectangleF,Microsoft.Research.CommunityTechnologies.Treemap.Node)">
            <summary>
            GetAreaPerSizeMetric method.
            </summary>
            
            <param name="oNodes">
            Nodes.  Collection of Node objects.
            </param>
            
            <param name="oParentRectangle">
            RectangleF.  Parent rectangle the nodes will be inserted into.
            </param>
            
            <param name="oParentNode">
            Node.  Parent of aoNodes, or null if aoNodes are top-level.
            </param>
            
            <returns>
            Double.  Area within oParentRectangle that will be taken up by each
            Node.SizeMetric unit.  A return value of zero indicates that the nodes
            in oNodes should not be drawn.
            </returns>
            
            <remarks>
            This method returns the area within a parent rectangle that will be
            taken up by each SizeMetric unit of the nodes that will be placed into
            the rectangle.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.NodeRectangleCalculator.GetRemainingEmptySpace(Microsoft.Research.CommunityTechnologies.Treemap.Node[],System.Drawing.RectangleF,System.Int32,System.Int32)">
            <summary>
            GetRemainingEmptySpace method.
            </summary>
            
            <param name="aoNodes">
            Array of Node objects.
            </param>
            
            <param name="oParentRectangle">
            RectangleF.  Parent rectangle containing inserted nodes.
            </param>
            
            <param name="iIndexOfFirstInsertedNode">
            Int32.  Zero-based index of the first node that has already been
            inserted into oParentRectangle.
            </param>
            
            <param name="iIndexOfLastInsertedNode">
            Int32.  Zero-based index of the last node that has already been
            inserted into oParentRectangle.
            </param>
            
            <returns>
            RectangleF.  New rectangle that contains the empty space.  May be
            empty.
            </returns>
            
            <remarks>
            This method returns a rectangle that contains the empty space not
            already filled by a set of inserted nodes.  If there is no empty space
            left, an empty rectangle is returned.
            </remarks>
        </member>
        <member name="T:Microsoft.Research.CommunityTechnologies.Treemap.Nodes">
            <summary>
            Collection of <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> objects.
            </summary>
            
            <remarks>
            The <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent.Nodes"/> property on <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent"/> returns a Nodes collection containing the
            top-level <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> objects.  Also, each <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/>
            object has a <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.Nodes"/> property that returns a Nodes
            collection containing the node's child <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> objects.  A leaf
            <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> object has an empty Nodes collection.
            </remarks>
            
            <seealso cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/>
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent.Nodes"/>
            
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.Nodes.#ctor">
            <summary>
            Do not use this.
            </summary>
            
            <remarks>
            This default constructor is required for internal use by the
            XmlSerializer object.  It should not be used for anything else.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.Nodes.Add(System.String,System.Single,System.Single)">
            <overloads>
            Adds a node to a <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Nodes"/> collection.
            </overloads>
            
            <summary>
            Creates a <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> object with the specified text, size
            metric, and color metric, and adds it to the end of a
            <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Nodes"/> collection.
            </summary>
            
            <param name="text">
            Text to display within the node's rectangle.
            </param>
            
            <param name="sizeMetric">
            Determines the size of the node's rectangle.  See
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.SizeMetric"/>.
            </param>
            
            <param name="colorMetric">
            Determines the fill color of the node's rectangle.  See
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/>.
            </param>
            
            <returns>
            The new <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> object.
            </returns>
            
            <seealso cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.Nodes.Add(System.String,System.Single,System.Single,System.Object)">
            <summary>
            Creates a <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> object with the specified text, size
            metric, color metric, and tag, and adds it to the end of a
            <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Nodes"/> collection.
            </summary>
            
            <param name="text">
            Text to display within the node's rectangle.
            </param>
            
            <param name="sizeMetric">
            Determines the size of the node's rectangle.  See
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.SizeMetric"/>.
            </param>
            
            <param name="colorMetric">
            Determines the fill color of the node's rectangle.  See
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/>.
            </param>
            
            <param name="tag">
            Arbitrary object to associate with the node.
            </param>
            
            <returns>
            The new <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> object.
            </returns>
            
            <seealso cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.Nodes.Add(System.String,System.Single,System.Single,System.Object,System.String)">
            <summary>
            Creates a <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> object with the specified text, size
            metric, color metric, tag, and tooltip, and adds it to the end of a
            <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Nodes"/> collection.
            </summary>
            
            <param name="text">
            Text to display within the node's rectangle.
            </param>
            
            <param name="sizeMetric">
            Determines the size of the node's rectangle.  See
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.SizeMetric"/>.
            </param>
            
            <param name="colorMetric">
            Determines the fill color of the node's rectangle.  See
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/>.
            </param>
            
            <param name="tag">
            Arbitrary object to associate with the node.
            </param>
            
            <param name="toolTip">
            Tooltip to show for the node.  This is used by the
            <see cref="!:TreemapControl"/>.  It is not used by the
            <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator"/>.
            </param>
            
            <returns>
            The new <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> object.
            </returns>
            
            <seealso cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.Nodes.Add(Microsoft.Research.CommunityTechnologies.Treemap.Node)">
            <summary>
            Adds an existing <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> object to the end of a
            <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Nodes"/> collection.
            </summary>
            
            <param name="node">
            <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> object to add.
            </param>
            
            <returns>
            The <paramref name="node"/> object.
            </returns>
            
            <remarks>
            Do not add the same <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> object to the node hierarchy
            more than once.
            </remarks>
            
            <seealso cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.Nodes.GetEnumerator">
            <summary>
            Gets a type-safe enumerator that can iterate through a
            <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Nodes"/> collection.
            </summary>
            
            <returns>
            Type-safe enumerator object.
            </returns>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.Nodes.System#Collections#IEnumerable#GetEnumerator">
            <summary>
            Gets an enumerator that can iterate through a <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Nodes"/>
            collection.
            </summary>
            
            <returns>
            Enumerator object.
            </returns>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.Nodes.Clear">
            <summary>
            Clear method.
            </summary>
            
            <remarks>
            Removes all nodes from the collection and sets EmptySpace.SizeMetric
            to zero.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.Nodes.GetNodeFromPoint(System.Drawing.PointF,Microsoft.Research.CommunityTechnologies.Treemap.Node@)">
            <summary>
            GetNodeFromPoint method.
            </summary>
            
            <param name="oPointF">
            PointF.  Point to get a Node object for.
            </param>
            
            <param name="oNode">
            Node.  Where the Node object gets stored.  null is stored if a Node
            object was not found.
            </param>
            
            <returns>
            Boolean.  true if a Node object was found, false if not.
            </returns>
            
            <remarks>
            Looks for the innermost node whose rectangle contains the specified
            point.  If found, the Node object is stored in oNode and true is
            returned.  false is returned otherwise.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.Nodes.ToArraySortedBySizeMetric">
            <summary>
            ToArraySortedBySizeMetric() method.
            </summary>
            
            <remarks>
            Returns an array of Node objects sorted by Node.SizeMetric.
            </remarks>
            
            <returns>
            Array of Node objects sorted by Node.SizeMetric in descending order.
            If this Nodes collection is empty, an empty array is returned.
            </returns>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.Nodes.AssertValid">
            <summary>
            Displays a message if the object is in an invalid state.
            </summary>
            
            <remarks>
            This is available in the debug build only.  It checks the object's
            internal state and calls <see cref="M:System.Diagnostics.Debug.Assert(System.Boolean)"/> if it detects a
            problem.
            </remarks>
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.Nodes.m_oNodes">
            Collection of TreeMapGenerator.Node objects.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.Nodes.m_oEmptySpace">
            Object that represents the empty space within the rectangle drawn for
            the Node object that owns this Nodes collection.
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.Nodes.Count">
            <summary>
            Gets the number of objects in the collection.
            </summary>
            
            <value>
            The number of <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> objects in the <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Nodes"/>
            collection.
            </value>
            
            <remarks>
            Use <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Nodes.RecursiveCount"/> to get a recursive count.
            </remarks>
            
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Nodes.RecursiveCount"/>
            <seealso cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.Nodes.RecursiveCount">
            <summary>
            Gets the number of objects in the collection, including all descendant
            objects.
            </summary>
            
            <value>
            The number of <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> objects in the <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Nodes"/>
            collection, including all descendant <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> objects.
            </value>
            
            <remarks>
            Use <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Nodes.Count"/> to get a non-recursive count.
            </remarks>
            
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Nodes.Count"/>
            <seealso cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.Nodes.Item(System.Int32)">
            <summary>
            Gets the object at the specified index.
            </summary>
            
            <value>
            The <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> object at the specified index.
            </value>
            
            <param name="zeroBasedIndex">
            Zero-based index of the <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> to get.
            </param>
            
            <example>
            Node oFirstTopLevelNode = oTreemapGenerator.Nodes[0];
            </example>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.Nodes.EmptySpace">
            <summary>
            Gets the object that represents empty space in the parent rectangle.
            </summary>
            
            <value>
            An <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.EmptySpace"/>
            object that represents empty space in the parent rectangle.
            </value>
            
            <remarks>
            See <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.SizeMetric"/> for details on how the size of each
            node rectangle is computed and how EmptySpace is involved in the
            computations.
            </remarks>
            
            <seealso cref="T:Microsoft.Research.CommunityTechnologies.Treemap.EmptySpace"/>
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.SizeMetric"/>
        </member>
        <member name="T:Microsoft.Research.CommunityTechnologies.Treemap.NodesEnumerator">
            <summary>
            Supports iterating over a <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Nodes"/> collection.
            </summary>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.NodesEnumerator.#ctor(Microsoft.Research.CommunityTechnologies.Treemap.Nodes)">
            <summary>
            Initializes a new instance of the NodesEnumerator class.
            </summary>
            
            <param name="nodes">
            <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Nodes"/> object to enumerate.
            </param>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.NodesEnumerator.MoveNext">
            <summary>
            Moves to the next object in the enumeration.
            </summary>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.NodesEnumerator.Reset">
            <summary>
            Resets the current position so it points to the beginning of the
            enumeration.
            </summary>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.NodesEnumerator.AssertValid">
            <summary>
            Displays a message if the object is in an invalid state.
            </summary>
            
            <remarks>
            This is available in the debug build only.  It checks the object's
            internal state and calls <see cref="M:System.Diagnostics.Debug.Assert(System.Boolean)"/> if it detects a
            problem.
            </remarks>
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.NodesEnumerator.m_oNodes">
            Collection being enumerated;
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.NodesEnumerator.m_iZeroBasedIndex">
            Current index into m_oNodes;
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.NodesEnumerator.System#Collections#IEnumerator#Current">
            <summary>
            Gets the object at the current position.
            </summary>
            
            <value>
            The <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> object at the enumerator's current position.
            </value>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.NodesEnumerator.Current">
            <summary>
            Gets the object at the current position.
            </summary>
            
            <value>
            The <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> object at the enumerator's current position.
            </value>
            
        </member>
        <member name="T:Microsoft.Research.CommunityTechnologies.Treemap.NodesXmlSerializer">
            <summary>
            Object that knows how to serialize and deserialize a Nodes object.
            </summary>
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.NodesXmlSerializer.NodesXmlNodeName">
            XML node and attribute names.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.NodesXmlSerializer.NodeXmlNodeName">
            
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.NodesXmlSerializer.EmptySpaceSizeMetricAttributeName">
            
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.NodesXmlSerializer.#ctor">
            <summary>
            Initializes a new instance of the NodesXmlSerializer class.
            </summary>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.NodesXmlSerializer.SerializeToString(Microsoft.Research.CommunityTechnologies.Treemap.Nodes)">
            <summary>
            Serializes a <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Nodes"/> object to a string.
            </summary>
            
            <param name="oNodes">
            Object to serialize.
            </param>
            
            <returns>
            Serialized <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Nodes"/> object.
            </returns>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.NodesXmlSerializer.DeserializeFromString(System.String)">
            <summary>
            Deserializes a <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Nodes"/> object from a string.
            </summary>
            
            <param name="sNodesXml">
            Serialized Nodes object.
            </param>
            
            <returns>
            Deserialized <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Nodes"/> object.
            </returns>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.NodesXmlSerializer.AddEmptySpaceAfterSerialization(Microsoft.Research.CommunityTechnologies.Treemap.Nodes,System.String)">
            <summary>
            Adds empty space attributes to a serialized Nodes object.
            </summary>
            
            <param name="oNodes">
            Object that was serialized.
            </param>
            
            <param name="sNodesXmlWithoutEmptySpace">
            <paramref name="oNodes" /> serialized as a string, without empty space
            attributes.
            </param>
            
            <returns>
            <paramref name="oNodes" /> serialized as a string, with empty space
            attributes.
            </returns>
            
            <remarks>
            When the XmlSerializer serializes an object that implements
            IEnumerable, such as the Nodes object, it does not serialize any of the
            object's public properties.  This is documented behavior, but it causes
            problems for the treemap because Nodes has an EmptySpace property that
            must be serialized.  To work around this, this method loops through
            the serialized XML.  For each Nodes XML node, it adds an attribute for
            the Nodes.EmptySpace.SizeMetric property.
            
            <para>
            This is very inefficient, but serialization does not occur often and
            the only alternative is to rearrange the Nodes object model to satisfy
            the XML serializer.
            </para>
            
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.NodesXmlSerializer.AddEmptySpaceAfterSerialization(Microsoft.Research.CommunityTechnologies.Treemap.Nodes,System.Xml.XmlNode)">
            <summary>
            Adds empty space attributes to a serialized Nodes object.
            </summary>
            
            <param name="oNodes">
            Nodes object.
            </param>
            
            <param name="oNodesXmlNode">
            Nodes XML node corresponding to <paramref name="oNodes" />.
            </param>
            
            <remarks>
            This method calls itself recursively.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.NodesXmlSerializer.ReadEmptySpaceAfterDeserialization(Microsoft.Research.CommunityTechnologies.Treemap.Nodes,System.String)">
            <summary>
            Reads empty space attributes from a deserialized Nodes object.
            </summary>
            
            <param name="oNodes">
            Nodes object.
            </param>
            
            <param name="sNodesXmlWithEmptySpace">
            XML created by the <cref name="SerializeToString"/> method.
            </param>
            
            <remarks>
            This method sets properties on the <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.EmptySpace"/> object
            owned by each <cref name="Nodes"/> object.  See
            <cref name="AddEmptySpaceAfterSerialization"/> for details.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.NodesXmlSerializer.ReadEmptySpaceAfterDeserialization(Microsoft.Research.CommunityTechnologies.Treemap.Nodes,System.Xml.XmlNode)">
            <summary>
            Reads empty space attributes from a deserialized Nodes object.
            </summary>
            
            <param name="oNodes">
            Nodes object.
            </param>
            
            <param name="oNodesXmlNode">
            Nodes XML node corresponding to <paramref name="oNodes" />.
            </param>
            
            <remarks>
            This method calls itself recursively.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.NodesXmlSerializer.AssertValid">
            <summary>
            Asserts if the object is in an invalid state.  Debug-only.
            </summary>
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.NodesXmlSerializer.m_oXmlSerializer">
            Object that does the work.
        </member>
        <member name="T:Microsoft.Research.CommunityTechnologies.GraphicsLib.PenCache">
            <summary>
            Creates a Pen object on request and caches it for future requests.
            </summary>
            
            <remarks>
            Call the Initialize() method to specify the color of all the pens that
            will be requested.  You can then call GetPen() to get a Pen object of a
            particular width.  If you call GetPen() again with the same width, the
            cached pen will be returned instead of being created from scratch.
            
            <para>
            Call Dispose() when you are done using the object.
            </para>
            
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.GraphicsLib.PenCache.#ctor">
            <summary>
            PenCache constructor.
            </summary>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.GraphicsLib.PenCache.Initialize(System.Drawing.Color)">
            <summary>
            Initialize method.
            </summary>
            
            <param name="oPenColor">
            Color.  Color of all the pens that will be created.
            </param>
            
            <remarks>
            This must be called before any other methods or properties are used.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.GraphicsLib.PenCache.GetPen(System.Int32)">
            <summary>
            GetPen method.
            </summary>
            
            <param name="iWidthPx">
            Int32.  Width of the pen, in pixels.
            </param>
            
            <returns>
            Pen of the specified width.
            </returns>
            
            <remarks>
            Returns a pen of the specified width.  If the pen already exists in the
            internal cache, the cached pen is returned.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.GraphicsLib.PenCache.Dispose">
            <summary>
            Dispose method.
            </summary>
            
            <remarks>
            Frees resources.  Call this when you are done with the object.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.GraphicsLib.PenCache.AssertValid">
            <summary>
            AssertValid method.
            </summary>
            
            <remarks>
            Asserts if the object is in an invalid state.  Debug-only.
            </remarks>
        </member>
        <member name="T:Microsoft.Research.CommunityTechnologies.GraphicsLib.TransparentBrushMapper">
            <summary>
            Provides a solid brush that uses a transparent color.
            </summary>
            
            <remarks>
            This object creates a set of transparent brushes, with a transparency that
            varies from a maximum to a minimum in equal steps.  Each brush has a
            "level" that varies from 0 to the number of brushes minus 1.  The lowest-
            level brush has the maximum transparency and the highest-level has the
            minimum transparency.
            
            <para>
            Call the Initialize() method to specify a brush color and the transparency
            levels to use.  Initialize() creates all the brushes at once and saves them
            in an internal array.  You can then call LevelToBrush() to get a Brush
            object for a specified level.  If the specified level is greater than the
            level of the highest-level (minimum transparency) brush, the highest-level
            brush is returned.
            </para>
            
            <para>
            Call Dispose() when you are done using the object.
            </para>
            
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.GraphicsLib.TransparentBrushMapper.#ctor">
            <summary>
            TransparentBrushMapper constructor.
            </summary>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.GraphicsLib.TransparentBrushMapper.Initialize(System.Drawing.Color,System.Int32,System.Int32,System.Int32)">
            <summary>
            Initialize method.
            </summary>
            
            <param name="oSolidColor">
            Color.  Color to use for all brushes.  Must have alpha set to 255.
            </param>
            
            <param name="iMinAlpha">
            Int32.  Alpha value to use for the level with maximum transparency.
            Must be between 0 and 255.
            </param>
            
            <param name="iMaxAlpha">
            Int32.  Alpha value to use for the level with minimum transparency.
            Must be between 0 and 255.  Must be >= iMinAlpha.
            </param>
            
            <param name="iAlphaIncrementPerLevel">
            Int32.  Amount that alpha should be incremented from level to level.
            Must be > 0.
            </param>
            
            <remarks>
            This must be called before any other methods or properties are used.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.GraphicsLib.TransparentBrushMapper.LevelToTransparentBrush(System.Int32)">
            <summary>
            LevelToTransparentBrush method.
            </summary>
            
            <param name="iLevel">
            Int32.  Level of transparency.  Must be >= 0.  If this is greater than
            the level of the highest-level (minimum transparency) brush, the
            highest-level brush is returned.
            </param>
            
            <returns>
            Brush with the specified level of transparency.
            </returns>
            
            <remarks>
            Returns a Brush object with a specified level of transparency.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.GraphicsLib.TransparentBrushMapper.Dispose">
            <summary>
            Dispose method.
            </summary>
            
            <remarks>
            Frees resources.  Call this when you are done with the object.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.GraphicsLib.TransparentBrushMapper.ValidateAlphaRange(System.Int32,System.Int32,System.Int32,System.String)">
            <summary>
            ValidateAlphaRange method.
            </summary>
            
            <param name="iMinAlpha">
            Int32.  Alpha value to use for the level with maximum transparency.
            Must be between 0 and 255.
            </param>
            
            <param name="iMaxAlpha">
            Int32.  Alpha value to use for the level with minimum transparency.
            Must be between 0 and 255.  Must be >= iMinAlpha.
            </param>
            
            <param name="iIncrementPerLevel">
            Int32.  Amount that alpha should be incremented from level to level.
            Must be > 0.
            </param>
            
            <param name="sCaller">
            String.  Name of the caller.  Used in exception messages.  Sample:
            "TransparentBrushMapper.Initialize()".
            </param>
            
            <remarks>
            Throws an exception if one of the parameters is invalid.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.GraphicsLib.TransparentBrushMapper.AssertValid">
            <summary>
            AssertValid method.
            </summary>
            
            <remarks>
            Asserts if the object is in an invalid state.  Debug-only.
            </remarks>
        </member>
        <member name="T:Microsoft.Research.CommunityTechnologies.Treemap.TreemapDrawItemEventArgs">
            <summary>
            Provides data for the <see cref="E:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.DrawItem"/> event fired
            by the <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator"/>.
            </summary>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapDrawItemEventArgs.#ctor(Microsoft.Research.CommunityTechnologies.Treemap.Node)">
            <summary>
            Initializes a new instance of the TreemapDrawItemEventArgs class.
            </summary>
            
            <param name="oNode">
            Node object associated with the event.
            </param>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapDrawItemEventArgs.AssertValid">
            <summary>
            Displays a message if the object is in an invalid state.
            </summary>
            
            <remarks>
            This is available in the debug build only.  It checks the object's
            internal state and calls <see cref="M:System.Diagnostics.Debug.Assert(System.Boolean)"/> if it detects a
            problem.
            </remarks>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapDrawItemEventArgs.Node">
            <summary>
            Gets the <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/>
            object to draw.
            </summary>
            
            <value>
            The <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/>
            object that needs to be drawn.
            </value>
            
            <seealso cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapDrawItemEventArgs.Bounds">
            <summary>
            Gets the rectangle to draw within.
            </summary>
            
            <value>
            The rectangle to draw within.
            </value>
            
            <remarks>
            The computed rectangle takes into account any padding specified with
            the <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.PaddingPx"/> and
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.PaddingDecrementPerLevelPx"/> properties.
            </remarks>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapDrawItemEventArgs.PenWidthPx">
            <summary>
            Gets the pen width to use to draw the rectangle.
            </summary>
            
            <value>
            The pen width to use, in pixels.
            </value>
            
            <remarks>
            The returned pen width is computed using the
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.PenWidthPx"/> and
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.PenWidthDecrementPerLevelPx"/> properties.
            
            <para>
            The pen width can be ignored if the owner-draw code is drawing uniform
            borders or no borders at all.
            </para>
            
            </remarks>
        </member>
        <member name="T:Microsoft.Research.CommunityTechnologies.Treemap.NodeLevelsWithText">
            <summary>
            Specifies values that can be used for the
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent.NodeLevelsWithText"/> property.  This
            determines the node levels to show text for.
            </summary>
            
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent.NodeLevelsWithText"/>
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.NodeLevelsWithText.All">
            <summary>
            Show text for all node levels.
            </summary>
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.NodeLevelsWithText.None">
            <summary>
            Don't show any text.
            </summary>
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.NodeLevelsWithText.Leaves">
            <summary>
            Show text for leaf nodes only.
            </summary>
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.NodeLevelsWithText.Range">
            <summary>
            Show text for the levels specified with <see cref="M:Microsoft.Research.CommunityTechnologies.Treemap.ITreemapComponent.SetNodeLevelsWithTextRange(System.Int32,System.Int32)"/>.
            </summary>
        </member>
        <member name="T:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator">
            <summary>
            Treemap drawing engine.
            </summary>
            
            <remarks>
            TreemapGenerator is one of two components that render a hierarchical data
            set as a treemap, which is a set of nested rectangles.  The size of each
            rectangle is determined by a property of each item in the data set, and the
            rectangle's fill color is determined by another property.
            
            <para>
            The following table summarizes the two treemap components.
            </para>
            
            <list type="table">
            
            <listheader>
            <term>Component</term>
            <term>For Use In</term>
            <term>Required Assemblies</term>
            </listheader>
            
            <item>
            <term>TreemapGenerator</term>
            <term>
            Any application that wants to draw a treemap onto a <see cref="T:System.Drawing.Bitmap"/>
            or <see cref="T:System.Drawing.Graphics"/> object, or do custom drawing
            </term>
            <term>
            TreemapGenerator.dll
            </term>
            </item>
            
            <item>
            <term><see cref="!:TreemapControl"/></term>
            <term>
            Windows Forms applications
            </term>
            <term>
            TreemapControl.dll, TreemapGenerator.dll
            </term>
            </item>
            
            </list>
            
            <para>
            TreemapGenerator is a drawing engine without its own user interface.  It
            draws on a <see cref="T:System.Drawing.Bitmap"/> object provided by the caller.
            This allows it to be used in a variety of environments, including Web
            applications that generate images on the server for downloading to client
            browsers.
            </para>
            
            <para>
            Using the TreemapGenerator in an application involves three steps:
            <list type="bullet">
            <item>
            <description>Populate the <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.Nodes"/> collection
            </description>
            </item>
            <item>
            <description>
            Set properties that determine how the treemap is drawn
            </description>
            </item>
            <item>
            <description>
            Draw the treemap using one of the <see cref="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.Draw(System.Drawing.Bitmap,System.Boolean)"/> methods
            </description>
            </item>
            </list>
            </para>
            
            <para>
            The <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.Nodes"/> property on TreemapGenerator
            returns a collection of top-level <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> objects.  Each
            <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> object in turn has a <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.Nodes"/> property
            that returns a collection of child <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> objects.  These
            nested collections are directly analogous to the Nodes collections in the
            standard .NET <see cref="!:TreeView"/> control.
            </para>
            
            <para>
            Each <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> object has a <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.SizeMetric"/>
            property that determines the size of the node's rectangle relative to other
            nodes in the collection, a <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/> property that
            determines the rectangle's fill color, and a <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.Text"/>
            property that determines the text that is drawn in the center of the
            rectangle.
            </para>
            
            <para>
            Several overloaded <see cref="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.Draw(System.Drawing.Bitmap,System.Boolean)"/> methods are provided.  You can draw
            onto an entire <see cref="T:System.Drawing.Bitmap"/>, part of a <see cref="T:System.Drawing.Bitmap"/>, or a
            <see cref="T:System.Drawing.Graphics"/> object.  You can also implement your own drawing
            code by calling Draw(Rectangle) and handling the <see cref="E:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.DrawItem"/>
            event.
            </para>
            
            </remarks>
            
            <example>
            Here is sample C# code that populates a TreemapGenerator
            with two top-level nodes, each of which has two child nodes.  A few
            properties that determine how the treemap is drawn are set, and the treemap
            is drawn to a bitmap object.
            
            <code>
            
            protected void
            MakeTreemapBitmap()
            {
                // Create a TreemapGenerator object.
            
                TreemapGenerator oTreemapGenerator = new TreemapGenerator();
            
                // Populate it, set some properties on it, and draw it onto a
                // bitmap.
            
                PopulateTreemap(oTreemapGenerator);
                SetTreemapProperties(oTreemapGenerator);
                DrawTreemap(oTreemapGenerator);
            }
            
            protected void
            PopulateTreemap(TreemapGenerator oTreemapGenerator)
            {
                Nodes oNodes;
                Node oNode;
                Nodes oChildNodes;
                Node oChildNode;
            
                // Get the collection of top-level nodes.
            
                oNodes = oTreemapGenerator.Nodes;
            
                // Add a top-level node to the collection.
            
                oNode = oNodes.Add("Top Level 1", 25F, 100F);
            
                // Add child nodes to the top-level node.
            
                oChildNodes = oNode.Nodes;
                oChildNode = oChildNodes.Add("Child 1-1", 90F, 2.5F);
                oChildNode = oChildNodes.Add("Child 1-2", 10F, -34.5F);
            
                // Add another top-level node.
            
                oNode = oNodes.Add("Top Level 2", 50F, -40.1F);
            
                // Add child nodes to the second top-level node.
            
                oChildNodes = oNode.Nodes;
                oChildNode = oChildNodes.Add("Child 2-1", 61F, 0F);
                oChildNode = oChildNodes.Add("Child 2-2", 100F, 200F);
            
                // (As an alternative to making multiple calls to the Nodes.Add
                // method, the component can be populated via an XML string
                // passed to the TreemapGenerator.NodesXml property.)
            }
            
            protected void
            SetTreemapProperties(TreemapGenerator oTreemapGenerator)
            {
                // All TreemapGenerator properties have default values that yield
                // reasonable results in many cases.  We want to change the
                // range of colors for this example.
            
                // Make Node.ColorMetric values of -200 to 200 map to a color
                // range between blue and yellow.
            
                oTreemapGenerator.MinColorMetric = -200F;
                oTreemapGenerator.MaxColorMetric = 200F;
            
                oTreemapGenerator.MinColor = Color.Blue;
                oTreemapGenerator.MaxColor = Color.Yellow;
            
                // (If desired, set other properties that determine border widths,
                // spacing between rectangles, fonts, etc.)
            }
            
            protected void
            DrawTreemap(TreemapGenerator oTreemapGenerator)
            {
                // Create a bitmap.
            
                Bitmap oBitmap = new Bitmap(200, 200);
            
                // Draw the treemap onto the bitmap.
            
                oTreemapGenerator.Draw(oBitmap, false);
            
                // (Do something with the bitmap...)
            }
            
            </code>
            </example>
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MinPaddingPx">
            <summary>
            Minimum value allowed for the <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.PaddingPx"/> property.
            </summary>
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MaxPaddingPx">
            <summary>
            Maximum value allowed for the <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.PaddingPx"/> property.
            </summary>
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MinPaddingDecrementPerLevelPx">
            <summary>
            Minimum value allowed for the <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.PaddingDecrementPerLevelPx"/> property.
            </summary>
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MaxPaddingDecrementPerLevelPx">
            <summary>
            Maximum value allowed for the <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.PaddingDecrementPerLevelPx"/> property.
            </summary>
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MinPenWidthPx">
            <summary>
            Minimum value allowed for the <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.PenWidthPx"/> property.
            </summary>
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MaxPenWidthPx">
            <summary>
            Maximum value allowed for the <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.PenWidthPx"/> property.
            </summary>
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MinPenWidthDecrementPerLevelPx">
            <summary>
            Minimum value allowed for the <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.PenWidthDecrementPerLevelPx"/> property.
            </summary>
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MaxPenWidthDecrementPerLevelPx">
            <summary>
            Maximum value allowed for the <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.PenWidthDecrementPerLevelPx"/> property.
            </summary>
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MinDiscreteColors">
            <summary>
            Minimum value allowed for the <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.DiscreteNegativeColors"/>
            and <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.DiscretePositiveColors"/> properties.
            </summary>
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MaxDiscreteColors">
            <summary>
            Maximum value allowed for the <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.DiscreteNegativeColors"/>
            and <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.DiscretePositiveColors"/> properties.
            </summary>
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MinRectangleWidthOrHeightPx">
            Minimum width or height that a node rectangle can have.  Because of
            the way GDI draws rectangles, this results in a 2x2 rectangle on the
            screen.
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.#ctor">
            <summary>
            Initializes a new instance of the TreemapGenerator class.
            </summary>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.GetNodeLevelsWithTextRange(System.Int32@,System.Int32@)">
            <summary>
            Gets the range of node levels for which text is shown.
            </summary>
            
            <param name="minLevel">
            Minimum node level.  Level 0 is the top level.
            </param>
            
            <param name="maxLevel">
            Maximum node level.  Level 0 is the top level.
            </param>
            
            <remarks>
            The range returned by this method is used only if <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.NodeLevelsWithText"/> is set to Range.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.SetNodeLevelsWithTextRange(System.Int32,System.Int32)">
            <summary>
            Sets the range of node levels for which text is displayed.
            </summary>
            
            <param name="minLevel">
            Minimum node level.  Level 0 is the top level.  Must be greater than or
            equal to 0.
            </param>
            
            <param name="maxLevel">
            Maximum node level.  Level 0 is the top level.  Must be greater than or
            equal to zero and greater than or equal to <paramref name="minLevel"/>.
            </param>
            
            <remarks>
            The range specified in this method is used only if <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.NodeLevelsWithText"/> is set to Range.  The default minimum and
            maximum values are 0 and 999.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.GetFontSizeRange(System.Single@,System.Single@,System.Single@)">
            <summary>
            Gets the range of font sizes used for drawing node text.
            </summary>
            
            <param name="minSizePt">
            Minimum font size, in points.
            </param>
            
            <param name="maxSizePt">
            Maximum font size, in points.
            </param>
            
            <param name="incrementPt">
            Increment between font sizes, in points.
            </param>
            
            <remarks>
            The <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator"/> draws node text using a range of
            font sizes.  For each node, the largest font in the range that won't
            exceed the bounds of the node's rectangle is used.
            
            <para>
            By default, the <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator"/> uses
            <paramref name="minSizePt"/>=2, <paramref name="maxSizePt"/>=100,
            and <paramref name="incrementPt"/>=2.
            </para>
            
            </remarks>
            
            <example>
            If <paramref name="minSizePt"/> is 2.0, <paramref name="maxSizePt"/>
            is 10.0, and <paramref name="incrementPt"/> is 2.0, node text will be
            drawn with one of the following font sizes: 2.0, 4.0, 6.0, 8.0, 10.0.
            </example>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.SetFontSizeRange(System.Single,System.Single,System.Single)">
            <summary>
            Sets the range of font sizes used for drawing node text.
            </summary>
            
            <param name="minSizePt">
            Minimum font size, in points.
            </param>
            
            <param name="maxSizePt">
            Maximum font size, in points.
            </param>
            
            <param name="incrementPt">
            Increment between font sizes, in points.
            </param>
            
            <remarks>
            The TreemapGenerator draws node text using a range of font sizes.  For
            each node, the largest font in the range that won't exceed the bounds
            of the node's rectangle is used.
            
            <para>
            By default, the <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator"/> uses
            <paramref name="minSizePt"/>=2, <paramref name="maxSizePt"/>=100,
            and <paramref name="incrementPt"/>=2.
            </para>
            
            </remarks>
            
            <example>
            If <paramref name="minSizePt"/> is 2.0, <paramref name="maxSizePt"/>
            is 10.0, and <paramref name="incrementPt"/> is 2.0, node text will be
            drawn with one of the following font sizes: 2.0, 4.0, 6.0, 8.0, 10.0.
            </example>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.GetFontAlphaRange(System.Int32@,System.Int32@,System.Int32@)">
            <summary>
            Gets the range of transparency used for drawing node text.
            </summary>
            
            <param name="minAlpha">
            Alpha value used for the level with maximum transparency.
            </param>
            
            <param name="maxAlpha">
            Alpha value used for the level with minimum transparency.
            </param>
            
            <param name="incrementPerLevel">
            Amount that alpha is incremented from level to level.
            </param>
            
            <remarks>
            To improve text legibility, the <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator"/> varies
            the transparency of node text.  The text for higher-level nodes is more
            transparent than the text for lower-level nodes, so the lower-level
            text shows through the higher-level text.
            
            <para>
            Alpha values range from 0 (transparent) to 255 (opaque).
            </para>
            
            <para>
            By default, the <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator"/> uses
            <paramref name="minAlpha"/>=105, <paramref name="maxAlpha"/>=255,
            and <paramref name="incrementPerLevel"/>=50.
            </para>
            
            </remarks>
            
            <example>
            If <paramref name="minAlpha"/> is 55, <paramref name="maxAlpha"/>
            is 255, and <paramref name="incrementPerLevel"/> is 100,
            then the text for level-0 (top-level) nodes will be drawn with
            alpha=55, the text for level-1 nodes will be drawn with alpha=155, and
            the text for level-2 nodes and below will be drawn with alpha=255.
            </example>
            
            <seealso cref="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.SetFontAlphaRange(System.Int32,System.Int32,System.Int32)"/>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.SetFontAlphaRange(System.Int32,System.Int32,System.Int32)">
            <summary>
            Sets the range of transparency used for drawing node text.
            </summary>
            
            <param name="minAlpha">
            Alpha value to use for the level with maximum transparency.  Must be
            between 0 and 255.
            </param>
            
            <param name="maxAlpha">
            Alpha value to use for the level with minimum transparency.  Must be
            between 0 and 255.  Must be &gt;= <paramref name="minAlpha"/>.
            </param>
            
            <param name="incrementPerLevel">
            Amount that alpha should be incremented from level to level.  Must
            be &gt; 0.
            </param>
            
            <remarks>
            To improve text legibility, the <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator"/> varies
            the transparency of node text.  The text for higher-level nodes is more
            transparent than the text for lower-level nodes, so the lower-level
            text shows through the higher-level text.
            
            <para>
            Alpha values range from 0 (transparent) to 255 (opaque).
            </para>
            
            <para>
            By default, the <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator"/> uses
            <paramref name="minAlpha"/>=105, <paramref name="maxAlpha"/>=255,
            and <paramref name="incrementPerLevel"/>=50.
            </para>
            
            </remarks>
            
            <example>
            If <paramref name="minAlpha"/> is 55, <paramref name="maxAlpha"/> is
            255, and <paramref name="incrementPerLevel"/> is 100,
            then the text for level-0 (top-level) nodes will be drawn with
            alpha=55, the text for level-1 nodes will be drawn with alpha=155, and
            the text for level-2 nodes and below will be drawn with alpha=255.
            </example>
            
            <seealso cref="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.GetFontAlphaRange(System.Int32@,System.Int32@,System.Int32@)"/>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.Draw(System.Drawing.Bitmap,System.Boolean)">
            <overloads>
            Draws the treemap.
            </overloads>
            
            <summary>
            Draws the treemap onto the entire rectangle of a <see cref="T:System.Drawing.Bitmap"/>.
            </summary>
            
            <param name="bitmap">
            <see cref="T:System.Drawing.Bitmap"/> to draw onto.
            </param>
            
            <param name="drawSelection">
            If true and there is a selected node, that node is drawn as selected.
            </param>
            
            <remarks>
            To print the treemap by drawing onto a <see cref="T:System.Drawing.Graphics"/> object,
            use Draw(Graphics, Rectangle) instead.
            </remarks>
            
            <seealso cref="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.SelectNode(Microsoft.Research.CommunityTechnologies.Treemap.Node,System.Drawing.Bitmap)"/>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.Draw(System.Drawing.Bitmap,System.Boolean,System.Drawing.Rectangle)">
            <summary>
            Draws the treemap onto a specified rectangle of a
            <see cref="T:System.Drawing.Bitmap"/>.
            </summary>
            
            <param name="bitmap">
            <see cref="T:System.Drawing.Bitmap"/> to draw onto.
            </param>
            
            <param name="drawSelection">
            If true and there is a selected node, that node is drawn as selected.
            </param>
            
            <param name="treemapRectangle">
            Rectangle to draw onto.  This must be contained within the bitmap
            rectangle.
            </param>
            
            <remarks>
            To print the treemap by drawing onto a <see cref="T:System.Drawing.Graphics"/> object,
            use Draw(Graphics, Rectangle) instead.
            </remarks>
            
            <seealso cref="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.SelectNode(Microsoft.Research.CommunityTechnologies.Treemap.Node,System.Drawing.Bitmap)"/>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.Draw(System.Drawing.Graphics,System.Drawing.Rectangle)">
            <summary>
            Draws the treemap onto a <see cref="T:System.Drawing.Graphics"/> object.
            </summary>
            
            <param name="graphics">
            <see cref="T:System.Drawing.Graphics"/> object to draw onto.
            </param>
            
            <param name="treemapRectangle">
            Rectangle to draw into.
            </param>
            
            <remarks>
            Draws a treemap onto a <see cref="T:System.Drawing.Graphics"/> object.  The selection
            is not drawn.
            
            <para>
            This method can be used to print the treemap.  To draw the treemap onto
            a <see cref="T:System.Drawing.Bitmap"/> instead, use Draw(Bitmap, Boolean).
            </para>
            
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.Draw(System.Drawing.Rectangle)">
            <summary>
            Draws the treemap using owner-implemented code.
            </summary>
            
            <param name="treemapRectangle">
            Rectangle to draw onto.
            </param>
            
            <remarks>
            If you want to draw the treemap yourself, call this method and handle
            the <see cref="E:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.DrawItem"/> event.  <see cref="E:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.DrawItem"/> will get
            called once for each of the TreemapGenerator's <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/>
            objects.  The <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.TreemapDrawItemEventArgs"/> object passed to
            the event handler includes a reference to the <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/>
            object to draw, the rectangle to draw the <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> within,
            and other drawing information.
            
            <para>
            This method does not use a <see cref="T:System.Drawing.Bitmap"/> or
            <see cref="T:System.Drawing.Graphics"/> object, and the <see cref="E:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.DrawItem"/> handler
            does not have to draw anything in graphical sense.  It can create XML,
            write to a binary file, or do anything else with the drawing
            information passed to it.
            </para>
            
            <para>
            See <see cref="E:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.DrawItem"/> for an example of owner-draw code.
            </para>
            
            </remarks>
            
            <seealso cref="E:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.DrawItem"/>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.GetNodeFromPoint(System.Drawing.PointF,Microsoft.Research.CommunityTechnologies.Treemap.Node@)">
            <overloads>
            Gets the <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> object containing a specified point.
            </overloads>
            
            <summary>
            Gets the <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> object containing a specified PointF.
            </summary>
            
            <param name="pointF">
            Point to get a <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> object for.
            </param>
            
            <param name="node">
            Where the <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> object gets stored.
            </param>
            
            <returns>
            true if a <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> object was found, false if not.
            </returns>
            
            <remarks>
            Looks for the innermost node whose rectangle contains the specified
            point.  If found, the <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> object is stored in
            <paramref name="node"/> and true is returned.  false is returned
            otherwise.
            
            <para>
            <see cref="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.Draw(System.Drawing.Bitmap,System.Boolean)"/> should be called before this method is used.  If it
            hasn't been called yet, false is returned.
            </para>
            
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.GetNodeFromPoint(System.Int32,System.Int32,Microsoft.Research.CommunityTechnologies.Treemap.Node@)">
            <summary>
            Gets the <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> object containing a specified coordinate
            pair.
            </summary>
            
            <param name="x">
            X-coordinate of the point to get a <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> object for.
            </param>
            
            <param name="y">
            Y-coordinate of the point to get a <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> object for.
            </param>
            
            <param name="node">
            Where the <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> object gets stored.
            </param>
            
            <returns>
            true if a <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> object was found, false if not.
            </returns>
            
            <remarks>
            Looks for the innermost node whose rectangle contains the specified
            coordinates.  If found, the <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> object is stored in
            <paramref name="node"/> and true is returned.  false is returned
            otherwise.
            
            <para>
            <see cref="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.Draw(System.Drawing.Bitmap,System.Boolean)"/> should be called before this method is used.  If it
            hasn't been called yet, false is returned.
            </para>
            
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.SelectNode(Microsoft.Research.CommunityTechnologies.Treemap.Node,System.Drawing.Bitmap)">
            <summary>
            Selects a node.
            </summary>
            
            <param name="node">
            The <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> to select.  Specify null to remove the
            selection.
            </param>
            
            <param name="bitmap">
            If <see cref="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.Draw(System.Drawing.Bitmap,System.Boolean)"/> has already been called, this should be the
            same Bitmap that was passed to <see cref="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.Draw(System.Drawing.Bitmap,System.Boolean)"/>.  Otherwise,
            specify null.  <paramref name="node"/> will then be drawn as selected
            the first time <see cref="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.Draw(System.Drawing.Bitmap,System.Boolean)"/> is called.
            </param>
            
            <remarks>
            This redraws the specified node's rectangle and text to show it as
            selected.  If another node was already selected, it gets redrawn as
            unselected.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.ClearNodes">
            <summary>
            Removes all nodes from the <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.Nodes"/> collection.
            </summary>
            
            <remarks>
            All top-level nodes and their descendants are removed.
            </remarks>
            
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.Nodes"/>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.CalculateAndDrawRectangles(System.Drawing.Graphics,System.Drawing.RectangleF,Microsoft.Research.CommunityTechnologies.Treemap.Nodes,Microsoft.Research.CommunityTechnologies.Treemap.Node)">
            <summary>
            CalculateAndDrawRectangles method.
            </summary>
            
            <param name="oGraphics">
            Graphics.  Object to draw onto.
            </param>
            
            <param name="oTreemapRectangle">
            System.Drawing.RectangleF.  Outer rectangle for the entire treemap.
            </param>
            
            <param name="oNodes">
            Nodes.  Collection of Node objects.
            </param>
            
            <param name="oParentNode">
            Node.  Parent of oNodes, or null if oNodes are top-level.
            </param>
            
            <remarks>
            This method calculates and draws the rectangles for the nodes in
            oNodes and all their descendents.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.CalculateRectangles(Microsoft.Research.CommunityTechnologies.Treemap.Nodes,System.Drawing.RectangleF,Microsoft.Research.CommunityTechnologies.Treemap.Node,System.Int32,System.Int32,Microsoft.Research.CommunityTechnologies.Treemap.NodeRectangleCalculator)">
            <summary>
            CalculateRectangles method.
            </summary>
            
            <param name="oNodes">
            Nodes.  Collection of Node objects.
            </param>
            
            <param name="oParentRectangle">
            RectangleF.  Parent rectangle that will contain the node rectangles.
            </param>
            
            <param name="oParentNode">
            Node.  Parent of oNodes, or null if oNodes are top-level.
            </param>
            
            <param name="iPaddingPx">
            Int32.  Padding to add to the parent rectangle, in pixels.
            </param>
            
            <param name="iPenWidthPx">
            Int32.  Width of the pen used to draw the node rectangles.
            </param>
            
            <param name="oNodeRectangleCalculator">
            NodeRectangleCalculator.  Object that knows how to calculate
            rectangles for the nodes.
            </param>
            
            <remarks>
            This method sets the Rectangle and PenWidthPx properties on each Node
            object in the oNodes collection so that the rectangles fit into
            oParentRectangle with no overlap, are as square as possible, and have
            padding.  It then recurses through all the descendent Node objects and
            does the same to them.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.DrawRectangles(Microsoft.Research.CommunityTechnologies.Treemap.Nodes,System.Drawing.Graphics,Microsoft.Research.CommunityTechnologies.GraphicsLib.ColorGradientMapper,Microsoft.Research.CommunityTechnologies.GraphicsLib.ColorGradientMapper,Microsoft.Research.CommunityTechnologies.GraphicsLib.PenCache)">
            <summary>
            DrawRectangles method.
            </summary>
            
            <param name="oNodes">
            Nodes.  Collection of Node objects.
            </param>
            
            <param name="oGraphics">
            System.Drawing.Graphics.  Object to draw onto.
            </param>
            
            <param name="oNegativeColorGradientMapper">
            ColorGradientMapper.  Object that knows how to map negative color
            metric values to colors.
            </param>
            
            <param name="oPositiveColorGradientMapper">
            ColorGradientMapper.  Object that knows how to map positive color
            metric values to colors.
            </param>
            
            <param name="oPenCache">
            PenCache.  Object that creates and caches pens.
            </param>
             
            <remarks>
            This method draws the rectangles for the nodes in oNodes and all their
            descendents.  It's assumed that the Rectangle and PenWidthPx properties
            have already been set on each Node object.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.DrawText(System.Drawing.Graphics,Microsoft.Research.CommunityTechnologies.Treemap.Nodes)">
            <summary>
            DrawText method.
            </summary>
            
            <param name="oGraphics">
            System.Drawing.Graphics.  Object to draw onto.
            </param>
            
            <param name="oNodes">
            Nodes.  Collection of Node objects.
            </param>
            
            <remarks>
            This method draws the text for the nodes in oNodes and all their
            descendents.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.DrawText(Microsoft.Research.CommunityTechnologies.Treemap.Nodes,System.Drawing.Graphics,Microsoft.Research.CommunityTechnologies.Treemap.FontMapper,System.Drawing.StringFormat,Microsoft.Research.CommunityTechnologies.GraphicsLib.TransparentBrushMapper,System.Int32)">
            <summary>
            DrawText method.
            </summary>
            
            <param name="oNodes">
            Nodes.  Collection of Node objects.
            </param>
            
            <param name="oGraphics">
            System.Drawing.Graphics.  Object to draw onto.
            </param>
            
            <param name="oFontMapper">
            FontMapper.  Object that provides fonts for drawing text.
            </param>
            
            <param name="oStringFormat">
            StringFormat.  Format to use for drawing text.
            </param>
             
            <param name="oTransparentBrushMapper">
            TransparentBrushMapper.  Object that provides transparent brushes for
            drawing text.
            </param>
            
            <param name="iNodeLevel">
            Int32.  Level of the nodes in oNodes.  Top-level nodes are level 0.
            drawing text.
            </param>
             
            <remarks>
            This method draws the text for the nodes in oNodes and all their
            descendents.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.DrawNodesByOwnerDraw(Microsoft.Research.CommunityTechnologies.Treemap.Nodes)">
            <summary>
            DrawNodesByOwnerDraw method.
            </summary>
            
            <param name="oNodes">
            Nodes.  Collection of Node objects.
            </param>
            
            <remarks>
            This method draws the nodes in oNodes and all their descendents by
            firing the DrawItem event.  It's assumed that the Rectangle and
            PenWidthPx properties have already been set on each Node object.
            Also, the DrawItem delegate must not be null.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.TextShouldBeDrawnForNode(Microsoft.Research.CommunityTechnologies.Treemap.Node,System.Int32)">
            <summary>
            Returns true if text should be drawn for a specified node.
            </summary>
            
            <param name="oNode">
            Node to test.
            </param>
            
            <param name="iNodeLevel">
            Level of oNode.  Top-level nodes are level 0.
            </param>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.DrawNodeAsSelected(Microsoft.Research.CommunityTechnologies.Treemap.Node,System.Drawing.Graphics)">
            <summary>
            DrawNodeAsSelected method.
            </summary>
            
            <param name="oNode">
            Node.  The node to draw as selected.
            </param>
            
            <param name="oGraphics">
            Graphics.  Object to draw onto.
            </param>
            
            <remarks>
            Redraws a node's rectangle and text to show it as selected.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.CancelSelectedNode">
            <summary>
            CancelSelectedNode method.
            </summary>
            
            <remarks>
            Cancels the selected node.  The treemap is not redrawn.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.CreateFontMapper(System.Drawing.Graphics)">
            <summary>
            CreateFontMapper method.
            </summary>
            
            <param name="oGraphics">
            System.Drawing.Graphics.  Object to draw onto.
            </param>
            
            <returns>
            FontMapper.  New initialized FontMapper object.
            </returns>
            
            <remarks>
            Creates, initializes and returns a FontMapper object to use for
            drawing text.  The caller should call FontMapper.Dispose() when the
            object is no longer needed.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.CreateTransparentBrushMapper">
            <summary>
            CreateTransparentBrushMapper method.
            </summary>
            
            <returns>
            TransparentBrushMapper.  New initialized TransparentBrushMapper
            object.
            </returns>
            
            <remarks>
            Creates, initializes and returns a TransparentBrushMapper object to
            use for drawing text.  The caller should call
            TransparentBrushMapper.Dispose() when the object is no longer needed.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.CreateStringFormat">
            <summary>
            CreateStringFormat method.
            </summary>
            
            <returns>
            StringFormat.  New initialized StringFormat object.
            </returns>
            
            <remarks>
            Creates, initializes and returns a StringFormat object to use for
            drawing text.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.AddInternalPaddingToRectangle(System.Drawing.RectangleF,System.Drawing.RectangleF,System.Int32)">
            <summary>
            AddInternalPaddingToRectangle method.
            </summary>
            
            <param name="oNodeRectangle">
            RectangleF.  Node rectangle to modify.
            </param>
            
            <param name="oParentRectangle">
            RectangleF.  Parent rectangle.
            </param>
            
            <param name="iPaddingPx">
            Int32.  Internal padding to add to oNodeRectangle, in pixels.
            </param>
            
            <returns>
            Modified copy of oNodeRectangle with added padding.
            </returns>
            
            <remarks>
            This method adds padding to the sides of a node's rectangle that are
            not along the side of a parent rectangle.  (If a side of the rectangle
            is along the side of the parent, the parent provides the padding.  Only
            internal sides need their own padding.)
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.DecrementPadding(System.Int32)">
            <summary>
            DecrementPadding method.
            </summary>
            
            <param name="iPaddingPx">
            Int32.  Padding to decrement, in pixels.
            </param>
            
            <returns>
            Int32.  Decremented padding, in pixels.
            </returns>
            
            <remarks>
            This method decrements the padding that gets added to the rectangles
            for the Node objects in a Nodes collection.  The padding can be made to
            decrease at each node level by setting m_iPaddingDecrementPerLevelPx to
            a positive value.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.DecrementPenWidth(System.Int32)">
            <summary>
            DecrementPenWidth method.
            </summary>
            
            <param name="iPenWidthPx">
            Int32.  Pen width to decrement, in pixels.
            </param>
            
            <returns>
            Int32.  Decremented pen width, in pixels.
            </returns>
            
            <remarks>
            This method decrements the pen width that is used to draw the
            rectangles for the Node objects in a Nodes collection.  The padding can
            be made to decrease at each node level by setting
            m_iPenWidthDecrementPerLevelPx to a positive value.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.RectangleIsSmallerThanMin(System.Drawing.RectangleF)">
            <summary>
            RectangleIsSmallerThanMin method.
            </summary>
            
            <param name="oRectangle">
            RectangleF.  Rectangle to test.
            </param>
            
            <returns>
            Boolean.  true if the rectangle is smaller than the minimum.
            </returns>
            
            <remarks>
            This method returns true if the rectangle's height or width is smaller
            than a specified minimum.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.FixSmallRectangle(System.Drawing.RectangleF)">
            <summary>
            FixSmallRectangle method.
            </summary>
            
            <param name="oUnpaddedNodeRectangle">
            RectangleF.  Node's rectangle, without padding.
            </param>
            
            <returns>
            Modified copy of oUnpaddedNodeRectangle.
            </returns>
            
            <remarks>
            This method is called when it's determined that a node's rectangle with
            padding is too small to display as a rectangle.  It returns a modified
            rectangle to use for the node.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.SetNodePenWidthForSelection(Microsoft.Research.CommunityTechnologies.Treemap.Node)">
            <summary>
            SetNodePenWidthForSelection method.
            </summary>
            
            <param name="oNode">
            Node.  Node whose pen width needs to be adjusted.
            </param>
            
            <returns>
            Previous pen width, in pixels.
            </returns>
            
            <remarks>
            This method sets the pen width of a Node object to a width appropriate
            for displaying the node's rectangle as selected.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.AssertValid">
            <summary>
            Displays a message if the object is in an invalid state.
            </summary>
            
            <remarks>
            This is available in the debug build only.  It checks the object's
            internal state and calls <see cref="M:System.Diagnostics.Debug.Assert(System.Boolean)"/> if it detects a
            problem.
            </remarks>
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.m_oNodes">
            Collection of top-level Node objects.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.m_iPaddingPx">
            Padding to draw around the rectangles for the top-level nodes, in
            pixels.  Must be between MinPaddingPx and MaxPaddingPx.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.m_iPaddingDecrementPerLevelPx">
            Number of pixels to subtract from m_iPaddingPx at each node level.  Must
            be between MinPaddingDecrementPerLevelPx and
            MaxPaddingDecrementPerLevelPx.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.m_iPenWidthPx">
            Pen width to use for the top-level nodes, in pixels.  Must be between
            MinPenWidthPx and MaxPenWidthPx.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.m_iPenWidthDecrementPerLevelPx">
            Number of pixels to subtract from m_iPenWidthPx at each node level.
            Must be between MinPenWidthDecrementPerLevelPx and
            MaxPenWidthDecrementPerLevelPx.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.m_oBackColor">
            Color to use for the treemap's background, which shows through where
            there are no node rectangles.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.m_oBorderColor">
            Color to use for the rectangle borders.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.m_oMinColor">
            Color used to fill rectangles for which Node.ColorMetric is less
            than or equal to m_fMinColorMetric.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.m_oMaxColor">
            Color used to fill rectangles for which ColorMetric is greater than or
            equal to m_fMaxColorMetric.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.m_fMinColorMetric">
            Nodes with a ColorMetric value of m_fMinColorMetric or less get filled
            with m_oMinColor.  Must be negative.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.m_fMaxColorMetric">
            Nodes with a ColorMetric value of m_fMaxColorMetric or greater get
            filled with m_oMaxColor.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.m_iDiscretePositiveColors">
            Number of discrete colors in the color gradient between white and
            m_oMaxColor.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.m_iDiscreteNegativeColors">
            Number of discrete colors in the color gradient between white and
            m_oMinColor.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.m_sFontFamily">
            Font family to use.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.m_fFontMinSizePt">
            Minimum font size to use.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.m_fFontMaxSizePt">
            Maximum font size to use.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.m_fFontIncrementPt">
            Increment between font sizes.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.m_oFontSolidColor">
            Color to use for text.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.m_iFontMinAlpha">
            Minimum alpha value to use for text.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.m_iFontMaxAlpha">
            Maximum alpha value to use for text.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.m_iFontAlphaIncrementPerLevel">
            Increment between alpha values.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.m_iNodeLevelsWithText">
            Indicates which node levels should include text.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.m_iMinNodeLevelWithText">
            Minimum node level that should include text if m_iNodeLevelsWithText
            is set to Range.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.m_iMaxNodeLevelWithText">
            Maximum node level that should include text if m_iNodeLevelsWithText
            is set to Range.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.m_oSelectedNode">
            Currently selected node, or null if there is none.
        </member>
        <member name="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.m_oSavedSelectedNodeBitmap">
            Bitmap of selected node before it was repainted to show it as selected.
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.Nodes">
            <summary>
            Gets the collection of top-level <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> objects.
            </summary>
            
            <value>
            A <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Nodes"/>
            collection of top-level <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> objects.
            </value>
            
            <remarks>
            Items in the collection can be accessed by a zero-based index.  They
            can also be enumerated.
            </remarks>
            
            <seealso cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Nodes"/>
            <seealso cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.NodesXml">
            <summary>
            Gets or sets the entire nested node hierarchy as an XML string.
            </summary>
            
            <value>
            XML string containing the entire node hierarchy.
            </value>
            
            <remarks>
            Setting this property is an alternative to repeatedly calling the
            Nodes.Add method.  This property also serves as a convenient
            persistence mechanism.  Once you populate the <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.Nodes"/>
            collection, you can save the contents as an XML string.  Later, you can
            reload the collection by passing that string to this property.
            
            <para>
            Setting this property causes any existing <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> objects
            to be deleted.
            </para>
            
            <para>
            This is what the XML returned by this property looks like.  (The values
            of the SizeMetric, ColorMetric, and ToolTip attributes are omitted here
            but are present in real XML.)
            </para>
            
            <code>
            &lt;?xml version="1.0" encoding="utf-16"?&gt;
            &lt;Nodes EmptySizeMetric="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;
              &lt;Node Text="TopLevel1" SizeMetric="" ColorMetric="" ToolTip=""&gt;
                &lt;Nodes EmptySizeMetric=""&gt;
                  &lt;Node Text="Child1" SizeMetric="" ColorMetric="" ToolTip=""&gt;
                    &lt;Nodes EmptySizeMetric=""&gt;
                      &lt;Node Text="Grandchild1" SizeMetric="" ColorMetric="" ToolTip=""&gt;
                        &lt;Nodes EmptySizeMetric=""/&gt;
                      &lt;/Node&gt;
                      &lt;Node Text="Grandchild2" SizeMetric="" ColorMetric="" ToolTip=""&gt;
                        &lt;Nodes EmptySizeMetric=""/&gt;
                      &lt;/Node&gt;
                  ...
                    &lt;/Nodes&gt;
                  &lt;/Node&gt;
                  &lt;Node Text="Child2" SizeMetric="" ColorMetric="" ToolTip=""&gt;
                    &lt;Nodes EmptySizeMetric=""/&gt;
                  &lt;/Node&gt;
                ...
                &lt;/Nodes&gt;
              &lt;/Node&gt;
              &lt;Node Text="TopLevel2" SizeMetric="" ColorMetric="" ToolTip=""&gt;
                &lt;Nodes EmptySizeMetric=""/&gt;
              &lt;/Node&gt;
              ...
            &lt;/Nodes&gt;
            </code>
            
            </remarks>
            
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.Nodes"/>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.PaddingPx">
            <summary>
            Gets or sets the padding that is added to the rectangles for top-level
            nodes.
            </summary>
            
            <value>
            The padding that is added to the rectangles for top-level nodes, in
            pixels.  The value must be between
            <see cref="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MinPaddingPx"/> and
            <see cref="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MaxPaddingPx"/>.  The default value is 5.
            </value>
            
            <remarks>
            If the <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.PaddingDecrementPerLevelPx"/> property is 0,
            PaddingPx is the padding that is added to all node rectangles.
            Otherwise, <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.PaddingDecrementPerLevelPx"/> is subtracted from
            the padding at each node level.  Decreasing the padding at lower levels
            can improve the general appearance of the treemap.
            
            </remarks>
            
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.PaddingDecrementPerLevelPx"/>
            <seealso cref="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MinPaddingPx"/>
            <seealso cref="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MaxPaddingPx"/>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.PaddingDecrementPerLevelPx">
            <summary>
            Gets or sets the number of pixels that is subtracted from the padding
            at each node level.
            </summary>
            
            <value>
            The number of pixels that is subtracted from the rectangle padding
            at each node level.  The value must be between
            <see cref="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MinPaddingDecrementPerLevelPx"/> and
            <see cref="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MaxPaddingDecrementPerLevelPx"/>.  The
            default value is 1.
            </value>
            
            <remarks>
            The rectangles for top-level nodes are drawn with a padding of
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.PaddingPx"/>.  Set PaddingDecrementPerLevelPx to a positive
            value to force the padding to decrease at each level.  This can improve
            the general appearance of the treemap.  A value of 0 causes all
            nodes to use <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.PaddingPx"/>.
            
            <para>
            If <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.PaddingPx"/> is 5 and PaddingDecrementPerLevelPx is 1,
            for example, the padding for the top-level, child, and grandchild nodes
            will be 5, 4, and 3 pixels, respectively.  Padding is never less than
            <see cref="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MinPaddingPx"/> pixels.
            </para>
            
            </remarks>
            
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.PaddingPx"/>
            <seealso cref="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MinPaddingDecrementPerLevelPx"/>
            <seealso cref="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MaxPaddingDecrementPerLevelPx"/>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.PenWidthPx">
            <summary>
            Gets or sets the pen width that is used to draw the rectangles for the
            top-level nodes.
            </summary>
            
            <value>
            The pen width that is used to draw the rectangles for the top-level
            nodes, in pixels.  The value must be between
            <see cref="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MinPenWidthPx"/> and
            <see cref="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MaxPenWidthPx"/>.  The default value is 3.
            </value>
            
            <remarks>
            If the <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.PenWidthDecrementPerLevelPx"/> property is 0, all
            rectangles are drawn with a pen width of PenWidthPx pixels.  Otherwise,
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.PenWidthDecrementPerLevelPx"/> is subtracted from
            the pen width at each node level.  Decreasing the pen width at lower
            levels can improve the general appearance of the treemap.
            
            </remarks>
            
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.PenWidthDecrementPerLevelPx"/>
            <seealso cref="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MinPenWidthPx"/>
            <seealso cref="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MaxPenWidthPx"/>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.PenWidthDecrementPerLevelPx">
            <summary>
            Gets or sets the number of pixels that is subtracted from the pen
            width at each node level.
            </summary>
            
            <value>
            The number of pixels that is subtracted from the pen width at each
            node level.  The value must be between
            <see cref="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MinPenWidthDecrementPerLevelPx"/>
            and <see cref="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MaxPenWidthDecrementPerLevelPx"/>.
            The default value is 1.
            
            </value>
            
            <remarks>
            
            The rectangles for top-level nodes are drawn with a pen width of
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.PenWidthPx"/> pixels.  Set PenWidthDecrementPerLevelPx to
            a positive value to force the pen width to decrease at each level.
            This can improve the general appearance of the treemap.  A value of 0
            causes all nodes to use <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.PenWidthPx"/>.
            
            <para>
            If <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.PenWidthPx"/> is 4 and PenWidthDecrementPerLevelPx is
            1, for example, the pen width for the top-level nodes will be 4, the
            width for the child nodes will be 3, the width for the grandchildren
            will be 2, and so on.  The pen width is never less than 1 pixel.
            </para>
            
            </remarks>
            
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.PenWidthPx"/>
            <seealso cref="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MinPenWidthDecrementPerLevelPx"/>
            <seealso cref="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MaxPenWidthDecrementPerLevelPx"/>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.BackColor">
            <summary>
            Gets or sets the treemap's background color.
            </summary>
            
            <value>
            The treemap's background color, as a <see cref="T:System.Drawing.Color"/>.
            </value>
            
            <remarks>
            The background color is used to paint areas of the treemap that aren't
            covered by rectangles.  The default value is SystemColors.Window.
            </remarks>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.BorderColor">
            <summary>
            Gets or sets the color of rectangle borders.
            </summary>
            
            <value>
            The color of the rectangle borders, as a <see cref="T:System.Drawing.Color"/>.
            </value>
            
            <remarks>
            The default border color is SystemColors.WindowFrame.
            </remarks>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MinColor">
            <summary>
            Gets or sets the maximum negative fill color.
            </summary>
            
            <value>
            The fill color for nodes with a
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/> value of <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MinColorMetric"/>
            or less, as a <see cref="T:System.Drawing.Color"/>.
            </value>
            
            <remarks>
            See <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/> for details on how fill colors for
            node rectangles are determined.
            </remarks>
            
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MinColorMetric"/>
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/>
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.DiscreteNegativeColors"/>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MaxColor">
            <summary>
            Gets or sets the maximum positive fill color.
            </summary>
            
            <value>
            The fill color for nodes with a
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/> value of <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MaxColorMetric"/>
            or greater, as a <see cref="T:System.Drawing.Color"/>.
            </value>
            
            <remarks>
            See <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/> for details on how fill colors for
            node rectangles are determined.
            </remarks>
            
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MaxColorMetric"/>
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/>
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.DiscretePositiveColors"/>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MinColorMetric">
            <summary>
            Gets or sets the <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/> value to map to 
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MinColor"/>.
            </summary>
            
            <value>
            The <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/> value to map to
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MinColor"/>.
            </value>
            
            <remarks>
            See <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/> for details on how fill colors for
            node rectangles are determined.
            </remarks>
            
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MinColor"/>
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/>
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.DiscreteNegativeColors"/>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MaxColorMetric">
            <summary>
            Gets or sets the <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/> value to map to 
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MaxColor"/>.
            </summary>
            
            <value>
            The <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/> value to map to
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MaxColor"/>.
            </value>
            
            <remarks>
            See <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/> for details on how fill colors for
            node rectangles are determined.
            </remarks>
            
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MaxColor"/>
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/>
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.DiscretePositiveColors"/>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.DiscreteNegativeColors">
            <summary>
            Gets or sets the number of discrete fill colors to use in the negative
            color range.
            </summary>
            
            <value>
            The number of discrete fill colors to use in the range between white
            and <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MinColor"/>.  Must be between
            <see cref="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MinDiscreteColors"/> and
            <see cref="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MaxDiscreteColors"/>.  The default value
            is 20.
            </value>
            
            <remarks>
            
            When filling rectangles for nodes that have a negative
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/> value, the
            <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator"/> splits the negative color range, which
            is white to <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MinColor"/>, into a set of discrete colors.
            Nodes with a <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/> value of 0 are filled with
            white, nodes with a <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/> value of
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MinColorMetric"/> or less are filled with
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MinColor"/>, and nodes with a
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/> somewhere between are mapped to the
            nearest discrete color within the negative color range.
            
            <para>
            The default value provides sufficient color granularity for most
            applications.
            </para>
            
            </remarks>
            
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MinColor"/>
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MinColorMetric"/>
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.DiscretePositiveColors">
            <summary>
            Gets or sets the number of discrete fill colors to use in the positive
            color range.
            </summary>
            
            <value>
            The number of discrete fill colors to use in the range between white
            and <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MaxColor"/>.  Must be between
            <see cref="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MinDiscreteColors"/> and
            <see cref="F:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MaxDiscreteColors"/>.  The default value
            is 20.
            </value>
            
            <remarks>
            
            When filling rectangles for nodes that have a positive
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/> value, the
            <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator"/> splits the positive color range, which
            is white to <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MaxColor"/>, into a set of discrete colors.
            Nodes with a <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/> value of 0 are filled with
            white, nodes with a <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/> value of
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MaxColorMetric"/> or greater are filled with
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MaxColor"/>, and nodes with a
            <see cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/> somewhere between are mapped to the
            nearest discrete color within the positive color range.
            
            <para>
            The default value provides sufficient color granularity for most
            applications.
            </para>
            
            </remarks>
            
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MaxColor"/>
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.MaxColorMetric"/>
            <seealso cref="P:Microsoft.Research.CommunityTechnologies.Treemap.Node.ColorMetric"/>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.FontFamily">
            <summary>
            Gets or sets the font family to use for drawing node text.
            </summary>
            
            <value>
            The name of the font family to use for drawing node text.  The default
            value is Arial.
            </value>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.FontSolidColor">
            <summary>
            Gets or sets the color to use for node text.
            </summary>
            
            <value>
            The color to use for node text, as a <see cref="T:System.Drawing.Color"/>.
            </value>
            
            <remarks>
            This must be a solid color, which means its alpha component must be
            255.  Text can be drawn using transparent colors; see
            <see cref="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.SetFontAlphaRange(System.Int32,System.Int32,System.Int32)"/> for details.
            </remarks>
            
            <seealso cref="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.SetFontAlphaRange(System.Int32,System.Int32,System.Int32)"/>
        </member>
        <member name="P:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.NodeLevelsWithText">
            <summary>
            Gets or sets the node levels to show text for.
            </summary>
            
            <value>
            A <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.NodeLevelsWithText"/> enumeration that indicates which node levels
            should include text.  The default value is All.
            </value>
            
            <seealso cref="M:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.SetNodeLevelsWithTextRange(System.Int32,System.Int32)"/>
        </member>
        <member name="E:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.DrawItem">
            <summary>
            Occurs during owner drawing.
            </summary>
            
            <remarks>
            Owner drawing is initiated by calling the Draw(rectangle) method.
            This computes the rectangle for each of the TreemapGenerator's
            <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> objects, then fires the DrawItem event for each
            <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/>.  Information needed to draw the
            <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.Node"/> can be obtained from the event arguments.
            </remarks>
            
            <example>
            Here is sample C# code that populates a TreemapGenerator with two
            top-level nodes, each of which has two child nodes.  It implements a
            DrawItem handler to do owner drawing and calls the Draw(Rectangle)
            method to initiate drawing.
            
            <code>
            
            protected void
            OwnerDrawTreemap()
            {
                // Create a TreemapGenerator object.
            
                TreemapGenerator oTreemapGenerator = new TreemapGenerator();
            
                // We want to do owner drawing, so handle the DrawItem event.
            
                oTreemapGenerator.DrawItem +=
                    new TreemapGenerator.TreemapDrawItemEventHandler(DrawItem);
            
                // Populate the Nodes collection.
            
                PopulateTreemap(oTreemapGenerator);
            
                // Create a rectangle to draw within.
            
                Rectangle oRectangle = new Rectangle(0, 0, 500, 400);
            
                // Draw the treemap.  This causes the TreemapGenerator to compute
                // a rectangle for each Node object, then call DrawItem for each
                // Node.
            
                oTreemapGenerator.Draw(oRectangle);
            }
            
            protected void
            PopulateTreemap(TreemapGenerator oTreemapGenerator)
            {
                Nodes oNodes;
                Node oNode;
                Nodes oChildNodes;
                Node oChildNode;
                        
                // Get the collection of top-level nodes.
                        
                oNodes = oTreemapGenerator.Nodes;
                        
                // Add a top-level node to the collection.  The node's Tag property,
                // which can hold anything, is set to an arbitrary string here.
                        
                oNode = oNodes.Add("Top Level 1", 25F, 100F,
                    "TagForTopLevel1");
                        
                // Add child nodes to the top-level node.
                        
                oChildNodes = oNode.Nodes;
                oChildNode = oChildNodes.Add("Child 1-1", 90F, 2.5F,
                    "TagForChild11");
                oChildNode = oChildNodes.Add("Child 1-2", 10F, -34.5F,
                    "TagForChild12");
                        
                // Add another top-level node.
                        
                oNode = oNodes.Add("Top Level 2", 50F, -40.1F,
                    "TagForTopLevel2");
                        
                // Add child nodes to the second top-level node.
                        
                oChildNodes = oNode.Nodes;
                oChildNode = oChildNodes.Add("Child 2-1", 61F, 0F,
                    "TagForChild21");
                oChildNode = oChildNodes.Add("Child 2-2", 100F, 200F,
                    "TagForChild22");
            }
            
            protected void
            DrawItem(Object sender, TreemapDrawItemEventArgs e)
            {
                // Get the Node object that needs to be drawn.
            
                Node oNode = e.Node;
            
                // The owner-draw code can do anything with the node -- create SVG,
                // write to a PDF file, save to some private binary format, or
                // whatever it wants.  In this example, we'll just write
                // information about the node to a log file.
            
                WriteToLog("Text: " + oNode.Text);
                WriteToLog("Tag: " + oNode.Tag);
                WriteToLog("ColorMetric: " + oNode.ColorMetric);
                WriteToLog("Bounds: " + e.Bounds);
                WriteToLog("Pen width: " + e.PenWidthPx);
                WriteToLog("--------------------");
            }
            
            </code>
            
            <para>
            Running this code produces the following log file:
            
            <code>
            
            Text: Top Level 1
            Tag: TagForTopLevel1
            ColorMetric: 100
            Bounds: {X=335,Y=5,Width=161,Height=391}
            Pen width: 3
            --------------------
            Text: Child 1-1
            Tag: TagForChild11
            ColorMetric: 2.5
            Bounds: {X=342,Y=52,Width=147,Height=337}
            Pen width: 2
            --------------------
            Text: Child 1-2
            Tag: TagForChild12
            ColorMetric: -34.5
            Bounds: {X=342,Y=12,Width=147,Height=36}
            Pen width: 2
            --------------------
            Text: Top Level 2
            Tag: TagForTopLevel2
            ColorMetric: -40.1
            Bounds: {X=5,Y=5,Width=325,Height=391}
            Pen width: 3
            --------------------
            Text: Child 2-1
            Tag: TagForChild21
            ColorMetric: 0
            Bounds: {X=12,Y=12,Width=311,Height=141}
            Pen width: 2
            --------------------
            Text: Child 2-2
            Tag: TagForChild22
            ColorMetric: 200
            Bounds: {X=12,Y=157,Width=311,Height=232}
            Pen width: 2
            --------------------
            
            </code>
            
            </para>
            
            </example>
        </member>
        <member name="T:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.TreemapDrawItemEventHandler">
            <summary>
            Represents the method that will handle the <see cref="E:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator.DrawItem"/>
            event of a <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator"/> object.
            </summary>
            
            <param name="sender">
            The <see cref="T:Microsoft.Research.CommunityTechnologies.Treemap.TreemapGenerator"/> that fired the event.
            </param>
            
            <param name="treemapDrawItemEventArgs">
            Provides information that can be used to draw the item.
            </param>
        </member>
        <member name="T:Microsoft.Research.CommunityTechnologies.XmlLib.XmlUtil">
            <summary>
            XML utility methods.
            </summary>
            
            <remarks>
            This class contains utility methods for dealing with XML.  All methods are
            static.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.XmlLib.XmlUtil.#ctor">
            <summary>
            XmlUtil constructor.
            </summary>
            
            <remarks>
            Do not instantiate an XmlUtil object.  All XmlUtil methods are static.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.XmlLib.XmlUtil.AppendNewNode(System.Xml.XmlNode,System.String)">
            <summary>
            AppendNewNode method.
            </summary>
            
            <param name="oParentNode">
            XmlNode.  Node to append a new node to.
            </param>
            
            <param name="sChildName">
            String.  Name of the new node.
            </param>
            
            <returns>
            XmlNode.  New node.
            </returns>
            
            <remarks>
            Creates a new node and appends it to a parent node.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.XmlLib.XmlUtil.SelectRequiredSingleNode(System.Xml.XmlNode,System.String)">
            <summary>
            SelectRequiredSingleNode method.
            </summary>
            
            <param name="oNode">
            XmlNode.  Node to select from.
            </param>
            
            <param name="sXPath">
            String.  XPath expression.
            </param>
            
            <returns>
            XmlNode.  Selected node.
            </returns>
            
            <remarks>
            This method selects a single node that must exist.  If it doesn't
            exist, an exception is thrown.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.XmlLib.XmlUtil.CheckNodeName(System.Xml.XmlNode,System.String)">
            <summary>
            CheckNodeName method.
            </summary>
            
            <param name="oNode">
            XmlNode.  Node to check.
            </param>
            
            <param name="sExpectedName">
            String.  Expected name.
            </param>
            
            <remarks>
            Asserts if a node doesn't have the expected name.  Debug-only.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.XmlLib.XmlUtil.GetAttribute(System.Xml.XmlNode,System.String,System.Boolean,System.String@)">
            <summary>
            GetAttribute method.
            </summary>
            
            <param name="oNode">
            XmlNode.  Node to read attribute from.
            </param>
            
            <param name="sName">
            String.  Attribute to read.
            </param>
            
            <param name="bRequired">
            Boolean.  true if the attribute is required.
            </param>
            
            <param name="sValue">
            String.  Where the attribute value gets stored.
            </param>
            
            <returns>
            Boolean.  true if the attribute was found and stored in sValue.
            </returns>
            
            <remarks>
            This method reads an XML attribute from an XmlNode.  If bRequired is
            true and the attribute is missing, an exception is thrown.  If
            bRequired is false and the attribute is missing, an empty string is
            stored in sValue and false is returned.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.XmlLib.XmlUtil.GetInt32Attribute(System.Xml.XmlNode,System.String,System.Boolean,System.Int32@)">
            <summary>
            GetInt32Attribute method.
            </summary>
            
            <param name="oNode">
            XmlNode.  Node to read attribute from.
            </param>
            
            <param name="sName">
            String.  Attribute to read.
            </param>
            
            <param name="bRequired">
            Boolean.  true if the attribute is required.
            </param>
            
            <param name="iValue">
            Int32.  Where the converted attribute gets stored.
            </param>
            
            <returns>
            Boolean.  true if the attribute was found and stored in iValue.
            </returns>
            
            <remarks>
            This method reads an XML attribute that contains an Int32 string
            and converts it to an Int32.  If bRequired is true and the attribute
            is missing, an exception is thrown.  If bRequired is false and the
            attribute is missing, Int32.MinValue is stored in iValue and false
            is returned.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.XmlLib.XmlUtil.GetInt64Attribute(System.Xml.XmlNode,System.String,System.Boolean,System.Int64@)">
            <summary>
            GetInt64Attribute method.
            </summary>
            
            <param name="oNode">
            XmlNode.  Node to read attribute from.
            </param>
            
            <param name="sName">
            String.  Attribute to read.
            </param>
            
            <param name="bRequired">
            Boolean.  true if the attribute is required.
            </param>
            
            <param name="i64Value">
            Int64.  Where the converted attribute gets stored.
            </param>
            
            <returns>
            Boolean.  true if the attribute was found and stored in i64Value.
            </returns>
            
            <remarks>
            This method reads an XML attribute that contains an Int64 string
            and converts it to an Int64.  If bRequired is true and the attribute
            is missing, an exception is thrown.  If bRequired is false and the
            attribute is missing, Int64.MinValue is stored in i64Value and false
            is returned.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.XmlLib.XmlUtil.GetSingleAttribute(System.Xml.XmlNode,System.String,System.Boolean,System.Single@)">
            <summary>
            GetSingleAttribute method.
            </summary>
            
            <param name="oNode">
            XmlNode.  Node to read attribute from.
            </param>
            
            <param name="sName">
            String.  Attribute to read.
            </param>
            
            <param name="bRequired">
            Boolean.  true if the attribute is required.
            </param>
            
            <param name="fValue">
            Single.  Where the converted attribute gets stored.
            </param>
            
            <returns>
            Boolean.  true if the attribute was found and stored in fValue.
            </returns>
            
            <remarks>
            This method reads an XML attribute that contains a Single string and
            converts it to a Single.  If bRequired is true and the attribute is
            missing, an exception is thrown.  If bRequired is false and the
            attribute is missing, Single.MinValue is stored in fValue and false
            is returned.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.XmlLib.XmlUtil.GetDateTimeAttribute(System.Xml.XmlNode,System.String,System.Boolean,System.DateTime@)">
            <summary>
            GetDateTimeAttribute method.
            </summary>
            
            <param name="oNode">
            XmlNode.  Node to read attribute from.
            </param>
            
            <param name="sName">
            String.  Attribute to read.
            </param>
            
            <param name="bRequired">
            Boolean.  true if the attribute is required.
            </param>
            
            <param name="oValue">
            DateTime.  Where the converted attribute gets stored.
            </param>
            
            <returns>
            Boolean.  true if the attribute was found and stored in oValue.
            </returns>
            
            <remarks>
            This method reads an XML attribute that contains a date/time string
            and converts it to a DateTime.  If bRequired is true and the attribute
            is missing, an exception is thrown.  If bRequired is false and the
            attribute is missing, DateTime.MinValue is stored in oValue and false
            is returned.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.CommunityTechnologies.XmlLib.XmlUtil.SetAttributes(System.Xml.XmlNode,System.String[])">
            <summary>
            SetAttributes method.
            </summary>
            
            <param name="oNode">
            XmlNode.  Node to set attributes on.
            </param>
            
            <param name="asNameValuePairs">
            String[].  One or more pairs of strings.  The first string in each
            pair is an attribute name and the second is the attribute value.
            </param>
            
            <remarks>
            This sets multiple attributes on an XML node in one call.  It's an
            alternative to calling XmlElement.SetAttribute() repeatedly.
            </remarks>
        </member>
    </members>
</doc>
