in src/java/org/apache/fop/render/pdf/pdfbox/PageParentTreeFinder.java [86:116]
private void traverseKids(COSBase kids, int position, List<COSArray> numList) {
if (!numList.isEmpty()) {
return;
}
if (kids instanceof COSArray) {
COSArray kidsArray = (COSArray)kids;
for (COSBase kid : kidsArray) {
COSObject kidCOSObj = (COSObject) kid;
traverseKids(kidCOSObj, position, numList);
}
} else if (kids instanceof COSObject) {
COSObject kidCOSObj = (COSObject) kids;
COSDictionary kid = (COSDictionary) kidCOSObj.getObject();
if (kid.getDictionaryObject(COSName.NUMS) == null) {
traverseKids(kid.getDictionaryObject(COSName.KIDS), position, numList);
} else {
if (kid.getDictionaryObject(COSName.LIMITS) != null) {
COSArray kidCOSArray = (COSArray) kid.getDictionaryObject(COSName.LIMITS);
int lowerLimit = ((COSInteger) kidCOSArray.get(0)).intValue();
int upperLimit = ((COSInteger) kidCOSArray.get(1)).intValue();
if (lowerLimit <= position && position <= upperLimit) {
COSArray nums = (COSArray) kid.getDictionaryObject(COSName.NUMS);
numList.add(extractMarkedContentParents(nums, position));
}
} else {
COSArray nums = (COSArray) kid.getDictionaryObject(COSName.NUMS);
numList.add(extractMarkedContentParents(nums, position));
}
}
}
}