(String encoded)
| 1511 | } |
| 1512 | |
| 1513 | public static Range[] extractRle(String encoded) { |
| 1514 | Range[] ranges = new Range[16384]; |
| 1515 | byte[] buffer = new byte[16384]; |
| 1516 | int index = 0; |
| 1517 | int rangeIndex = 0; |
| 1518 | int codePoint = 0; |
| 1519 | for (int i = 0; i < encoded.length(); ++i) { |
| 1520 | byte b = decodeByte(encoded.charAt(i)); |
| 1521 | int count; |
| 1522 | if (b == 64) { |
| 1523 | b = decodeByte(encoded.charAt(++i)); |
| 1524 | count = 0; |
| 1525 | int pos = 1; |
| 1526 | for (int j = 0; j < 3; ++j) { |
| 1527 | byte digit = decodeByte(encoded.charAt(++i)); |
| 1528 | count |= pos * digit; |
| 1529 | pos *= 0x40; |
| 1530 | } |
| 1531 | } else if (b >= 32) { |
| 1532 | b -= 32; |
| 1533 | count = decodeByte(encoded.charAt(++i)); |
| 1534 | } else { |
| 1535 | count = 1; |
| 1536 | } |
| 1537 | if (b != 0 || count < 128) { |
| 1538 | if (index + count >= buffer.length) { |
| 1539 | ranges[rangeIndex++] = new Range(codePoint, codePoint + index, Arrays.copyOf(buffer, index)); |
| 1540 | codePoint += index + count; |
| 1541 | index = 0; |
| 1542 | } |
| 1543 | while (count-- > 0) { |
| 1544 | buffer[index++] = b; |
| 1545 | } |
| 1546 | } else { |
| 1547 | if (index > 0) { |
| 1548 | ranges[rangeIndex++] = new Range(codePoint, codePoint + index, Arrays.copyOf(buffer, index)); |
| 1549 | } |
| 1550 | codePoint += index + count; |
| 1551 | index = 0; |
| 1552 | } |
| 1553 | } |
| 1554 | return Arrays.copyOf(ranges, rangeIndex); |
| 1555 | } |
| 1556 | |
| 1557 | |
| 1558 | } |
nothing calls this directly
no test coverage detected