summaryrefslogtreecommitdiffstats
path: root/ksvg/plugin/svgcreator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ksvg/plugin/svgcreator.cpp')
-rw-r--r--ksvg/plugin/svgcreator.cpp92
1 files changed, 92 insertions, 0 deletions
diff --git a/ksvg/plugin/svgcreator.cpp b/ksvg/plugin/svgcreator.cpp
new file mode 100644
index 00000000..c6689c9a
--- /dev/null
+++ b/ksvg/plugin/svgcreator.cpp
@@ -0,0 +1,92 @@
+/*
+ Copyright (c) 2001 Malte Starostik <[email protected]>
+
+ 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; see the file COPYING. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+// $Id$
+
+#include <time.h>
+
+#include <qpixmap.h>
+#include <qimage.h>
+
+#include "KSVGCanvas.h"
+#include "CanvasFactory.h"
+
+#include <kapplication.h>
+
+#include "SVGSVGElementImpl.h"
+#include "SVGDocumentImpl.h"
+
+#include "svgcreator.moc"
+
+extern "C"
+{
+ ThumbCreator *new_creator()
+ {
+ return new SVGCreator;
+ }
+}
+
+SVGCreator::SVGCreator()
+{
+}
+
+SVGCreator::~SVGCreator()
+{
+}
+
+bool SVGCreator::create(const QString &path, int width, int height, QImage &img)
+{
+ KSVG::SVGDocumentImpl *doc = new KSVG::SVGDocumentImpl(false, true);
+ doc->ref();
+
+ QPixmap pix(width, height);
+ pix.fill(Qt::white);
+
+ KSVG::KSVGCanvas *c = KSVG::CanvasFactory::self()->loadCanvas(width, height);
+ c->setup(&pix, &pix);
+
+ doc->attach(c);
+ connect(doc, SIGNAL(finishedRendering()), SLOT(slotFinished()));
+ doc->open( KURL::fromPathOrURL(path));
+
+ m_finished = false;
+
+ while(!m_finished)
+ kapp->processOneEvent();
+
+ doc->deref();
+
+ img = pix.convertToImage();
+
+ delete c;
+
+ return true;
+}
+
+void SVGCreator::slotFinished()
+{
+ m_finished = true;
+}
+
+ThumbCreator::Flags SVGCreator::flags() const
+{
+ return DrawFrame;
+}
+
+// vim: ts=4 sw=4 noet