diff --git a/src/Mod/Draft/importSVG.py b/src/Mod/Draft/importSVG.py index 8dfbaaae0b..fc0742e8c2 100644 --- a/src/Mod/Draft/importSVG.py +++ b/src/Mod/Draft/importSVG.py @@ -1,8 +1,10 @@ ## @package importSVG # \ingroup DRAFT # \brief SVG file importer & exporter +'''@package importSVG +\ingroup DRAFT +\brief SVG file importer & exporter -''' This module provides support for importing and exporting SVG files. It enables importing/exporting objects directly to/from the 3D document, but doesn't handle the SVG output from the Drawng and TechDraw modules. @@ -13,33 +15,33 @@ Currently it only reads the following entities: Currently unsupported: * use, image. ''' -#*************************************************************************** -#* * -#* Copyright (c) 2009 Yorik van Havre * -#* * -#* This program is free software; you can redistribute it and/or modify * -#* it under the terms of the GNU Lesser General Public License (LGPL) * -#* as published by the Free Software Foundation; either version 2 of * -#* the License, or (at your option) any later version. * -#* for detail see the LICENCE text file. * -#* * -#* 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 program; if not, write to the Free Software * -#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * -#* USA * -#* * -#*************************************************************************** +# *************************************************************************** +# * * +# * Copyright (c) 2009 Yorik van Havre * +# * * +# * This program is free software; you can redistribute it and/or modify * +# * it under the terms of the GNU Lesser General Public License (LGPL) * +# * as published by the Free Software Foundation; either version 2 of * +# * the License, or (at your option) any later version. * +# * for detail see the LICENCE text file. * +# * * +# * 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 program; if not, write to the Free Software * +# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +# * USA * +# * * +# *************************************************************************** -__title__="FreeCAD Draft Workbench - SVG importer/exporter" +__title__ = "FreeCAD Draft Workbench - SVG importer/exporter" __author__ = "Yorik van Havre, Sebastian Hoogen" __url__ = ["http://www.freecadweb.org"] -#ToDo: +# ToDo: # ignoring CDATA # handle image element (external references and inline base64) # debug Problem with 'Sans' font from Inkscape @@ -54,7 +56,7 @@ if FreeCAD.GuiUp: from DraftTools import translate from PySide import QtCore, QtGui else: - def translate(ctxt,txt): + def translate(ctxt, txt): return txt try: @@ -70,161 +72,162 @@ except AttributeError: draftui = None # Save the native open function to avoid collisions -if open.__module__ in ['__builtin__','io']: - pythonopen = open +if open.__module__ in ['__builtin__', 'io']: + pythonopen = open svgcolors = { - 'Pink': (255, 192, 203), - 'Blue': (0, 0, 255), - 'Honeydew': (240, 255, 240), - 'Purple': (128, 0, 128), - 'Fuchsia': (255, 0, 255), - 'LawnGreen': (124, 252, 0), - 'Amethyst': (153, 102, 204), - 'Crimson': (220, 20, 60), - 'White': (255, 255, 255), - 'NavajoWhite': (255, 222, 173), - 'Cornsilk': (255, 248, 220), - 'Bisque': (255, 228, 196), - 'PaleGreen': (152, 251, 152), - 'Brown': (165, 42, 42), - 'DarkTurquoise': (0, 206, 209), - 'DarkGreen': (0, 100, 0), - 'MediumOrchid': (186, 85, 211), - 'Chocolate': (210, 105, 30), - 'PapayaWhip': (255, 239, 213), - 'Olive': (128, 128, 0), - 'Silver': (192, 192, 192), - 'PeachPuff': (255, 218, 185), - 'Plum': (221, 160, 221), - 'DarkGoldenrod': (184, 134, 11), - 'SlateGrey': (112, 128, 144), - 'MintCream': (245, 255, 250), - 'CornflowerBlue': (100, 149, 237), - 'Gold': (255, 215, 0), - 'HotPink': (255, 105, 180), - 'DarkBlue': (0, 0, 139), - 'LimeGreen': (50, 205, 50), - 'DeepSkyBlue': (0, 191, 255), - 'DarkKhaki': (189, 183, 107), - 'LightGrey': (211, 211, 211), - 'Yellow': (255, 255, 0), - 'Gainsboro': (220, 220, 220), - 'MistyRose': (255, 228, 225), - 'SandyBrown': (244, 164, 96), - 'DeepPink': (255, 20, 147), - 'Magenta': (255, 0, 255), - 'AliceBlue': (240, 248, 255), - 'DarkCyan': (0, 139, 139), - 'DarkSlateGrey': (47, 79, 79), - 'GreenYellow': (173, 255, 47), - 'DarkOrchid': (153, 50, 204), - 'OliveDrab': (107, 142, 35), - 'Chartreuse': (127, 255, 0), - 'Peru': (205, 133, 63), - 'Orange': (255, 165, 0), - 'Red': (255, 0, 0), - 'Wheat': (245, 222, 179), - 'LightCyan': (224, 255, 255), - 'LightSeaGreen': (32, 178, 170), - 'BlueViolet': (138, 43, 226), - 'LightSlateGrey': (119, 136, 153), - 'Cyan': (0, 255, 255), - 'MediumPurple': (147, 112, 219), - 'MidnightBlue': (25, 25, 112), - 'FireBrick': (178, 34, 34), - 'PaleTurquoise': (175, 238, 238), - 'PaleGoldenrod': (238, 232, 170), - 'Gray': (128, 128, 128), - 'MediumSeaGreen': (60, 179, 113), - 'Moccasin': (255, 228, 181), - 'Ivory': (255, 255, 240), - 'DarkSlateBlue': (72, 61, 139), - 'Beige': (245, 245, 220), - 'Green': (0, 128, 0), - 'SlateBlue': (106, 90, 205), - 'Teal': (0, 128, 128), - 'Azure': (240, 255, 255), - 'LightSteelBlue': (176, 196, 222), - 'DimGrey': (105, 105, 105), - 'Tan': (210, 180, 140), - 'AntiqueWhite': (250, 235, 215), - 'SkyBlue': (135, 206, 235), - 'GhostWhite': (248, 248, 255), - 'MediumTurquoise': (72, 209, 204), - 'FloralWhite': (255, 250, 240), - 'LavenderBlush': (255, 240, 245), - 'SeaGreen': (46, 139, 87), - 'Lavender': (230, 230, 250), - 'BlanchedAlmond': (255, 235, 205), - 'DarkOliveGreen': (85, 107, 47), - 'DarkSeaGreen': (143, 188, 143), - 'SpringGreen': (0, 255, 127), - 'Navy': (0, 0, 128), - 'Orchid': (218, 112, 214), - 'SaddleBrown': (139, 69, 19), - 'IndianRed': (205, 92, 92), - 'Snow': (255, 250, 250), - 'SteelBlue': (70, 130, 180), - 'MediumSlateBlue': (123, 104, 238), - 'Black': (0, 0, 0), - 'LightBlue': (173, 216, 230), - 'Turquoise': (64, 224, 208), - 'MediumVioletRed': (199, 21, 133), - 'DarkViolet': (148, 0, 211), - 'DarkGray': (169, 169, 169), - 'Salmon': (250, 128, 114), - 'DarkMagenta': (139, 0, 139), - 'Tomato': (255, 99, 71), - 'WhiteSmoke': (245, 245, 245), - 'Goldenrod': (218, 165, 32), - 'MediumSpringGreen': (0, 250, 154), - 'DodgerBlue': (30, 144, 255), - 'Aqua': (0, 255, 255), - 'ForestGreen': (34, 139, 34), - 'LemonChiffon': (255, 250, 205), - 'LightSlateGray': (119, 136, 153), - 'SlateGray': (112, 128, 144), - 'LightGray': (211, 211, 211), - 'Indigo': (75, 0, 130), - 'CadetBlue': (95, 158, 160), - 'LightYellow': (255, 255, 224), - 'DarkOrange': (255, 140, 0), - 'PowderBlue': (176, 224, 230), - 'RoyalBlue': (65, 105, 225), - 'Sienna': (160, 82, 45), - 'Thistle': (216, 191, 216), - 'Lime': (0, 255, 0), - 'Seashell': (255, 245, 238), - 'DarkRed': (139, 0, 0), - 'LightSkyBlue': (135, 206, 250), - 'YellowGreen': (154, 205, 50), - 'Aquamarine': (127, 255, 212), - 'LightCoral': (240, 128, 128), - 'DarkSlateGray': (47, 79, 79), - 'Khaki': (240, 230, 140), - 'DarkGrey': (169, 169, 169), - 'BurlyWood': (222, 184, 135), - 'LightGoldenrodYellow': (250, 250, 210), - 'MediumBlue': (0, 0, 205), - 'DarkSalmon': (233, 150, 122), - 'RosyBrown': (188, 143, 143), - 'LightSalmon': (255, 160, 122), - 'PaleVioletRed': (219, 112, 147), - 'Coral': (255, 127, 80), - 'Violet': (238, 130, 238), - 'Grey': (128, 128, 128), - 'LightGreen': (144, 238, 144), - 'Linen': (250, 240, 230), - 'OrangeRed': (255, 69, 0), - 'DimGray': (105, 105, 105), - 'Maroon': (128, 0, 0), - 'LightPink': (255, 182, 193), - 'MediumAquamarine': (102, 205, 170), - 'OldLace': (253, 245, 230) - } -svgcolorslower = dict((key.lower(),value) for key,value in \ - list(svgcolors.items())) + 'Pink': (255, 192, 203), + 'Blue': (0, 0, 255), + 'Honeydew': (240, 255, 240), + 'Purple': (128, 0, 128), + 'Fuchsia': (255, 0, 255), + 'LawnGreen': (124, 252, 0), + 'Amethyst': (153, 102, 204), + 'Crimson': (220, 20, 60), + 'White': (255, 255, 255), + 'NavajoWhite': (255, 222, 173), + 'Cornsilk': (255, 248, 220), + 'Bisque': (255, 228, 196), + 'PaleGreen': (152, 251, 152), + 'Brown': (165, 42, 42), + 'DarkTurquoise': (0, 206, 209), + 'DarkGreen': (0, 100, 0), + 'MediumOrchid': (186, 85, 211), + 'Chocolate': (210, 105, 30), + 'PapayaWhip': (255, 239, 213), + 'Olive': (128, 128, 0), + 'Silver': (192, 192, 192), + 'PeachPuff': (255, 218, 185), + 'Plum': (221, 160, 221), + 'DarkGoldenrod': (184, 134, 11), + 'SlateGrey': (112, 128, 144), + 'MintCream': (245, 255, 250), + 'CornflowerBlue': (100, 149, 237), + 'Gold': (255, 215, 0), + 'HotPink': (255, 105, 180), + 'DarkBlue': (0, 0, 139), + 'LimeGreen': (50, 205, 50), + 'DeepSkyBlue': (0, 191, 255), + 'DarkKhaki': (189, 183, 107), + 'LightGrey': (211, 211, 211), + 'Yellow': (255, 255, 0), + 'Gainsboro': (220, 220, 220), + 'MistyRose': (255, 228, 225), + 'SandyBrown': (244, 164, 96), + 'DeepPink': (255, 20, 147), + 'Magenta': (255, 0, 255), + 'AliceBlue': (240, 248, 255), + 'DarkCyan': (0, 139, 139), + 'DarkSlateGrey': (47, 79, 79), + 'GreenYellow': (173, 255, 47), + 'DarkOrchid': (153, 50, 204), + 'OliveDrab': (107, 142, 35), + 'Chartreuse': (127, 255, 0), + 'Peru': (205, 133, 63), + 'Orange': (255, 165, 0), + 'Red': (255, 0, 0), + 'Wheat': (245, 222, 179), + 'LightCyan': (224, 255, 255), + 'LightSeaGreen': (32, 178, 170), + 'BlueViolet': (138, 43, 226), + 'LightSlateGrey': (119, 136, 153), + 'Cyan': (0, 255, 255), + 'MediumPurple': (147, 112, 219), + 'MidnightBlue': (25, 25, 112), + 'FireBrick': (178, 34, 34), + 'PaleTurquoise': (175, 238, 238), + 'PaleGoldenrod': (238, 232, 170), + 'Gray': (128, 128, 128), + 'MediumSeaGreen': (60, 179, 113), + 'Moccasin': (255, 228, 181), + 'Ivory': (255, 255, 240), + 'DarkSlateBlue': (72, 61, 139), + 'Beige': (245, 245, 220), + 'Green': (0, 128, 0), + 'SlateBlue': (106, 90, 205), + 'Teal': (0, 128, 128), + 'Azure': (240, 255, 255), + 'LightSteelBlue': (176, 196, 222), + 'DimGrey': (105, 105, 105), + 'Tan': (210, 180, 140), + 'AntiqueWhite': (250, 235, 215), + 'SkyBlue': (135, 206, 235), + 'GhostWhite': (248, 248, 255), + 'MediumTurquoise': (72, 209, 204), + 'FloralWhite': (255, 250, 240), + 'LavenderBlush': (255, 240, 245), + 'SeaGreen': (46, 139, 87), + 'Lavender': (230, 230, 250), + 'BlanchedAlmond': (255, 235, 205), + 'DarkOliveGreen': (85, 107, 47), + 'DarkSeaGreen': (143, 188, 143), + 'SpringGreen': (0, 255, 127), + 'Navy': (0, 0, 128), + 'Orchid': (218, 112, 214), + 'SaddleBrown': (139, 69, 19), + 'IndianRed': (205, 92, 92), + 'Snow': (255, 250, 250), + 'SteelBlue': (70, 130, 180), + 'MediumSlateBlue': (123, 104, 238), + 'Black': (0, 0, 0), + 'LightBlue': (173, 216, 230), + 'Turquoise': (64, 224, 208), + 'MediumVioletRed': (199, 21, 133), + 'DarkViolet': (148, 0, 211), + 'DarkGray': (169, 169, 169), + 'Salmon': (250, 128, 114), + 'DarkMagenta': (139, 0, 139), + 'Tomato': (255, 99, 71), + 'WhiteSmoke': (245, 245, 245), + 'Goldenrod': (218, 165, 32), + 'MediumSpringGreen': (0, 250, 154), + 'DodgerBlue': (30, 144, 255), + 'Aqua': (0, 255, 255), + 'ForestGreen': (34, 139, 34), + 'LemonChiffon': (255, 250, 205), + 'LightSlateGray': (119, 136, 153), + 'SlateGray': (112, 128, 144), + 'LightGray': (211, 211, 211), + 'Indigo': (75, 0, 130), + 'CadetBlue': (95, 158, 160), + 'LightYellow': (255, 255, 224), + 'DarkOrange': (255, 140, 0), + 'PowderBlue': (176, 224, 230), + 'RoyalBlue': (65, 105, 225), + 'Sienna': (160, 82, 45), + 'Thistle': (216, 191, 216), + 'Lime': (0, 255, 0), + 'Seashell': (255, 245, 238), + 'DarkRed': (139, 0, 0), + 'LightSkyBlue': (135, 206, 250), + 'YellowGreen': (154, 205, 50), + 'Aquamarine': (127, 255, 212), + 'LightCoral': (240, 128, 128), + 'DarkSlateGray': (47, 79, 79), + 'Khaki': (240, 230, 140), + 'DarkGrey': (169, 169, 169), + 'BurlyWood': (222, 184, 135), + 'LightGoldenrodYellow': (250, 250, 210), + 'MediumBlue': (0, 0, 205), + 'DarkSalmon': (233, 150, 122), + 'RosyBrown': (188, 143, 143), + 'LightSalmon': (255, 160, 122), + 'PaleVioletRed': (219, 112, 147), + 'Coral': (255, 127, 80), + 'Violet': (238, 130, 238), + 'Grey': (128, 128, 128), + 'LightGreen': (144, 238, 144), + 'Linen': (250, 240, 230), + 'OrangeRed': (255, 69, 0), + 'DimGray': (105, 105, 105), + 'Maroon': (128, 0, 0), + 'LightPink': (255, 182, 193), + 'MediumAquamarine': (102, 205, 170), + 'OldLace': (253, 245, 230) +} +svgcolorslower = \ + dict((key.lower(), value) for (key, value) in list(svgcolors.items())) + def getcolor(color): """Check if the given string is an RGB value, or if it is a named color.