Changeset View
Changeset View
Standalone View
Standalone View
src/KSaneImageSaver.cpp
Context not available. | |||||
30 | #include <QDebug> | 30 | #include <QDebug> | ||
---|---|---|---|---|---|
31 | 31 | | |||
32 | #include <KSaneWidget> | 32 | #include <KSaneWidget> | ||
33 | #include <KLocalizedString> | ||||
33 | #include <QUrl> | 34 | #include <QUrl> | ||
34 | 35 | | |||
36 | #include <QPageSize> | ||||
37 | #include <QPdfWriter> | ||||
38 | #include <QPainter> | ||||
39 | | ||||
35 | struct KSaneImageSaver::Private { | 40 | struct KSaneImageSaver::Private { | ||
36 | bool m_savedOk; | 41 | bool m_savedOk; | ||
37 | QMutex m_runMutex; | 42 | QMutex m_runMutex; | ||
Context not available. | |||||
47 | QString m_fileFormat; | 52 | QString m_fileFormat; | ||
48 | int m_quality; | 53 | int m_quality; | ||
49 | bool m_savingAsPng16; | 54 | bool m_savingAsPng16; | ||
55 | QString m_fileType; | ||||
50 | 56 | | |||
51 | KSaneImageSaver *q; | 57 | KSaneImageSaver *q; | ||
52 | 58 | | |||
53 | bool saveQImage(); | 59 | bool saveQImage(); | ||
54 | bool save16BitPng(); | 60 | bool save16BitPng(); | ||
61 | bool savePdf(); | ||||
55 | }; | 62 | }; | ||
56 | 63 | | |||
57 | // ------------------------------------------------------------------------ | 64 | // ------------------------------------------------------------------------ | ||
Context not available. | |||||
83 | d->m_fileFormat = fileFormat; | 90 | d->m_fileFormat = fileFormat; | ||
84 | d->m_quality = quality; | 91 | d->m_quality = quality; | ||
85 | d->m_savingAsPng16 = false; | 92 | d->m_savingAsPng16 = false; | ||
93 | d->m_fileType = QLatin1String("image"); | ||||
86 | 94 | | |||
87 | start(); | 95 | start(); | ||
88 | return true; | 96 | return true; | ||
Context not available. | |||||
105 | d->m_fileFormat = fileFormat; | 113 | d->m_fileFormat = fileFormat; | ||
106 | d->m_quality = quality; | 114 | d->m_quality = quality; | ||
107 | d->m_savingAsPng16 = true; | 115 | d->m_savingAsPng16 = true; | ||
116 | d->m_fileType = QLatin1String("image"); | ||||
117 | | ||||
118 | start(); | ||||
119 | return true; | ||||
120 | } | ||||
121 | | ||||
122 | bool KSaneImageSaver::savePdf(const QUrl& url, const QString& name, const QByteArray& data, int width, int height, int bpl, int dpi, int format, const QString& fileFormat, int quality) | ||||
123 | { | ||||
124 | d->m_url = url; | ||||
125 | d->m_name = name; | ||||
126 | d->m_data = data; | ||||
127 | d->m_width = width; | ||||
128 | d->m_height = height; | ||||
129 | d->m_bpl = bpl; | ||||
130 | d->m_dpi = dpi; | ||||
131 | d->m_format = format; | ||||
132 | d->m_fileFormat = fileFormat; | ||||
133 | d->m_quality = quality; | ||||
134 | d->m_savingAsPng16 = false; | ||||
135 | d->m_fileType = QLatin1String("pdf"); | ||||
108 | 136 | | |||
109 | start(); | 137 | start(); | ||
110 | return true; | 138 | return true; | ||
Context not available. | |||||
112 | 140 | | |||
113 | void KSaneImageSaver::run() | 141 | void KSaneImageSaver::run() | ||
114 | { | 142 | { | ||
115 | d->m_savedOk = d->m_savingAsPng16 ? d->save16BitPng() : d->saveQImage(); | 143 | if (d->m_fileType == QLatin1String("pdf")) { | ||
144 | d->m_savedOk = d->savePdf(); | ||||
145 | } else { | ||||
146 | assert(d->m_fileType == QLatin1String("image")); | ||||
147 | d->m_savedOk = d->m_savingAsPng16 ? d->save16BitPng() : d->saveQImage(); | ||||
148 | } | ||||
116 | emit imageSaved(d->m_url, d->m_name, d->m_savedOk); | 149 | emit imageSaved(d->m_url, d->m_name, d->m_savedOk); | ||
117 | 150 | | |||
118 | d->m_runMutex.unlock(); | 151 | d->m_runMutex.unlock(); | ||
Context not available. | |||||
232 | return true; | 265 | return true; | ||
233 | } | 266 | } | ||
234 | 267 | | |||
268 | bool KSaneImageSaver::Private::savePdf() | ||||
269 | { | ||||
270 | QImage img = KSaneIface::KSaneWidget::toQImageSilent(m_data, m_width, m_height, m_bpl, m_dpi, (KSaneIface::KSaneWidget::ImageFormat) m_format); | ||||
271 | | ||||
272 | const QPoint imageCoordinates(0,0); | ||||
273 | | ||||
274 | QPdfWriter pdfWriter(m_name); | ||||
275 | pdfWriter.setPageOrientation(QPageLayout::Orientation::Portrait); | ||||
276 | pdfWriter.setPageSize(QPageSize(QPageSize::A4)); | ||||
277 | pdfWriter.setResolution(m_dpi); | ||||
278 | pdfWriter.setCreator(i18n("Skanlite")); | ||||
279 | pdfWriter.setTitle(m_name); | ||||
280 | QPainter painter; | ||||
281 | | ||||
282 | if (!painter.begin(&pdfWriter)) { | ||||
283 | return false; | ||||
284 | } | ||||
285 | | ||||
286 | painter.drawImage(imageCoordinates, img); | ||||
287 | | ||||
288 | return painter.end(); | ||||
289 | } | ||||
Context not available. |