def testParseCurveSubpaths(self): gs = svg._SState() z = (0.0, 0.0) (i, sp, _) = svg._ParseSubpath("M 0 0 C 1,1 2,1 0,3", 0, z, gs) self.assertEqual(sp.segments, [('B', (0.0, 0.0), (0.0, 3.0), (1.0, 1.0), (2.0, 1.0))]) (i, sp, _) = svg._ParseSubpath("M0 0 C 1,1 2,1 0,3 S 4,5 6,7", 0, z, gs) self.assertEqual(len(sp.segments), 2)
def testParseLength(self): gs = svg._SState() gs.dpi = 200 (i, v) = svg._ParseLength("11", gs, 0) self.assertEqual(v, 11.0) (i, v) = svg._ParseLength("-3.5 px", gs, 0) self.assertEqual(v, -3.5) self.assertEqual(i, len("-3.5 px")) (i, v) = svg._ParseLength("3in", gs, 0) self.assertEqual(v, 600.0)
def testProcessEllipse(self): gs = svg._SState() art = geom.Art() s = '<ellipse cx="10" cy="20" rx="100px" ry="50px" fill="black"/>' svg._ProcessEllipse(GetNode(s), art, gs) self.assertEqual(art.paths[0].subpaths[0].segments, [('A', (110.0, 20.0), (10.0, 70.0), (100.0, 50.0), 0.0, False, False), ('A', (10.0, 70.0), (-90.0, 20.0), (100.0, 50.0), 0.0, False, False), ('A', (-90.0, 20.0), (10.0, -30.0), (100.0, 50.0), 0.0, False, False), ('A', (10.0, -30.0), (110.0, 20.0), (100.0, 50.0), 0.0, False, False)])
def testProcessCircle(self): gs = svg._SState() art = geom.Art() s = '<circle cx="600" cy="200" r="100" fill="red"/>' svg._ProcessCircle(GetNode(s), art, gs) self.assertEqual(art.paths[0].subpaths[0].segments, [('A', (700.0, 200.0), (600.0, 300.0), (100.0, 100.0), 0.0, False, False), ('A', (600.0, 300.0), (500.0, 200.0), (100.0, 100.0), 0.0, False, False), ('A', (500.0, 200.0), (600.0, 100.0), (100.0, 100.0), 0.0, False, False), ('A', (600.0, 100.0), (700.0, 200.0), (100.0, 100.0), 0.0, False, False)]) self.assertEqual(art.paths[0].filled, True) self.assertEqual(art.paths[0].fillpaint.color, (1.0, 0.0, 0.0))
def testProcessRect(self): gs = svg._SState() art = geom.Art() s = '<rect x="1" y="1" width="100" height="200" fill="none" stroke="blue"/>' svg._ProcessRect(GetNode(s), art, gs) self.assertEqual(art.paths[0].subpaths[0].segments, [('L', (1.0, 1.0), (101.0, 1.0)), ('L', (101.0, 1.0), (101.0, 201.0)), ('L', (101.0, 201.0), (1.0, 201.0)), ('L', (1.0, 201.0), (1.0, 1.0))]) s = '<rect width="10" height="10" rx="2" fill="black"/>' art = geom.Art() svg._ProcessRect(GetNode(s), art, gs) self.assertEqual(art.paths[0].subpaths[0].segments, [('L', (2.0, 0.0), (8.0, 0.0)), ('A', (8.0, 0.0), (10.0, 2.0), (2.0, 2.0), 0.0, False, False), ('L', (10.0, 2.0), (10.0, 8.0)), ('A', (10.0, 8.0), (8.0, 10.0), (2.0, 2.0), 0.0, False, False), ('L', (8.0, 10.0), (2.0, 10.0)), ('A', (2.0, 10.0), (0.0, 8.0), (2.0, 2.0), 0.0, False, False), ('L', (0.0, 8.0), (0.0, 2.0)), ('A', (0.0, 2.0), (2.0, 0.0), (2.0, 2.0), 0.0, False, False)])
def testParseLineSubpaths(self): gs = svg._SState() z = (0.0, 0.0) (i, sp, endpt) = svg._ParseSubpath("M 0.0 0.0 L 1.0 2.0", 0, z, gs) self.assertEqual(sp.closed, False) self.assertEqual(sp.segments, [('L', (0.0,0.0), (1.0,2.0))]) (i, sp, endpt) = svg._ParseSubpath( \ "M 2.000 -1.000 L 2.000 1.000 L 0.000 1.000 L 2.000 -1.000 Z", 0, (10.0, 20.0), gs) self.assertEqual(sp.closed, True) self.assertEqual(sp.segments, [('L', (2.0, -1.0), (2.0, 1.0)), ('L', (2.0, 1.0), (0.0, 1.0)), ('L', (0.0, 1.0), (2.0, -1.0))]) self.assertEqual(endpt, (2.0, -1.0)) (i, sp, endpt) = svg._ParseSubpath("m 1.0 0.0 l 2.0 3.0", 0, (5.0, 6.0), gs) self.assertEqual(sp.segments, [('L', (6.0, 6.0), (8.0, 9.0))]) (i, sp, _) = svg._ParseSubpath("m 1.0 0 h 3.5 v 2.0", 0, z, gs) self.assertEqual(sp.segments, [('L', (1.0, 0.0), (4.5, 0.0)), ('L', (4.5, 0.0), (4.5, 2.0))])
def testParseLineSubpaths(self): gs = svg._SState() z = (0.0, 0.0) (i, sp, endpt) = svg._ParseSubpath("M 0.0 0.0 L 1.0 2.0", 0, z, gs) self.assertEqual(sp.closed, False) self.assertEqual(sp.segments, [('L', (0.0, 0.0), (1.0, 2.0))]) (i, sp, endpt) = svg._ParseSubpath( \ "M 2.000 -1.000 L 2.000 1.000 L 0.000 1.000 L 2.000 -1.000 Z", 0, (10.0, 20.0), gs) self.assertEqual(sp.closed, True) self.assertEqual(sp.segments, [('L', (2.0, -1.0), (2.0, 1.0)), ('L', (2.0, 1.0), (0.0, 1.0)), ('L', (0.0, 1.0), (2.0, -1.0))]) self.assertEqual(endpt, (2.0, -1.0)) (i, sp, endpt) = svg._ParseSubpath("m 1.0 0.0 l 2.0 3.0", 0, (5.0, 6.0), gs) self.assertEqual(sp.segments, [('L', (6.0, 6.0), (8.0, 9.0))]) (i, sp, _) = svg._ParseSubpath("m 1.0 0 h 3.5 v 2.0", 0, z, gs) self.assertEqual(sp.segments, [('L', (1.0, 0.0), (4.5, 0.0)), ('L', (4.5, 0.0), (4.5, 2.0))])
def testProcessRect(self): gs = svg._SState() art = geom.Art() s = '<rect x="1" y="1" width="100" height="200" fill="none" stroke="blue"/>' svg._ProcessRect(GetNode(s), art, gs) self.assertEqual(art.paths[0].subpaths[0].segments, [('L', (1.0, 1.0), (101.0, 1.0)), ('L', (101.0, 1.0), (101.0, 201.0)), ('L', (101.0, 201.0), (1.0, 201.0)), ('L', (1.0, 201.0), (1.0, 1.0))]) s = '<rect width="10" height="10" rx="2" fill="black"/>' art = geom.Art() svg._ProcessRect(GetNode(s), art, gs) self.assertEqual( art.paths[0].subpaths[0].segments, [('L', (2.0, 0.0), (8.0, 0.0)), ('A', (8.0, 0.0), (10.0, 2.0), (2.0, 2.0), 0.0, False, False), ('L', (10.0, 2.0), (10.0, 8.0)), ('A', (10.0, 8.0), (8.0, 10.0), (2.0, 2.0), 0.0, False, False), ('L', (8.0, 10.0), (2.0, 10.0)), ('A', (2.0, 10.0), (0.0, 8.0), (2.0, 2.0), 0.0, False, False), ('L', (0.0, 8.0), (0.0, 2.0)), ('A', (0.0, 2.0), (2.0, 0.0), (2.0, 2.0), 0.0, False, False)])
def testArcSubpaths(self): gs = svg._SState() z = (0.0, 0.0) (i, sp, _) = svg._ParseSubpath("M 0 0 A10,10 30 0 1 8.0 9.5", 0, z, gs) self.assertEqual(sp.segments, [('A', (0.0, 0.0), (8.0, 9.5), (10.0, 10.0), 30.0, False, True)])