Merge lp:~inkscape.dev/inkscape/inkscape-librevenge into lp:~inkscape.dev/inkscape/trunk

Proposed by su_v
Status: Merged
Approved by: Bryce Harrington
Approved revision: 13408
Merged at revision: 13621
Proposed branch: lp:~inkscape.dev/inkscape/inkscape-librevenge
Merge into: lp:~inkscape.dev/inkscape/trunk
Diff against target: 438 lines (+179/-62)
5 files modified
configure.ac (+64/-21)
src/extension/internal/cdr-input.cpp (+28/-8)
src/extension/internal/vsd-input.cpp (+29/-8)
src/extension/internal/wpg-input.cpp (+36/-21)
src/ui/dialog/symbols.cpp (+22/-4)
To merge this branch: bzr merge lp:~inkscape.dev/inkscape/inkscape-librevenge
Reviewer Review Type Date Requested Status
Bryce Harrington (community) code Approve
su_v Pending
Review via email: mp+232193@code.launchpad.net

This proposal supersedes a proposal from 2014-05-28.

Description of the change

Port inkscape to librevenge framework for WPG, CDR and VSD imports

See also:
http://www.documentliberation.org/
http://libregraphicsworld.org/blog/entry/librevenge-has-arrived

Thanks to Alex Valavanis the branch now supports conditional building with old or newer versions of libwpg, libcdr and libvisio, and does not introduce new requirements for dependencies which aren't available on current stable distros yet.

Branch compiled and tested successfully on OS X 10.7.5 with current stable releases (libwpg-2.0, libcdr 0.0, libvisio 0.0) and with git master of librevenge, libwpg, libcdr, libvisio.

To post a comment you must log in.
Revision history for this message
su_v (suv-lp) wrote : Posted in a previous version of this proposal

On 2014-05-28 06:24 +0100, ~suv wrote:
> Currently introduces an indirect dependency on one of the boost
> libraries: librevenge-stream-0.0 requires the Filesystem library from
> the Boost C++ libraries.

The dependency on the Filesystem library has been removed from upstream librevenge today:
<http://sourceforge.net/p/libwpd/librevenge/ci/fd8b4f3d933b631584e3338eae564f9336a20533/tree/>

Revision history for this message
su_v (suv-lp) wrote : Posted in a previous version of this proposal

Branch updated in r13405 to latest patch from bug #1323592 for conditional build.

review: Needs Resubmitting
13407. By su_v

update to trunk (r13540)

13408. By su_v

update to trunk (r13560)

Revision history for this message
Bryce Harrington (bryce) wrote :

I did a quick code review of the patch and it all looks fine, if the testing of the three components is working.

This is Freeze Approved for landing in the 0.91 stable tree.

