package org.ebookdroid.droids.djvu.codec;
import org.ebookdroid.core.codec.AbstractCodecDocument;
import org.ebookdroid.core.codec.CodecPageInfo;
import org.ebookdroid.core.codec.OutlineLink;
import org.ebookdroid.core.codec.PageTextBox;
import android.graphics.RectF;
import java.util.List;
import org.emdev.utils.LengthUtils;
public class DjvuDocument extends AbstractCodecDocument {
DjvuDocument(final DjvuContext djvuContext, final String fileName) {
super(djvuContext, open(djvuContext.getContextHandle(), fileName));
}
@Override
public List<OutlineLink> getOutline() {
final DjvuOutline ou = new DjvuOutline();
return ou.getOutline(documentHandle);
}
@Override
public DjvuPage getPage(final int pageNumber) {
return new DjvuPage(context.getContextHandle(), documentHandle, getPage(documentHandle, pageNumber), pageNumber);
}
@Override
public int getPageCount() {
return getPageCount(documentHandle);
}
@Override
public CodecPageInfo getPageInfo(final int pageNumber) {
final CodecPageInfo info = new CodecPageInfo();
final int res = getPageInfo(documentHandle, pageNumber, context.getContextHandle(), info);
if (res == -1) {
return null;
} else {
return info;
}
}
@Override
protected void freeDocument() {
free(documentHandle);
}
private native static int getPageInfo(long docHandle, int pageNumber, long contextHandle, CodecPageInfo cpi);
private native static long open(long contextHandle, String fileName);
private native static long getPage(long docHandle, int pageNumber);
private native static int getPageCount(long docHandle);
private native static void free(long pageHandle);
@Override
public List<? extends RectF> searchText(final int pageNuber, final String pattern) {
final List<PageTextBox> list = DjvuPage.getPageText(documentHandle, pageNuber, context.getContextHandle(), pattern.toLowerCase());
if (LengthUtils.isNotEmpty(list)) {
CodecPageInfo cpi = getPageInfo(pageNuber);
for (final PageTextBox ptb : list) {
DjvuPage.normalizeTextBox(ptb, cpi.width, cpi.height);
}
}
return list;
}
}