diff --git a/src/lib/epsresult.cpp b/src/lib/epsresult.cpp index 0543944d..559a69c2 100644 --- a/src/lib/epsresult.cpp +++ b/src/lib/epsresult.cpp @@ -1,153 +1,155 @@ /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. --- Copyright (C) 2009 Alexander Rieder */ #include "epsresult.h" using namespace Cantor; #include #include #include #include #include #include #include #include "renderer.h" #include "jupyterutils.h" class Cantor::EpsResultPrivate{ public: QUrl url; QImage image; }; EpsResult::EpsResult(const QUrl& url, const QImage& image) : d(new EpsResultPrivate) { d->url=url; d->image = image; } EpsResult::~EpsResult() { delete d; } QString EpsResult::toHtml() { return QStringLiteral("").arg(d->url.url()); } QString EpsResult::toLatex() { return QStringLiteral(" \\begin{center} \n \\includegraphics[width=12cm]{%1}\n \\end{center}").arg(d->url.fileName()); } QVariant EpsResult::data() { return QVariant(d->url); } QUrl EpsResult::url() { return d->url; } QImage Cantor::EpsResult::image() { return d->image; } int EpsResult::type() { return EpsResult::Type; } QString EpsResult::mimeType() { return QStringLiteral("image/x-eps"); } QDomElement EpsResult::toXml(QDomDocument& doc) { qDebug()<<"saving imageresult "<url.fileName()); #ifdef WITH_EPS const QImage& image = Renderer::epsRenderToImage(d->url, 1.0, false); qDebug() << image.size() << image.isNull(); if (!image.isNull()) { QByteArray ba; QBuffer buffer(&ba); buffer.open(QIODevice::WriteOnly); image.save(&buffer, "PNG"); e.setAttribute(QLatin1String("image"), QString::fromLatin1(ba.toBase64())); } #else if (!d->image.isNull()) { QByteArray ba; QBuffer buffer(&ba); buffer.open(QIODevice::WriteOnly); d->image.save(&buffer, "PNG"); e.setAttribute(QLatin1String("image"), QString::fromLatin1(ba.toBase64())); } #endif qDebug()<<"done"; return e; } QJsonValue Cantor::EpsResult::toJupyterJson() { QJsonObject root; if (executionIndex() != -1) { root.insert(QLatin1String("output_type"), QLatin1String("execute_result")); root.insert(QLatin1String("execution_count"), executionIndex()); } else root.insert(QLatin1String("output_type"), QLatin1String("display_data")); const QImage& image = d->image.isNull() ? Renderer::epsRenderToImage(d->url, 1.0, false) : d->image; QJsonObject data; data.insert(JupyterUtils::pngMime, JupyterUtils::packMimeBundle(image, JupyterUtils::pngMime)); root.insert(QLatin1String("data"), data); + root.insert(QLatin1String("metadata"), jupyterMetadata()); + return root; } void EpsResult::saveAdditionalData(KZip* archive) { archive->addLocalFile(d->url.toLocalFile(), d->url.fileName()); } void EpsResult::save(const QString& filename) { //just copy over the eps file.. KIO::file_copy(d->url, QUrl::fromLocalFile(filename), -1, KIO::HideProgressInfo); }