|
From: Michael J G. <mic...@us...> - 2016-09-06 12:00:41
|
The new parallel deformer code chokes on empty normsubpaths (via an
assertion). But these are common, the old parallel deformer coped with
them, and for an empty normsubpath there is nothing to deform.
So do just that for empty normsubpaths: nothing (rather than assert)
Signed-off-by: Michael J Gruber <mic...@us...>
---
Mostly minimal example:
----->%-----
from pyx import *
c = canvas.canvas()
scale = 5
sfac = 0.01 * scale
integral = text.text(0,0, r"$\int$", [trafo.scale(scale)])
intpath = integral.textpath().reversed()
c.stroke(intpath, [deformer.parallel(sfac)])
c.fill(intpath,)
c.writePDFfile()
----->%-----
This works with the old parallel deformer, as well as with the suggested patch.
With the unpatched new parallel deformer, one gets:
Traceback (most recent call last):
File "deformernew.py", line 12, in <module>
c.stroke(intpath, [deformer.parallel(sfac)])
File "/usr/lib64/python3.5/site-packages/pyx/canvas.py", line 383, in stroke
self.draw(path, [deco.stroked]+list(attrs))
File "/usr/lib64/python3.5/site-packages/pyx/canvas.py", line 362, in draw
path = adeformer.deform(path)
File "/usr/lib64/python3.5/site-packages/pyx/deformer.py", line 890, in deform
parallel_normpath, tmp1, tmp2, par2orig = self.deformsubpath(nsp)
File "/usr/lib64/python3.5/site-packages/pyx/deformer.py", line 910, in deformsubpath
assert len(orig_nsp.normsubpathitems) != 0
AssertionError
pyx/deformer.py | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/pyx/deformer.py b/pyx/deformer.py
index 6de35e1..1bbaa7c 100644
--- a/pyx/deformer.py
+++ b/pyx/deformer.py
@@ -907,11 +907,12 @@ class parallel(baseclasses.deformer): # <<<
dist = self.dist_pt
epsilon = orig_nsp.epsilon
- assert len(orig_nsp.normsubpathitems) != 0
+
+ if len(orig_nsp.normsubpathitems) == 0:
+ return normpath.normpath([]), None, None, {}
# avoid too small dists: we would run into instabilities
if abs(dist) < abs(epsilon):
- assert orig_nsp.normsubpathitems
par_to_orig = {}
for nspitem in orig_nsp:
par_to_orig[nspitem] = nspitem
--
2.10.0.rc2.333.g8ef2d05
|