diff options
Diffstat (limited to 'testing/koffice/kde4-koffice-libwpg02.patch')
-rw-r--r-- | testing/koffice/kde4-koffice-libwpg02.patch | 1323 |
1 files changed, 0 insertions, 1323 deletions
diff --git a/testing/koffice/kde4-koffice-libwpg02.patch b/testing/koffice/kde4-koffice-libwpg02.patch deleted file mode 100644 index e2a55a216..000000000 --- a/testing/koffice/kde4-koffice-libwpg02.patch +++ /dev/null @@ -1,1323 +0,0 @@ -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/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; - } - |