Units.java
3.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
/*
* Decompiled with CFR 0_118.
*/
package com.adobe.xfa.text;
import com.adobe.xfa.ut.UnitSpan;
public final class Units {
static float toFloat(int pt1000) {
return (float)pt1000 / 1000.0f;
}
static float toFloat(UnitSpan us) {
return Units.toFloat(Units.toInt(us));
}
static int toInt(float pts) {
return Math.round(pts * 1000.0f);
}
static int toInt(UnitSpan us) {
return UnitSpan.convertUnit(19, us.units(), us.value());
}
static UnitSpan toUnitSpan(int pt1000) {
return Units.toUnitSpan(19, pt1000);
}
static UnitSpan toUnitSpan(float pts) {
return Units.toUnitSpan(3, Units.toInt(pts));
}
static UnitSpan forceUnitSpan(float f) {
return new UnitSpan(3, Units.forceInt(f));
}
static int forceInt(float f) {
int result = Units.toInt(f);
float reconvert = Units.toFloat(result);
if (reconvert < f) {
++result;
}
return result;
}
public static String doubleToString(double value, int decimals) {
int i;
StringBuilder result = new StringBuilder();
for (i = 0; i < decimals; ++i) {
value *= 10.0;
}
long rounded = Math.round(value);
Units.prependZeros(result, Long.toString(rounded), decimals, true);
int decimalPos = result.length() - decimals;
int lastZero = result.length();
while (lastZero > decimalPos && result.charAt(i = lastZero - 1) == '0') {
lastZero = i;
}
result.delete(lastZero, result.length());
if (lastZero > decimalPos) {
result.insert(decimalPos, '.');
}
return result.toString();
}
static String toString(int pt1000) {
return Units.toUnitSpan(pt1000).toString();
}
static String toString(float pts) {
return Units.toUnitSpan(pts).toString();
}
static String intToString(int value, int minDigits, boolean zeroFill) {
StringBuilder result = new StringBuilder();
Units.prependZeros(result, Integer.toString(value), minDigits, zeroFill);
return result.toString();
}
static String intToString(int value, int minDigits) {
return Units.intToString(value, minDigits, false);
}
static String intToString(int value, boolean zerofill) {
return Units.intToString(value, 5, zerofill);
}
static String intToString(int value) {
return Units.intToString(value, 5, false);
}
static String hexToString(int hex, int minDigits, String prefix) {
StringBuilder result = new StringBuilder(prefix);
Units.prependZeros(result, Integer.toHexString(hex), minDigits, true);
return result.toString();
}
static String hexToString(int hex, int minDigits) {
return Units.hexToString(hex, minDigits, "\\x");
}
static String hexToString(int hex) {
return Units.hexToString(hex, 4, "\\x");
}
private static UnitSpan toUnitSpan(int units, int pt1000) {
return new UnitSpan(units, pt1000);
}
private static void prependZeros(StringBuilder result, String formatted, int minDigits, boolean zeroFill) {
char fill = zeroFill ? '0' : ' ';
for (int i = formatted.length(); i < minDigits; ++i) {
result.append(fill);
}
result.append(formatted);
}
}