File libwpg020.diff of Package koffice2

diff -Nur koffice-2.3.1/filters/karbon/wpg/import/CMakeLists.txt koffice-2.3.1-libwpg02/filters/karbon/wpg/import/CMakeLists.txt
--- koffice-2.3.1/filters/karbon/wpg/import/CMakeLists.txt	2011-01-15 21:05:35.000000000 +0100
+++ koffice-2.3.1-libwpg02/filters/karbon/wpg/import/CMakeLists.txt	2011-01-18 07:40:25.000000000 +0100
@@ -1,16 +1,11 @@
 
-
 include_directories(${CMAKE_BINARY_DIR}/filters/ ${WPD_INCLUDE_DIR} ${LIBWPG_INCLUDE_DIR}/)
 
-set(wpgimport_PART_SRCS 
-WPGImport.cpp 
-OdgExporter.cxx
-FileOutputHandler.cxx
-GraphicsElement.cxx)
+set(wpgimport_PART_SRCS WPGImport.cpp)
 
 kde4_add_plugin(wpgimport ${wpgimport_PART_SRCS})
 
-target_link_libraries(wpgimport komain ${LIBWPG_LIBRARIES} ${LIBWPG_STREAM_LIBRARIES})
+target_link_libraries(wpgimport komain ${LIBWPG_LIBRARIES} ${LIBWPG_STREAM_LIBRARIES} ${WPD_LIBRARIES})
 
 install(TARGETS wpgimport DESTINATION ${PLUGIN_INSTALL_DIR})
 install(FILES karbon_wpg_import.desktop DESTINATION ${SERVICES_INSTALL_DIR})
