Prepare to export without background

presentation
Andreas Butti 7 years ago
parent c89fdd935a
commit 91a2050a5e
  1. 16
      src/pdf/base/XojCairoPdfExport.cpp
  2. 7
      src/pdf/base/XojCairoPdfExport.h
  3. 9
      src/pdf/base/XojPdfExport.cpp
  4. 5
      src/pdf/base/XojPdfExport.h
  5. 9
      src/view/DocumentView.cpp
  6. 3
      src/view/DocumentView.h

@ -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);

@ -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;
};

@ -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
}

@ -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;
};

@ -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())

@ -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);

Loading…
Cancel
Save