diff options
Diffstat (limited to 'src/gui/image/qpixmapdata.cpp')
-rw-r--r-- | src/gui/image/qpixmapdata.cpp | 90 |
1 files changed, 0 insertions, 90 deletions
diff --git a/src/gui/image/qpixmapdata.cpp b/src/gui/image/qpixmapdata.cpp index cf9526a33a..e63e7aae0f 100644 --- a/src/gui/image/qpixmapdata.cpp +++ b/src/gui/image/qpixmapdata.cpp @@ -48,9 +48,6 @@ QT_BEGIN_NAMESPACE -const uchar qt_pixmap_bit_mask[] = { 0x01, 0x02, 0x04, 0x08, - 0x10, 0x20, 0x40, 0x80 }; - QPixmapData *QPixmapData::create(int w, int h, PixelType type) { QPixmapData *data = QGuiApplicationPrivate::platformIntegration()->createPixmapData(static_cast<QPixmapData::PixelType>(type)); @@ -153,99 +150,12 @@ bool QPixmapData::scroll(int dx, int dy, const QRect &rect) return false; } -void QPixmapData::setMask(const QBitmap &mask) -{ - if (mask.size().isEmpty()) { - if (depth() != 1) - fromImage(toImage().convertToFormat(QImage::Format_RGB32), - Qt::AutoColor); - } else { - QImage image = toImage(); - const int w = image.width(); - const int h = image.height(); - - switch (image.depth()) { - case 1: { - const QImage imageMask = mask.toImage().convertToFormat(image.format()); - for (int y = 0; y < h; ++y) { - const uchar *mscan = imageMask.scanLine(y); - uchar *tscan = image.scanLine(y); - int bytesPerLine = image.bytesPerLine(); - for (int i = 0; i < bytesPerLine; ++i) - tscan[i] &= mscan[i]; - } - break; - } - default: { - const QImage imageMask = mask.toImage().convertToFormat(QImage::Format_MonoLSB); - image = image.convertToFormat(QImage::Format_ARGB32_Premultiplied); - for (int y = 0; y < h; ++y) { - const uchar *mscan = imageMask.scanLine(y); - QRgb *tscan = (QRgb *)image.scanLine(y); - for (int x = 0; x < w; ++x) { - if (!(mscan[x>>3] & qt_pixmap_bit_mask[x&7])) - tscan[x] = 0; - } - } - break; - } - } - fromImage(image, Qt::AutoColor); - } -} - -QBitmap QPixmapData::mask() const -{ - if (!hasAlphaChannel()) - return QBitmap(); - - const QImage img = toImage(); - const QImage image = (img.depth() < 32 ? img.convertToFormat(QImage::Format_ARGB32_Premultiplied) : img); - const int w = image.width(); - const int h = image.height(); - - QImage mask(w, h, QImage::Format_MonoLSB); - if (mask.isNull()) // allocation failed - return QBitmap(); - - mask.setColorCount(2); - mask.setColor(0, QColor(Qt::color0).rgba()); - mask.setColor(1, QColor(Qt::color1).rgba()); - - const int bpl = mask.bytesPerLine(); - - for (int y = 0; y < h; ++y) { - const QRgb *src = reinterpret_cast<const QRgb*>(image.scanLine(y)); - uchar *dest = mask.scanLine(y); - memset(dest, 0, bpl); - for (int x = 0; x < w; ++x) { - if (qAlpha(*src) > 0) - dest[x >> 3] |= qt_pixmap_bit_mask[x & 7]; - ++src; - } - } - - return QBitmap::fromImage(mask); -} - QPixmap QPixmapData::transformed(const QTransform &matrix, Qt::TransformationMode mode) const { return QPixmap::fromImage(toImage().transformed(matrix, mode)); } -void QPixmapData::setAlphaChannel(const QPixmap &alphaChannel) -{ - QImage image = toImage(); - image.setAlphaChannel(alphaChannel.toImage()); - fromImage(image, Qt::AutoColor); -} - -QPixmap QPixmapData::alphaChannel() const -{ - return QPixmap::fromImage(toImage().alphaChannel()); -} - void QPixmapData::setSerialNumber(int serNo) { ser_no = serNo; |