diff -Nur koffice-2.3.1/filters/karbon/wpg/import/FileOutputHandler.cxx koffice-2.3.1-libwpg02/filters/karbon/wpg/import/FileOutputHandler.cxx
--- koffice-2.3.1/filters/karbon/wpg/import/FileOutputHandler.cxx	2011-01-15 21:05:35.000000000 +0100
+++ koffice-2.3.1-libwpg02/filters/karbon/wpg/import/FileOutputHandler.cxx	1970-01-01 01:00:00.000000000 +0100
@@ -1,95 +0,0 @@
-/* libwpg
- * Copyright (C) 2006 Fridrich Strba (fridrich.strba@bluewin.ch)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the 
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 
- * Boston, MA  02111-1301 USA
- *
- * For further information visit http://libwpg.sourceforge.net
- */
-
-/* "This product is not manufactured, approved, or supported by
- * Corel Corporation or Corel Corporation Limited."
- */
-
-#include "FileOutputHandler.hxx"
-
-FileOutputHandler::FileOutputHandler(std::ostringstream &contentStream) :
-	mbIsTagOpened(false),
-	mContentStream(contentStream)
-{
-}
-
-void FileOutputHandler::startDocument()
-{
-}
-
-void FileOutputHandler::startElement(const char *psName, const std::vector<std::pair<std::string, std::string> > &xPropList)
-{
-	if (mbIsTagOpened)
-	{
-		mContentStream << ">";
-		mbIsTagOpened = false;
-	}
-	mContentStream << "<" << psName;
-
-	for (std::vector<std::pair<std::string, std::string> >::const_iterator i = xPropList.begin(); i != xPropList.end(); i++)
-	{
-		mContentStream << " " <<  (*i).first.c_str() << "=\"" << (*i).second.c_str() << "\"";
-	}
-	mbIsTagOpened = true;
-	msOpenedTagName = psName;
-}
-
-void FileOutputHandler::endElement(const char *psName)
-{
-	if (mbIsTagOpened)
-	{
-		if( msOpenedTagName == psName )
-		{
-			mContentStream << "/>";
-			mbIsTagOpened = false;
-		}
-		else // should not happen, but handle it
-		{
-			mContentStream << ">";
-			mContentStream << "</" << psName << ">";
-			mbIsTagOpened = false;
-		}
-	}
-	else
-	{
-		mContentStream << "</" << psName << ">";
-		mbIsTagOpened = false;
-	}
-}
-
-void FileOutputHandler::characters(const std::string &sCharacters)
-{
-	if (mbIsTagOpened)
-	{
-		mContentStream << ">";
-		mbIsTagOpened = false;
-	}
-	mContentStream << sCharacters.c_str();
-}
-
-void FileOutputHandler::endDocument()
-{
-	if (mbIsTagOpened)
-	{
-		mContentStream << ">";
-		mbIsTagOpened = false;
-	}
-}
diff -Nur koffice-2.3.1/filters/karbon/wpg/import/FileOutputHandler.hxx koffice-2.3.1-libwpg02/filters/karbon/wpg/import/FileOutputHandler.hxx
--- koffice-2.3.1/filters/karbon/wpg/import/FileOutputHandler.hxx	2011-01-15 21:05:35.000000000 +0100
+++ koffice-2.3.1-libwpg02/filters/karbon/wpg/import/FileOutputHandler.hxx	1970-01-01 01:00:00.000000000 +0100
@@ -1,49 +0,0 @@
-/* libwpg
- * Copyright (C) 2006 Fridrich Strba (fridrich.strba@bluewin.ch)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the 
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 
- * Boston, MA  02111-1301 USA
- *
- * For further information visit http://libwpg.sourceforge.net
- */
-
-/* "This product is not manufactured, approved, or supported by
- * Corel Corporation or Corel Corporation Limited."
- */
-
-#ifndef FILEOUTPUTHANDLER_H
-#define FILEOUTPUTHANDLER_H
-
-#include <iostream>
-#include <sstream>
-#include <string>
-#include "GraphicsHandler.hxx"
-
-class FileOutputHandler : public GraphicsHandler
-{
-  public:
-        explicit FileOutputHandler(std::ostringstream &contentStream);
-        virtual void startDocument();
-        virtual void endDocument();
-        virtual void startElement(const char *psName, const std::vector<std::pair<std::string, std::string> > &xPropList);
-        virtual void endElement(const char *psName);
-        virtual void characters(const std::string &sCharacters);
-
-  private:
-	bool mbIsTagOpened;
-	std::string msOpenedTagName;
-	std::ostringstream &mContentStream;
-};
-#endif
diff -Nur koffice-2.3.1/filters/karbon/wpg/import/GraphicsElement.cxx koffice-2.3.1-libwpg02/filters/karbon/wpg/import/GraphicsElement.cxx
--- koffice-2.3.1/filters/karbon/wpg/import/GraphicsElement.cxx	2011-01-15 21:05:35.000000000 +0100
+++ koffice-2.3.1-libwpg02/filters/karbon/wpg/import/GraphicsElement.cxx	1970-01-01 01:00:00.000000000 +0100
@@ -1,66 +0,0 @@
-/* GraphicsElement: The items we are collecting to be put into the Writer
- * document: paragraph and spans of text, as well as section breaks.
- *
- * Copyright (C) 2002-2003 William Lachance (william.lachance@sympatico.ca)
- * 
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the 
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 
- * Boston, MA  02111-1301 USA
- *
- * For further information visit http://libwpg.sourceforge.net
- *
- */
-
-/* "This product is not manufactured, approved, or supported by 
- * Corel Corporation or Corel Corporation Limited."
- */
-
-#include "GraphicsElement.hxx"
-#include "GraphicsHandler.hxx"
-#include <string.h>
-
-#define ASCII_SPACE 0x0020
-
-void TagGraphicsElement::print() const
-{
-}
-
-void OpenTagGraphicsElement::write(GraphicsHandler *pHandler) const
-{
-	pHandler->startElement(getTagName().c_str(), maAttrList);
-}
-
-void OpenTagGraphicsElement::print() const
-{ 
-	TagGraphicsElement::print(); 	
-}
-
-void OpenTagGraphicsElement::addAttribute(const std::string &szAttributeName, const std::string &sAttributeValue)
-{
-	std::pair<std::string, std::string> tmpAttribute;
-	tmpAttribute.first = szAttributeName;
-	tmpAttribute.second = sAttributeValue;
-        maAttrList.push_back(tmpAttribute);
-}
-
-void CloseTagGraphicsElement::write(GraphicsHandler *pHandler) const
-{
-
-	pHandler->endElement(getTagName().c_str());
-}
-
-void CharDataGraphicsElement::write(GraphicsHandler *pHandler) const
-{
-	pHandler->characters(msData);
-}
diff -Nur koffice-2.3.1/filters/karbon/wpg/import/GraphicsElement.hxx koffice-2.3.1-libwpg02/filters/karbon/wpg/import/GraphicsElement.hxx
--- koffice-2.3.1/filters/karbon/wpg/import/GraphicsElement.hxx	2011-01-15 21:05:35.000000000 +0100
+++ koffice-2.3.1-libwpg02/filters/karbon/wpg/import/GraphicsElement.hxx	1970-01-01 01:00:00.000000000 +0100
@@ -1,84 +0,0 @@
-/* GraphicsElement: The items we are collecting to be put into the Writer
- * document: paragraph and spans of text, as well as section breaks.
- *
- * Copyright (C) 2002-2003 William Lachance (william.lachance@sympatico.ca)
- * 
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the 
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 
- * Boston, MA  02111-1301 USA
- *
- * For further information visit http://libwpd.sourceforge.net
- *
- */
-
-/* "This product is not manufactured, approved, or supported by 
- * Corel Corporation or Corel Corporation Limited."
- */
-
-#ifndef _GRAPHICSELEMENT_H
-#define _GRAPHICSELEMENT_H
-#include <string>
-#include <map>
-#include <vector>
-
-#include "GraphicsHandler.hxx"
-
-class GraphicsElement
-{
-public:	
-	virtual ~GraphicsElement() {}
-	virtual void write(GraphicsHandler *pHandler) const = 0;
-	virtual void print() const {}
-};
-
-class TagGraphicsElement : public GraphicsElement
-{
-public:
-	explicit TagGraphicsElement(const char *szTagName) : msTagName(szTagName) {}
-	const std::string &getTagName() const { return msTagName; }
-	virtual void print() const;
-private:
-	const std::string msTagName;
-};
-
-class OpenTagGraphicsElement : public TagGraphicsElement
-{
-public:
-	explicit OpenTagGraphicsElement(const char *szTagName) : TagGraphicsElement(szTagName) {}
-	~OpenTagGraphicsElement() {}
-	void addAttribute(const std::string &szAttributeName, const std::string &sAttributeValue);
-	virtual void write(GraphicsHandler *pHandler) const;
-	virtual void print () const;
-private:
-	std::vector<std::pair<std::string, std::string> > maAttrList;
-};
-
-class CloseTagGraphicsElement : public TagGraphicsElement
-{
-public:
-	explicit CloseTagGraphicsElement(const char *szTagName) : TagGraphicsElement(szTagName) {}
-	virtual void write(GraphicsHandler *pHandler) const;
-};
-
-class CharDataGraphicsElement : public GraphicsElement
-{
-public:
-	CharDataGraphicsElement(const char *sData) : GraphicsElement(), msData(sData) {}
-	virtual void write(GraphicsHandler *pHandler) const;
-private:
-	std::string msData;
-};
-
-
-#endif
diff -Nur koffice-2.3.1/filters/karbon/wpg/import/GraphicsHandler.hxx koffice-2.3.1-libwpg02/filters/karbon/wpg/import/GraphicsHandler.hxx
--- koffice-2.3.1/filters/karbon/wpg/import/GraphicsHandler.hxx	2011-01-15 21:05:35.000000000 +0100
+++ koffice-2.3.1-libwpg02/filters/karbon/wpg/import/GraphicsHandler.hxx	1970-01-01 01:00:00.000000000 +0100
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2004 William Lachance (wlach@interlog.com)
- * Copyright (C) 2004 Net Integration Technologies (http://www.net-itech.com)
- *
- * 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 Library General Public
- * License along with this library; if not, write to the 
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 
- * Boston, MA  02111-1301 USA
- *
- *  Contributor(s): Martin Gallwey (gallwey@sun.com)
- *
- */
-
-/* "This product is not manufactured, approved, or supported by
- * Corel Corporation or Corel Corporation Limited."
- */
-#ifndef _GRAPHICSHANDLER_H
-#define _GRAPHICSHANDLER_H
-#include <string>
-#include <map>
-#include <vector>
-
-class GraphicsHandler
-{
-public:
-	virtual ~GraphicsHandler() {}
-        virtual void startDocument() = 0;
-        virtual void endDocument() = 0;
-        virtual void startElement(const char *psName, const std::vector< std::pair <std::string, std::string> > &xPropList) = 0;
-        virtual void endElement(const char *psName) = 0;
-        virtual void characters(const std::string &sCharacters) = 0;
-};
-#endif
diff -Nur koffice-2.3.1/filters/karbon/wpg/import/karbon_wpg_import.desktop koffice-2.3.1-libwpg02/filters/karbon/wpg/import/karbon_wpg_import.desktop
--- koffice-2.3.1/filters/karbon/wpg/import/karbon_wpg_import.desktop	2011-01-15 21:05:35.000000000 +0100
+++ koffice-2.3.1-libwpg02/filters/karbon/wpg/import/karbon_wpg_import.desktop	2011-01-18 07:41:33.000000000 +0100
@@ -42,7 +42,7 @@
 Name[x-test]=xxKarbon WPG Import Filterxx
 Name[zh_CN]=Karbon WPG 导入过滤器
 Name[zh_TW]=Karbon WPG 匯入過濾程式
-X-KDE-Export=application/vnd.oasis.opendocument.graphics
+X-KDE-Export=image/svg+xml
 X-KDE-Import=application/x-wpg
 X-KDE-Weight=1
 X-KDE-Library=wpgimport
diff -Nur koffice-2.3.1/filters/karbon/wpg/import/OdgExporter.cxx koffice-2.3.1-libwpg02/filters/karbon/wpg/import/OdgExporter.cxx
--- koffice-2.3.1/filters/karbon/wpg/import/OdgExporter.cxx	2011-01-15 21:05:35.000000000 +0100
+++ koffice-2.3.1-libwpg02/filters/karbon/wpg/import/OdgExporter.cxx	1970-01-01 01:00:00.000000000 +0100
@@ -1,662 +0,0 @@
-/* libwpg
- * Copyright (C) 2006 Ariya Hidayat (ariya@kde.org)
- * Copyright (C) 2006 Fridrich Strba (fridrich.strba@bluewin.ch)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA  02111-1301 USA
- *
- * For further information visit http://libwpg.sourceforge.net
- */
-
-/* "This product is not manufactured, approved, or supported by
- * Corel Corporation or Corel Corporation Limited."
- */
-
-#include "OdgExporter.hxx"
-#include "GraphicsElement.hxx"
-#include "GraphicsHandler.hxx"
-#include <locale.h>
-
-static std::string doubleToString(const double value)
-{
-  std::ostringstream tempStream;
-  tempStream << value;
-  std::string decimalPoint(localeconv()->decimal_point);
-  if ((decimalPoint.size() == 0) || (decimalPoint == "."))
-    return tempStream.str();
-  std::string stringValue(tempStream.str());
-  if (!stringValue.empty())
-  {
-    std::string::size_type pos;
-    while ((pos = stringValue.find(decimalPoint)) != std::string::npos)
-          stringValue.replace(pos,decimalPoint.size(),".");
-  }
-  return stringValue;
-}
-
-
-OdgExporter::OdgExporter(GraphicsHandler *pHandler, const bool isFlatXML):
-        mpHandler(pHandler),
-        m_fillRule(AlternatingFill),
-        m_gradientIndex(1),
-        m_dashIndex(1),
-        m_styleIndex(1),
-        m_width(0.0f),
-        m_height(0.0f),
-        m_isFlatXML(isFlatXML)
-{
-}
-
-OdgExporter::~OdgExporter()
-{
-        for (std::vector <GraphicsElement *>::iterator iterStroke = mStrokeDashElements.begin();
-                iterStroke != mStrokeDashElements.end(); iterStroke++)
-                delete (*iterStroke);
-
-        for (std::vector <GraphicsElement *>::iterator iterGradient = mGradientElements.begin();
-                iterGradient != mGradientElements.end(); iterGradient++)
-                delete (*iterGradient);
-
-        for (std::vector <GraphicsElement *>::iterator iterAutomaticStyles = mAutomaticStylesElements.begin();
-                iterAutomaticStyles != mAutomaticStylesElements.end(); iterAutomaticStyles++)
-                delete (*iterAutomaticStyles);
-
-        for (std::vector<GraphicsElement *>::iterator bodyIter = mBodyElements.begin();
-                bodyIter != mBodyElements.end(); bodyIter++)
-                delete (*bodyIter);
-}
-
-void OdgExporter::startGraphics(double width, double height)
-{
-        m_gradientIndex = 1;
-        m_dashIndex = 1;
-        m_styleIndex = 1;
-        m_width = width;
-        m_height = height;
-
-
-        mpHandler->startDocument();
-        OpenTagGraphicsElement tmpOfficeDocumentContent("office:document");
-        tmpOfficeDocumentContent.addAttribute("xmlns:office", "urn:oasis:names:tc:opendocument:xmlns:office:1.0");
-        tmpOfficeDocumentContent.addAttribute("xmlns:style", "urn:oasis:names:tc:opendocument:xmlns:style:1.0");
-        tmpOfficeDocumentContent.addAttribute("xmlns:text", "urn:oasis:names:tc:opendocument:xmlns:text:1.0");
-        tmpOfficeDocumentContent.addAttribute("xmlns:draw", "urn:oasis:names:tc:opendocument:xmlns:drawing:1.0");
-        tmpOfficeDocumentContent.addAttribute("xmlns:dc", "http://purl.org/dc/elements/1.1/");
-        tmpOfficeDocumentContent.addAttribute("xmlns:svg", "urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0");
-        tmpOfficeDocumentContent.addAttribute("xmlns:fo", "urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0");
-        tmpOfficeDocumentContent.addAttribute("xmlns:config", "urn:oasis:names:tc:opendocument:xmlns:config:1.0");
-        tmpOfficeDocumentContent.addAttribute("xmlns:ooo", "http://openoffice.org/2004/office");
-        tmpOfficeDocumentContent.addAttribute("office:version", "1.0");
-        if (m_isFlatXML)
-                        tmpOfficeDocumentContent.addAttribute("office:mimetype", "application/x-vnd.oasis.openoffice.drawing");
-        tmpOfficeDocumentContent.write(mpHandler);
-
-        OpenTagGraphicsElement("office:settings").write(mpHandler);
-
-        OpenTagGraphicsElement configItemSetOpenElement("config:config-item-set");
-        configItemSetOpenElement.addAttribute("config:name", "ooo:view-settings");
-        configItemSetOpenElement.write(mpHandler);
-
-        OpenTagGraphicsElement configItemOpenElement1("config:config-item");
-        configItemOpenElement1.addAttribute("config:name", "VisibleAreaTop");
-        configItemOpenElement1.addAttribute("config:type", "int");
-        configItemOpenElement1.write(mpHandler);
-        mpHandler->characters("0");
-        mpHandler->endElement("config:config-item");
-
-        OpenTagGraphicsElement configItemOpenElement2("config:config-item");
-        configItemOpenElement2.addAttribute("config:name", "VisibleAreaLeft");
-        configItemOpenElement2.addAttribute("config:type", "int");
-        configItemOpenElement2.write(mpHandler);
-        mpHandler->characters("0");
-        mpHandler->endElement("config:config-item");
-
-        OpenTagGraphicsElement configItemOpenElement3("config:config-item");
-        configItemOpenElement3.addAttribute("config:name", "VisibleAreaWidth");
-        configItemOpenElement3.addAttribute("config:type", "int");
-        configItemOpenElement3.write(mpHandler);
-        m_value.str("");
-        m_value << (unsigned)(2540 * width);
-        mpHandler->characters(m_value.str());
-        mpHandler->endElement("config:config-item");
-
-        OpenTagGraphicsElement configItemOpenElement4("config:config-item");
-        configItemOpenElement4.addAttribute("config:name", "VisibleAreaHeight");
-        configItemOpenElement4.addAttribute("config:type", "int");
-        configItemOpenElement4.write(mpHandler);
-        m_value.str("");
-        m_value << (unsigned)(2540 * height);
-        mpHandler->characters(m_value.str());
-        mpHandler->endElement("config:config-item");
-
-        mpHandler->endElement("config:config-item-set");
-
-        mpHandler->endElement("office:settings");
-
-}
-
-void OdgExporter::endGraphics()
-{
-        OpenTagGraphicsElement("office:styles").write(mpHandler);
-
-        for (std::vector <GraphicsElement *>::const_iterator iterStroke = mStrokeDashElements.begin();
-                iterStroke != mStrokeDashElements.end(); iterStroke++)
-                (*iterStroke)->write(mpHandler);
-
-        for (std::vector <GraphicsElement *>::const_iterator iterGradient = mGradientElements.begin();
-                iterGradient != mGradientElements.end(); iterGradient++)
-                (*iterGradient)->write(mpHandler);
-
-        mpHandler->endElement("office:styles");
-
-        OpenTagGraphicsElement("office:automatic-styles").write(mpHandler);
-
-        for (std::vector <GraphicsElement *>::const_iterator iterAutomaticStyles = mAutomaticStylesElements.begin();
-                iterAutomaticStyles != mAutomaticStylesElements.end(); iterAutomaticStyles++)
-                (*iterAutomaticStyles)->write(mpHandler);
-
-        OpenTagGraphicsElement tmpStylePageLayoutOpenElement("style:page-layout");
-        tmpStylePageLayoutOpenElement.addAttribute("style:name", "PM0");
-        tmpStylePageLayoutOpenElement.write(mpHandler);
-
-        OpenTagGraphicsElement tmpStylePageLayoutPropertiesOpenElement("style:page-layout-properties");
-        tmpStylePageLayoutPropertiesOpenElement.addAttribute("fo:margin-top", "0in");
-        tmpStylePageLayoutPropertiesOpenElement.addAttribute("fo:margin-bottom", "0in");
-        tmpStylePageLayoutPropertiesOpenElement.addAttribute("fo:margin-left", "0in");
-        tmpStylePageLayoutPropertiesOpenElement.addAttribute("fo:margin-right", "0in");
-        m_value.str("");
-        m_value <<  doubleToString(m_width) << "in";
-        tmpStylePageLayoutPropertiesOpenElement.addAttribute("fo:page-width", m_value.str());
-        m_value.str("");
-        m_value << doubleToString(m_height)  << "in";
-        tmpStylePageLayoutPropertiesOpenElement.addAttribute("fo:page-height", m_value.str());
-        m_value.str("");
-        tmpStylePageLayoutPropertiesOpenElement.addAttribute("style:print-orientation", "portrait");
-        tmpStylePageLayoutPropertiesOpenElement.write(mpHandler);
-
-        mpHandler->endElement("style:page-layout-properties");
-
-        mpHandler->endElement("style:page-layout");
-
-        OpenTagGraphicsElement tmpStyleStyleOpenElement("style:style");
-        tmpStyleStyleOpenElement.addAttribute("style:name", "dp1");
-        tmpStyleStyleOpenElement.addAttribute("style:family", "drawing-page");
-        tmpStyleStyleOpenElement.write(mpHandler);
-
-        OpenTagGraphicsElement tmpStyleDrawingPagePropertiesOpenElement("style:drawing-page-properties");
-        // tmpStyleDrawingPagePropertiesOpenElement.addAttribute("draw:background-size", "border");
-        tmpStyleDrawingPagePropertiesOpenElement.addAttribute("draw:fill", "none");
-        tmpStyleDrawingPagePropertiesOpenElement.write(mpHandler);
-
-        mpHandler->endElement("style:drawing-page-properties");
-
-        mpHandler->endElement("style:style");
-
-        mpHandler->endElement("office:automatic-styles");
-
-        OpenTagGraphicsElement("office:master-styles").write(mpHandler);
-
-        OpenTagGraphicsElement tmpStyleMasterPageOpenElement("style:master-page");
-        tmpStyleMasterPageOpenElement.addAttribute("style:name", "Default");
-        tmpStyleMasterPageOpenElement.addAttribute("style:page-layout-name", "PM0");
-        tmpStyleMasterPageOpenElement.addAttribute("draw:style-name", "dp1");
-        tmpStyleMasterPageOpenElement.write(mpHandler);
-
-        mpHandler->endElement("style:master-page");
-
-        mpHandler->endElement("office:master-styles");
-
-        OpenTagGraphicsElement("office:body").write(mpHandler);
-
-        OpenTagGraphicsElement("office:drawing").write(mpHandler);
-
-        OpenTagGraphicsElement tmpDrawPageOpenElement("draw:page");
-        tmpDrawPageOpenElement.addAttribute("draw:name", "page1");
-        tmpDrawPageOpenElement.addAttribute("draw:style-name", "dp1");
-        tmpDrawPageOpenElement.addAttribute("draw:master-page-name", "Default");
-        tmpDrawPageOpenElement.write(mpHandler);
-
-        for (std::vector<GraphicsElement *>::const_iterator bodyIter = mBodyElements.begin();
-                bodyIter != mBodyElements.end(); bodyIter++)
-        {
-                (*bodyIter)->write(mpHandler);
-        }
-
-        mpHandler->endElement("draw:page");
-        mpHandler->endElement("office:drawing");
-        mpHandler->endElement("office:body");
-        mpHandler->endElement("office:document");
-
-        mpHandler->endDocument();
-}
-
-void OdgExporter::setPen(const libwpg::WPGPen& pen)
-{
-        m_pen = pen;
-}
-
-void OdgExporter::setBrush(const libwpg::WPGBrush& brush)
-{
-        m_brush = brush;
-}
-
-void OdgExporter::setFillRule(FillRule rule)
-{
-        m_fillRule = rule;
-}
-
-void OdgExporter::startLayer(unsigned int)
-{
-}
-
-void OdgExporter::endLayer(unsigned int)
-{
-}
-
-void OdgExporter::drawRectangle(const libwpg::WPGRect& rect, double rx, double )
-{
-        writeStyle();
-        OpenTagGraphicsElement *pDrawRectElement = new OpenTagGraphicsElement("draw:rect");
-        m_value.str("");
-        m_value << "gr" << m_styleIndex-1;
-        pDrawRectElement->addAttribute("draw:style-name", m_value.str());
-        m_value.str("");
-        m_value << doubleToString(rect.x1) << "in";
-        pDrawRectElement->addAttribute("svg:x", m_value.str());
-        m_value.str("");
-        m_value << doubleToString(rect.y1) << "in";
-        pDrawRectElement->addAttribute("svg:y", m_value.str());
-        m_value.str("");
-        m_value << doubleToString(rect.x2-rect.x1) << "in";
-        pDrawRectElement->addAttribute("svg:width", m_value.str());
-        m_value.str("");
-        m_value << doubleToString(rect.y2-rect.y1) << "in";
-        pDrawRectElement->addAttribute("svg:height", m_value.str());
-        m_value.str("");
-        m_value << doubleToString(rx) << "in";
-        // FIXME: what to do when rx != ry ?
-        pDrawRectElement->addAttribute("draw:corner-radius", m_value.str());
-        m_value.str("");
-        mBodyElements.push_back(static_cast<GraphicsElement *>(pDrawRectElement));
-        mBodyElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("draw:rect")));
-}
-
-void OdgExporter::drawEllipse(const libwpg::WPGPoint& center, double rx, double ry)
-{
-        writeStyle();
-        OpenTagGraphicsElement *pDrawEllipseElement = new OpenTagGraphicsElement("draw:ellipse");
-        m_value.str("");
-        m_value << "gr" << m_styleIndex-1;
-        pDrawEllipseElement->addAttribute("draw:style-name", m_value.str());
-        m_value.str("");
-        m_value << doubleToString(center.x - rx) << "in";
-        pDrawEllipseElement->addAttribute("svg:x", m_value.str());
-        m_value.str("");
-        m_value << doubleToString(center.y - ry) << "in";
-        pDrawEllipseElement->addAttribute("svg:y", m_value.str());
-        m_value.str("");
-        m_value << doubleToString(2 * rx) << "in";
-        pDrawEllipseElement->addAttribute("svg:width", m_value.str());
-        m_value.str("");
-        m_value << doubleToString(2 * ry) << "in";
-        pDrawEllipseElement->addAttribute("svg:height", m_value.str());
-        m_value.str("");
-        mBodyElements.push_back(static_cast<GraphicsElement *>(pDrawEllipseElement));
-        mBodyElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("draw:ellipse")));
-}
-
-void OdgExporter::drawPolygon(const libwpg::WPGPointArray& vertices)
-{
-        if(vertices.count() < 2)
-                return;
-
-        if(vertices.count() == 2)
-        {
-                const libwpg::WPGPoint& p1 = vertices[0];
-                const libwpg::WPGPoint& p2 = vertices[1];
-
-                writeStyle();
-                OpenTagGraphicsElement *pDrawLineElement = new OpenTagGraphicsElement("draw:line");
-                m_value.str("");
-                m_value << "gr" << m_styleIndex-1;
-                pDrawLineElement->addAttribute("draw:style-name", m_value.str());
-                m_value.str("");
-                pDrawLineElement->addAttribute("draw:text-style-name", "P1");
-                pDrawLineElement->addAttribute("draw:layer", "layout");
-                m_value << doubleToString(p1.x)  << "in";
-                pDrawLineElement->addAttribute("svg:x1", m_value.str());
-                m_value.str("");
-                m_value << doubleToString(p1.y)  << "in";
-                pDrawLineElement->addAttribute("svg:y1", m_value.str());
-                m_value.str("");
-                m_value  << doubleToString(p2.x)  << "in";
-                pDrawLineElement->addAttribute("svg:x2", m_value.str());
-                m_value.str("");
-                m_value << doubleToString(p2.y)  << "in";
-                pDrawLineElement->addAttribute("svg:y2", m_value.str());
-                m_value.str("");
-                mBodyElements.push_back(static_cast<GraphicsElement *>(pDrawLineElement));
-                mBodyElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("draw:line")));
-        }
-        else
-        {
-                // draw as path
-                libwpg::WPGPath path;
-                path.moveTo(vertices[0]);
-                for(unsigned long ii = 1; ii < vertices.count(); ii++)
-                        path.lineTo(vertices[ii]);
-                path.closed = true;
-                drawPath(path);
-        }
-}
-
-void OdgExporter::drawPath(const libwpg::WPGPath& path)
-{
-        if(path.count() == 0)
-                return;
-
-        // try to find the bounding box
-        // this is simple convex hull technique, the bounding box might not be
-        // accurate but that should be enough for this purpose
-        libwpg::WPGPoint p = path.element(0).point;
-        libwpg::WPGPoint q = path.element(0).point;
-        for(unsigned k = 0; k < path.count(); k++)
-        {
-                libwpg::WPGPathElement element = path.element(k);
-                p.x = (p.x > element.point.x) ? element.point.x : p.x;
-                p.y = (p.y > element.point.y) ? element.point.y : p.y;
-                q.x = (q.x < element.point.x) ? element.point.x : q.x;
-                q.y = (q.y < element.point.y) ? element.point.y : q.y;
-                if(element.type == libwpg::WPGPathElement::CurveToElement)
-                {
-                        p.x = (p.x > element.extra1.x) ? element.extra1.x : p.x;
-                        p.y = (p.y > element.extra1.y) ? element.extra1.y : p.y;
-                        q.x = (q.x < element.extra1.x) ? element.extra1.x : q.x;
-                        q.y = (q.y < element.extra1.y) ? element.extra1.y : q.y;
-                        p.x = (p.x > element.extra2.x) ? element.extra2.x : p.x;
-                        p.y = (p.y > element.extra2.y) ? element.extra2.y : p.y;
-                        q.x = (q.x < element.extra2.x) ? element.extra2.x : q.x;
-                        q.y = (q.y < element.extra2.y) ? element.extra2.y : q.y;
-                }
-        }
-        double vw = q.x - p.x;
-        double vh = q.y - p.y;
-
-        writeStyle();
-
-        OpenTagGraphicsElement *pDrawPathElement = new OpenTagGraphicsElement("draw:path");
-        m_value.str("");
-        m_value << "gr" << m_styleIndex-1;
-        pDrawPathElement->addAttribute("draw:style-name", m_value.str());
-        m_value.str("");
-        pDrawPathElement->addAttribute("draw:text-style-name", "P1");
-        pDrawPathElement->addAttribute("draw:layer", "layout");
-        m_value << doubleToString(p.x)  << "in";
-        pDrawPathElement->addAttribute("svg:x", m_value.str());
-        m_value.str("");
-        m_value << doubleToString(p.y)  << "in";
-        pDrawPathElement->addAttribute("svg:y", m_value.str());
-        m_value.str("");
-        m_value << doubleToString(vw) << "in";
-        pDrawPathElement->addAttribute("svg:width", m_value.str());
-        m_value.str("");
-        m_value << doubleToString(vh) << "in";
-        pDrawPathElement->addAttribute("svg:height", m_value.str());
-        m_value.str("");
-        m_value << "0 0 " << (int)(vw*2540) << " " << (int)(vh*2540);
-        pDrawPathElement->addAttribute("svg:viewBox", m_value.str());
-        m_value.str("");
-
-        for(unsigned i = 0; i < path.count(); i++)
-        {
-                libwpg::WPGPathElement element = path.element(i);
-                libwpg::WPGPoint point = element.point;
-                switch(element.type)
-                {
-                        // 2540 is 2.54*1000, 2.54 in = 1 in
-                        case libwpg::WPGPathElement::MoveToElement:
-                                m_value << "M" << (int)((point.x-p.x)*2540) << " ";
-                                m_value << (int)((point.y-p.y)*2540);
-                                break;
-
-                        case libwpg::WPGPathElement::LineToElement:
-                                m_value << "L" << (int)((point.x-p.x)*2540) << " ";
-                                m_value << (int)((point.y-p.y)*2540);
-                                break;
-
-                        case libwpg::WPGPathElement::CurveToElement:
-                                m_value << "C" << (int)((element.extra1.x-p.x)*2540) << " ";
-                                m_value << (int)((element.extra1.y-p.y)*2540) << " ";
-                                m_value << (int)((element.extra2.x-p.x)*2540) << " ";
-                                m_value << (int)((element.extra2.y-p.y)*2540) << " ";
-                                m_value << (int)((point.x-p.x)*2540) << " ";
-                                m_value << (int)((point.y-p.y)*2540);
-                                break;
-
-                        default:
-                                break;
-                }
-        }
-        if(path.closed)
-                m_value << " Z";
-        pDrawPathElement->addAttribute("svg:d", m_value.str());
-        m_value.str("");
-        mBodyElements.push_back(static_cast<GraphicsElement *>(pDrawPathElement));
-        mBodyElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("draw:path")));
-}
-
-
-void OdgExporter::drawBitmap(const libwpg::WPGBitmap& bitmap)
-{
-        OpenTagGraphicsElement *pDrawFrameElement = new OpenTagGraphicsElement("draw:frame");
-        m_value.str("");
-        m_value << doubleToString(bitmap.rect.x1) << "in";
-        pDrawFrameElement->addAttribute("svg:x", m_value.str());
-        m_value.str("");
-        m_value << doubleToString(bitmap.rect.y1) << "in";
-        pDrawFrameElement->addAttribute("svg:y", m_value.str());
-        m_value.str("");
-        m_value << doubleToString(bitmap.rect.height()) << "in";
-        pDrawFrameElement->addAttribute("svg:height", m_value.str());
-        m_value.str("");
-        m_value << doubleToString(bitmap.rect.width()) << "in";
-        pDrawFrameElement->addAttribute("svg:width", m_value.str());
-        mBodyElements.push_back(static_cast<GraphicsElement *>(pDrawFrameElement));
-
-        mBodyElements.push_back(static_cast<GraphicsElement *>(new OpenTagGraphicsElement("draw:image")));
-
-        mBodyElements.push_back(static_cast<GraphicsElement *>(new OpenTagGraphicsElement("office:binary-data")));
-
-        libwpg::WPGString base64Binary;
-        bitmap.generateBase64DIB(base64Binary);
-        mBodyElements.push_back(static_cast<GraphicsElement *>(new CharDataGraphicsElement(base64Binary.cstr())));
-
-        mBodyElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("office:binary-data")));
-
-        mBodyElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("draw:image")));
-
-        mBodyElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("draw:frame")));
-}
-
-void OdgExporter::drawImageObject(const libwpg::WPGBinaryData& binaryData)
-{
-        if (binaryData.mimeType.length() <= 0)
-                return;
-        OpenTagGraphicsElement *pDrawFrameElement = new OpenTagGraphicsElement("draw:frame");
-        m_value.str("");
-        m_value << doubleToString(binaryData.rect.x1) << "in";
-        pDrawFrameElement->addAttribute("svg:x", m_value.str());
-        m_value.str("");
-        m_value << doubleToString(binaryData.rect.y1) << "in";
-        pDrawFrameElement->addAttribute("svg:y", m_value.str());
-        m_value.str("");
-        m_value << doubleToString(binaryData.rect.height()) << "in";
-        pDrawFrameElement->addAttribute("svg:height", m_value.str());
-        m_value.str("");
-        m_value << doubleToString(binaryData.rect.width()) << "in";
-        pDrawFrameElement->addAttribute("svg:width", m_value.str());
-        mBodyElements.push_back(static_cast<GraphicsElement *>(pDrawFrameElement));
-
-        mBodyElements.push_back(static_cast<GraphicsElement *>(new OpenTagGraphicsElement("draw:image")));
-
-        mBodyElements.push_back(static_cast<GraphicsElement *>(new OpenTagGraphicsElement("office:binary-data")));
-
-        libwpg::WPGString base64Binary = binaryData.getBase64Data();
-        mBodyElements.push_back(static_cast<GraphicsElement *>(new CharDataGraphicsElement(base64Binary.cstr())));
-
-        mBodyElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("office:binary-data")));
-
-        mBodyElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("draw:image")));
-
-        mBodyElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("draw:frame")));
-}
-
-
-static std::string colorToHex(const libwpg::WPGColor& color)
-{
-        char hexdigits[] = "0123456789abcdef";
-        char buffer[] = "123456";
-        buffer[0] = hexdigits[(color.red >> 4) & 15];
-        buffer[1] = hexdigits[color.red & 15];
-        buffer[2] = hexdigits[(color.green >> 4) & 15];
-        buffer[3] = hexdigits[color.green & 15];
-        buffer[4] = hexdigits[(color.blue >> 4) & 15];
-        buffer[5] = hexdigits[color.blue & 15];
-        return std::string(buffer);
-}
-
-void OdgExporter::writeStyle()
-{
-        m_value.str("");
-        m_name.str("");
-
-        if(!m_pen.solid && (m_pen.dashArray.count() >=2 ) )
-        {
-                // ODG only supports dashes with the same length of spaces inbetween
-                // here we take the first space and assume everything else the same
-                // note that dash length is written in percentage
-                double distance = m_pen.dashArray.at(1);
-                OpenTagGraphicsElement *tmpDrawStrokeDashElement = new OpenTagGraphicsElement("draw:stroke-dash");
-                tmpDrawStrokeDashElement->addAttribute("draw:style", "rect");
-                m_value << "Dash_" << m_dashIndex++;
-                tmpDrawStrokeDashElement->addAttribute("draw:name", m_value.str());
-                m_value.str("");
-                m_value << doubleToString(distance*100) << "%";
-                tmpDrawStrokeDashElement->addAttribute("draw:distance", m_value.str());
-                m_value.str("");
-                for(unsigned i = 0; i < m_pen.dashArray.count()/2; i++)
-                {
-                        m_name << "draw:dots" << i+1;
-                        tmpDrawStrokeDashElement->addAttribute(m_name.str(), "1");
-                        m_name.str("");
-                        m_name << "draw:dots" << i+1 << "-length";
-                        m_value << doubleToString(100*m_pen.dashArray.at(i*2)) << "%";
-                        tmpDrawStrokeDashElement->addAttribute(m_name.str(), m_value.str());
-                        m_name.str("");
-                        m_value.str("");
-                }
-                mStrokeDashElements.push_back(static_cast<GraphicsElement *>(tmpDrawStrokeDashElement));
-                mStrokeDashElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("draw:stroke-dash")));
-        }
-
-        if(m_brush.style == libwpg::WPGBrush::Gradient)
-        {
-                OpenTagGraphicsElement *tmpDrawGradientElement = new OpenTagGraphicsElement("draw:gradient");
-                tmpDrawGradientElement->addAttribute("draw:style", "linear");
-                m_value << "Gradient_" << m_gradientIndex++;
-                tmpDrawGradientElement->addAttribute("draw:name", m_value.str());
-                m_value.str("");
-
-                // ODG angle unit is 0.1 degree
-                double angle = -m_brush.gradient.angle();
-                while(angle < 0)
-                        angle += 360;
-                while(angle > 360)
-                        angle -= 360;
-
-                m_value << (unsigned)(angle*10);
-                tmpDrawGradientElement->addAttribute("draw:angle", m_value.str());
-                m_value.str("");
-
-                libwpg::WPGColor startColor = m_brush.gradient.stopColor(0);
-                libwpg::WPGColor stopColor = m_brush.gradient.stopColor(1);
-                m_value << "#" << colorToHex(startColor);
-                tmpDrawGradientElement->addAttribute("draw:start-color", m_value.str());
-                m_value.str("");
-                m_value << "#" << colorToHex(stopColor);
-                tmpDrawGradientElement->addAttribute("draw:end-color", m_value.str());
-                m_value.str("");
-                tmpDrawGradientElement->addAttribute("draw:start-intensity", "100%");
-                tmpDrawGradientElement->addAttribute("draw:end-intensity", "100%");
-                tmpDrawGradientElement->addAttribute("draw:border", "0%");
-                mGradientElements.push_back(static_cast<GraphicsElement *>(tmpDrawGradientElement));
-                mGradientElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("draw:gradient")));
-        }
-
-        OpenTagGraphicsElement *tmpStyleStyleElement = new OpenTagGraphicsElement("style:style");
-        m_value << "gr" << m_styleIndex;
-        tmpStyleStyleElement->addAttribute("style:name", m_value.str());
-        m_value.str("");
-        tmpStyleStyleElement->addAttribute("style:family", "graphic");
-        tmpStyleStyleElement->addAttribute("style:parent-style-name", "standard");
-        mAutomaticStylesElements.push_back(static_cast<GraphicsElement *>(tmpStyleStyleElement));
-
-        OpenTagGraphicsElement *tmpStyleGraphicPropertiesElement = new OpenTagGraphicsElement("style:graphic-properties");
-
-        if(m_pen.width > 0.0)
-        {
-                m_value << doubleToString(m_pen.width) << "in";
-                tmpStyleGraphicPropertiesElement->addAttribute("svg:stroke-width", m_value.str());
-                m_value.str("");
-                m_value << "#" << colorToHex(m_pen.foreColor);
-                tmpStyleGraphicPropertiesElement->addAttribute("svg:stroke-color", m_value.str());
-                m_value.str("");
-
-                if(!m_pen.solid)
-                {
-                        tmpStyleGraphicPropertiesElement->addAttribute("draw:stroke", "dash");
-                        m_value << "Dash_" << m_dashIndex-1;
-                        tmpStyleGraphicPropertiesElement->addAttribute("draw:stroke-dash", m_value.str());
-                        m_value.str("");
-                }
-        }
-        else
-                tmpStyleGraphicPropertiesElement->addAttribute("draw:stroke", "none");
-
-        if(m_brush.style == libwpg::WPGBrush::NoBrush)
-                tmpStyleGraphicPropertiesElement->addAttribute("draw:fill", "none");
-
-        if(m_brush.style == libwpg::WPGBrush::Solid)
-        {
-                tmpStyleGraphicPropertiesElement->addAttribute("draw:fill", "solid");
-                m_value << "#" << colorToHex(m_brush.foreColor);
-                tmpStyleGraphicPropertiesElement->addAttribute("draw:fill-color", m_value.str());
-                m_value.str("");
-        }
-
-        if(m_brush.style == libwpg::WPGBrush::Gradient)
-        {
-                tmpStyleGraphicPropertiesElement->addAttribute("draw:fill", "gradient");
-                m_value << "Gradient_" << m_gradientIndex-1;
-                tmpStyleGraphicPropertiesElement->addAttribute("draw:fill-gradient-name", m_value.str());
-                m_value.str("");
-        }
-
-        mAutomaticStylesElements.push_back(static_cast<GraphicsElement *>(tmpStyleGraphicPropertiesElement));
-        mAutomaticStylesElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("style:graphic-properties")));
-
-        mAutomaticStylesElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("style:style")));
-        m_styleIndex++;
-}
diff -Nur koffice-2.3.1/filters/karbon/wpg/import/OdgExporter.hxx koffice-2.3.1-libwpg02/filters/karbon/wpg/import/OdgExporter.hxx
--- koffice-2.3.1/filters/karbon/wpg/import/OdgExporter.hxx	2011-01-15 21:05:35.000000000 +0100
+++ koffice-2.3.1-libwpg02/filters/karbon/wpg/import/OdgExporter.hxx	1970-01-01 01:00:00.000000000 +0100
@@ -1,116 +0,0 @@
-/* libwpg
- * Copyright (C) 2006 Ariya Hidayat (ariya@kde.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the 
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 
- * Boston, MA  02111-1301 USA
- *
- * For further information visit http://libwpg.sourceforge.net
- */
-
-/* "This product is not manufactured, approved, or supported by
- * Corel Corporation or Corel Corporation Limited."
- */
-
-#ifndef __ODGEXPORTER_H__
-#define __ODGEXPORTER_H__
-
-#include <iostream>
-#include <sstream>
-#include <string>
-
-#include <libwpg/libwpg.h>
-#include "GraphicsElement.hxx"
-
-class OdgExporter : public libwpg::WPGPaintInterface {
-public:
-	explicit OdgExporter(GraphicsHandler *pHandler,
-			     const bool isFlatXML = false);
-	~OdgExporter();
-
-#if LIBWPG_VERSION_MINOR<2
-	void startGraphics(double imageWidth, double imageHeight);
-	void endGraphics();
-	void startLayer(unsigned int id);
-	void endLayer(unsigned int id);
-
-	void setPen(const libwpg::WPGPen& pen);
-	void setBrush(const libwpg::WPGBrush& brush);
-	void setFillRule(FillRule rule);
-
-	void drawRectangle(const libwpg::WPGRect& rect, double rx, double ry);
-	void drawEllipse(const libwpg::WPGPoint& center, double rx, double ry);
-	void drawPolygon(const libwpg::WPGPointArray& vertices);
-	void drawPath(const libwpg::WPGPath& path);
-	void drawBitmap(const libwpg::WPGBitmap& bitmap);
-	void drawImageObject(const libwpg::WPGBinaryData& binaryData);
-
-private:
-	std::vector <GraphicsElement *> mBodyElements;
-	std::vector <GraphicsElement *> mAutomaticStylesElements;
-	std::vector <GraphicsElement *> mStrokeDashElements;
-	std::vector <GraphicsElement *> mGradientElements;
-	GraphicsHandler *mpHandler;
-
-	libwpg::WPGPen m_pen;
-	libwpg::WPGBrush m_brush;
-	FillRule m_fillRule;
-	int m_gradientIndex;
-	int m_dashIndex;
-	int m_styleIndex;
-	void writeStyle();
-	std::ostringstream m_value, m_name;
-	double m_width, m_height;
-	const bool m_isFlatXML;
-#else
-	virtual void startGraphics(const ::WPXPropertyList &propList);
-	virtual void endGraphics();
-	virtual void setStyle(const ::WPXPropertyList &propList, const ::WPXPropertyListVector &gradient);
-	virtual void startLayer(const ::WPXPropertyList &propList);
-	virtual void endLayer();
-	virtual void drawRectangle(const ::WPXPropertyList& propList);
-	virtual void drawEllipse(const ::WPXPropertyList& propList);
-	virtual void drawPolygon(const ::WPXPropertyListVector &vertices);
-	virtual void drawPath(const ::WPXPropertyListVector &path);
-	virtual void drawGraphicObject(const ::WPXPropertyList &propList, const ::WPXBinaryData &binaryData);
-	virtual void startEmbeddedGraphics(const ::WPXPropertyList &propList);
-	virtual void endEmbeddedGraphics();
-	virtual void drawPolyline(const ::WPXPropertyListVector &vertices);
-	virtual void startTextObject(const ::WPXPropertyList &propList, const ::WPXPropertyListVector &path);
-	virtual void endTextObject();
-	virtual void startTextLine(const ::WPXPropertyList &propList);
-	virtual void endTextLine();
-	virtual void startTextSpan(const ::WPXPropertyList &propList);
-	virtual void endTextSpan();
-	virtual void insertText(const ::WPXString &str);
-
-
-private:
-	std::vector <GraphicsElement *> mBodyElements;
-	std::vector <GraphicsElement *> mAutomaticStylesElements;
-	std::vector <GraphicsElement *> mStrokeDashElements;
-	std::vector <GraphicsElement *> mGradientElements;
-	GraphicsHandler *mpHandler;
-
-	int m_gradientIndex;
-	int m_dashIndex;
-	int m_styleIndex;
-	void writeStyle();
-	std::ostringstream m_value, m_name;
-	double m_width, m_height;
-	const bool m_isFlatXML;
-#endif
-};
-
-#endif // __ODGEXPORTER_H__
diff -Nur koffice-2.3.1/filters/karbon/wpg/import/WPGImport.cpp koffice-2.3.1-libwpg02/filters/karbon/wpg/import/WPGImport.cpp
--- koffice-2.3.1/filters/karbon/wpg/import/WPGImport.cpp	2011-01-15 21:05:35.000000000 +0100
+++ koffice-2.3.1-libwpg02/filters/karbon/wpg/import/WPGImport.cpp	2011-01-02 17:46:15.000000000 +0100
@@ -20,28 +20,26 @@
 #include <WPGImport.h>
 #include <WPGImport.moc>
 
