/*! To be called from the PixmapData's paintEngine(). */ QPaintEngine *QVolatileImage::paintEngine() { if (!d->pengine) { d->pengine = new QVolatileImagePaintEngine(&imageRef(), this); } return d->pengine; }
void QVolatileImage::fill(uint pixelValue) { beginDataAccess(); imageRef().fill(pixelValue); endDataAccess(); d->ensureImage(); }
void QVolatileImage::copyFrom(QVolatileImage *source, const QRect &rect) { if (source->isNull()) { return; } QRect r = rect; if (rect.isNull()) { r = QRect(0, 0, source->width(), source->height()); } source->beginDataAccess(); QImage &srcImgRef(source->imageRef()); int srcbpl = srcImgRef.bytesPerLine(); int srcbpp = srcImgRef.depth() / 8; const uchar *sptr = srcImgRef.constBits() + r.y() * srcbpl; beginDataAccess(); QImage &dstImgRef(imageRef()); if (!dstImgRef.isNull()) { int dstbpl = dstImgRef.bytesPerLine(); uchar *dptr = dstImgRef.bits(); for (int y = 0; y < r.height(); ++y) { qMemCopy(dptr, sptr + r.x() * srcbpp, r.width() * srcbpp); sptr += srcbpl; dptr += dstbpl; } } endDataAccess(); source->endDataAccess(true); }
void QVolatileImage::setAlphaChannel(const QPixmap &alphaChannel) { ensureFormat(QImage::Format_ARGB32_Premultiplied); beginDataAccess(); imageRef().setAlphaChannel(alphaChannel.toImage()); endDataAccess(); d->ensureImage(); }
void LayerTreeHostProxy::updateTile(WebLayerID layerID, int tileID, const IntRect& sourceRect, const IntRect& targetRect, const QImage& image) { ensureLayer(layerID); TextureMapperNode* node = toTextureMapperNode(layerByID(layerID)); if (!node) return; int nodeTileID = remoteTileIDToNodeTileID(tileID); if (!nodeTileID) return; QImage imageRef(image); node->setTextureMapper(m_textureMapper.get()); node->setContentsTileBackBuffer(nodeTileID, sourceRect, targetRect, imageRef.bits(), BitmapTexture::BGRAFormat); }