コード例 #1
0
void UBThumbnailAdaptor::generateMissingThumbnails(UBDocumentProxy* proxy)
{
    int existingPageCount = proxy->pageCount();

    for (int iPageNo = 0; iPageNo < existingPageCount; ++iPageNo)
    {
        QString thumbFileName = proxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", iPageNo);

        QFile thumbFile(thumbFileName);

        if (!thumbFile.exists())
        {
            bool displayMessage = (existingPageCount > 5);

            int thumbCount = 0;

            UBGraphicsScene* scene = UBSvgSubsetAdaptor::loadScene(proxy, iPageNo);

            if (scene)
            {
                thumbCount++;

                if (displayMessage && thumbCount == 1)
                    UBApplication::showMessage(tr("Generating preview thumbnails ..."));

                persistScene(proxy->persistencePath(), scene, iPageNo);
            }

            if (displayMessage && thumbCount > 0)
                UBApplication::showMessage(tr("%1 thumbnails generated ...").arg(thumbCount));

        }
    }
}
コード例 #2
0
void
YTLocalVideoData::thumbnailDownloadFinished(QByteArray data)
{
    Q_ASSERT(!_thumbnailPath.isEmpty());
    QFile thumbFile(_thumbnailPath);
    // TODO: Handle open and write failures
    thumbFile.open(QIODevice::WriteOnly);
    thumbFile.write(data);
    thumbFile.close();
    emit thumbnailUrlChanged(thumbnailUrl());
    qDebug() << "Finished downloading thumbnail for video:" << _videoId;
}
コード例 #3
0
void UBThumbnailAdaptor::persistScene(UBDocumentProxy* proxy, UBGraphicsScene* pScene, int pageIndex, bool overrideModified)
{
    QString fileName = proxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", pageIndex);

    QFile thumbFile(fileName);

    if (pScene->isModified() || overrideModified || !thumbFile.exists() || UBApplication::boardController->paletteManager()->teacherGuideDockWidget()->teacherGuideWidget()->isModified())
    {
        qreal nominalWidth = pScene->nominalSize().width();
        qreal nominalHeight = pScene->nominalSize().height();
        qreal ratio = nominalWidth / nominalHeight;
        QRectF sceneRect = pScene->normalizedSceneRect(ratio);

        qreal width = UBSettings::maxThumbnailWidth;
        qreal height = width / ratio;

        QImage thumb(width, height, QImage::Format_ARGB32);

        QRectF imageRect(0, 0, width, height);

        QPainter painter(&thumb);
        painter.setRenderHint(QPainter::Antialiasing, true);
        painter.setRenderHint(QPainter::SmoothPixmapTransform, true);

        if (pScene->isDarkBackground())
        {
            painter.fillRect(imageRect, Qt::black);
        }
        else
        {
            painter.fillRect(imageRect, Qt::white);
        }

        pScene->setRenderingQuality(UBItem::RenderingQualityHigh);

        pScene->render(&painter, imageRect, sceneRect, Qt::KeepAspectRatio);

        if(UBApplication::boardController->paletteManager()->teacherGuideDockWidget()->teacherGuideWidget()->isModified()){
            QPixmap toque(":images/toque.svg");
            painter.setOpacity(0.6);
            painter.drawPixmap(QPoint(width - toque.width(),0),toque);
        }

        pScene->setRenderingQuality(UBItem::RenderingQualityNormal);

        thumb.scaled(width, height, Qt::KeepAspectRatio, Qt::SmoothTransformation).save(fileName, "JPG");
    }
}
コード例 #4
0
void UBThumbnailAdaptor::persistScene(UBDocumentProxy* proxy, UBGraphicsScene* pScene, int pageIndex, bool overrideModified)
{

    qDebug() << "Persist scene on path " << proxy->persistencePath() << ", index " << pageIndex;

    QString fileName = proxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", pageIndex);

    QFile thumbFile(fileName);

    if (pScene->isModified() || overrideModified || !thumbFile.exists())
    {
        qreal nominalWidth = pScene->nominalSize().width();
        qreal nominalHeight = pScene->nominalSize().height();
        qreal ratio = nominalWidth / nominalHeight;
        QRectF sceneRect = pScene->normalizedSceneRect(ratio);

        qreal width = UBSettings::maxThumbnailWidth;
        qreal height = width / ratio;

        QImage thumb(width, height, QImage::Format_ARGB32);

        QRectF imageRect(0, 0, width, height);

        QPainter painter(&thumb);
        painter.setRenderHint(QPainter::Antialiasing, true);
        painter.setRenderHint(QPainter::SmoothPixmapTransform, true);

        if (pScene->isDarkBackground())
        {
            painter.fillRect(imageRect, Qt::black);
        }
        else
        {
            painter.fillRect(imageRect, Qt::white);
        }

        pScene->setRenderingContext(UBGraphicsScene::NonScreen);
        pScene->setRenderingQuality(UBItem::RenderingQualityHigh);

        pScene->render(&painter, imageRect, sceneRect, Qt::KeepAspectRatio);

        pScene->setRenderingContext(UBGraphicsScene::Screen);
        pScene->setRenderingQuality(UBItem::RenderingQualityNormal);

        thumb.scaled(width, height, Qt::KeepAspectRatio, Qt::SmoothTransformation).save(fileName, "JPG");
    }
}
コード例 #5
0
ファイル: thumbmanager.cpp プロジェクト: plus7/Qween
void ThumbManager::replyFinished(QNetworkReply* reply){
    QString uri = m_connections.key(reply);
    m_connections.remove(uri);
    if(uri.isEmpty()) {
        return;
    }
    if(reply->error() != QNetworkReply::NoError){
        reply->deleteLater();
        return;
    }else if(!reply->attribute(QNetworkRequest::RedirectionTargetAttribute).isNull()){
        QUrl newuri(reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl());
        QNetworkReply *rep = m_manager->get(QNetworkRequest(newuri));
        m_connections.insert(uri, rep);
        reply->deleteLater();
        return;
    }
    QFile thumbFile(getThumbFilePath(uri));
    thumbFile.open(QFile::WriteOnly);
    thumbFile.write(reply->readAll());
    thumbFile.close();
    emit thumbDownloaded(uri);
    reply->deleteLater();
}
コード例 #6
0
QList<QPixmap> UBThumbnailAdaptor::load(UBDocumentProxy* proxy)
{

    QList<QPixmap> thumbnails;

    if (!proxy || proxy->persistencePath().size() == 0)
        return thumbnails;

    //compatibility with older formats (<= 4.0.b.2.0) : generate missing thumbnails

    int existingPageCount = proxy->pageCount();

    QString thumbFileName = proxy->persistencePath() +
        UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", existingPageCount);

    QFile thumbFile(thumbFileName);

    if (!thumbFile.exists())
    {
        bool displayMessage = (existingPageCount > 5);

        int thumbCount = 0;

        for(int i = 0 ; i < existingPageCount; i++)
        {
            UBGraphicsScene* scene = UBSvgSubsetAdaptor::loadScene(proxy, i);

            if (scene)
            {
                thumbCount++;

                if (displayMessage && thumbCount == 1)
                    UBApplication::showMessage(tr("Generating preview thumbnails ..."));

                persistScene(proxy->persistencePath(), scene, i);
            }
        }

        if (displayMessage && thumbCount > 0)
            UBApplication::showMessage(tr("%1 thumbnails generated ...").arg(thumbCount));

    }

    //end compatibility with older format

    bool moreToProcess = true;
    int pageCount = 0;

    while (moreToProcess) {
        pageCount++;
        QString fileName = proxy->persistencePath() +
                UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", pageCount);

        QFile file(fileName);
        if (file.exists()) {
            QPixmap pix;
            //Warning. Works only with modified Qt
            pix.load(fileName, 0, Qt::AutoColor, false);
            thumbnails.append(pix);
        } else {
            moreToProcess = false;
        }
    }

    return thumbnails;
}