removeDefaultAttributeValue: Special-case order attribute
Scour tried to handle "order" attribute as a SVGLength. However, the "order" attribute *can* consist of two integers according to the [SVG 1.1 Specification] and SVGLength is not designed to handle that. With this change, we now pretend that "order" is a string, which side steps this issue. [SVG 1.1 Specification]: https://www.w3.org/TR/SVG11/single-page.html#filters-feConvolveMatrixElementOrderAttribute Closes: #189 Signed-off-by: Niels Thykier <niels@thykier.net>
This commit is contained in:
parent
8ddb7d8913
commit
a459d629c1
3 changed files with 27 additions and 1 deletions
|
|
@ -1848,7 +1848,12 @@ default_attributes = [
|
|||
DefaultAttribute('offset', 0, elements=['feFuncA', 'feFuncB', 'feFuncG', 'feFuncR']),
|
||||
DefaultAttribute('operator', 'over', elements=['feComposite']),
|
||||
DefaultAttribute('operator', 'erode', elements=['feMorphology']),
|
||||
DefaultAttribute('order', 3, elements=['feConvolveMatrix']),
|
||||
# We pretend order is a string (because handling it as an
|
||||
# SVGLength will cause issues when order is two integers). Note
|
||||
# that order must be exactly one or two integers (no units or
|
||||
# fancy numbers), so working with it a string will generally just
|
||||
# work.
|
||||
DefaultAttribute('order', '3', elements=['feConvolveMatrix']),
|
||||
DefaultAttribute('pointsAtX', 0, elements=['feSpotLight']),
|
||||
DefaultAttribute('pointsAtY', 0, elements=['feSpotLight']),
|
||||
DefaultAttribute('pointsAtZ', 0, elements=['feSpotLight']),
|
||||
|
|
|
|||
10
testscour.py
10
testscour.py
|
|
@ -1570,6 +1570,16 @@ class RemoveDefaultGradFYValue(unittest.TestCase):
|
|||
'fy matching cy not removed')
|
||||
|
||||
|
||||
class RemoveDefaultAttributeOrderSVGLengthCrash(unittest.TestCase):
|
||||
|
||||
# Triggered a crash in v0.36
|
||||
def runTest(self):
|
||||
try:
|
||||
scourXmlFile('unittests/remove-default-attr-order.svg')
|
||||
except AttributeError:
|
||||
self.fail("Processing the order attribute triggered an AttributeError ")
|
||||
|
||||
|
||||
class CDATAInXml(unittest.TestCase):
|
||||
|
||||
def runTest(self):
|
||||
|
|
|
|||
11
unittests/remove-default-attr-order.svg
Normal file
11
unittests/remove-default-attr-order.svg
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink= "http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<filter id="filter" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
|
||||
<feConvolveMatrix order="3 1" kernelMatrix="0.3333 0.3333 0.3333" edgeMode="none"/>
|
||||
</filter>
|
||||
</defs>
|
||||
<!-- Use the filter (otherwise, scour discards it before it trips over it) -->
|
||||
<image id="png" x="10" y="30" width="150" height="50" xlink:href="raster.png"
|
||||
filter="url(#filter)"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 562 B |
Loading…
Add table
Add a link
Reference in a new issue