-#include <QBuffer>
-#include <QByteArray>
-#include <QString>
-
-#include <kdebug.h>
 #include <KoFilterChain.h>
 #include <KoGlobal.h>
 #include <KoUnit.h>
+#include <KoXmlWriter.h>
+
 #include <kpluginfactory.h>
+#include <KDebug>
 
-#include <KoXmlWriter.h>
+
+#include <QtCore/QString>
+#include <QtCore/QFile>
 
 #include <libwpg/libwpg.h>
 #if LIBWPG_VERSION_MINOR<2
 #include <libwpg/WPGStreamImplementation.h>
 #else
 #include <libwpd-stream/libwpd-stream.h>
+#include <libwpd/libwpd.h>
 #endif
 
-#include "FileOutputHandler.hxx"
-#include "OdgExporter.hxx"
-
 #include <iostream>
 
 K_PLUGIN_FACTORY(WPGImportFactory, registerPlugin<WPGImport>();)
@@ -56,35 +54,13 @@
 {
 }
 
-static QByteArray createManifest()
-{
-    KoXmlWriter* manifestWriter;
-    QByteArray manifestData;
-    QBuffer manifestBuffer(&manifestData);
-
-    manifestBuffer.open(QIODevice::WriteOnly);
-    manifestWriter = new KoXmlWriter(&manifestBuffer);
-
-    manifestWriter->startDocument("manifest:manifest");
-    manifestWriter->startElement("manifest:manifest");
-    manifestWriter->addAttribute("xmlns:manifest", "urn:oasis:names:tc:openoffice:xmlns:manifest:1.0");
-    manifestWriter->addManifestEntry("/", "application/vnd.oasis.opendocument.graphics");
-    //manifestWriter->addManifestEntry( "styles.xml", "text/xml" );
-    manifestWriter->addManifestEntry("content.xml", "text/xml");
-    manifestWriter->endElement();
-    manifestWriter->endDocument();
-    delete manifestWriter;
-
-    return manifestData;
-}
-
 
 KoFilter::ConversionStatus WPGImport::convert(const QByteArray& from, const QByteArray& to)
 {
     if (from != "application/x-wpg")
         return KoFilter::NotImplemented;
 
-    if (to != "application/vnd.oasis.opendocument.graphics")
+    if (to != "image/svg+xml")
         return KoFilter::NotImplemented;
 
 #if LIBWPG_VERSION_MINOR<2
@@ -96,6 +72,7 @@
             input = olestream;
         }
     }
