readLiteralString static method
Implementation
static UPdfString readLiteralString(UDocCursor cursor) {
cursor.skip(1);
final List<int> out = <int>[];
int depth = 1;
while (!cursor.isEmpty) {
final int byte = cursor.u8();
if (byte == 0x5C) {
if (cursor.isEmpty) break;
final int escape = cursor.u8();
switch (escape) {
case 0x6E:
out.add(lineFeed);
break;
case 0x72:
out.add(carriageReturn);
break;
case 0x74:
out.add(tab);
break;
case 0x62:
out.add(0x08);
break;
case 0x66:
out.add(formFeed);
break;
case lineFeed:
break;
case carriageReturn:
if (!cursor.isEmpty && cursor.peek == lineFeed) cursor.skip(1);
break;
default:
if (escape >= 0x30 && escape <= 0x37) {
int value = escape - 0x30;
for (int i = 0; i < 2 && !cursor.isEmpty && cursor.peek >= 0x30 && cursor.peek <= 0x37; i++) {
value = value * 8 + (cursor.u8() - 0x30);
}
out.add(value & 0xFF);
} else {
out.add(escape);
}
break;
}
continue;
}
if (byte == 0x28) {
depth++;
out.add(byte);
continue;
}
if (byte == 0x29) {
depth--;
if (depth == 0) break;
out.add(byte);
continue;
}
out.add(byte);
if (out.length > uDocMaxStringLength) break;
}
return UPdfString(Uint8List.fromList(out));
}