public PageLayout DetectLayoutFromBook(IBookContent book, int pageNum)
        {
            Console.WriteLine("book: " + book.Book.Title + " page: " + pageNum);

            PdfBookProvider pdfPageProvider = book.BookProvider.o as PdfBookProvider;
            if (pdfPageProvider == null)
            {
                throw new InvalidOperationException("SreenBook.BookProvider must be a PdfBookPageProvider for this LayoutAnalyzer");
            }

            DW<PDFWrapper> pdfDoc = pdfPageProvider.InternalPdfWrapper;


            PDFPage pdfPage = pdfDoc.o.Pages[pageNum];
            if (pdfPage == null) { throw new InvalidOperationException("No PDFPage pageNum=" + pageNum); }


            // Save doc state
            int oldPageNum = pdfDoc.o.CurrentPage;
            try
            {
                pdfDoc.o.CurrentPage = pageNum;

                PageLayout layout = DetectLayout(pdfDoc, pdfPage);
                return layout;
            }
            finally
            {
                // Restore doc state
                pdfDoc.o.CurrentPage = oldPageNum;
            }
        }
 public PageLayout DetectLayoutFromBook(IBookContent book, int pageNum)
 {
     // This is hacky, but OK for now
     Bitmap b = book.BookProvider.o.RenderPageImage(pageNum, Size.Empty);
     PageLayout pli = new PageLayout(b.Size);
     b.Dispose();
     return pli;
 }
 public PageLayout DetectLayoutFromBook(IBookContent book, int pageNum)
 {
     return null;
 }
 PDFWrapper GetPdfWrapper(IBookContent bc)
 {
     return ((PdfBookProvider)bc.BookProvider.o).InternalPdfWrapper.o;
 }