MCPcopy Create free account
hub / github.com/codenameone/CodenameOne / extractRle

Method extractRle

vm/JavaAPI/src/java/lang/Character.java:1513–1555  ·  view source on GitHub ↗
(String encoded)

Source from the content-addressed store, hash-verified

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}

Callers

nothing calls this directly

Calls 4

decodeByteMethod · 0.95
copyOfMethod · 0.95
lengthMethod · 0.65
charAtMethod · 0.65

Tested by

no test coverage detected