Beispiel #1
0
void zoomhandler_test::testViewToDocument()
{
    KoZoomHandler zoomHandler;
    zoomHandler.setZoom( 1.0 );
    zoomHandler.setDpi( 100, 100 );

    QCOMPARE( zoomHandler.viewToDocument( QPointF( 0, 0 ) ), QPointF( 0, 0 ) );
    // 100 view pixels are 72 postscript points at 100% zoom, 100ppi.
    QCOMPARE( zoomHandler.viewToDocument( QRectF( 0, 0, 100, 100 ) ), QRectF( 0, 0, 72, 72 ) );
    QCOMPARE( zoomHandler.viewToDocumentX( 0 ), 0. );
    QCOMPARE( zoomHandler.viewToDocumentY( 0 ), 0. );

}
QVariant CQSpreadsheetListModel::data(const QModelIndex& index, int role) const
{
    if (!index.isValid() || !d->map) {
        return QVariant();
    }

    switch(role) {
        case SheetNameRole:
            return d->map->sheet(index.row())->sheetName();
        case ThumbnailRole: {
            if (d->thumbnails.contains(index.row())) {
                return d->thumbnails.value(index.row());
            }

            QPixmap thumbnail(d->thumbnailSize);
            QRect rect(QPoint(0,0), d->thumbnailSize);

            QPainter p(&thumbnail);

            p.fillRect(rect, Qt::white);

            Calligra::Sheets::SheetView sheetView(d->map->sheet(index.row()));

            qreal zoom = 0.5;
            KoZoomHandler zoomHandler;
            zoomHandler.setZoom(zoom);
            p.setClipRect(rect);
            p.scale(zoom, zoom);
            sheetView.setViewConverter(&zoomHandler);

            QRectF area = zoomHandler.viewToDocument(rect);
            QRect range = sheetView.sheet()->documentToCellCoordinates(area).adjusted(0, 0, 2, 2);
            sheetView.setPaintCellRange(range);
            sheetView.paintCells(p, area, QPointF(0,0));

            d->thumbnails.insert(index.row(), thumbnail);
            return thumbnail;
        }
        default:
            break;
    }

    return QVariant();
}