private void traverseKids()

in src/java/org/apache/fop/render/pdf/pdfbox/PageParentTreeFinder.java [86:115]


    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;
            if (kidCOSObj.getDictionaryObject(COSName.NUMS) == null) {
                traverseKids(kidCOSObj.getDictionaryObject(COSName.KIDS), position, numList);
            } else {
                if (kidCOSObj.getDictionaryObject(COSName.LIMITS) != null) {
                    COSArray kidCOSArray = (COSArray) kidCOSObj.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) kidCOSObj.getDictionaryObject(COSName.NUMS);
                        numList.add(extractMarkedContentParents(nums, position));
                    }
                } else {
                    COSArray nums = (COSArray) kidCOSObj.getDictionaryObject(COSName.NUMS);
                    numList.add(extractMarkedContentParents(nums, position));
                }
            }
        }
    }