diff --git a/cmake/modules/FindPoppler.cmake b/cmake/modules/FindPoppler.cmake index 6e421d9..c58f8c0 100644 --- a/cmake/modules/FindPoppler.cmake +++ b/cmake/modules/FindPoppler.cmake @@ -116,9 +116,20 @@ int main() } " HAVE_POPPLER_0_22) +check_cxx_source_compiles(" +#include +int main() +{ + Poppler::Document::RenderHint hint = Poppler::Document::ThinLineSolid; + return 0; +} +" HAVE_POPPLER_0_24) + set(CMAKE_REQUIRED_INCLUDES) set(CMAKE_REQUIRED_LIBRARIES) - if (HAVE_POPPLER_0_22) + if (HAVE_POPPLER_0_24) + set(popplerVersionMessage "0.24") + elseif (HAVE_POPPLER_0_22) set(popplerVersionMessage "0.22") elseif (HAVE_POPPLER_0_20) set(popplerVersionMessage "0.20") diff --git a/conf/dlgaccessibilitybase.ui b/conf/dlgaccessibilitybase.ui index 9e76a75..5d47d01 100644 --- a/conf/dlgaccessibilitybase.ui +++ b/conf/dlgaccessibilitybase.ui @@ -37,6 +37,39 @@ + + + + + Enhance thin lines: + + + Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + No + + + + + Solid + + + + + Shape + + + + + + + true diff --git a/conf/okular_core.kcfg b/conf/okular_core.kcfg index 054b5c1..1fac6c7 100644 --- a/conf/okular_core.kcfg +++ b/conf/okular_core.kcfg @@ -47,6 +47,14 @@ false + + No + + + + + + Inverted diff --git a/core/document.cpp b/core/document.cpp index 372af56..0999df1 100644 --- a/core/document.cpp +++ b/core/document.cpp @@ -1802,6 +1802,21 @@ QVariant DocumentPrivate::documentMetaData( const QString &key, const QVariant & } return color; } + else if ( key == QLatin1String( "EnhanceThinLines" ) ) + { + switch ( SettingsCore::enhanceThinLines() ) + { + case SettingsCore::EnumEnhanceThinLines::No: + return 0; + break; + case SettingsCore::EnumEnhanceThinLines::Solid: + return 1; + break; + case SettingsCore::EnumEnhanceThinLines::Shape: + return 2; + break; + } + } else if ( key == QLatin1String( "TextAntialias" ) ) { switch ( SettingsCore::textAntialias() ) diff --git a/generators/poppler/config-okular-poppler.h.cmake b/generators/poppler/config-okular-poppler.h.cmake index 2ce6a4a..4f9bbbc 100644 --- a/generators/poppler/config-okular-poppler.h.cmake +++ b/generators/poppler/config-okular-poppler.h.cmake @@ -9,3 +9,6 @@ /* Defined if we have the 0.22 version of the Poppler library */ #cmakedefine HAVE_POPPLER_0_22 1 + +/* Defined if we have the 0.24 version of the Poppler library */ +#cmakedefine HAVE_POPPLER_0_24 1 diff --git a/generators/poppler/generator_pdf.cpp b/generators/poppler/generator_pdf.cpp index 0b2c253..aea5242 100644 --- a/generators/poppler/generator_pdf.cpp +++ b/generators/poppler/generator_pdf.cpp @@ -1303,6 +1303,19 @@ bool PDFGenerator::setDocumentRenderHints() SET_HINT("TextHinting", false, Poppler::Document::TextHinting) #endif #undef SET_HINT +#ifdef HAVE_POPPLER_0_24 + // load thin line mode + int thinLineMode = documentMetaData( "EnhanceThinLines", true ).value< int >(); + switch (thinLineMode) { + case 1: thinLineMode = Poppler::Document::ThinLineSolid; break; + case 2: thinLineMode = Poppler::Document::ThinLineShape; break; + } + if (thinLineMode != (oldhints & (Poppler::Document::ThinLineSolid | Poppler::Document::ThinLineShape))) { + pdfdoc->setRenderHint(Poppler::Document::ThinLineSolid, thinLineMode == Poppler::Document::ThinLineSolid); + pdfdoc->setRenderHint(Poppler::Document::ThinLineShape, thinLineMode == Poppler::Document::ThinLineShape); + changed = true; + } +#endif return changed; }