void PrintHelper::print(Document::Ptr doc) { doc->startLoadingFullImage(); doc->waitUntilLoaded(); QPrinter printer; PrintOptionsPage* optionsPage = new PrintOptionsPage(doc->size()); optionsPage->loadConfig(); std::unique_ptr<QPrintDialog> dialog( KdePrint::createPrintDialog(&printer, QList<QWidget*>() << optionsPage, d->mParent) ); dialog->setWindowTitle(i18n("Print Image")); bool wantToPrint = dialog->exec(); optionsPage->saveConfig(); if (!wantToPrint) { return; } QPainter painter(&printer); QRect rect = painter.viewport(); QSize size = d->adjustSize(optionsPage, doc, printer.resolution(), rect.size()); QPoint pos = d->adjustPosition(optionsPage, size, rect.size()); painter.setViewport(pos.x(), pos.y(), size.width(), size.height()); QImage image = doc->image(); painter.setWindow(image.rect()); painter.drawImage(0, 0, image); }
void ImageOpsContextManagerItem::resizeImage() { if (!d->ensureEditable()) { return; } Document::Ptr doc = DocumentFactory::instance()->load(contextManager()->currentUrl()); doc->startLoadingFullImage(); DialogGuard<ResizeImageDialog> dialog(d->mMainWindow); dialog->setOriginalSize(doc->size()); if (!dialog->exec()) { return; } ResizeImageOperation* op = new ResizeImageOperation(dialog->size()); applyImageOperation(op); }