⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qpixmap_raster.cpp

📁 qt-x11-opensource-src-4.1.4.tar.gz源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#ifndef QT_NO_IMAGE_HEURISTIC_MASKQBitmap QPixmap::createHeuristicMask(bool clipTight ) const{    QBitmap m = fromImage(toImage().createHeuristicMask(clipTight));    return m;}#endifQBitmap QPixmap::createMaskFromColor(const QColor &maskColor) const{    QImage maskImage(size(), QImage::Format_MonoLSB);    QImage image = toImage();    QRgb mColor = maskColor.rgba();    for (int w = 0; w < width(); w++) {        for (int h = 0; h < height(); h++) {            if (image.pixel(w, h) == mColor)                maskImage.setPixel(w, h, Qt::color1);            else                maskImage.setPixel(w, h, Qt::color0);        }    }    QBitmap m = fromImage(maskImage);    return m;}QPixmap QPixmap::grabWidget(QWidget *widget, const QRect &rect){    if (!widget)        return QPixmap();    QRect r(rect);    if (r.width() < 0)        r.setWidth(widget->width() - rect.x());    if (r.height() < 0)        r.setHeight(widget->height() - rect.y());    if (!r.intersects(widget->rect()))        return QPixmap();     QPixmap res(r.size());    widget->d_func()->drawWidget(&res, r, -r.topLeft(), QWidgetPrivate::DrawRecursive | QWidgetPrivate::DrawAsRoot | QWidgetPrivate::DrawPaintOnScreen | QWidgetPrivate::DrawInvisible);    return res;}QPixmap QPixmap::scaled(const QSize &size, Qt::AspectRatioMode aspectMode,                       Qt::TransformationMode mode ) const{    return QPixmap::fromImage(data->image.scaled(size, aspectMode, mode));}QPixmap QPixmap::scaledToWidth(int w, Qt::TransformationMode mode) const{    return QPixmap::fromImage(data->image.scaledToWidth(w, mode));}QPixmap QPixmap::scaledToHeight(int h, Qt::TransformationMode mode) const{    return QPixmap::fromImage(data->image.scaledToHeight(h, mode));}QPixmap QPixmap::transformed(const QMatrix &matrix, Qt::TransformationMode mode ) const{    return QPixmap::fromImage(data->image.transformed(matrix, mode));}QMatrix QPixmap::trueMatrix(const QMatrix &m, int w, int h){    return QImage::trueMatrix(m, w, h);}QImage QPixmap::toImage() const{    return data->image;}QPixmap QPixmap::fromImage(const QImage &image, Qt::ImageConversionFlags flags ){    Q_UNUSED(flags);    // ### This will create a temporary image.    QPixmap pixmap(image.width(), image.height());    switch (image.format()) {    case QImage::Format_Mono:    case QImage::Format_MonoLSB:        pixmap.data->image = image.convertToFormat(QImage::Format_RGB32);        break;    case QImage::Format_RGB32:    case QImage::Format_ARGB32_Premultiplied:#ifdef Q_WS_QWS    case QImage::Format_RGB16:#endif        pixmap.data->image = image;        break;    default:        pixmap.data->image = image.convertToFormat(QImage::Format_ARGB32_Premultiplied);        break;    }    return pixmap;}bool QPixmap::load(const QString& fileName, const char *format, Qt::ImageConversionFlags flags ){    if (fileName.isEmpty())        return false;    QFileInfo info(fileName);    QString key;    key.append(QLatin1String("qt_pixmap_")).append(info.absoluteFilePath()).append(               QLatin1Char('_')).append(QString::number(info.lastModified().toTime_t())).append(               QLatin1Char('_')).append(QString::number(data->type));    detach();    if (QPixmapCache::find(key, *this))            return true;    QImage image = QImageReader(fileName, format).read();    if (!image.isNull()) {        if (data->type == BitmapType)            *this = QBitmap::fromImage(image, flags);        else            *this = fromImage(image, flags);        if (!isNull()) {            QPixmapCache::insert(key, *this);            return true;        }    }    return false;}bool QPixmap::loadFromData(const uchar *buf, uint len, const char* format, Qt::ImageConversionFlags flags ){    QByteArray a = QByteArray::fromRawData(reinterpret_cast<const char *>(buf), len);    QBuffer b(&a);    b.open(QIODevice::ReadOnly);    detach();    QImage image = QImageReader(&b, format).read();    if (!image.isNull()) {        if (data->type == BitmapType)            *this = QBitmap::fromImage(image, flags);        else            *this = fromImage(image, flags);    }    return !isNull();}bool QPixmap::save(const QString& fileName, const char* format, int quality ) const{    if (isNull())        return false;                                // nothing to save    QImageWriter writer(fileName, format);    return doImageIO(&writer, quality);}bool QPixmap::save(QIODevice* device, const char* format, int quality ) const{    if (isNull())        return false;                                // nothing to save    QImageWriter writer(device, format);    return doImageIO(&writer, quality);}int QPixmap::serialNumber() const{    return data->image.serialNumber();}bool QPixmap::isDetached() const{    return data->count == 1;}void QPixmap::detach(){    ++data->detach_no;    if (data->count != 1)        *this = copy();}#ifdef QT3_SUPPORTstatic Qt::ImageConversionFlags colorModeToFlags(QPixmap::ColorMode mode){    Qt::ImageConversionFlags flags = Qt::AutoColor;    switch (mode) {      case QPixmap::Color:        flags |= Qt::ColorOnly;        break;      case QPixmap::Mono:        flags |= Qt::MonoOnly;        break;      default:        break;// Nothing.    }    return flags;}bool QPixmap::load(const QString& fileName, const char *format, ColorMode mode){    return load(fileName, format, colorModeToFlags(mode));}bool QPixmap::loadFromData(const uchar *buf, uint len, const char* format, ColorMode mode){    return loadFromData(buf, len, format, colorModeToFlags(mode));}bool QPixmap::convertFromImage(const QImage &image, ColorMode mode){    *this = fromImage(image, colorModeToFlags(mode));    return !isNull();}#endif // QT3_SUPPORTint QPixmap::metric(PaintDeviceMetric metric) const{    return data->image.metric(metric);}bool QPixmap::doImageIO(QImageWriter *writer, int quality) const{    if (quality > 100  || quality < -1)        qWarning("QPixmap::save: quality out of range [-1,100]");    if (quality >= 0)        writer->setQuality(qMin(quality,100));    return writer->write(toImage());}void QPixmap::init(int w, int h, Type type){    if (!qApp) {        qFatal("QPixmap: Must construct a QApplication before a QPaintDevice");        return;    }    data = new QPixmapData;    data->type = type;    data->detach_no = 0;    if (type == PixmapType) {        data->image = QImage(w, h, QImage::Format_RGB32);    } else {        data->image = data->createBitmapImage(w, h);    }}void QPixmap::deref(){    if(data && data->deref()) { // Destroy image if last ref        delete data;        data = 0;    }}QPixmap QPixmap::copy(const QRect &rect) const{    if (data->type == BitmapType)        return QBitmap::fromImage(toImage().copy(rect));    else        return QPixmap::fromImage(toImage().copy(rect));}#ifndef QT_NO_DATASTREAMQDataStream &operator<<(QDataStream &s, const QPixmap &pixmap){    s << pixmap.toImage();    return s;}QDataStream &operator>>(QDataStream &s, QPixmap &pixmap){    QImage img;    s >> img;    if (pixmap.data->type == QPixmap::BitmapType)        pixmap = QBitmap::fromImage(img);    else        pixmap = QPixmap::fromImage(img);    return s;}#endif // QT_NO_DATASTREAMQPaintEngine *QPixmap::paintEngine() const{    return data->image.paintEngine();}void QPixmap::setAlphaChannel(const QPixmap &alphaChannel){    detach();    data->image.setAlphaChannel(alphaChannel.toImage());}QPixmap QPixmap::alphaChannel() const{    return QPixmap::fromImage(data->image.alphaChannel());}QImage QPixmapData::createBitmapImage(int w, int h){    QImage bitmap(w, h, QImage::Format_MonoLSB);    if (bitmap.isNull())        return bitmap;    bitmap.setNumColors(2);    bitmap.setColor(0, QColor(Qt::color0).rgba());    bitmap.setColor(1, QColor(Qt::color1).rgba());    return bitmap;}#ifdef QT3_SUPPORTQ_GUI_EXPORT void copyBlt(QPixmap *dst, int dx, int dy,                          const QPixmap *src, int sx, int sy, int sw, int sh){    Q_ASSERT_X(dst, "::copyBlt", "Destination pixmap must be non null");    Q_ASSERT_X(src, "::copyBlt", "Source pixmap must be non null");    QImage image = dst->toImage();    QPainter p(&image);    p.setCompositionMode(QPainter::CompositionMode_Source);    p.drawImage(dx, dy, src->toImage(), sx, sy, sw, sh);    *dst = QPixmap::fromImage(image);}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -