package org.ebookdroid.droids.djvu.codec; import org.ebookdroid.core.codec.OutlineLink; import java.util.ArrayList; import java.util.List; public class DjvuOutline { private long docHandle; public List<OutlineLink> getOutline(final long dochandle) { final List<OutlineLink> ls = new ArrayList<OutlineLink>(); docHandle = dochandle; final long expr = open(docHandle); ttOutline(ls, expr, 0); return ls; } private void ttOutline(final List<OutlineLink> ls, long expr, int level) { while (expConsp(expr)) { final String title = getTitle(expr); final String link = getLink(expr, docHandle); if (title != null) { ls.add(new OutlineLink(title, link, level)); } final long child = getChild(expr); ttOutline(ls, child, level+1); expr = getNext(expr); } } private static native long open(long dochandle); private static native boolean expConsp(long expr); private static native String getTitle(long expr); private static native String getLink(long expr, long dochandle); private static native long getNext(long expr); private static native long getChild(long expr); }