diff options
Diffstat (limited to 'src/gui/painting')
-rw-r--r-- | src/gui/painting/qpdf.cpp | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/src/gui/painting/qpdf.cpp b/src/gui/painting/qpdf.cpp index 73117d38fc..98a6ca3d4a 100644 --- a/src/gui/painting/qpdf.cpp +++ b/src/gui/painting/qpdf.cpp @@ -1658,7 +1658,6 @@ void QPdfEnginePrivate::writeColor(ColorDomain domain, const QColor &color) switch (actualColorModel) { case QPdfEngine::ColorModel::RGB: - case QPdfEngine::ColorModel::Grayscale: switch (domain) { case ColorDomain::Stroking: *currentPage << "/CSp CS\n"; break; @@ -1668,6 +1667,16 @@ void QPdfEnginePrivate::writeColor(ColorDomain domain, const QColor &color) *currentPage << "/PCSp cs\n"; break; } break; + case QPdfEngine::ColorModel::Grayscale: + switch (domain) { + case ColorDomain::Stroking: + *currentPage << "/CSpg CS\n"; break; + case ColorDomain::NonStroking: + *currentPage << "/CSpg cs\n"; break; + case ColorDomain::NonStrokingPattern: + *currentPage << "/PCSpg cs\n"; break; + } + break; case QPdfEngine::ColorModel::CMYK: switch (domain) { case ColorDomain::Stroking: @@ -1694,7 +1703,7 @@ void QPdfEnginePrivate::writeColor(ColorDomain domain, const QColor &color) break; case QPdfEngine::ColorModel::Grayscale: { const qreal gray = qGray(color.rgba()) / 255.; - *currentPage << gray << gray << gray; + *currentPage << gray; break; } case QPdfEngine::ColorModel::CMYK: @@ -2480,8 +2489,9 @@ void QPdfEnginePrivate::ShadingFunctionResult::writeColorSpace(QPdf::ByteStream *stream << "/ColorSpace "; switch (colorModel) { case QPdfEngine::ColorModel::RGB: - case QPdfEngine::ColorModel::Grayscale: *stream << "/DeviceRGB\n"; break; + case QPdfEngine::ColorModel::Grayscale: + *stream << "/DeviceGray\n"; break; case QPdfEngine::ColorModel::CMYK: *stream << "/DeviceCMYK\n"; break; case QPdfEngine::ColorModel::Auto: @@ -2548,12 +2558,13 @@ QPdfEnginePrivate::createShadingFunction(const QGradient *gradient, int from, in } else { switch (result.colorModel) { case QPdfEngine::ColorModel::RGB: - case QPdfEngine::ColorModel::Grayscale: - // For backwards compatibility, Grayscale emits RGB colors s << "/C0 [" << stops.at(i).second.redF() << stops.at(i).second.greenF() << stops.at(i).second.blueF() << "]\n" "/C1 [" << stops.at(i + 1).second.redF() << stops.at(i + 1).second.greenF() << stops.at(i + 1).second.blueF() << "]\n"; break; - + case QPdfEngine::ColorModel::Grayscale: + s << "/C0 [" << (qGray(stops.at(i).second.rgba()) / 255.) << "]\n" + "/C1 [" << (qGray(stops.at(i + 1).second.rgba()) / 255.) << "]\n"; + break; case QPdfEngine::ColorModel::CMYK: s << "/C0 [" << stops.at(i).second.cyanF() << stops.at(i).second.magentaF() |