Class DimensionValue


  • public class DimensionValue
    extends java.lang.Object
    Representation of a dimension property value. A dimension has two parts: the measure and the optional units. If the units are DEFAULT_UNIT, then the units are assumed to be those set on the design as a whole.

    The following units are supported:

    • in (inch)
    • cm (centimeter)
    • mm (millimeter)
    • pt (point)
    • pc (pica)
    • px (pixel)
    • em (the height of the element's font)
    • ex (x-height)
    • % (percentage)
    See Also:
    DimensionUtil
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.util.regex.Pattern commaSeparatorPattern
      Compiled pattern for CSS absolute pattern: "000.000,000.000"
      static java.lang.String DEFAULT_UNIT
      Default unit for the dimension.
      static java.util.regex.Pattern dotSeparatorPattern
      Compiled pattern for CSS absolute pattern: "000,000.000,000"
      protected double measure
      The numeric measure part of the dimension.
      protected java.lang.String units
      The units part of the dimension.
    • Constructor Summary

      Constructors 
      Constructor Description
      DimensionValue​(double theMeasure, java.lang.String theUnits)
      Constructs a DimensionValue given its measure and unit.
    • Field Detail

      • measure

        protected final double measure
        The numeric measure part of the dimension.
      • units

        protected final java.lang.String units
        The units part of the dimension.
      • DEFAULT_UNIT

        public static final java.lang.String DEFAULT_UNIT
        Default unit for the dimension.
        See Also:
        Constant Field Values
      • dotSeparatorPattern

        public static final java.util.regex.Pattern dotSeparatorPattern
        Compiled pattern for CSS absolute pattern: "000,000.000,000"
      • commaSeparatorPattern

        public static final java.util.regex.Pattern commaSeparatorPattern
        Compiled pattern for CSS absolute pattern: "000.000,000.000"
    • Constructor Detail

      • DimensionValue

        public DimensionValue​(double theMeasure,
                              java.lang.String theUnits)
        Constructs a DimensionValue given its measure and unit.
        Parameters:
        theMeasure - numeric measure
        theUnits - units part for the dimension.
        Throws:
        java.lang.IllegalArgumentException - if the unit is not supported.
    • Method Detail

      • getMeasure

        public double getMeasure()
        Returns the measure portion of the dimension.
        Returns:
        the measure
      • getUnits

        public java.lang.String getUnits()
        Returns the units portion of the dimension.
        Returns:
        the units.
      • parse

        @Deprecated
        public static DimensionValue parse​(java.lang.String value)
                                    throws PropertyValueException
        Deprecated.
        Parses a dimension string in locale-independent way. The input string must match the following:
        • null
        • [1-9][0-9]*[.[0-9]*[ ]*[in|cm|mm|pt|pc|em|ex|px|%]]
        Parameters:
        value - the dimension string to parse
        Returns:
        a dimension object representing the dimension string.
        Throws:
        PropertyValueException - if the string is not valid
      • parseInput

        @Deprecated
        public static DimensionValue parseInput​(java.lang.String value)
                                         throws PropertyValueException
        Parses a dimension string in locale-dependent way. The input can be in localized value. The measure part use the decimal separator from the locale. e,g. "123,456.78" for English ; "123.456,78" for German.

        The string must match the following:

        • null
        • [1-9][0-9]*[.[0-9]*[ ]*[u]], u is the one of the allowed units

        Parameters:
        value - the string to parse
        Returns:
        a dimension object
        Throws:
        PropertyValueException - if the string is not valid
      • toString

        public java.lang.String toString()
        Converts the dimension value to a locale-independent string. The string will be converted into a format like "#.###", there is no group separator and remains at most 3 digits after the decimal separator. e.g: "12,000,000.12345cm" will be converted into "12000000.123"
        Overrides:
        toString in class java.lang.Object
        Returns:
        The string presentation of this dimension value.
      • toDisplayString

        public java.lang.String toDisplayString()
        Returns the dimension value in localized format.

        Returns:
        localized format for this instance.
      • indexOfUnitLetter

        public static int indexOfUnitLetter​(java.lang.String value)
        Finds index of the first unit character( pt, %, pc... ) in the String.
        Parameters:
        value - an input string
        Returns:
        index of the first letter. Return -1 if no letter found in the String value.
      • equals

        public boolean equals​(java.lang.Object obj)
        Compares this dimension value to the given object. The result is true if and only if the argument is not null and is a dimension value object with the same measure and the same type of unit. The two dimension values with different units are not equal, although they can be converted to same measure
        Overrides:
        equals in class java.lang.Object
        Parameters:
        obj - the object to compare this dimension value against.
        Returns:
        true if this dimension value is equal to the given one; false otherwise.
      • hashCode

        public int hashCode()
        Returns a hash code for this DimensionValue object. The result is computed with the exclusive OR of the two halves of the long integer bit representation of the measure, and the hash code of unit string. The measure bit representation is exactly produced by the method Double.doubleToLongBits(double), of the primitive double value represented by the measure of this DimensionValue object. That is, the hash code is the value of the expression:
         int result = 17 + 37 * (int) (m ˆ (m >>> 32));
         result = 37 * result + getUnits().toLowerCase().hashCode();
         
        where m is defined by:
        
         long m = Double.doubleToLongBits(this.getMeasure());
         
        Overrides:
        hashCode in class java.lang.Object
        Returns:
        the hash code value for this object.