Ejemplo n.º 1
0
            /// <summary>Get's possible values of NOT rotated width of all element that have therer rotated width less that availableWidth
            ///     </summary>
            /// <param name="availableWidth">the highest possible width of rotated element.</param>
            /// <returns>interval that specify biggest and smallest possible values of NOT rotated width of such elements.
            ///     </returns>
            public virtual RotationMinMaxWidth.WidthFunction.Interval GetValidOriginalWidths(double availableWidth)
            {
                double minWidth;
                double maxWidth;

                if (cos == 0)
                {
                    minWidth = area * sin / availableWidth;
                    maxWidth = MinMaxWidthUtils.GetInfWidth();
                }
                else
                {
                    if (sin == 0)
                    {
                        minWidth = 0;
                        maxWidth = availableWidth / cos;
                    }
                    else
                    {
                        double D = availableWidth * availableWidth - 4 * area * sin * cos;
                        if (D < 0)
                        {
                            return(null);
                        }
                        minWidth = (availableWidth - Math.Sqrt(D)) / (2 * cos);
                        maxWidth = (availableWidth + Math.Sqrt(D)) / (2 * cos);
                    }
                }
                return(new RotationMinMaxWidth.WidthFunction.Interval(minWidth, maxWidth));
            }
Ejemplo n.º 2
0
 private static double CorrectSinCos(double value)
 {
     if (MinMaxWidthUtils.IsEqual(value, 0))
     {
         return(0);
     }
     else
     {
         if (MinMaxWidthUtils.IsEqual(value, 1))
         {
             return(1);
         }
     }
     return(value);
 }
Ejemplo n.º 3
0
 public virtual float GetMaxWidth()
 {
     return(Math.Min(childrenMaxWidth + additionalWidth, MinMaxWidthUtils.GetInfWidth()));
 }