private CodecPage getPage(int pageIndex) { if (!pages.containsKey(pageIndex) || pages.get(pageIndex).get() == null) { pages.put(pageIndex, new SoftReference<CodecPage>(document.getPage(pageIndex))); pageEvictionQueue.remove(pageIndex); pageEvictionQueue.offer(pageIndex); if (pageEvictionQueue.size() > PAGE_POOL_SIZE) { Integer evictedPageIndex = pageEvictionQueue.poll(); CodecPage evictedPage = pages.remove(evictedPageIndex).get(); if (evictedPage != null) { evictedPage.recycle(); } } } return pages.get(pageIndex).get(); }
public int getPageCount() { return document.getPageCount(); }