Don't generate a PaintColrLayers for a list of 1

This commit is contained in:
rsheeter 2020-11-04 21:59:30 -08:00
parent 9698c71198
commit 5c83b5be47
2 changed files with 14 additions and 7 deletions

View File

@ -524,8 +524,13 @@ class LayerCollector:
layerGlyph, paint = paint layerGlyph, paint = paint
return buildPaintGlyph(self, layerGlyph, paint) return buildPaintGlyph(self, layerGlyph, paint)
elif isinstance(paint, list): elif isinstance(paint, list):
# implicit PaintColrLayers # implicit PaintColrLayers for a list of > 1
return self.buildColrLayers(paint) if len(paint) == 0:
raise ValueError("An empty list is hard to paint")
elif len(paint) == 1:
return self.build(paint[0])
else:
return self.buildColrLayers(paint)
elif isinstance(paint, collections.abc.Mapping): elif isinstance(paint, collections.abc.Mapping):
kwargs = dict(paint) kwargs = dict(paint)
fmt = kwargs.pop("format") fmt = kwargs.pop("format")

View File

@ -643,7 +643,7 @@ def assertNoV0Content(colr):
def test_build_layerv1list_empty(): def test_build_layerv1list_empty():
# Nobody uses PaintColorLayers (format 8), no layerlist # Nobody uses PaintColrLayers (format 8), no layerlist
colr = builder.buildCOLR( colr = builder.buildCOLR(
{ {
"a": { "a": {
@ -651,7 +651,8 @@ def test_build_layerv1list_empty():
"paint": {"format": 1, "paletteIndex": 2, "alpha": 0.8}, "paint": {"format": 1, "paletteIndex": 2, "alpha": 0.8},
"glyph": "b", "glyph": "b",
}, },
"b": { # A list of 1 shouldn't become a PaintColrLayers
"b": [{
"format": 4, # PaintGlyph "format": 4, # PaintGlyph
"paint": { "paint": {
"format": 2, "format": 2,
@ -664,7 +665,7 @@ def test_build_layerv1list_empty():
"p2": (2, 2), "p2": (2, 2),
}, },
"glyph": "bb", "glyph": "bb",
}, }],
} }
) )
@ -836,7 +837,7 @@ class BuildCOLRTest(object):
"p1": (3, 4), "p1": (3, 4),
"p2": (2, 2), "p2": (2, 2),
}, },
) ),
], ],
} }
) )
@ -860,7 +861,8 @@ class BuildCOLRTest(object):
"p1": (3, 4), "p1": (3, 4),
"p2": (2, 2), "p2": (2, 2),
}, },
) ),
("f", {"format": 1, "paletteIndex": 2, "alpha": 0.8}),
], ],
} }
) )