void QS60PaintEngine::drawPixmap(const QPointF &p, const QPixmap &pm) { QS60PixmapData *srcData = static_cast<QS60PixmapData *>(pm.pixmapData()); srcData->beginDataAccess(); QRasterPaintEngine::drawPixmap(p, pm); srcData->endDataAccess(); }
void QS60PaintEngine::drawTiledPixmap(const QRectF &r, const QPixmap &pm, const QPointF &sr) { QS60PixmapData *srcData = static_cast<QS60PixmapData *>(pm.pixmapData()); srcData->beginDataAccess(); QRasterPaintEngine::drawTiledPixmap(r, pm, sr); srcData->endDataAccess(); }
void QS60WindowSurface::beginPaint(const QRegion &rgn) { #ifdef Q_SYMBIAN_SUPPORTS_SURFACES S60->wsSession().Finish(); #endif QWidgetPrivate *windowPrivate = qt_widget_private(window()); if (!windowPrivate->isOpaque || blitWriteAlpha(windowPrivate)) { QS60PixmapData *pixmapData = static_cast<QS60PixmapData *>(d_ptr->device.data_ptr().data()); TDisplayMode mode = displayMode(false); if (pixmapData->cfbsBitmap->DisplayMode() != mode) pixmapData->convertToDisplayMode(mode); pixmapData->beginDataAccess(); if (!windowPrivate->isOpaque) { QPainter p(&pixmapData->image); p.setCompositionMode(QPainter::CompositionMode_Source); const QVector<QRect> rects = rgn.rects(); const QColor blank = Qt::transparent; for (QVector<QRect>::const_iterator it = rects.begin(); it != rects.end(); ++it) { p.fillRect(*it, blank); } } pixmapData->endDataAccess(); } }
void QS60WindowSurface::beginPaint(const QRegion &rgn) { if (!qt_widget_private(window())->isOpaque) { QS60PixmapData *pixmapData = static_cast<QS60PixmapData *>(d_ptr->device.data_ptr().data()); pixmapData->beginDataAccess(); QImage &image = pixmapData->image; QRgb *data = reinterpret_cast<QRgb *>(image.bits()); const int row_stride = image.bytesPerLine() / 4; const QVector<QRect> rects = rgn.rects(); for (QVector<QRect>::const_iterator it = rects.begin(); it != rects.end(); ++it) { const int x_start = it->x(); const int width = it->width(); const int y_start = it->y(); const int height = it->height(); QRgb *row = data + row_stride * y_start; for (int y = 0; y < height; ++y) { qt_memfill(row + x_start, 0U, width); row += row_stride; } } pixmapData->endDataAccess(); } }
void QS60WindowSurface::setGeometry(const QRect& rect) { if (rect == geometry()) return; QS60PixmapData *data = static_cast<QS60PixmapData*>(d_ptr->device.data_ptr().data()); data->resize(rect.width(), rect.height()); QWindowSurface::setGeometry(rect); }
void QS60PaintEngine::drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr) { if (pm.pixmapData()->classId() == QPixmapData::RasterClass) { QS60PixmapData *srcData = static_cast<QS60PixmapData *>(pm.pixmapData()); srcData->beginDataAccess(); QRasterPaintEngine::drawPixmap(r, pm, sr); srcData->endDataAccess(); } else { QRasterPaintEngine::drawPixmap(r, pm, sr); } }
bool QS60WindowSurface::scroll(const QRegion &area, int dx, int dy) { QRect rect = area.boundingRect(); if (dx == 0 && dy == 0) return false; if (d_ptr->device.isNull()) return false; QS60PixmapData *data = static_cast<QS60PixmapData*>(d_ptr->device.data_ptr().data()); data->scroll(dx, dy, rect); return true; }
QS60WindowSurface::QS60WindowSurface(QWidget* widget) : QWindowSurface(widget), d_ptr(new QS60WindowSurfacePrivate) { QWidgetPrivate *widgetPrivate = qt_widget_private(widget); const bool opaque = widgetPrivate->isOpaque && !blitWriteAlpha(widgetPrivate); TDisplayMode mode = displayMode(opaque); // We create empty CFbsBitmap here -> it will be resized in setGeometry CFbsBitmap *bitmap = new CFbsBitmap; // CBase derived object needs check on new Q_CHECK_PTR(bitmap); qt_symbian_throwIfError( bitmap->Create( TSize(0, 0), mode ) ); QS60PixmapData *data = new QS60PixmapData(QPixmapData::PixmapType); if (data) { data->fromSymbianBitmap(bitmap, true); d_ptr->device = QPixmap(data); } }
QS60WindowSurface::QS60WindowSurface(QWidget* widget) : QWindowSurface(widget), d_ptr(new QS60WindowSurfacePrivate) { TDisplayMode mode = S60->screenDevice()->DisplayMode(); bool isOpaque = qt_widget_private(widget)->isOpaque; if (mode == EColor16MA && isOpaque) mode = EColor16MU; // Faster since 16MU -> 16MA is typically accelerated else if (mode == EColor16MU && !isOpaque) mode = EColor16MA; // Try for transparency anyway // We create empty CFbsBitmap here -> it will be resized in setGeometry CFbsBitmap *bitmap = q_check_ptr(new CFbsBitmap); // CBase derived object needs check on new qt_symbian_throwIfError( bitmap->Create( TSize(0, 0), mode ) ); QS60PixmapData *data = new QS60PixmapData(QPixmapData::PixmapType); data->fromSymbianBitmap(bitmap); d_ptr->device = QPixmap(data); setStaticContentsSupport(true); }