Exemplo n.º 1
0
    def test_optimize(self):
        octagon = Pen(PathBuilder())
        octagon.move_to(2, 0)
        octagon.line_to(3, 0)
        octagon.line_to(4, 0)
        octagon.line_to(5, 1)
        octagon.line_to(6, 2)
        octagon.line_to(6, 3)
        octagon.line_to(6, 4)
        octagon.line_to(5, 5)
        octagon.line_to(4, 6)
        octagon.line_to(3, 6)
        octagon.line_to(2, 6)
        octagon.line_to(1, 5)
        octagon.line_to(0, 4)
        octagon.line_to(0, 3)
        octagon.line_to(0, 2)
        octagon.line_to(1, 1)
        octagon.line_to(2, 0)

        reference = Pen(PathBuilder())
        reference.move_to(2, 0)
        reference.line_to(4, 0)
        reference.line_to(6, 2)
        reference.line_to(6, 4)
        reference.line_to(4, 6)
        reference.line_to(2, 6)
        reference.line_to(0, 4)
        reference.line_to(0, 2)
        reference.line_to(2, 0)

        octagon.pb.optimize()
        self.assertEqual(octagon.pb._segments, reference.pb._segments)
Exemplo n.º 2
0
 def test_draw_black(self):
     s = Smoother([[0]])
     pb = PathBuilder()
     s._draw_black(pb, 20, 30, BLACK)
     pb.optimize()
     self.assertEqual(pb.generate_paths(), [[(20, 30), (30, 30), (30, 40),
                                             (20, 40)]])
Exemplo n.º 3
0
 def test_cancel(self):
     pb = PathBuilder()
     p1 = (10, 10)
     p2 = (20, 10)
     pb.add_segment(p1, p2)
     pb.add_segment(p2, p1)
     self.assertEqual(pb._segments, {})
Exemplo n.º 4
0
 def test_draw_white2(self):
     s = Smoother([[0]])
     pb = PathBuilder()
     s._draw_white(pb, 0, 0, NW | NE | SE | SW)
     pb.optimize()
     self.assertEqual(pb.generate_paths(),
                      [[(0, 0), (10, 0), (10, 10),
                        (0, 10)], [(2, 5), (5, 8), (8, 5), (5, 2)]])
Exemplo n.º 5
0
 def test_draw_black2(self):
     s = Smoother([[0]])
     pb = PathBuilder()
     s._draw_black(pb, 0, 0, BLACK | NW | NE | SE | SW)
     pb.optimize()
     self.assertEqual(pb.generate_paths(), [[(0, 3), (3, 0), (7, 0),
                                             (10, 3), (10, 7), (7, 10),
                                             (3, 10), (0, 7)]])
Exemplo n.º 6
0
 def vectorize(self, ox=0, oy=0):
     pb = PathBuilder()
     for y in range(self.height):
         for x in range(self.width):
             n = self._bmp[y][x]
             if n & BLACK:
                 self._draw_black(pb, x * 10 + ox, y * 10 + oy, n)
             else:
                 self._draw_white(pb, x * 10 + ox, y * 10 + oy, n)
     pb.optimize()
     return pb.generate_paths()
Exemplo n.º 7
0
 def test_optimize_seq(self):
     pen = Pen(PathBuilder())
     pen.move_to(0, 0)
     pen.line_to(0, 1)
     pen.line_to(0, 2)
     pen.line_to(0, 3)
     pen.line_to(3, 3)
     pen.line_to(0, 0)
     pen.pb.optimize()
     self.assertEqual(pen.pb._segments, {
         (0, 0): set([(0, 3)]),
         (0, 3): set([(3, 3)]),
         (3, 3): set([(0, 0)])
     })
Exemplo n.º 8
0
 def test_generate_paths(self):
     pen = Pen(PathBuilder())
     pen.move_to(0, 0)
     pen.line_to(3, 0)
     pen.line_to(3, 3)
     pen.line_to(0, 3)
     pen.line_to(0, 0)
     pen.move_to(1, 1)
     pen.line_to(1, 2)
     pen.line_to(2, 2)
     pen.line_to(2, 1)
     pen.line_to(1, 1)
     self.assertEqual(pen.pb.generate_paths(),
                      [[(0, 0), (3, 0), (3, 3),
                        (0, 3)], [(1, 1), (1, 2), (2, 2), (2, 1)]])
Exemplo n.º 9
0
 def test_draw_white(self):
     s = Smoother([[0]])
     pb = PathBuilder()
     s._draw_white(pb, 20, 30, NW)
     pb.optimize()
     self.assertEqual(pb.generate_paths(), [[(20, 30), (27, 30), (20, 37)]])
Exemplo n.º 10
0
 def test_add(self):
     pb = PathBuilder()
     p1 = (10, 10)
     p2 = (20, 10)
     pb.add_segment(p1, p2)
     self.assertEqual(pb._segments, {p1: set([p2])})