summaryrefslogtreecommitdiffstats
path: root/src/printsupport
diff options
context:
space:
mode:
authorAndy Shaw <andy.shaw@digia.com>2013-12-02 23:04:21 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-12-03 00:23:57 +0100
commit07d02166f2c927b9258cc920374fefa3884d951f (patch)
treec22335ea6af672a40e89bdd503c777ec6bbf1502 /src/printsupport
parent637f6507b4125cc81689e068e0de37dc5da61e73 (diff)
Cleanup some Windows printengine code to make it look more readable
Change-Id: I9e014a2a68b1502d20b88adccab39b7394b2ad86 Reviewed-by: John Layt <jlayt@kde.org>
Diffstat (limited to 'src/printsupport')
-rw-r--r--src/printsupport/kernel/qprintengine_win.cpp95
1 files changed, 39 insertions, 56 deletions
diff --git a/src/printsupport/kernel/qprintengine_win.cpp b/src/printsupport/kernel/qprintengine_win.cpp
index e2446c19b1..e4c4fd25e3 100644
--- a/src/printsupport/kernel/qprintengine_win.cpp
+++ b/src/printsupport/kernel/qprintengine_win.cpp
@@ -1348,29 +1348,26 @@ void QWin32PrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant &
{
if (!d->devMode)
break;
- DWORD size = DeviceCapabilities(reinterpret_cast<const wchar_t*>(d->name.utf16()),
- NULL, DC_PAPERNAMES, NULL, NULL);
+ const wchar_t *name = reinterpret_cast<const wchar_t*>(d->name.utf16());
+ DWORD size = DeviceCapabilities(name, NULL, DC_PAPERNAMES, NULL, NULL);
if ((int)size > 0) {
- wchar_t *paperNames = new wchar_t[size*64];
- size = DeviceCapabilities(reinterpret_cast<const wchar_t*>(d->name.utf16()),
- NULL, DC_PAPERNAMES, paperNames, NULL);
+ QScopedArrayPointer<wchar_t> paperNames(new wchar_t[size*64]);
+ if (size != DeviceCapabilities(name, NULL, DC_PAPERNAMES, paperNames.data(), NULL))
+ break;
int paperPos = -1;
- for (int i=0;i<(int)size;i++) {
- wchar_t *copyOfPaper = paperNames + (i * 64);
+ for (int i = 0; i < (int)size; ++i) {
+ wchar_t *copyOfPaper = paperNames.data() + (i * 64);
if (value.toString() == QString::fromWCharArray(copyOfPaper, qwcsnlen(copyOfPaper, 64))) {
paperPos = i;
break;
}
}
- delete [] paperNames;
- size = DeviceCapabilities(reinterpret_cast<const wchar_t*>(d->name.utf16()),
- NULL, DC_PAPERS, NULL, NULL);
+ size = DeviceCapabilities(name, NULL, DC_PAPERS, NULL, NULL);
if ((int)size > 0) {
- wchar_t *papers = new wchar_t[size];
- size = DeviceCapabilities(reinterpret_cast<const wchar_t*>(d->name.utf16()),
- NULL, DC_PAPERS, papers, NULL);
+ QScopedArrayPointer<wchar_t> papers(new wchar_t[size]);
+ size = DeviceCapabilities(name, NULL, DC_PAPERS, papers.data(), NULL);
QScopedArrayPointer<POINT> paperSizes(new POINT[size]);
- DWORD paperNameCount = DeviceCapabilities(reinterpret_cast<const wchar_t*>(d->name.utf16()), NULL, DC_PAPERSIZE, (wchar_t *)paperSizes.data(), NULL);
+ DWORD paperNameCount = DeviceCapabilities(name, NULL, DC_PAPERSIZE, (wchar_t *)paperSizes.data(), NULL);
if (paperNameCount == size) {
const double multiplier = qt_multiplierForUnit(QPrinter::Millimeter, d->resolution);
d->paper_size = QSizeF((paperSizes[paperPos].x / 10.0) * multiplier, (paperSizes[paperPos].y / 10.0) * multiplier);
@@ -1381,8 +1378,6 @@ void QWin32PrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant &
setDevModePaperFlags(d->devMode, false);
d->doReinit();
}
-
- delete [] papers;
}
}
}
@@ -1572,32 +1567,27 @@ QVariant QWin32PrintEngine::property(PrintEnginePropertyKey key) const
if (!d->devMode) {
value = QLatin1String("A4");
} else {
- DWORD size = DeviceCapabilities(reinterpret_cast<const wchar_t*>(d->name.utf16()),
- NULL, DC_PAPERS, NULL, NULL);
+ const wchar_t *name = reinterpret_cast<const wchar_t*>(d->name.utf16());
+ DWORD size = DeviceCapabilities(name, NULL, DC_PAPERS, NULL, NULL);
int paperSizePos = -1;
if ((int)size > 0) {
- wchar_t *papers = new wchar_t[size];
- size = DeviceCapabilities(reinterpret_cast<const wchar_t*>(d->name.utf16()),
- NULL, DC_PAPERS, papers, NULL);
+ QScopedArrayPointer<wchar_t> papers(new wchar_t[size]);
+ if (size != DeviceCapabilities(name, NULL, DC_PAPERS, papers.data(), NULL))
+ break;
for (int i=0;i<(int)size;i++) {
if (papers[i] == d->devMode->dmPaperSize) {
paperSizePos = i;
break;
}
}
- delete [] papers;
-
}
if (paperSizePos != -1) {
- size = DeviceCapabilities(reinterpret_cast<const wchar_t*>(d->name.utf16()),
- NULL, DC_PAPERNAMES, NULL, NULL);
+ size = DeviceCapabilities(name, NULL, DC_PAPERNAMES, NULL, NULL);
if ((int)size > 0) {
- wchar_t *papers = new wchar_t[size*64];
- size = DeviceCapabilities(reinterpret_cast<const wchar_t*>(d->name.utf16()),
- NULL, DC_PAPERNAMES, papers, NULL);
- wchar_t *copyOfPaper = papers + (paperSizePos * 64);
+ QScopedArrayPointer<wchar_t> paperNames(new wchar_t[size*64]);
+ size = DeviceCapabilities(name, NULL, DC_PAPERNAMES, paperNames.data(), NULL);
+ wchar_t *copyOfPaper = paperNames.data() + (paperSizePos * 64);
value = QString::fromWCharArray(copyOfPaper, qwcsnlen(copyOfPaper, 64));
- delete [] papers;
}
}
}
@@ -1704,16 +1694,14 @@ QList<QPrinter::PaperSize> QWin32PrintEngine::supportedPaperSizes(const QPrinter
if (printerInfo.isNull())
return returnList;
-
- DWORD size = DeviceCapabilities(reinterpret_cast<const wchar_t *>(printerInfo.printerName().utf16()),
- NULL, DC_PAPERS, NULL, NULL);
+ const wchar_t *name = reinterpret_cast<const wchar_t*>(printerInfo.printerName().utf16());
+ DWORD size = DeviceCapabilities(name, NULL, DC_PAPERS, NULL, NULL);
if ((int)size != -1) {
- wchar_t *papers = new wchar_t[size];
- size = DeviceCapabilities(reinterpret_cast<const wchar_t *>(printerInfo.printerName().utf16()),
- NULL, DC_PAPERS, papers, NULL);
+ QScopedArrayPointer<wchar_t> papers(new wchar_t[size]);
+ if (size != DeviceCapabilities(name, NULL, DC_PAPERS, papers.data(), NULL))
+ return returnList;
for (int c = 0; c < (int)size; ++c)
returnList.append(mapDevmodePaperSize(papers[c]));
- delete [] papers;
}
return returnList;
}
@@ -1723,27 +1711,22 @@ QList<QPair<QString, QSizeF> > QWin32PrintEngine::supportedSizesWithNames(const
QList<QPair<QString, QSizeF> > paperSizes;
if (printerInfo.isNull())
return paperSizes;
- DWORD size = DeviceCapabilities(reinterpret_cast<const wchar_t*>(printerInfo.printerName().utf16()),
- NULL, DC_PAPERNAMES, NULL, NULL);
+ const wchar_t *name = reinterpret_cast<const wchar_t*>(printerInfo.printerName().utf16());
+ DWORD size = DeviceCapabilities(name, NULL, DC_PAPERNAMES, NULL, NULL);
if ((int)size > 0) {
- wchar_t *papers = new wchar_t[size*64];
- size = DeviceCapabilities(reinterpret_cast<const wchar_t*>(printerInfo.printerName().utf16()),
- NULL, DC_PAPERNAMES, papers, NULL);
- DWORD size2 = DeviceCapabilities(reinterpret_cast<const wchar_t*>(printerInfo.printerName().utf16()),
- NULL, DC_PAPERSIZE, NULL, NULL);
- if ((int)size2 > 0) {
- POINT *points = new POINT[size2*sizeof(POINT)];
-
- size2 = DeviceCapabilities(reinterpret_cast<const wchar_t*>(printerInfo.printerName().utf16()),
- NULL, DC_PAPERSIZE, (wchar_t *)points, NULL);
- for (int i=0;i<(int)size;i++) {
- wchar_t *paper = papers + (i * 64);
- QString str = QString::fromWCharArray(paper, qwcsnlen(paper, 64));
- paperSizes << qMakePair(str, QSizeF(points[i].x / 10.0, points[i].y / 10.0));
- }
- delete [] points;
+ QScopedArrayPointer<wchar_t> papers(new wchar_t[size*64]);
+ if (size != DeviceCapabilities(name, NULL, DC_PAPERNAMES, papers.data(), NULL))
+ return paperSizes;
+ if (size != DeviceCapabilities(name, NULL, DC_PAPERSIZE, NULL, NULL))
+ return paperSizes;
+ QScopedArrayPointer<POINT> points(new POINT[size*sizeof(POINT)]);
+ if (size != DeviceCapabilities(name, NULL, DC_PAPERSIZE, (wchar_t *)points.data(), NULL))
+ return paperSizes;
+ for (int i = 0; i < (int)size; ++i) {
+ wchar_t *paper = papers.data() + (i * 64);
+ QString str = QString::fromWCharArray(paper, qwcsnlen(paper, 64));
+ paperSizes << qMakePair(str, QSizeF(points[i].x / 10.0, points[i].y / 10.0));
}
- delete [] papers;
}
return paperSizes;
}