summaryrefslogtreecommitdiffstats
path: root/src/extension/internal/wpg-input.cpp
diff options
context:
space:
mode:
authorFridrich Strba <fridrich.strba@bluewin.ch>2014-05-27 10:35:54 +0000
committer~suv <suv-sf@users.sourceforge.net>2014-05-27 10:35:54 +0000
commit2ddabce031c6c408688477544f9b16a28b7b9cb1 (patch)
treefd011337c53b8341431d16f30040bc3e29080bb7 /src/extension/internal/wpg-input.cpp
parentExtensions. Fix for Bug #1318348 (Extension dialogs inconsistency). (diff)
downloadinkscape-2ddabce031c6c408688477544f9b16a28b7b9cb1.tar.gz
inkscape-2ddabce031c6c408688477544f9b16a28b7b9cb1.zip
Port inkscape to librevenge framework for WPG, CDR and VSD imports
(bzr r13398.1.1)
Diffstat (limited to 'src/extension/internal/wpg-input.cpp')
-rw-r--r--src/extension/internal/wpg-input.cpp41
1 files changed, 13 insertions, 28 deletions
diff --git a/src/extension/internal/wpg-input.cpp b/src/extension/internal/wpg-input.cpp
index 14ff3ec77..c10926361 100644
--- a/src/extension/internal/wpg-input.cpp
+++ b/src/extension/internal/wpg-input.cpp
@@ -52,17 +52,8 @@
#include "util/units.h"
#include <cstring>
-// Take a guess and fallback to 0.1.x if no configure has run
-#if !defined(WITH_LIBWPG01) && !defined(WITH_LIBWPG02)
-#define WITH_LIBWPG01 1
-#endif
-
#include "libwpg/libwpg.h"
-#if WITH_LIBWPG01
-#include "libwpg/WPGStreamImplementation.h"
-#elif WITH_LIBWPG02
-#include "libwpd-stream/libwpd-stream.h"
-#endif
+#include "librevenge-stream/librevenge-stream.h"
using namespace libwpg;
@@ -73,17 +64,9 @@ namespace Internal {
SPDocument *WpgInput::open(Inkscape::Extension::Input * /*mod*/, const gchar * uri)
{
-#if WITH_LIBWPG01
- WPXInputStream* input = new libwpg::WPGFileStream(uri);
-#elif WITH_LIBWPG02
- WPXInputStream* input = new WPXFileStream(uri);
-#endif
- if (input->isOLEStream()) {
-#if WITH_LIBWPG01
- WPXInputStream* olestream = input->getDocumentOLEStream();
-#elif WITH_LIBWPG02
- WPXInputStream* olestream = input->getDocumentOLEStream("PerfectOffice_MAIN");
-#endif
+ librevenge::RVNGInputStream* input = new librevenge::RVNGFileStream(uri);
+ if (input->isStructured()) {
+ librevenge::RVNGInputStream* olestream = input->getSubStreamByName("PerfectOffice_MAIN");
if (olestream) {
delete input;
input = olestream;
@@ -98,15 +81,17 @@ SPDocument *WpgInput::open(Inkscape::Extension::Input * /*mod*/, const gchar * u
return NULL;
}
-#if WITH_LIBWPG01
- libwpg::WPGString output;
-#elif WITH_LIBWPG02
- WPXString output;
-#endif
- if (!libwpg::WPGraphics::generateSVG(input, output)) {
+ librevenge::RVNGStringVector vec;
+ librevenge::RVNGSVGDrawingGenerator generator(vec, "");
+
+ if (!libwpg::WPGraphics::parse(input, &generator) || vec.empty() || vec[0].empty())
+ {
delete input;
return NULL;
- }
+ }
+
+ librevenge::RVNGString output("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n");
+ output.append(vec[0]);
//printf("I've got a doc: \n%s", painter.document.c_str());