[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [1724] trunk/py/scripts/addons/ io_curve_svg/import_svg.py: Fix #26555: SVG Import (stars wrong scale)

Sergey Sharybin g.ulairi at gmail.com
Sun Mar 20 16:32:19 CET 2011


Revision: 1724
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=1724
Author:   nazgul
Date:     2011-03-20 15:32:19 +0000 (Sun, 20 Mar 2011)
Log Message:
-----------
Fix #26555: SVG Import (stars wrong scale)

Transformation for non-container objects was applied twice when they were USEd.
Get rid of confusing checks for special cases in USE.createGeom and use special
flag (instancing) which tells geometry is it "normal" geometry creation or
geometry creation initiated by USE node (SYMBOL would be handled differently
int this two cases)

Quick tests showed none regressions.

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	2011-03-20 13:08:27 UTC (rev 1723)
+++ trunk/py/scripts/addons/io_curve_svg/import_svg.py	2011-03-20 15:32:19 UTC (rev 1724)
@@ -1022,7 +1022,7 @@
 
         pass
 
-    def _doCreateGeom(self):
+    def _doCreateGeom(self, instancing):
         """
         Internal handler to create real geometries
         """
@@ -1041,7 +1041,7 @@
 
         return None
 
-    def createGeom(self):
+    def createGeom(self, instancing):
         """
         Create real geometries
         """
@@ -1055,7 +1055,7 @@
         if matrix is not None:
             self._pushMatrix(matrix)
 
-        self._doCreateGeom()
+        self._doCreateGeom(instancing)
 
         if matrix is not None:
             self._popMatrix()
@@ -1092,13 +1092,13 @@
             if ob is not None:
                 self._geometries.append(ob)
 
-    def _doCreateGeom(self):
+    def _doCreateGeom(self, instancing):
         """
         Create real geometries
         """
 
         for geom in self._geometries:
-            geom.createGeom()
+            geom.createGeom(instancing)
 
     def getGeometries(self):
         """
@@ -1139,7 +1139,7 @@
         self._splines = pathParser.getSplines()
         self._styles = SVGParseStyles(self._node, self._context)
 
-    def _doCreateGeom(self):
+    def _doCreateGeom(self, instancing):
         """
         Create real geometries
         """
@@ -1190,7 +1190,7 @@
     Container for referenced elements
     """
 
-    def _doCreateGeom(self):
+    def createGeom(self, instancing):
         """
         Create real geometries
         """
@@ -1203,14 +1203,28 @@
     Referenced element
     """
 
-    def _doCreateGeom(self):
+    def _doCreateGeom(self, instancing):
         """
         Create real geometries
         """
 
-        pass
+        self._pushMatrix(self.getNodeMatrix())
 
+        super()._doCreateGeom(False)
 
+        self._popMatrix()
+
+    def createGeom(self, instancing):
+        """
+        Create real geometries
+        """
+
+        if not instancing:
+            return
+
+        super().createGeom(instancing)
+
+
 class SVGGeometryG(SVGGeometryContainer):
     """
     Geometry group
@@ -1224,7 +1238,7 @@
     User of referenced elements
     """
 
-    def _doCreateGeom(self):
+    def _doCreateGeom(self, instancing):
         """
         Create real geometries
         """
@@ -1239,35 +1253,8 @@
 
             self._pushMatrix(self.getNodeMatrix())
 
-            geomMatrix = None
-            nodeMatrix = None
+            geom.createGeom(True)
 
-            if not isinstance(geom, SVGGeometryUSE):
-                geomMatrix = geom.getTransformMatrix()
-
-            if isinstance(geom, SVGGeometrySYMBOL):
-                nodeMatrix = geom.getNodeMatrix()
-
-            if nodeMatrix:
-                self._pushMatrix(nodeMatrix)
-
-            if geomMatrix:
-                self._pushMatrix(geomMatrix)
-
-            if isinstance(geom, SVGGeometryContainer):
-                geometries = geom.getGeometries()
-            else:
-                geometries = [geom]
-
-            for g in geometries:
-                g.createGeom()
-
-            if geomMatrix:
-                self._popMatrix()
-
-            if nodeMatrix:
-                self._popMatrix()
-
             self._popMatrix()
 
             self._popRect()
@@ -1345,7 +1332,7 @@
             bezt.handle_left_type = 'VECTOR'
             bezt.handle_right_type = 'VECTOR'
 
-    def _doCreateGeom(self):
+    def _doCreateGeom(self, instancing):
         """
         Create real geometries
         """
@@ -1467,7 +1454,7 @@
         self._rx = self._node.getAttribute('rx') or '0'
         self._ry = self._node.getAttribute('ry') or '0'
 
-    def _doCreateGeom(self):
+    def _doCreateGeom(self, instancing):
         """
         Create real geometries
         """
@@ -1585,7 +1572,7 @@
         self._x2 = self._node.getAttribute('x2') or '0'
         self._y2 = self._node.getAttribute('y2') or '0'
 
-    def _doCreateGeom(self):
+    def _doCreateGeom(self, instancing):
         """
         Create real geometries
         """
@@ -1666,7 +1653,7 @@
                 self._points.append((float(prev), float(p)))
                 prev = None
 
-    def _doCreateGeom(self):
+    def _doCreateGeom(self, instancing):
         """
         Create real geometries
         """
@@ -1728,7 +1715,7 @@
     Main geometry holder
     """
 
-    def _doCreateGeom(self):
+    def _doCreateGeom(self, instancing):
         """
         Create real geometries
         """
@@ -1738,7 +1725,7 @@
         self._pushMatrix(self.getNodeMatrix())
         self._pushRect(rect)
 
-        super()._doCreateGeom()
+        super()._doCreateGeom(False)
 
         self._popRect()
         self._popMatrix()
@@ -1824,7 +1811,7 @@
 
     loader = SVGLoader(filepath)
     loader.parse()
-    loader.createGeom()
+    loader.createGeom(False)
 
 
 def load(operator, context, filepath=""):



More information about the Bf-extensions-cvs mailing list