From e5c4c7c8c95efa8fba131b6c98976f3ff2238cd4 Mon Sep 17 00:00:00 2001 From: Pino Toscano Date: Sun, 16 Dec 2007 23:39:40 +0000 Subject: [PATCH] Properly apply the Document AA options when loading a document, or when asked to reload our configuration. svn path=/trunk/KDE/kdegraphics/okular/; revision=749281 --- generators/poppler/generator_pdf.cpp | 38 +++++++++++++++++++++++----- generators/poppler/generator_pdf.h | 2 ++ 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/generators/poppler/generator_pdf.cpp b/generators/poppler/generator_pdf.cpp index 3970881ac..26839996f 100644 --- a/generators/poppler/generator_pdf.cpp +++ b/generators/poppler/generator_pdf.cpp @@ -453,10 +453,7 @@ bool PDFGenerator::init(QVector & pagesVector, const QString &wal loadPages(pagesVector, 0, false); -#ifdef HAVE_POPPLER_0_6 - pdfdoc->setRenderHint(Poppler::Document::Antialiasing); - pdfdoc->setRenderHint(Poppler::Document::TextAntialiasing); -#endif + setAAOptions(); // the file has been loaded correctly return true; @@ -991,25 +988,52 @@ QVariant PDFGenerator::metaData( const QString & key, const QVariant & option ) bool PDFGenerator::reparseConfig() { + if ( !pdfdoc ) + return false; + + bool somethingchanged = false; // load paper color QColor color = documentMetaData( "PaperColor", true ).value< QColor >(); // if paper color is changed we have to rebuild every visible pixmap in addition // to the outputDevice. it's the 'heaviest' case, other effect are just recoloring // over the page rendered on 'standard' white background. - if ( pdfdoc && color != pdfdoc->paperColor() ) + if ( color != pdfdoc->paperColor() ) { userMutex()->lock(); pdfdoc->setPaperColor(color); userMutex()->unlock(); - return true; + somethingchanged = true; } - return false; + bool aaChanged = setAAOptions(); + somethingchanged = somethingchanged || aaChanged; + return somethingchanged; } void PDFGenerator::addPages( KConfigDialog * ) { } +bool PDFGenerator::setAAOptions() +{ + bool changed = false; +#ifdef HAVE_POPPLER_0_6 + Poppler::Document::RenderHints oldhints = pdfdoc->renderHints(); +#define SET_HINT(hintname, hintdefvalue, hintflag) \ +{ \ + bool newhint = documentMetaData(hintname, hintdefvalue).toBool(); \ + if (newhint != (oldhints & hintflag)) \ + { \ + pdfdoc->setRenderHint(hintflag); \ + changed = true; \ + } \ +} + SET_HINT("GraphicsAntialias", true, Poppler::Document::Antialiasing) + SET_HINT("TextAntialias", true, Poppler::Document::TextAntialiasing) +#undef SET_HINT +#endif + return changed; +} + Okular::ExportFormat::List PDFGenerator::exportFormats() const { static Okular::ExportFormat::List formats; diff --git a/generators/poppler/generator_pdf.h b/generators/poppler/generator_pdf.h index f13e790cf..9ce65c85c 100644 --- a/generators/poppler/generator_pdf.h +++ b/generators/poppler/generator_pdf.h @@ -115,6 +115,8 @@ class PDFGenerator : public Okular::Generator, public Okular::ConfigInterface, p Okular::TextPage * abstractTextPage(const QList &text, double height, double width, int rot); + bool setAAOptions(); + // poppler dependant stuff Poppler::Document *pdfdoc;