예제 #1
0
 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)
예제 #2
0
 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)
예제 #3
0
 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)
예제 #4
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)])
예제 #5
0
 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)
예제 #6
0
 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))
예제 #7
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)])
예제 #8
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)])
예제 #9
0
 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))
예제 #10
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))])
예제 #11
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))])
예제 #12
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)])
예제 #13
0
 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)])
예제 #14
0
 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)])