diff -urN abiword-2.8.2/plugin-configure.m4 abiword-2.8.2.new//plugin-configure.m4 --- abiword-2.8.2/plugin-configure.m4 2010-02-12 15:12:07.000000000 +0100 +++ abiword-2.8.2.new//plugin-configure.m4 2010-12-18 12:07:08.550263907 +0100 @@ -1032,7 +1032,7 @@ AC_SUBST([LOADBINDINGS_LIBS]) -wpg_pkgs="$gsf_req libwpg-0.1 >= 0.1.0 libwpd-0.8 >= 0.8.0" +wpg_pkgs="$gsf_req libwpg-0.2 >= 0.2.0 libwpd-0.9 >= 0.9.0 libwpd-stream-0.9 >= 0.9.0" wpg_deps="no" if test "$enable_wpg" != ""; then @@ -1272,8 +1272,8 @@ AC_SUBST([EML_LIBS]) -wordperfect_pkgs="libwpd-0.8 >= 0.8.0 $gsf_req" -wordperfect_wps_pkgs='libwps-0.1 >= 0.1.0' +wordperfect_pkgs="libwpg-0.2 >= 0.2.0 libwpd-0.9 >= 0.9.0 libwpd-stream-0.9 >= 0.9.0 $gsf_req" +wordperfect_wps_pkgs='libwps-0.2 >= 0.1.0' wordperfect_deps="no" WORDPERFECT_CFLAGS= diff -urN abiword-2.8.2/plugins/wordperfect/plugin.m4 abiword-2.8.2.new//plugins/wordperfect/plugin.m4 --- abiword-2.8.2/plugins/wordperfect/plugin.m4 2009-06-22 06:33:05.000000000 +0200 +++ abiword-2.8.2.new//plugins/wordperfect/plugin.m4 2010-12-18 12:02:29.184921950 +0100 @@ -1,6 +1,6 @@ -wordperfect_pkgs="libwpd-0.8 >= 0.8.0 $gsf_req" -wordperfect_wps_pkgs='libwps-0.1 >= 0.1.0' +wordperfect_pkgs="libwpg-0.2 >= 0.2.0 libwpd-0.9 >= 0.9.0 libwpd-stream-0.9 >= 0.9.0 $gsf_req" +wordperfect_wps_pkgs='libwps-0.2 >= 0.1.0' wordperfect_deps="no" WORDPERFECT_CFLAGS= diff -urN abiword-2.8.2/plugins/wordperfect/xp/ie_imp_WordPerfect.cpp abiword-2.8.2.new//plugins/wordperfect/xp/ie_imp_WordPerfect.cpp --- abiword-2.8.2/plugins/wordperfect/xp/ie_imp_WordPerfect.cpp 2010-02-06 22:06:11.000000000 +0100 +++ abiword-2.8.2.new//plugins/wordperfect/xp/ie_imp_WordPerfect.cpp 2010-12-18 12:02:29.181588156 +0100 @@ -60,7 +60,7 @@ // Stream class -#include +#include #include #include @@ -70,12 +70,7 @@ #include #endif -class AbiWordperfectInputStream : -#ifdef HAVE_LIBWPS - public WPSInputStream -#else - public WPXInputStream -#endif +class AbiWordperfectInputStream : public WPXInputStream { public: AbiWordperfectInputStream(GsfInput *input); @@ -86,7 +81,7 @@ virtual WPXInputStream * getDocumentOLEStream(const char * name); - virtual const uint8_t *read(size_t numBytes, size_t &numBytesRead); + virtual const unsigned char *read(unsigned long numBytes, unsigned long &numBytesRead); virtual int seek(long offset, WPX_SEEK_TYPE seekType); virtual long tell(); virtual bool atEOS(); @@ -98,11 +93,7 @@ }; AbiWordperfectInputStream::AbiWordperfectInputStream(GsfInput *input) : -#ifdef HAVE_LIBWPS - WPSInputStream(), -#else - WPXInputStream(true), -#endif + WPXInputStream(), m_input(input), m_ole(NULL) { @@ -117,9 +108,9 @@ g_object_unref(G_OBJECT(m_input)); } -const uint8_t * AbiWordperfectInputStream::read(size_t numBytes, size_t &numBytesRead) +const unsigned char * AbiWordperfectInputStream::read(unsigned long numBytes, unsigned long &numBytesRead) { - const uint8_t *buf = gsf_input_read(m_input, numBytes, NULL); + const unsigned char *buf = gsf_input_read(m_input, numBytes, NULL); if (buf == NULL) numBytesRead = 0; @@ -256,19 +247,12 @@ { AbiWordperfectInputStream gsfInput(input); - WPDConfidence confidence = WPDocument::isFileFormatSupported(&gsfInput, true); + WPDConfidence confidence = WPDocument::isFileFormatSupported(&gsfInput); switch (confidence) { case WPD_CONFIDENCE_NONE: - // libwpd > 0.7.1 reports POOR if the text file is plain text (that _could_ be a WP4x document) - // however, we'll let the text importer handle such cases - case WPD_CONFIDENCE_POOR: return UT_CONFIDENCE_ZILCH; - case WPD_CONFIDENCE_LIKELY: - return UT_CONFIDENCE_SOSO; - case WPD_CONFIDENCE_GOOD: - return UT_CONFIDENCE_GOOD; case WPD_CONFIDENCE_EXCELLENT: return UT_CONFIDENCE_PERFECT; default: @@ -328,7 +312,7 @@ UT_Error IE_Imp_WordPerfect::_loadFile(GsfInput * input) { AbiWordperfectInputStream gsfInput(input); - WPDResult error = WPDocument::parse(&gsfInput, static_cast(this)); + WPDResult error = WPDocument::parse(&gsfInput, static_cast(this), NULL); if (error != WPD_OK) { @@ -381,9 +365,9 @@ float marginLeft = 1.0f, marginRight = 1.0f; if (propList["fo:margin-left"]) - marginLeft = propList["fo:margin-left"]->getFloat(); + marginLeft = propList["fo:margin-left"]->getDouble(); if (propList["fo:margin-right"]) - marginRight = propList["fo:margin-right"]->getFloat(); + marginRight = propList["fo:margin-right"]->getDouble(); if (marginLeft != m_leftPageMargin || marginRight != m_rightPageMargin /* || */ /* marginTop != m_marginBottom || marginBottom != m_marginBottom */ ) @@ -456,15 +440,15 @@ float marginTop = 0.0f, marginBottom = 0.0f; float marginLeft = 0.0f, marginRight = 0.0f, textIndent = 0.0f; if (propList["fo:margin-top"]) - marginTop = propList["fo:margin-top"]->getFloat(); + marginTop = propList["fo:margin-top"]->getDouble(); if (propList["fo:margin-bottom"]) - marginBottom = propList["fo:margin-bottom"]->getFloat(); + marginBottom = propList["fo:margin-bottom"]->getDouble(); if (propList["fo:margin-left"]) - marginLeft = propList["fo:margin-left"]->getFloat(); + marginLeft = propList["fo:margin-left"]->getDouble(); if (propList["fo:margin-right"]) - marginRight = propList["fo:margin-right"]->getFloat(); + marginRight = propList["fo:margin-right"]->getDouble(); if (propList["fo:text-indent"]) - textIndent = propList["fo:text-indent"]->getFloat(); + textIndent = propList["fo:text-indent"]->getDouble(); m_topMargin = marginTop; m_bottomMargin = marginBottom; @@ -487,7 +471,7 @@ float lineSpacing = 1.0f; if (propList["fo:line-height"]) - lineSpacing = propList["fo:line-height"]->getFloat(); + lineSpacing = propList["fo:line-height"]->getDouble(); UT_String tmpBuffer; UT_String_sprintf(tmpBuffer, "; margin-top:%.4fin; margin-bottom:%.4fin; margin-left:%.4fin; margin-right:%.4fin; text-indent:%.4fin; line-height:%.4f", @@ -504,7 +488,7 @@ propBuffer += tmpBuffer; if (i()["style:position"]) { - UT_String_sprintf(tmpBuffer, "%.4fin", i()["style:position"]->getFloat()); + UT_String_sprintf(tmpBuffer, "%.4fin", i()["style:position"]->getDouble()); propBuffer += tmpBuffer; } @@ -520,10 +504,10 @@ else // Left aligned is default propBuffer += "/L"; - if (i()["style:leader-char"]) - if (i()["style:leader-char"]->getStr() == "-") + if (i()["style:leader-text"]) + if (i()["style:leader-text"]->getStr() == "-") propBuffer += "2"; - else if (i()["style:leader-char"]->getStr() == "_") + else if (i()["style:leader-text"]->getStr() == "_") propBuffer += "3"; else // default to dot leader if the given leader is dot or is not supported by AbiWord propBuffer += "1"; @@ -586,12 +570,12 @@ propBuffer += "subscript"; } - if (propList["style:text-underline"] || propList["style:text-crossing-out"]) + if (propList["style:text-underline-type"] || propList["style:text-line-through-type"]) { propBuffer += "; text-decoration:"; - if (propList["style:text-underline"]) + if (propList["style:text-underline-type"]) propBuffer += "underline "; - if (propList["style:text-crossing-out"]) + if (propList["style:text-line-through-type"]) propBuffer += "line-through"; } @@ -615,10 +599,10 @@ propBuffer += propList["fo:color"]->getStr().cstr(); } - if (propList["style:text-background-color"]) + if (propList["fo:background-color"]) { propBuffer += "; bgcolor:"; - propBuffer += propList["style:text-background-color"]->getStr().cstr(); + propBuffer += propList["fo:background-color"]->getStr().cstr(); } UT_DEBUGMSG(("AbiWordPerfect: Appending span format: %s\n", propBuffer.c_str())); @@ -639,10 +623,10 @@ int columnsCount = ((columns.count() == 0) ? 1 : columns.count()); // TODO: support spaceAfter - if (propList["fo:margin-left"]) - marginLeft = propList["fo:margin-left"]->getFloat(); - if (propList["fo:margin-right"]) - marginRight = propList["fo:margin-right"]->getFloat(); + if (propList["fo:start-indent"]) + marginLeft = propList["fo:start-indent"]->getDouble(); + if (propList["fo:end-indent"]) + marginRight = propList["fo:end-indent"]->getDouble(); if (marginLeft != m_leftSectionMargin || marginRight != m_rightSectionMargin || m_sectionColumnsCount != columnsCount) m_bSectionChanged = true; @@ -709,9 +693,9 @@ if (propList["style:num-format"]) listType = propList["style:num-format"]->getStr().cstr()[0]; if (propList["text:space-before"]) - listLeftOffset = propList["text:space-before"]->getFloat(); + listLeftOffset = propList["text:space-before"]->getDouble(); if (propList["text:min-label-width"]) - listMinLabelWidth = propList["text:min-label-width"]->getFloat(); + listMinLabelWidth = propList["text:min-label-width"]->getDouble(); if (!m_pCurrentListDefinition || m_pCurrentListDefinition->getOutlineHash() != listID || @@ -749,9 +733,9 @@ if (propList["libwpd:level"]) level = propList["libwpd:level"]->getInt(); if (propList["text:space-before"]) - listLeftOffset = propList["text:space-before"]->getFloat(); + listLeftOffset = propList["text:space-before"]->getDouble(); if (propList["text:min-label-width"]) - listMinLabelWidth = propList["text:min-label-width"]->getFloat(); + listMinLabelWidth = propList["text:min-label-width"]->getDouble(); if (!m_pCurrentListDefinition || m_pCurrentListDefinition->getOutlineHash() != listID) { @@ -871,10 +855,10 @@ UT_String_sprintf(tempBuffer, "margin-left:%.4fin; ", m_pCurrentListDefinition->getListLeftOffset(m_iCurrentListLevel) + m_pCurrentListDefinition->getListMinLabelWidth(m_iCurrentListLevel) - - (propList["fo:text-indent"] ? propList["fo:text-indent"]->getFloat() : 0.0f)); + - (propList["fo:text-indent"] ? propList["fo:text-indent"]->getDouble() : 0.0f)); propBuffer += tempBuffer; UT_String_sprintf(tempBuffer, "text-indent:%.4fin", - m_pCurrentListDefinition->getListMinLabelWidth(m_iCurrentListLevel) - + (propList["fo:text-indent"] ? propList["fo:text-indent"]->getFloat() : 0.0f)); + + (propList["fo:text-indent"] ? propList["fo:text-indent"]->getDouble() : 0.0f)); propBuffer += tempBuffer; listAttribs[attribsCount++] = PT_PROPS_ATTRIBUTE_NAME; @@ -1263,7 +1247,7 @@ virtual UT_Error _loadFile(GsfInput * input) { AbiWordperfectInputStream gsfInput(input); - WPSResult error = WPSDocument::parse(&gsfInput, static_cast(this)); + WPSResult error = WPSDocument::parse(&gsfInput, static_cast(this)); if (error != WPS_OK) { @@ -1302,18 +1286,12 @@ { AbiWordperfectInputStream gsfInput(input); - WPSConfidence confidence = WPSDocument::isFileFormatSupported(&gsfInput, true); + WPSConfidence confidence = WPSDocument::isFileFormatSupported(&gsfInput); switch (confidence) { case WPS_CONFIDENCE_NONE: return UT_CONFIDENCE_ZILCH; - case WPS_CONFIDENCE_POOR: - return UT_CONFIDENCE_POOR; - case WPS_CONFIDENCE_LIKELY: - return UT_CONFIDENCE_SOSO; - case WPS_CONFIDENCE_GOOD: - return UT_CONFIDENCE_GOOD; case WPS_CONFIDENCE_EXCELLENT: return UT_CONFIDENCE_PERFECT; default: diff -urN abiword-2.8.2/plugins/wordperfect/xp/ie_imp_WordPerfect.h abiword-2.8.2.new//plugins/wordperfect/xp/ie_imp_WordPerfect.h --- abiword-2.8.2/plugins/wordperfect/xp/ie_imp_WordPerfect.h 2009-06-19 10:55:49.000000000 +0200 +++ abiword-2.8.2.new//plugins/wordperfect/xp/ie_imp_WordPerfect.h 2010-12-18 12:02:29.184921950 +0100 @@ -30,13 +30,7 @@ #define IE_IMP_WP_H #include -#ifdef _WIN32 -#define POINT WPX_POINT -#endif #include -#ifdef _WIN32 -#undef POINT -#endif #include "ie_imp.h" #include "ut_string.h" #include "ut_string_class.h" @@ -98,7 +92,7 @@ IE_Imp ** ppie); }; -class IE_Imp_WordPerfect : public IE_Imp, public WPXHLListenerImpl +class IE_Imp_WordPerfect : public IE_Imp, public WPXDocumentInterface { public: IE_Imp_WordPerfect(PD_Document * pDocument); @@ -154,6 +148,21 @@ virtual void insertCoveredTableCell(const WPXPropertyList & /*propList*/) {} virtual void closeTable(); + virtual void definePageStyle(const WPXPropertyList&) {} + virtual void defineParagraphStyle(const WPXPropertyList&, const WPXPropertyListVector&) {} + virtual void defineCharacterStyle(const WPXPropertyList&) {} + virtual void defineSectionStyle(const WPXPropertyList&, const WPXPropertyListVector&) {} + virtual void insertSpace() {} + virtual void insertField(const WPXString&, const WPXPropertyList&) {} + virtual void openComment(const WPXPropertyList&) {} + virtual void closeComment() {} + virtual void openTextBox(const WPXPropertyList&) {} + virtual void closeTextBox() {} + virtual void openFrame(const WPXPropertyList&) {} + virtual void closeFrame() {} + virtual void insertBinaryObject(const WPXPropertyList&, const WPXBinaryData&) {} + virtual void insertEquation(const WPXPropertyList&, const WPXString&) {} + protected: virtual UT_Error _loadFile(GsfInput * input); diff -urN abiword-2.8.2/plugins/wpg/plugin.m4 abiword-2.8.2.new//plugins/wpg/plugin.m4 --- abiword-2.8.2/plugins/wpg/plugin.m4 2008-05-19 16:06:19.000000000 +0200 +++ abiword-2.8.2.new//plugins/wpg/plugin.m4 2010-12-18 12:02:29.188255745 +0100 @@ -1,5 +1,5 @@ -wpg_pkgs="$gsf_req libwpg-0.1 >= 0.1.0 libwpd-0.8 >= 0.8.0" +wpg_pkgs="$gsf_req libwpg-0.2 >= 0.2.0 libwpd-0.9 >= 0.9.0 libwpd-stream-0.9 >= 0.9.0" wpg_deps="no" if test "$enable_wpg" != ""; then diff -urN abiword-2.8.2/plugins/wpg/xp/ie_impGraphic_WPG.cpp abiword-2.8.2.new//plugins/wpg/xp/ie_impGraphic_WPG.cpp --- abiword-2.8.2/plugins/wpg/xp/ie_impGraphic_WPG.cpp 2008-08-15 23:52:32.000000000 +0200 +++ abiword-2.8.2.new//plugins/wpg/xp/ie_impGraphic_WPG.cpp 2010-12-18 12:02:29.188255745 +0100 @@ -31,11 +31,10 @@ #include #include #include -#include +#include #include "xap_Module.h" using libwpg::WPGraphics; -using libwpg::WPGString; ABI_PLUGIN_DECLARE("WPG") @@ -48,7 +47,7 @@ virtual bool isOLEStream(); virtual WPXInputStream * getDocumentOLEStream(); virtual WPXInputStream * getDocumentOLEStream(const char * name); - virtual const uint8_t *read(size_t numBytes, size_t &numBytesRead); + virtual const unsigned char *read(unsigned long numBytes, unsigned long &numBytesRead); virtual int seek(long offset, WPX_SEEK_TYPE seekType); virtual long tell(); virtual bool atEOS(); @@ -60,7 +59,7 @@ }; AbiWordPerfectGraphicsInputStream::AbiWordPerfectGraphicsInputStream(GsfInput *input) : - WPXInputStream(true), + WPXInputStream(), m_input(input), m_ole(NULL) { @@ -75,9 +74,9 @@ g_object_unref(G_OBJECT(m_input)); } -const uint8_t * AbiWordPerfectGraphicsInputStream::read(size_t numBytes, size_t &numBytesRead) +const unsigned char * AbiWordPerfectGraphicsInputStream::read(unsigned long numBytes, unsigned long &numBytesRead) { - const uint8_t *buf = gsf_input_read(m_input, numBytes, NULL); + const unsigned char *buf = gsf_input_read(m_input, numBytes, NULL); if (buf == NULL) numBytesRead = 0; @@ -245,10 +244,10 @@ UT_Error IE_Imp_WordPerfectGraphics::importGraphic(GsfInput *input, FG_Graphic **ppfg) { AbiWordPerfectGraphicsInputStream gsfInput(input); - WPGString svgOutput; + WPXString svgOutput; if (WPGraphics::generateSVG(&gsfInput, svgOutput)) { - GsfInput * svgInput = gsf_input_memory_new((const guint8*)svgOutput.cstr(), svgOutput.length(), false); + GsfInput * svgInput = gsf_input_memory_new((const guint8*)svgOutput.cstr(), svgOutput.len(), false); UT_Error result = IE_ImpGraphic::loadGraphic(svgInput, IE_ImpGraphic::fileTypeForSuffix(".svg"), ppfg); g_object_unref(svgInput); return result;