From 8e7d89783f2ce56b712b76c928a27372ba542a57 Mon Sep 17 00:00:00 2001 From: ishmal Date: Thu, 16 Feb 2006 01:15:35 +0000 Subject: [PATCH] Add new placeholder for ODF --- src/extension/internal/Makefile_insert | 2 + src/extension/internal/odf.cpp | 154 +++++++++++++++++++++++++ src/extension/internal/odf.h | 72 ++++++++++++ src/extension/internal/pov-out.cpp | 15 ++- 4 files changed, 237 insertions(+), 6 deletions(-) create mode 100644 src/extension/internal/odf.cpp create mode 100644 src/extension/internal/odf.h diff --git a/src/extension/internal/Makefile_insert b/src/extension/internal/Makefile_insert index c6c7aefe2..f29b37227 100644 --- a/src/extension/internal/Makefile_insert +++ b/src/extension/internal/Makefile_insert @@ -33,6 +33,8 @@ extension_internal_libinternal_a_SOURCES = \ extension/internal/gdkpixbuf-input.cpp \ extension/internal/pov-out.cpp \ extension/internal/pov-out.h \ + extension/internal/odf.cpp \ + extension/internal/odf.h \ extension/internal/latex-pstricks.cpp \ extension/internal/latex-pstricks.h \ extension/internal/latex-pstricks-out.cpp \ diff --git a/src/extension/internal/odf.cpp b/src/extension/internal/odf.cpp new file mode 100644 index 000000000..6918e9ebb --- /dev/null +++ b/src/extension/internal/odf.cpp @@ -0,0 +1,154 @@ +/** + * OpenDocument input and output + * + * This is an an entry in the extensions mechanism to begin to enable + * the inputting and outputting of OpenDocument Format (ODF) files from + * within Inkscape. Although the initial implementations will be very lossy + * do to the differences in the models of SVG and ODF, they will hopefully + * improve greatly with time. + * + * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html + * + * Authors: + * Bob Jamison + * + * Copyright (C) 2006 Bob Jamison + * + * This library 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.1 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + + +#ifdef HAVE_CONFIG_H +# include +#endif +#include "odf.h" +#include "clear-n_.h" +#include "inkscape.h" +#include "sp-path.h" +#include +#include "display/curve.h" +#include "libnr/n-art-bpath.h" +#include "extension/system.h" + + + +#include "io/sys.h" + +namespace Inkscape +{ +namespace Extension +{ +namespace Internal +{ + + +//######################################################################## +//# O U T P U T +//######################################################################## + + +/** + * Make sure that we are in the database + */ +bool +OdfOutput::check (Inkscape::Extension::Extension *module) +{ + /* We don't need a Key + if (NULL == Inkscape::Extension::db.get(SP_MODULE_KEY_OUTPUT_POV)) + return FALSE; + */ + + return TRUE; +} + + + + +/** + * This function searches the Repr tree recursively from the given node, + * and adds refs to all nodes with the given name, to the result vector + */ +static void +findElementsByTagName(std::vector &results, + Inkscape::XML::Node *node, + char const *name) +{ + if ( !name || strcmp(node->name(), name) == 0 ) + { + results.push_back(node); + } + + for (Inkscape::XML::Node *child = node->firstChild() ; child ; child = child->next()) + findElementsByTagName( results, child, name ); + +} + + +/** + * Descends into the SVG tree, mapping things to ODF when appropriate + */ +void +OdfOutput::save(Inkscape::Extension::Output *mod, SPDocument *doc, gchar const *uri) +{ + FILE *f = fopen(uri, "rb"); + fclose(f); +} + + +/** + * This is the definition of PovRay output. This function just + * calls the extension system with the memory allocated XML that + * describes the data. +*/ +void +OdfOutput::init() +{ + Inkscape::Extension::build_from_mem( + "\n" + "" N_("OpenDocument Drawing Output") "\n" + "org.inkscape.output.odf\n" + "\n" + ".odg\n" + "text/x-povray-script\n" + "" N_("OpenDocument drawing (*.odg)(placeholder)") "\n" + "" N_("OpenDocument drawing file") "\n" + "\n" + "", + new OdfOutput()); +} + +//######################################################################## +//# I N P U T +//######################################################################## + + + + +} //namespace Internal +} //namespace Extension +} //namespace Inkscape + + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : diff --git a/src/extension/internal/odf.h b/src/extension/internal/odf.h new file mode 100644 index 000000000..1e81e9986 --- /dev/null +++ b/src/extension/internal/odf.h @@ -0,0 +1,72 @@ +/** + * OpenDocument input and output + * + * This is an an entry in the extensions mechanism to begin to enable + * the inputting and outputting of OpenDocument Format (ODF) files from + * within Inkscape. Although the initial implementations will be very lossy + * do to the differences in the models of SVG and ODF, they will hopefully + * improve greatly with time. + * + * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html + * + * Authors: + * Bob Jamison + * + * Copyright (C) 2006 Bob Jamison + * + * This library 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.1 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef EXTENSION_INTERNAL_ODG_OUT_H +#define EXTENSION_INTERNAL_ODG_OUT_H + +#include +#include "extension/implementation/implementation.h" + +namespace Inkscape +{ +namespace Extension +{ +namespace Internal +{ + + +class OdfOutput : public Inkscape::Extension::Implementation::Implementation +{ + + public: + + bool check (Inkscape::Extension::Extension * module); + + void save (Inkscape::Extension::Output *mod, + SPDocument *doc, + const gchar *uri); + + static void init (void); + + +}; + + + + +} //namespace Internal +} //namespace Extension +} //namespace Inkscape + + + +#endif /* EXTENSION_INTERNAL_ODG_OUT_H */ + diff --git a/src/extension/internal/pov-out.cpp b/src/extension/internal/pov-out.cpp index 058116040..fbe64bd81 100644 --- a/src/extension/internal/pov-out.cpp +++ b/src/extension/internal/pov-out.cpp @@ -32,16 +32,19 @@ #include "io/sys.h" -namespace Inkscape { -namespace Extension { -namespace Internal { +namespace Inkscape +{ +namespace Extension +{ +namespace Internal +{ static const char * dstr(gchar *sbuffer, double d) { - return (const char *)g_ascii_formatd(sbuffer, + return (const char *)g_ascii_formatd(sbuffer, G_ASCII_DTOSTR_BUF_SIZE, "%.8g", (gdouble)d); } @@ -147,13 +150,13 @@ PovOutput::save(Inkscape::Extension::Output *mod, SPDocument *doc, gchar const * gchar s6[G_ASCII_DTOSTR_BUF_SIZE + 1]; gchar s7[G_ASCII_DTOSTR_BUF_SIZE + 1]; gchar s8[G_ASCII_DTOSTR_BUF_SIZE + 1]; - + double bignum = 1000000.0; double minx = bignum; double maxx = -bignum; double miny = bignum; double maxy = -bignum; - + unsigned indx; -- 2.30.2