Class RotationMinMaxWidth


  • public class RotationMinMaxWidth
    extends MinMaxWidth
    Class for min-max-width of rotated elements. Also contains heuristic methods for it calculation based on the assumption that area of element stays the same when we try to layout it with different available width (available width is between min-width and max-width).
    • Field Detail

      • minWidthOrigin

        private double minWidthOrigin
      • maxWidthOrigin

        private double maxWidthOrigin
      • minWidthHeight

        private double minWidthHeight
      • maxWidthHeight

        private double maxWidthHeight
    • Constructor Detail

      • RotationMinMaxWidth

        public RotationMinMaxWidth​(double minWidth,
                                   double maxWidth,
                                   double minWidthOrigin,
                                   double maxWidthOrigin,
                                   double minWidthHeight,
                                   double maxWidthHeight)
        Create new instance
        Parameters:
        minWidth - min-width of rotated element
        maxWidth - max-width of rotated element
        minWidthOrigin - the width of not rotated element, that will have min-width after rotation
        maxWidthOrigin - the width of not rotated element, that will have max-width after rotation
        minWidthHeight - the height of rotated element, that have min-width as its rotated width
        maxWidthHeight - the height of rotated element, that have min-width as its rotated width
    • Method Detail

      • getMinWidthOrigin

        public double getMinWidthOrigin()
      • getMaxWidthOrigin

        public double getMaxWidthOrigin()
      • getMinWidthHeight

        public double getMinWidthHeight()
      • getMaxWidthHeight

        public double getMaxWidthHeight()
      • calculate

        public static RotationMinMaxWidth calculate​(double angle,
                                                    double area,
                                                    MinMaxWidth elementMinMaxWidth)
        Heuristic method, based on the assumption that area of element stays the same, when we try to layout it with different available width (available width is between min-width and max-width).
        Parameters:
        angle - rotation angle in radians
        area - the constant area
        elementMinMaxWidth - NOT rotated element min-max-width
        Returns:
        possible min-max-width of element after rotation
      • calculate

        public static RotationMinMaxWidth calculate​(double angle,
                                                    double area,
                                                    MinMaxWidth elementMinMaxWidth,
                                                    double availableWidth)
        Heuristic method, based on the assumption that area of element stays the same, when we try to layout it with different available width (available width is between min-width and max-width).
        Parameters:
        angle - rotation angle in radians
        area - the constant area
        elementMinMaxWidth - NOT rotated element min-max-width
        availableWidth - the maximum width of area the element will occupy after rotation.
        Returns:
        possible min-max-width of element after rotation
      • calculateRotatedWidth

        public static double calculateRotatedWidth​(Rectangle area,
                                                   double angle)
        Utility method for calculating rotated width of area in a similar way to other calculations in this class.
        Parameters:
        area - the initial area
        angle - the rotation angle in radians
        Returns:
        width of rotated area
      • sin

        private static double sin​(double angle)
      • cos

        private static double cos​(double angle)
      • correctSinCos

        private static double correctSinCos​(double value)