object method
Implementation
Future<Object?> object(UPdfRef ref, {bool decrypt = true}) async {
if (_closed) return null;
if (overlay.containsKey(ref.number)) return overlay[ref.number];
final Object? cached = _objects.get(ref.number);
if (cached != null) return cached;
if (_objects.containsKey(ref.number)) return null;
if (!_resolving.add(ref.number)) return null;
try {
final UPdfXrefEntry? entry = xref.entries[ref.number];
if (entry == null || entry.isFree) return null;
Object? parsed;
if (entry.isCompressed) {
final Map<int, Object?>? contents = await _objectStreamContents(entry.streamNumber);
parsed = contents?[ref.number];
} else {
parsed = await _parseIndirectAt(entry.offset, expectedNumber: ref.number, generation: entry.generation, decrypt: decrypt);
}
_objects.put(ref.number, parsed);
return parsed;
} on Object {
return null;
} finally {
_resolving.remove(ref.number);
}
}