diff --git a/src/pdf/base/XojCairoPdfExport.cpp b/src/pdf/base/XojCairoPdfExport.cpp index 0ac0155f..87f59642 100644 --- a/src/pdf/base/XojCairoPdfExport.cpp +++ b/src/pdf/base/XojCairoPdfExport.cpp @@ -11,7 +11,8 @@ XojCairoPdfExport::XojCairoPdfExport(Document* doc, ProgressListener* progressLi : doc(doc), progressListener(progressListener), surface(NULL), - cr(NULL) + cr(NULL), + noBackgroundExport(false) { XOJ_INIT_TYPE(XojCairoPdfExport); } @@ -28,6 +29,15 @@ XojCairoPdfExport::~XojCairoPdfExport() XOJ_RELEASE_TYPE(XojCairoPdfExport); } +/** + * Export without background + */ +void XojCairoPdfExport::setNoBackgroundExport(bool noBackgroundExport) +{ + XOJ_CHECK_TYPE(XojCairoPdfExport); + this->noBackgroundExport = noBackgroundExport; +} + bool XojCairoPdfExport::startPdf(path file) { XOJ_CHECK_TYPE(XojCairoPdfExport); @@ -63,7 +73,7 @@ void XojCairoPdfExport::exportPage(size_t page) DocumentView view; - if (p->getBackgroundType().isPdfPage()) + if (p->getBackgroundType().isPdfPage() && !noBackgroundExport) { int pgNo = p->getPdfPageNr(); XojPdfPageSPtr popplerPage = doc->getPdfPage(pgNo); @@ -71,7 +81,7 @@ void XojCairoPdfExport::exportPage(size_t page) popplerPage->render(cr, true); } - view.drawPage(p, this->cr, true /* dont render eraseable */); + view.drawPage(p, this->cr, true /* dont render eraseable */, noBackgroundExport); // next page cairo_show_page(this->cr); diff --git a/src/pdf/base/XojCairoPdfExport.h b/src/pdf/base/XojCairoPdfExport.h index 16abc6a8..a2a90303 100644 --- a/src/pdf/base/XojCairoPdfExport.h +++ b/src/pdf/base/XojCairoPdfExport.h @@ -27,6 +27,11 @@ public: virtual bool createPdf(path file, PageRangeVector& range); virtual string getLastError(); + /** + * Export without background + */ + virtual void setNoBackgroundExport(bool noBackgroundExport); + private: bool startPdf(path file); void endPdf(); @@ -41,6 +46,8 @@ private: cairo_surface_t* surface; cairo_t* cr; + bool noBackgroundExport; + string lastError; }; diff --git a/src/pdf/base/XojPdfExport.cpp b/src/pdf/base/XojPdfExport.cpp index d1e02d22..d5b91ebb 100644 --- a/src/pdf/base/XojPdfExport.cpp +++ b/src/pdf/base/XojPdfExport.cpp @@ -9,3 +9,12 @@ XojPdfExport::~XojPdfExport() { XOJ_RELEASE_TYPE(XojPdfExport); } + +/** + * Export without background + */ +void XojPdfExport::setNoBackgroundExport(bool noBackgroundExport) +{ + XOJ_CHECK_TYPE(XojPdfExport); + // Does nothing in the base class +} diff --git a/src/pdf/base/XojPdfExport.h b/src/pdf/base/XojPdfExport.h index 496bf936..aee5a955 100644 --- a/src/pdf/base/XojPdfExport.h +++ b/src/pdf/base/XojPdfExport.h @@ -31,6 +31,11 @@ public: virtual bool createPdf(path file, PageRangeVector& range) = 0; virtual string getLastError() = 0; + /** + * Export without background + */ + virtual void setNoBackgroundExport(bool noBackgroundExport); + private: XOJ_TYPE_ATTRIB; }; diff --git a/src/view/DocumentView.cpp b/src/view/DocumentView.cpp index 9a3b5fbb..a121c910 100644 --- a/src/view/DocumentView.cpp +++ b/src/view/DocumentView.cpp @@ -457,13 +457,18 @@ void DocumentView::drawBackground() * @param page The page to draw * @param cr Draw to thgis context * @param dontRenderEditingStroke false to draw currently drawing stroke + * @param hideBackground true to hide the background */ -void DocumentView::drawPage(PageRef page, cairo_t* cr, bool dontRenderEditingStroke) +void DocumentView::drawPage(PageRef page, cairo_t* cr, bool dontRenderEditingStroke, bool hideBackground) { XOJ_CHECK_TYPE(DocumentView); initDrawing(page, cr, dontRenderEditingStroke); - drawBackground(); + + if (!hideBackground) + { + drawBackground(); + } int layer = 0; for (Layer* l : *page->getLayers()) diff --git a/src/view/DocumentView.h b/src/view/DocumentView.h index 947f3734..93e81c1e 100644 --- a/src/view/DocumentView.h +++ b/src/view/DocumentView.h @@ -40,8 +40,9 @@ public: * @param page The page to draw * @param cr Draw to thgis context * @param dontRenderEditingStroke false to draw currently drawing stroke + * @param hideBackground true to hide the background */ - void drawPage(PageRef page, cairo_t* cr, bool dontRenderEditingStroke); + void drawPage(PageRef page, cairo_t* cr, bool dontRenderEditingStroke, bool hideBackground = false);