#ifndef __PDFCUBE__DOCUMENT_HH__ #define __PDFCUBE__DOCUMENT_HH__ #include #include #include #include "page.hh" namespace pdfcube { /** * @brief A document of pdfcube::page elements made from a * PopplerDocument object. */ class document { public: /** @brief Ctor. */ document(PopplerDocument* doc) : doc_m(doc), page_m(poppler_document_get_n_pages(doc_m)) { for(int ii(0); ii != page_m.size(); ++ii) page_m[ii] = new pdfcube::page(poppler_document_get_page(doc_m, ii)); } /** * @brief Returns ii-th page. */ pdfcube::page& page(int ii) { return *page_m[ii]; } /** * @brief Returns ii-th page, const version. */ const pdfcube::page& page(int ii) const { return *page_m[ii]; } /** * @brief Returns number of pages. */ int n_pages() const { return poppler_document_get_n_pages(doc_m); } protected: PopplerDocument* doc_m; std::vector page_m; }; } #endif