public ILabelModelParameter CreateParameterFromTarget(int segmentIndex, double segmentRatio, bool rightOfEdge)
        {
            RotatedSliderEdgeLabelModel model = rightOfEdge ? rightModel : leftModel;

            return
                (new RotatedSideSliderParameter(model.CreateParameterFromTarget(segmentIndex, segmentRatio),
                                                this));
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="RotatedSideSliderEdgeLabelModel"/> class.
        /// </summary>
        private RotatedSideSliderEdgeLabelModel(double distance, double angle, bool distanceRelativeToEdge,
                                                bool autoRotationEnabled)
        {
            double dist = distance;

            if (distance == 0.0)
            {
                dist += Double.Epsilon;
            }
            leftModel  = new RotatedSliderEdgeLabelModel(-dist, angle, distanceRelativeToEdge, autoRotationEnabled);
            rightModel = new RotatedSliderEdgeLabelModel(dist, angle, distanceRelativeToEdge, autoRotationEnabled);
        }
        public override object ProvideValue(IServiceProvider serviceProvider)
        {
            RotatedSliderEdgeLabelModel exModel = Model as RotatedSliderEdgeLabelModel ?? new RotatedSliderEdgeLabelModel();

            bool fromSource = (Location & SliderParameterLocation.FromSource) == SliderParameterLocation.FromSource;

            if (fromSource)
            {
                return(exModel.CreateParameterFromSource(SegmentIndex, SegmentRatio));
            }
            else
            {
                return(exModel.CreateParameterFromTarget(SegmentIndex, SegmentRatio));
            }
        }