review: Approve (code)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'configure.ac'
--- configure.ac 2014-09-02 04:05:35 +0000
+++ configure.ac 2014-09-19 00:35:56 +0000
@@ -532,27 +532,32 @@
532with_libwpg=no532with_libwpg=no
533533
534if test "x$enable_wpg" = "xyes"; then534if test "x$enable_wpg" = "xyes"; then
535 PKG_CHECK_MODULES(LIBWPG01, libwpg-0.1 libwpg-stream-0.1, with_libwpg01=yes, with_libwpg01=no)535 dnl **************************************************************
536 if test "x$with_libwpg01" = "xyes"; then536 dnl Try using librevenge framework first. Fall back to old libs
537 AC_DEFINE(WITH_LIBWPG01,1,[Build in libwpg 0.1.x])537 dnl if unavailable.
538 with_libwpg=yes538 dnl TODO: Drop subsequent tests once this is widespread in distros
539 AC_SUBST(LIBWPG_LIBS, $LIBWPG01_LIBS)539 dnl **************************************************************
540 AC_SUBST(LIBWPG_CFLAGS, $LIBWPG01_CFLAGS)540 PKG_CHECK_MODULES(LIBWPG03, libwpg-0.3 librevenge-0.0 librevenge-stream-0.0, with_libwpg03=yes, with_libwpg03=no)
541 fi541 if test "x$with_libwpg03" = "xyes"; then
542542 AC_DEFINE(WITH_LIBWPG03,1,[Build using libwpg 0.3.x])
543 PKG_CHECK_MODULES(LIBWPG02, libwpg-0.2 libwpd-0.9 libwpd-stream-0.9, with_libwpg02=yes, with_libwpg02=no)543 with_libwpg=yes
544 if test "x$with_libwpg02" = "xyes"; then544 AC_SUBST(LIBWPG_LIBS, $LIBWPG03_LIBS)
545 AC_DEFINE(WITH_LIBWPG02,1,[Build in libwpg 0.2.x])545 AC_SUBST(LIBWPG_CFLAGS, $LIBWPG03_CFLAGS)
546 with_libwpg=yes546 else
547 AC_SUBST(LIBWPG_LIBS, $LIBWPG02_LIBS)547 PKG_CHECK_MODULES(LIBWPG02, libwpg-0.2 libwpd-0.9 libwpd-stream-0.9, with_libwpg02=yes, with_libwpg02=no)
548 AC_SUBST(LIBWPG_CFLAGS, $LIBWPG02_CFLAGS)548 if test "x$with_libwpg02" = "xyes"; then
549 AC_DEFINE(WITH_LIBWPG02,1,[Build using libwpg 0.2.x])
550 with_libwpg=yes
551 AC_SUBST(LIBWPG_LIBS, $LIBWPG02_LIBS)
552 AC_SUBST(LIBWPG_CFLAGS, $LIBWPG02_CFLAGS)
553 fi
549 fi554 fi
550555
551 if test "x$with_libwpg" = "xyes"; then556 if test "x$with_libwpg" = "xyes"; then
552 AC_DEFINE(WITH_LIBWPG,1,[Build in libwpg])557 AC_DEFINE(WITH_LIBWPG,1,[Build in libwpg])
553 fi558 fi
554fi559fi
555AM_CONDITIONAL(WITH_LIBWPG01, test "x$with_libwpg01" = "xyes")560AM_CONDITIONAL(WITH_LIBWPG03, test "x$with_libwpg03" = "xyes")
556AM_CONDITIONAL(WITH_LIBWPG02, test "x$with_libwpg02" = "xyes")561AM_CONDITIONAL(WITH_LIBWPG02, test "x$with_libwpg02" = "xyes")
557AM_CONDITIONAL(WITH_LIBWPG, test "x$with_libwpg" = "xyes")562AM_CONDITIONAL(WITH_LIBWPG, test "x$with_libwpg" = "xyes")
558563
@@ -567,14 +572,33 @@
567with_libvisio=no572with_libvisio=no
568573
569if test "x$enable_visio" = "xyes"; then574if test "x$enable_visio" = "xyes"; then
570 PKG_CHECK_MODULES(LIBVISIO, libvisio-0.0 >= 0.0.20 libwpd-0.9 libwpd-stream-0.9 libwpg-0.2, with_libvisio=yes, with_libvisio=no)575 dnl **************************************************************
576 dnl Try using librevenge framework first. Fall back to old libs
577 dnl if unavailable.
578 dnl TODO: Drop subsequent tests once this is widespread in distros
579 dnl **************************************************************
580 PKG_CHECK_MODULES(LIBVISIO01, libvisio-0.1 librevenge-0.0 librevenge-stream-0.0, with_libvisio01=yes, with_libvisio01=no)
581 if test "x$with_libvisio01" = "xyes"; then
582 AC_DEFINE(WITH_LIBVISIO01,1,[Build using libvisio 0.1.x])
583 with_libvisio=yes
584 AC_SUBST(LIBVISIO_LIBS, $LIBVISIO01_LIBS)
585 AC_SUBST(LIBVISIO_CFLAGS, $LIBVISIO01_CFLAGS)
586 else
587 PKG_CHECK_MODULES(LIBVISIO00, libvisio-0.0 >= 0.0.20 libwpd-0.9 libwpd-stream-0.9 libwpg-0.2, with_libvisio00=yes, with_libvisio00=no)
588 if test "x$with_libvisio00" = "xyes"; then
589 AC_DEFINE(WITH_LIBVISIO00,1,[Build using libvisio 0.0.x])
590 with_libvisio=yes
591 AC_SUBST(LIBVISIO_LIBS, $LIBVISIO00_LIBS)
592 AC_SUBST(LIBVISIO_CFLAGS, $LIBVISIO00_CFLAGS)
593 fi
594 fi
571595
572 if test "x$with_libvisio" = "xyes"; then596 if test "x$with_libvisio" = "xyes"; then
573 AC_DEFINE(WITH_LIBVISIO,1,[Build in libvisio])597 AC_DEFINE(WITH_LIBVISIO,1,[Build in libvisio])
574 fi598 fi
575fi599fi
576AC_SUBST(LIBVISIO_LIBS)600AM_CONDITIONAL(WITH_LIBVISIO01, test "x$with_libvisio01" = "xyes")
577AC_SUBST(LIBVISIO_CFLAGS)601AM_CONDITIONAL(WITH_LIBVISIO00, test "x$with_libvisio00" = "xyes")
578AM_CONDITIONAL(WITH_LIBVISIO, test "x$with_libvisio" = "xyes")602AM_CONDITIONAL(WITH_LIBVISIO, test "x$with_libvisio" = "xyes")
579603
580dnl ********************************604dnl ********************************
@@ -588,14 +612,33 @@
588with_libcdr=no612with_libcdr=no
589613
590if test "x$enable_cdr" = "xyes"; then614if test "x$enable_cdr" = "xyes"; then
591 PKG_CHECK_MODULES(LIBCDR, libcdr-0.0 >= 0.0.3 libwpd-0.9 libwpd-stream-0.9 libwpg-0.2, with_libcdr=yes, with_libcdr=no)615 dnl **************************************************************
616 dnl Try using librevenge framework first. Fall back to old libs
617 dnl if unavailable.
618 dnl TODO: Drop subsequent tests once this is widespread in distros
619 dnl **************************************************************
620 PKG_CHECK_MODULES(LIBCDR01, libcdr-0.1 librevenge-0.0 librevenge-stream-0.0, with_libcdr01=yes, with_libcdr01=no)
621 if test "x$with_libcdr01" = "xyes"; then
622 AC_DEFINE(WITH_LIBCDR01,1,[Build using libcdr 0.1.x])
623 with_libcdr=yes
624 AC_SUBST(LIBCDR_LIBS, $LIBCDR01_LIBS)
625 AC_SUBST(LIBCDR_CFLAGS, $LIBCDR01_CFLAGS)
626 else
627 PKG_CHECK_MODULES(LIBCDR00, libcdr-0.0 >= 0.0.3 libwpd-0.9 libwpd-stream-0.9 libwpg-0.2, with_libcdr00=yes, with_libcdr00=no)
628 if test "x$with_libcdr00" = "xyes"; then
629 AC_DEFINE(WITH_LIBCDR00,1,[Build using libcdr 0.0.x])
630 with_libcdr=yes
631 AC_SUBST(LIBCDR_LIBS, $LIBCDR00_LIBS)
632 AC_SUBST(LIBCDR_CFLAGS, $LIBCDR00_CFLAGS)
633 fi
634 fi
592635
593 if test "x$with_libcdr" = "xyes"; then636 if test "x$with_libcdr" = "xyes"; then
594 AC_DEFINE(WITH_LIBCDR,1,[Build in libcdr])637 AC_DEFINE(WITH_LIBCDR,1,[Build in libcdr])
595 fi638 fi
596fi639fi
597AC_SUBST(LIBCDR_LIBS)640AM_CONDITIONAL(WITH_LIBCDR01, test "x$with_libcdr01" = "xyes")
598AC_SUBST(LIBCDR_CFLAGS)641AM_CONDITIONAL(WITH_LIBCDR00, test "x$with_libcdr00" = "xyes")
599AM_CONDITIONAL(WITH_LIBCDR, test "x$with_libcdr" = "xyes")642AM_CONDITIONAL(WITH_LIBCDR, test "x$with_libcdr" = "xyes")
600643
601dnl ******************************644dnl ******************************
602645
=== modified file 'src/extension/internal/cdr-input.cpp'
--- src/extension/internal/cdr-input.cpp 2013-10-27 16:33:32 +0000
+++ src/extension/internal/cdr-input.cpp 2014-09-19 00:35:56 +0000
@@ -24,7 +24,21 @@
24#include <cstring>24#include <cstring>
2525
26#include <libcdr/libcdr.h>26#include <libcdr/libcdr.h>
27#include <libwpd-stream/libwpd-stream.h>27
28// TODO: Drop this check when librevenge is widespread.
29#if WITH_LIBCDR01
30 #include <librevenge-stream/librevenge-stream.h>
31
32 using librevenge::RVNGString;
33 using librevenge::RVNGFileStream;
34 using librevenge::RVNGStringVector;
35#else
36 #include <libwpd-stream/libwpd-stream.h>
37
38 typedef WPXString RVNGString;
39 typedef WPXFileStream RVNGFileStream;
40 typedef libcdr::CDRStringVector RVNGStringVector;
41#endif
2842
29#include <gtkmm/alignment.h>43#include <gtkmm/alignment.h>
30#include <gtkmm/comboboxtext.h>44#include <gtkmm/comboboxtext.h>
@@ -60,7 +74,7 @@
6074
61class CdrImportDialog : public Gtk::Dialog {75class CdrImportDialog : public Gtk::Dialog {
62public:76public:
63 CdrImportDialog(const std::vector<WPXString> &vec);77 CdrImportDialog(const std::vector<RVNGString> &vec);
64 virtual ~CdrImportDialog();78 virtual ~CdrImportDialog();
6579
66 bool showDialog();80 bool showDialog();
@@ -86,12 +100,12 @@
86 class Gtk::VBox * vbox2;100 class Gtk::VBox * vbox2;
87 class Gtk::Widget * _previewArea;101 class Gtk::Widget * _previewArea;
88102
89 const std::vector<WPXString> &_vec; // Document to be imported103 const std::vector<RVNGString> &_vec; // Document to be imported
90 unsigned _current_page; // Current selected page104 unsigned _current_page; // Current selected page
91 int _preview_width, _preview_height; // Size of the preview area105 int _preview_width, _preview_height; // Size of the preview area
92};106};
93107
94CdrImportDialog::CdrImportDialog(const std::vector<WPXString> &vec)108CdrImportDialog::CdrImportDialog(const std::vector<RVNGString> &vec)
95 : _vec(vec), _current_page(1)109 : _vec(vec), _current_page(1)
96{110{
97 int num_pages = _vec.size();111 int num_pages = _vec.size();
@@ -210,14 +224,20 @@
210224
211SPDocument *CdrInput::open(Inkscape::Extension::Input * /*mod*/, const gchar * uri)225SPDocument *CdrInput::open(Inkscape::Extension::Input * /*mod*/, const gchar * uri)
212{226{
213 WPXFileStream input(uri);227 RVNGFileStream input(uri);
214228
215 if (!libcdr::CDRDocument::isSupported(&input)) {229 if (!libcdr::CDRDocument::isSupported(&input)) {
216 return NULL;230 return NULL;
217 }231 }
218232
219 libcdr::CDRStringVector output;233 RVNGStringVector output;
234#if WITH_LIBCDR01
235 librevenge::RVNGSVGDrawingGenerator generator(output, "svg");
236
237 if (!libcdr::CDRDocument::parse(&input, &generator)) {
238#else
220 if (!libcdr::CDRDocument::generateSVG(&input, output)) {239 if (!libcdr::CDRDocument::generateSVG(&input, output)) {
240#endif
221 return NULL;241 return NULL;
222 }242 }
223243
@@ -225,9 +245,9 @@
225 return NULL;245 return NULL;
226 }246 }
227247
228 std::vector<WPXString> tmpSVGOutput;248 std::vector<RVNGString> tmpSVGOutput;
229 for (unsigned i=0; i<output.size(); ++i) {249 for (unsigned i=0; i<output.size(); ++i) {
230 WPXString tmpString("<?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");250 RVNGString tmpString("<?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");
231 tmpString.append(output[i]);251 tmpString.append(output[i]);
232 tmpSVGOutput.push_back(tmpString);252 tmpSVGOutput.push_back(tmpString);
233 }253 }
234254
=== modified file 'src/extension/internal/vsd-input.cpp'
--- src/extension/internal/vsd-input.cpp 2013-10-24 15:03:01 +0000
+++ src/extension/internal/vsd-input.cpp 2014-09-19 00:35:56 +0000
@@ -24,7 +24,22 @@
24#include <cstring>24#include <cstring>
2525
26#include <libvisio/libvisio.h>26#include <libvisio/libvisio.h>
27#include <libwpd-stream/libwpd-stream.h>27
28// TODO: Drop this check when librevenge is widespread.
29#if WITH_LIBVISIO01
30 #include <librevenge-stream/librevenge-stream.h>
31
32 using librevenge::RVNGString;
33 using librevenge::RVNGFileStream;
34 using librevenge::RVNGStringVector;
35#else
36 #include <libwpd-stream/libwpd-stream.h>
37
38 typedef WPXString RVNGString;
39 typedef WPXFileStream RVNGFileStream;
40 typedef libvisio::VSDStringVector RVNGStringVector;
41#endif
42
2843
29#include <gtkmm/alignment.h>44#include <gtkmm/alignment.h>
30#include <gtkmm/comboboxtext.h>45#include <gtkmm/comboboxtext.h>
@@ -59,7 +74,7 @@
5974
60class VsdImportDialog : public Gtk::Dialog {75class VsdImportDialog : public Gtk::Dialog {
61public:76public:
62 VsdImportDialog(const std::vector<WPXString> &vec);77 VsdImportDialog(const std::vector<RVNGString> &vec);
63 virtual ~VsdImportDialog();78 virtual ~VsdImportDialog();
6479
65 bool showDialog();80 bool showDialog();
@@ -85,12 +100,12 @@
85 class Gtk::VBox * vbox2;100 class Gtk::VBox * vbox2;
86 class Gtk::Widget * _previewArea;101 class Gtk::Widget * _previewArea;
87102
88 const std::vector<WPXString> &_vec; // Document to be imported103 const std::vector<RVNGString> &_vec; // Document to be imported
89 unsigned _current_page; // Current selected page104 unsigned _current_page; // Current selected page
90 int _preview_width, _preview_height; // Size of the preview area105 int _preview_width, _preview_height; // Size of the preview area
91};106};
92107
93VsdImportDialog::VsdImportDialog(const std::vector<WPXString> &vec)108VsdImportDialog::VsdImportDialog(const std::vector<RVNGString> &vec)
94 : _vec(vec), _current_page(1)109 : _vec(vec), _current_page(1)
95{110{
96 int num_pages = _vec.size();111 int num_pages = _vec.size();
@@ -209,14 +224,20 @@
209224
210SPDocument *VsdInput::open(Inkscape::Extension::Input * /*mod*/, const gchar * uri)225SPDocument *VsdInput::open(Inkscape::Extension::Input * /*mod*/, const gchar * uri)
211{226{
212 WPXFileStream input(uri);227 RVNGFileStream input(uri);
213228
214 if (!libvisio::VisioDocument::isSupported(&input)) {229 if (!libvisio::VisioDocument::isSupported(&input)) {
215 return NULL;230 return NULL;
216 }231 }
217232
218 libvisio::VSDStringVector output;233 RVNGStringVector output;
234#if WITH_LIBVISIO01
235 librevenge::RVNGSVGDrawingGenerator generator(output, "svg");
236
237 if (!libvisio::VisioDocument::parse(&input, &generator)) {
238#else
219 if (!libvisio::VisioDocument::generateSVG(&input, output)) {239 if (!libvisio::VisioDocument::generateSVG(&input, output)) {
240#endif
220 return NULL;241 return NULL;
221 }242 }
222243
@@ -224,9 +245,9 @@
224 return NULL;245 return NULL;
225 }246 }
226247
227 std::vector<WPXString> tmpSVGOutput;248 std::vector<RVNGString> tmpSVGOutput;
228 for (unsigned i=0; i<output.size(); ++i) {249 for (unsigned i=0; i<output.size(); ++i) {
229 WPXString tmpString("<?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");250 RVNGString tmpString("<?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");
230 tmpString.append(output[i]);251 tmpString.append(output[i]);
231 tmpSVGOutput.push_back(tmpString);252 tmpSVGOutput.push_back(tmpString);
232 }253 }
233254
=== modified file 'src/extension/internal/wpg-input.cpp'
--- src/extension/internal/wpg-input.cpp 2014-03-27 01:33:44 +0000
+++ src/extension/internal/wpg-input.cpp 2014-09-19 00:35:56 +0000
@@ -52,16 +52,24 @@
52#include "util/units.h"52#include "util/units.h"
53#include <cstring>53#include <cstring>
5454
55// Take a guess and fallback to 0.1.x if no configure has run55// Take a guess and fallback to 0.2.x if no configure has run
56#if !defined(WITH_LIBWPG01) && !defined(WITH_LIBWPG02)56#if !defined(WITH_LIBWPG03) && !defined(WITH_LIBWPG02)
57#define WITH_LIBWPG01 157#define WITH_LIBWPG02 1
58#endif58#endif
5959
60#include "libwpg/libwpg.h"60#include "libwpg/libwpg.h"
61#if WITH_LIBWPG0161#if WITH_LIBWPG03
62#include "libwpg/WPGStreamImplementation.h"62 #include <librevenge-stream/librevenge-stream.h>
63#elif WITH_LIBWPG0263
64#include "libwpd-stream/libwpd-stream.h"64 using librevenge::RVNGString;
65 using librevenge::RVNGFileStream;
66 using librevenge::RVNGInputStream;
67#else
68 #include "libwpd-stream/libwpd-stream.h"
69
70 typedef WPXString RVNGString;
71 typedef WPXFileStream RVNGFileStream;
72 typedef WPXInputStream RVNGInputStream;
65#endif73#endif
6674
67using namespace libwpg;75using namespace libwpg;
@@ -73,17 +81,15 @@
7381
74SPDocument *WpgInput::open(Inkscape::Extension::Input * /*mod*/, const gchar * uri)82SPDocument *WpgInput::open(Inkscape::Extension::Input * /*mod*/, const gchar * uri)
75{83{
76#if WITH_LIBWPG0184 RVNGInputStream* input = new RVNGFileStream(uri);
77 WPXInputStream* input = new libwpg::WPGFileStream(uri);85#if WITH_LIBWPG03
78#elif WITH_LIBWPG0286 if (input->isStructured()) {
79 WPXInputStream* input = new WPXFileStream(uri);87 RVNGInputStream* olestream = input->getSubStreamByName("PerfectOffice_MAIN");
80#endif88#else
81 if (input->isOLEStream()) {89 if (input->isOLEStream()) {
82#if WITH_LIBWPG0190 RVNGInputStream* olestream = input->getDocumentOLEStream("PerfectOffice_MAIN");
83 WPXInputStream* olestream = input->getDocumentOLEStream();
84#elif WITH_LIBWPG02
85 WPXInputStream* olestream = input->getDocumentOLEStream("PerfectOffice_MAIN");
86#endif91#endif
92
87 if (olestream) {93 if (olestream) {
88 delete input;94 delete input;
89 input = olestream;95 input = olestream;
@@ -98,15 +104,24 @@
98 return NULL;104 return NULL;
99 }105 }
100106
101#if WITH_LIBWPG01107#if WITH_LIBWPG03
102 libwpg::WPGString output;108 librevenge::RVNGStringVector vec;
103#elif WITH_LIBWPG02109 librevenge::RVNGSVGDrawingGenerator generator(vec, "");
104 WPXString output;110
105#endif111 if (!libwpg::WPGraphics::parse(input, &generator) || vec.empty() || vec[0].empty()) {
112 delete input;
113 return NULL;
114 }
115
116 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");
117 output.append(vec[0]);
118#else
119 RVNGString output;
106 if (!libwpg::WPGraphics::generateSVG(input, output)) {120 if (!libwpg::WPGraphics::generateSVG(input, output)) {
107 delete input;121 delete input;
108 return NULL;122 return NULL;
109 }123 }
124#endif
110125
111 //printf("I've got a doc: \n%s", painter.document.c_str());126 //printf("I've got a doc: \n%s", painter.document.c_str());
112127
113128
=== modified file 'src/ui/dialog/symbols.cpp'
--- src/ui/dialog/symbols.cpp 2014-06-13 16:06:01 +0000
+++ src/ui/dialog/symbols.cpp 2014-09-19 00:35:56 +0000
@@ -62,8 +62,20 @@
62#include "widgets/icon.h"62#include "widgets/icon.h"
6363
64#ifdef WITH_LIBVISIO64#ifdef WITH_LIBVISIO
65#include <libvisio/libvisio.h>65 #include <libvisio/libvisio.h>
66#include <libwpd-stream/libwpd-stream.h>66
67 // TODO: Drop this check when librevenge is widespread.
68 #if WITH_LIBVISIO01
69 #include <librevenge-stream/librevenge-stream.h>
70
71 using librevenge::RVNGFileStream;
72 using librevenge::RVNGStringVector;
73 #else
74 #include <libwpd-stream/libwpd-stream.h>
75
76 typedef WPXFileStream RVNGFileStream;
77 typedef libvisio::VSDStringVector RVNGStringVector;
78 #endif
67#endif79#endif
6880
69#include "verbs.h"81#include "verbs.h"
@@ -495,14 +507,20 @@
495// Read Visio stencil files507// Read Visio stencil files
496SPDocument* read_vss( gchar* fullname, gchar* filename ) {508SPDocument* read_vss( gchar* fullname, gchar* filename ) {
497509
498 WPXFileStream input(fullname);510 RVNGFileStream input(fullname);
499511
500 if (!libvisio::VisioDocument::isSupported(&input)) {512 if (!libvisio::VisioDocument::isSupported(&input)) {
501 return NULL;513 return NULL;
502 }514 }
503515
504 libvisio::VSDStringVector output;516 RVNGStringVector output;
517#if WITH_LIBVISIO01
518 librevenge::RVNGSVGDrawingGenerator generator(output, "svg");
519
520 if (!libvisio::VisioDocument::parseStencils(&input, &generator)) {
521#else
505 if (!libvisio::VisioDocument::generateSVGStencils(&input, output)) {522 if (!libvisio::VisioDocument::generateSVGStencils(&input, output)) {
523#endif
506 return NULL;524 return NULL;
507 }525 }
508526