Package icyllis.modernui.util
Class TypedValue
java.lang.Object
icyllis.modernui.util.TypedValue
Container for a dynamically typed data value.
Primarily used with
Primarily used with
Resources
for holding resource values.-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intComplex data: mask to extract mantissa information (after shifting byCOMPLEX_MANTISSA_SHIFT).static final intComplex data: bit shift of mantissa information.static final intComplex data: the mantissa magnitude is 0 bits -- i.e, 0x0.nnnnnnstatic final intComplex data: the mantissa magnitude is 16 bits -- i.e, 0xnnnn.nnstatic final intComplex data: the mantissa is an integral number -- i.e., 0xnnnnnn.0static final intComplex data: the mantissa magnitude is 8 bits -- i.e, 0xnn.nnnnstatic final intComplex data: mask to extract radix information (after shifting byCOMPLEX_RADIX_SHIFT).static final intComplex data: where the radix information is, telling where the decimal place appears in the mantissa.static final intTYPE_DIMENSIONcomplex unit: Value is device-independent pixels.static final intTYPE_FRACTIONcomplex unit: A fraction of the view size.static final intTYPE_FRACTIONcomplex unit: A fraction of the parent size.static final intTYPE_DIMENSIONcomplex unit: Value is in inches.static final intComplex data: mask to extract unit information (after shifting byCOMPLEX_UNIT_SHIFT).static final intTYPE_DIMENSIONcomplex unit: Value is in millimeters.static final intTYPE_DIMENSIONcomplex unit: Value is in points.static final intTYPE_DIMENSIONcomplex unit: Value is raw pixels.static final intComplex data: bit shift of unit information.static final intTYPE_DIMENSIONcomplex unit: Value is scale-independent pixels.static final intThe data field holds an attribute resource identifier (referencing an attribute in the current theme style, not a resource entry).static final intThe data field holds a complex number encoding a dimension value.static final intThe data field holds an IEEE 754 floating-point number.static final intThe data field holds a complex number encoding a fraction of a container.static final intThe value contains no data.static final intThe data field holds a resource identifier.static final intThe string field holds string data. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic floatapplyDimension(int unit, float value, DisplayMetrics metrics) Converts an unpacked complex data value holding a dimension to its final floating-point value.static floatcomplexToDimension(int data, DisplayMetrics metrics) Converts a complex data value holding a dimension to its final floating point value.static intcomplexToDimensionPixelOffset(int data, DisplayMetrics metrics) Converts a complex data value holding a dimension to its final value as an integer pixel offset.static intcomplexToDimensionPixelSize(int data, DisplayMetrics metrics) Converts a complex data value holding a dimension to its final value as an integer pixel size.static floatcomplexToFloat(int complex) Retrieve the base value from a complex data integer.static floatcomplexToFraction(int data, float base, float pbase) Converts a complex data value holding a fraction to its final floating point value.static intcreateComplexDimension(float value, int units) Creates a complex data integer that stores a dimension value and units.static intcreateComplexDimension(int value, int units) Creates a complex data integer that stores a dimension value and units.static intfloatToComplex(float value) Convert a base value to a complex data integer.static intintToComplex(int value) Convert a base value to a complex data integer.
-
Field Details
-
TYPE_NULL
public static final int TYPE_NULLThe value contains no data.- See Also:
-
TYPE_REFERENCE
public static final int TYPE_REFERENCEThe data field holds a resource identifier.- See Also:
-
TYPE_ATTRIBUTE
public static final int TYPE_ATTRIBUTEThe data field holds an attribute resource identifier (referencing an attribute in the current theme style, not a resource entry).- See Also:
-
TYPE_STRING
public static final int TYPE_STRINGThe string field holds string data. In addition, if data is non-zero then it is the string block index of the string and assetCookie is the set of assets the string came from.- See Also:
-
TYPE_FLOAT
public static final int TYPE_FLOATThe data field holds an IEEE 754 floating-point number.- See Also:
-
TYPE_DIMENSION
public static final int TYPE_DIMENSIONThe data field holds a complex number encoding a dimension value.- See Also:
-
TYPE_FRACTION
public static final int TYPE_FRACTIONThe data field holds a complex number encoding a fraction of a container.- See Also:
-
COMPLEX_UNIT_SHIFT
public static final int COMPLEX_UNIT_SHIFTComplex data: bit shift of unit information.- See Also:
-
COMPLEX_UNIT_MASK
public static final int COMPLEX_UNIT_MASKComplex data: mask to extract unit information (after shifting byCOMPLEX_UNIT_SHIFT). This gives us 16 possible types, as defined below.- See Also:
-
COMPLEX_UNIT_PX
public static final int COMPLEX_UNIT_PXTYPE_DIMENSIONcomplex unit: Value is raw pixels.- See Also:
-
COMPLEX_UNIT_DP
public static final int COMPLEX_UNIT_DPTYPE_DIMENSIONcomplex unit: Value is device-independent pixels.- See Also:
-
COMPLEX_UNIT_SP
public static final int COMPLEX_UNIT_SPTYPE_DIMENSIONcomplex unit: Value is scale-independent pixels.- See Also:
-
COMPLEX_UNIT_PT
public static final int COMPLEX_UNIT_PTTYPE_DIMENSIONcomplex unit: Value is in points.- See Also:
-
COMPLEX_UNIT_IN
public static final int COMPLEX_UNIT_INTYPE_DIMENSIONcomplex unit: Value is in inches.- See Also:
-
COMPLEX_UNIT_MM
public static final int COMPLEX_UNIT_MMTYPE_DIMENSIONcomplex unit: Value is in millimeters.- See Also:
-
COMPLEX_UNIT_FRACTION
public static final int COMPLEX_UNIT_FRACTIONTYPE_FRACTIONcomplex unit: A fraction of the view size.- See Also:
-
COMPLEX_UNIT_FRACTION_PARENT
public static final int COMPLEX_UNIT_FRACTION_PARENTTYPE_FRACTIONcomplex unit: A fraction of the parent size.- See Also:
-
COMPLEX_RADIX_SHIFT
public static final int COMPLEX_RADIX_SHIFTComplex data: where the radix information is, telling where the decimal place appears in the mantissa.- See Also:
-
COMPLEX_RADIX_MASK
public static final int COMPLEX_RADIX_MASKComplex data: mask to extract radix information (after shifting byCOMPLEX_RADIX_SHIFT). This give us 4 possible fixed point representations as defined below.- See Also:
-
COMPLEX_RADIX_23p0
public static final int COMPLEX_RADIX_23p0Complex data: the mantissa is an integral number -- i.e., 0xnnnnnn.0- See Also:
-
COMPLEX_RADIX_16p7
public static final int COMPLEX_RADIX_16p7Complex data: the mantissa magnitude is 16 bits -- i.e, 0xnnnn.nn- See Also:
-
COMPLEX_RADIX_8p15
public static final int COMPLEX_RADIX_8p15Complex data: the mantissa magnitude is 8 bits -- i.e, 0xnn.nnnn- See Also:
-
COMPLEX_RADIX_0p23
public static final int COMPLEX_RADIX_0p23Complex data: the mantissa magnitude is 0 bits -- i.e, 0x0.nnnnnn- See Also:
-
COMPLEX_MANTISSA_SHIFT
public static final int COMPLEX_MANTISSA_SHIFTComplex data: bit shift of mantissa information.- See Also:
-
COMPLEX_MANTISSA_MASK
public static final int COMPLEX_MANTISSA_MASKComplex data: mask to extract mantissa information (after shifting byCOMPLEX_MANTISSA_SHIFT). This gives us 23 bits of precision; the top bit is the sign.- See Also:
-
-
Constructor Details
-
TypedValue
public TypedValue()
-
-
Method Details
-
complexToFloat
public static float complexToFloat(int complex) Retrieve the base value from a complex data integer.
This uses theCOMPLEX_MANTISSA_MASKandCOMPLEX_RADIX_MASKfields of the data to compute a floating point representation of the number they describe.
The units are ignored.- Parameters:
complex- A complex data value.- Returns:
- A floating point value corresponding to the complex data.
-
complexToDimension
Converts a complex data value holding a dimension to its final floating point value. The given data must be structured as aTYPE_DIMENSION.- Parameters:
data- A complex data value holding a unit, magnitude, and mantissa.metrics- Current display metrics to use in the conversion -- supplies display density and scaling information.- Returns:
- The complex floating point value multiplied by the appropriate metrics depending on its unit.
-
complexToDimensionPixelOffset
Converts a complex data value holding a dimension to its final value as an integer pixel offset.
This is the same ascomplexToDimension(int, icyllis.modernui.util.DisplayMetrics), except the raw floating point value is truncated to an integer (pixel) value. The given data must be structured as aTYPE_DIMENSION.- Parameters:
data- A complex data value holding a unit, magnitude, and mantissa.metrics- Current display metrics to use in the conversion -- supplies display density and scaling information.- Returns:
- The number of pixels specified by the data and its desired multiplier and units.
-
complexToDimensionPixelSize
Converts a complex data value holding a dimension to its final value as an integer pixel size.
This is the same ascomplexToDimension(int, icyllis.modernui.util.DisplayMetrics), except the raw floating point value is converted to an integer (pixel) value for use as a size.
A size conversion involves rounding the base value, and ensuring that a non-zero base value is at least one pixel in size.The given data must be structured as a
TYPE_DIMENSION.- Parameters:
data- A complex data value holding a unit, magnitude, and mantissa.metrics- Current display metrics to use in the conversion -- supplies display density and scaling information.- Returns:
- The number of pixels specified by the data and its desired multiplier and units.
-
applyDimension
Converts an unpacked complex data value holding a dimension to its final floating-point value. The two parameters unit and value are as inTYPE_DIMENSION.- Parameters:
unit- The unit to convert from.value- The value to apply the unit to.metrics- Current display metrics to use in the conversion -- supplies display density and scaling information.- Returns:
- The complex floating point value multiplied by the appropriate metrics depending on its unit.
-
intToComplex
@Internal public static int intToComplex(int value) Convert a base value to a complex data integer.
This sets theCOMPLEX_MANTISSA_MASKandCOMPLEX_RADIX_MASKfields of the data to create a floating point representation of the given value. The units are not set.This is the inverse of
complexToFloat(int).- Parameters:
value- An integer value.- Returns:
- A complex data integer representing the value.
-
floatToComplex
@Internal public static int floatToComplex(float value) Convert a base value to a complex data integer.
This sets theCOMPLEX_MANTISSA_MASKandCOMPLEX_RADIX_MASKfields of the data to create a floating point representation of the given value. The units are not set.This is the inverse of
complexToFloat(int).- Parameters:
value- A floating point value.- Returns:
- A complex data integer representing the value.
-
createComplexDimension
@Internal public static int createComplexDimension(int value, int units) Creates a complex data integer that stores a dimension value and units.
The resulting value can be passed to e.g.
complexToDimensionPixelOffset(int, DisplayMetrics)to calculate the pixel value for the dimension.- Parameters:
value- the value of the dimensionunits- the units of the dimension, e.g.COMPLEX_UNIT_DP- Returns:
- A complex data integer representing the value and units of the dimension.
-
createComplexDimension
@Internal public static int createComplexDimension(float value, int units) Creates a complex data integer that stores a dimension value and units.
The resulting value can be passed to e.g.
complexToDimensionPixelOffset(int, DisplayMetrics)to calculate the pixel value for the dimension.- Parameters:
value- the value of the dimensionunits- the units of the dimension, e.g.COMPLEX_UNIT_DP- Returns:
- A complex data integer representing the value and units of the dimension.
-
complexToFraction
public static float complexToFraction(int data, float base, float pbase) Converts a complex data value holding a fraction to its final floating point value. The given data must be structured as aTYPE_FRACTION.- Parameters:
data- A complex data value holding a unit, magnitude, and mantissa.base- The base value of this fraction. In other words, a standard fraction is multiplied by this value.pbase- The parent base value of this fraction. In other words, a parent fraction (nn%p) is multiplied by this value.- Returns:
- The complex floating point value multiplied by the appropriate base value depending on its unit.
-