Print: add method to convert profile to grayscale

(experimental)

Add the method PrintLayout::convertPixmapToGrayscale()
to convert a rendered profile pixmap to grayscale.
It will probably be faster to have
ProfileGraphicsView render in grayscale under certain
conditions (and use a specific color table) instead -
e.g.:

ProfileGraphicsView::setPrintMode(bool printMode,
	bool useGrayScale);

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
This commit is contained in:
Lubomir I. Ivanov 2013-07-13 16:12:32 +03:00 committed by Dirk Hohndel
parent b241b7c06a
commit fc84f8868d
2 changed files with 18 additions and 1 deletions

View file

@ -108,7 +108,9 @@ void PrintLayout::printSixDives() const
QTransform transform;
transform.rotate(270);
pm = QPixmap(pm.transformed(transform));
painter.drawPixmap(0, 0, pm);
if (!printOptions->color_selected)
pm = convertPixmapToGrayscale(pm);
painter.drawPixmap(0, 0, pm);
}
painter.end();
profile->setPrintMode(false);
@ -244,3 +246,17 @@ QString PrintLayout::insertTableDataCol(QString data) const
{
return "<td>" + data + "</td>";
}
// experimental
QPixmap PrintLayout::convertPixmapToGrayscale(QPixmap pixmap) const
{
QImage image = pixmap.toImage();
int gray, width = pixmap.width(), height = pixmap.height();
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
gray = qGray(image.pixel(i, j));
image.setPixel(i, j, qRgb(gray, gray, gray));
}
}
return pixmap.fromImage(image);
}

View file

@ -34,6 +34,7 @@ private:
QString insertTableHeadingCol(int) const;
QString insertTableDataRow(struct dive *) const;
QString insertTableDataCol(QString) const;
QPixmap convertPixmapToGrayscale(QPixmap) const;
};
#endif