+    libwpg::WPGString output;
 #else
     WPXInputStream* input = new WPXFileStream(m_chain->inputFile().toLocal8Bit());
     if (input->isOLEStream()) {
@@ -105,59 +82,31 @@
             input = olestream;
         }
      }
+     ::WPXString output;
 #endif
 
     if (!libwpg::WPGraphics::isSupported(input)) {
-        std::cerr << "ERROR: Unsupported file format (unsupported version) or file is encrypted!" << std::endl;
+        kWarning() << "ERROR: Unsupported file format (unsupported version) or file is encrypted!";
         delete input;
         return KoFilter::NotImplemented;
     }
 
-    // do the conversion
-    std::ostringstream tmpStringStream;
-    FileOutputHandler tmpHandler(tmpStringStream);
-    OdgExporter exporter(&tmpHandler);
-    libwpg::WPGraphics::parse(input, &exporter);
-    delete input;
-
-
-    // create output store
-    KoStore* storeout;
-    storeout = KoStore::createStore(m_chain->outputFile(), KoStore::Write,
-                                    "application/vnd.oasis.opendocument.graphics", KoStore::Zip);
-
-    if (!storeout) {
-        kWarning() << "Couldn't open the requested file.";
-        return KoFilter::FileNotFound;
-    }
-
-#if 0
-    if (!storeout->open("styles.xml")) {
-        kWarning() << "Couldn't open the file 'styles.xml'.";
-        return KoFilter::CreationError;
+    if (!libwpg::WPGraphics::generateSVG(input, output)) {
+        kWarning() << "ERROR: SVG Generation failed!";
+        delete input;
+        return KoFilter::ParsingError;
     }
-    //storeout->write( createStyles() );
-    storeout->close();
-#endif
 
-    if (!storeout->open("content.xml")) {
-        kWarning() << "Couldn't open the file 'content.xml'.";
-        return KoFilter::CreationError;
-    }
-    storeout->write(tmpStringStream.str().c_str());
-    storeout->close();
+    delete input;
 
-    // store document manifest
-    storeout->enterDirectory("META-INF");
-    if (!storeout->open("manifest.xml")) {
-        kWarning() << "Couldn't open the file 'META-INF/manifest.xml'.";
-        return KoFilter::CreationError;
+    QFile outputFile(m_chain->outputFile());
+    if(!outputFile.open(QIODevice::WriteOnly | QIODevice::Text)) {
+        kWarning() << "ERROR: Could not open output file" << m_chain->outputFile();
+        return KoFilter::InternalError;
     }
-    storeout->write(createManifest());
-    storeout->close();
 
-    // we are done!
-    delete storeout;
+    outputFile.write(output.cstr());
+    outputFile.close();
 
     return KoFilter::OK;
 }