    package flare.vis.operator.label
    {
        import flare.display.TextSprite;
        import flare.util.Shapes;
        import flare.vis.data.Data;
        import flare.vis.data.DataSprite;

        import flash.text.TextFormat;

        /**
         * Labeler that positions labels around a circle in polar coordinates.
         *
         * <p>If <code>rotateLabels</code> is set to <codetrue</code>, labels will
         * be rotated such that they align radially. That is, the will be aligned
         * along lines emanating out of the center of the circle. In this case, it
         * is recommend that each label's <code>textMode</code> property be set to
         * <code>TextSprite.EMBED</code> and that the appropriate fonts be
         * embedded in your application. Otherwise, the text labels may be
         * illegible due to rotation artifacts (for <code>BITMAP</code> labels) or
         * will disappear alltogether (for <code>DEVICE</code> labels).</p>
         */
        public class RadialLabeler extends Labeler
        {
            /** If true, labels will be rotated to align along the radius. */
            public var rotateLabels:Boolean = false;

            /** The number of pixels to offset labels along the radius. */
            public var radiusOffset:Number = 0;

            /** The number of radians to offset a label's angle. */
            public var angleOffset:Number = 0;

            /**
             * Creates a new RadialLabeler.
             * @param source the property from which to retrieve the label text.
             *  If this value is a string or property instance, the label text will
             *  be pulled directly from the named property. If this value is a
             *  Function or Expression instance, the value will be used to set the
             *  <code>textFunction<code> property and the label text will be
             *  determined by evaluating that function.
             * @param rotate flag indicating if labels should be rotated to align
             *  along the radius. If true, all text sprite labels should use
             *  embedded fonts to keep the rotated labels legibile. If false,
             *  labels will instead have their horizontal and vertical anchor
             *  settings adjusted according to their angle.
             * @param format optional text formatting information for labels
             * @param filter a Boolean-valued filter function determining which
             *  items will be given labels
             * @param policy the label creation policy. One of LAYER (for adding a
             *  separate label layer) or CHILD (for adding labels as children of
             *  data objects)
             */
            public function RadialLabeler(source:*=n