[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [3299] trunk/py/scripts/addons/ io_curve_svg/import_svg.py: Fix #31056: SVG importer ignores fill color from parent container

Sergey Sharybin sergey.vfx at gmail.com
Mon Apr 23 17:28:00 CEST 2012


Revision: 3299
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=3299
Author:   nazgul
Date:     2012-04-23 15:28:00 +0000 (Mon, 23 Apr 2012)
Log Message:
-----------
Fix #31056: SVG importer ignores fill color from parent container

Additional changes:

- Fixed wrong pop of rectangle area (function wasn't called)
- Removed unused code

Modified Paths:
--------------
    trunk/py/scripts/addons/io_curve_svg/import_svg.py

Modified: trunk/py/scripts/addons/io_curve_svg/import_svg.py
===================================================================
--- trunk/py/scripts/addons/io_curve_svg/import_svg.py	2012-04-23 14:04:17 UTC (rev 3298)
+++ trunk/py/scripts/addons/io_curve_svg/import_svg.py	2012-04-23 15:28:00 UTC (rev 3299)
@@ -428,6 +428,9 @@
                 styles['useFill'] = True
                 styles['fill'] = SVGGetMaterial(fill, context)
 
+    if styles['useFill'] is None and context['style']:
+        styles = context['style'].copy()
+
     if styles['useFill'] is None:
         styles['useFill'] = True
         styles['fill'] = SVGGetMaterial('#000', context)
@@ -887,7 +890,6 @@
         Elliptical arc CurveTo path command
         """
 
-        # c = code.lower()  # UNUSED
         cur = self._data.cur()
 
         while cur is not None and not cur.isalpha():
@@ -981,7 +983,7 @@
         Pop display rectangle
         """
 
-        self._context['rects'].pop
+        self._context['rects'].pop()
         self._context['rect'] = self._context['rects'][-1]
 
     def _pushMatrix(self, matrix):
@@ -1000,6 +1002,22 @@
         matrix = self._context['transform'].pop()
         self._context['matrix'] = self._context['matrix'] * matrix.inverted()
 
+    def _pushStyle(self, style):
+        """
+        Push style
+        """
+
+        self._context['styles'].append(style)
+        self._context['style'] = style
+
+    def _popStyle(self):
+        """
+        Pop style
+        """
+
+        self._context['styles'].pop()
+        self._context['style'] = self._context['styles'][-1]
+
     def _transformCoord(self, point):
         """
         Transform SVG-file coords
@@ -1069,7 +1087,8 @@
     Container of SVG geometries
     """
 
-    __slots__ = ('_geometries')  # List of chold geometries
+    __slots__ = ('_geometries',  # List of chold geometries
+                 '_styles')  # Styles, used for displaying
 
     def __init__(self, node, context):
         """
@@ -1079,12 +1098,18 @@
         super().__init__(node, context)
 
         self._geometries = []
+        self._styles = SVGEmptyStyles
 
     def parse(self):
         """
         Parse XML node to memory
         """
 
+        if type(self._node) is xml.dom.minidom.Element:
+            self._styles = SVGParseStyles(self._node, self._context)
+
+        self._pushStyle(self._styles)
+
         for node in self._node.childNodes:
             if type(node) is not xml.dom.minidom.Element:
                 continue
@@ -1093,6 +1118,8 @@
             if ob is not None:
                 self._geometries.append(ob)
 
+        self._popStyle()
+
     def _doCreateGeom(self, instancing):
         """
         Create real geometries
@@ -1244,7 +1271,6 @@
         Create real geometries
         """
 
-        # geometries = []  # UNUSED
         ref = self._node.getAttribute('xlink:href')
         geom = self._context['defines'].get(ref)
 
@@ -1765,7 +1791,9 @@
                          'rects': [rect],
                          'rect': rect,
                          'matrix': m,
-                         'materials': {}}
+                         'materials': {},
+                         'styles': [None],
+                         'style': None}
 
         super().__init__(node, self._context)
 



More information about the Bf-extensions-cvs mailing list