diff options
Diffstat (limited to 'src/printsupport/kernel/qprintengine_win.cpp')
-rw-r--r-- | src/printsupport/kernel/qprintengine_win.cpp | 59 |
1 files changed, 48 insertions, 11 deletions
diff --git a/src/printsupport/kernel/qprintengine_win.cpp b/src/printsupport/kernel/qprintengine_win.cpp index 14ffcaca96..90b204eb0c 100644 --- a/src/printsupport/kernel/qprintengine_win.cpp +++ b/src/printsupport/kernel/qprintengine_win.cpp @@ -734,10 +734,7 @@ void QWin32PrintEnginePrivate::strokePath_dev(const QPainterPath &path, const QC else if (pen.joinStyle() == Qt::RoundJoin) joinStyle = PS_JOIN_ROUND; - bool cosmetic = qt_pen_is_cosmetic(pen, q->state->renderHints()); - - HPEN pen = ExtCreatePen((cosmetic ? PS_COSMETIC : PS_GEOMETRIC) - | PS_SOLID | capStyle | joinStyle, + HPEN pen = ExtCreatePen(PS_GEOMETRIC | PS_SOLID | capStyle | joinStyle, (penWidth == 0) ? 1 : penWidth, &brush, 0, 0); HGDIOBJ old_pen = SelectObject(hdc, pen); @@ -1006,9 +1003,6 @@ void QWin32PrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant & // The following keys are settings that are unsupported by the Windows PrintEngine case PPK_CustomBase: break; - case PPK_Duplex: - // TODO Add support using DEVMODE.dmDuplex - break; case PPK_FontEmbedding: break; case PPK_PageOrder: @@ -1049,6 +1043,33 @@ void QWin32PrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant & d->docName = value.toString(); break; + case PPK_Duplex: { + if (!d->devMode) + break; + QPrint::DuplexMode mode = QPrint::DuplexMode(value.toInt()); + if (mode == property(PPK_Duplex).toInt() || !d->m_printDevice.supportedDuplexModes().contains(mode)) + break; + switch (mode) { + case QPrinter::DuplexNone: + d->devMode->dmDuplex = DMDUP_SIMPLEX; + break; + case QPrinter::DuplexAuto: + d->devMode->dmDuplex = d->m_pageLayout.orientation() == QPageLayout::Landscape ? DMDUP_HORIZONTAL : DMDUP_VERTICAL; + break; + case QPrinter::DuplexLongSide: + d->devMode->dmDuplex = DMDUP_VERTICAL; + break; + case QPrinter::DuplexShortSide: + d->devMode->dmDuplex = DMDUP_HORIZONTAL; + break; + default: + // Don't change + break; + } + d->doReinit(); + break; + } + case PPK_FullPage: if (value.toBool()) d->m_pageLayout.setMode(QPageLayout::FullPageMode); @@ -1263,10 +1284,6 @@ QVariant QWin32PrintEngine::property(PrintEnginePropertyKey key) const // The following keys are settings that are unsupported by the Windows PrintEngine // Return sensible default values to ensure consistent behavior across platforms - case PPK_Duplex: - // TODO Add support using DEVMODE.dmDuplex - value = QPrinter::DuplexNone; - break; case PPK_FontEmbedding: value = false; break; @@ -1303,6 +1320,26 @@ QVariant QWin32PrintEngine::property(PrintEnginePropertyKey key) const value = d->docName; break; + case PPK_Duplex: { + if (!d->devMode) { + value = QPrinter::DuplexNone; + } else { + switch (d->devMode->dmDuplex) { + case DMDUP_VERTICAL: + value = QPrinter::DuplexLongSide; + break; + case DMDUP_HORIZONTAL: + value = QPrinter::DuplexShortSide; + break; + case DMDUP_SIMPLEX: + default: + value = QPrinter::DuplexNone; + break; + } + } + break; + } + case PPK_FullPage: value = d->m_pageLayout.mode() == QPageLayout::FullPageMode; break; |