Esempio n. 1
0
    def test_size(self):
        pd = PixelData([[1, 1], [1, 1], [1, 1]])
        self.assertEqual((2, 3), pd.size)
        self.assertEqual((pd.size_x, pd.size_y), pd.size)

        pd = PixelData([[1, 1, 1], [1, 1, 1]])
        self.assertEqual((3, 2), pd.size)
        self.assertEqual((pd.size_x, pd.size_y), pd.size)

        pd = PixelData(mkpixels(EAR))
        self.assertEqual((6, 7), pd.size)
        self.assertEqual((pd.size_x, pd.size_y), pd.size)
Esempio n. 2
0
def export_image(options, name):
    name = name.upper()
    print("Processing %s..." % (name,))
    data = PixelData(test_depixeler.mkpixels(getattr(test_depixeler, name)))
    base_filename = name.lower()
    outdir = options.output_dir

    print("    Writing pixels PNG...")
    writer = io_data.get_writer(data, base_filename, 'png')
    writer.export_pixels(outdir)
Esempio n. 3
0
def process_file(options, filename):
    print "Processing %s..." % (filename, )
    data = PixelData(io_data.read_pixels(filename, 'png'))
    base_filename = os.path.splitext(os.path.split(filename)[-1])[0]
    outdir = options.output_dir

    filetypes = []
    if options.to_png:
        filetypes.append('PNG')
    if options.to_svg:
        filetypes.append('SVG')

    if options.write_pixels:
        for ft in filetypes:
            print "    Writing pixels %s..." % (ft, )
            writer = io_data.get_writer(data, base_filename, ft.lower())
            writer.export_pixels(outdir)

    data.depixel()

    if options.write_grid:
        for ft in filetypes:
            print "    Writing grid %s..." % (ft, )
            writer = io_data.get_writer(data, base_filename, ft.lower())
            writer.export_grid(outdir, options.draw_nodes)

    if options.write_shapes:
        for ft in filetypes:
            print "    Writing shapes %s..." % (ft, )
            writer = io_data.get_writer(data, base_filename, ft.lower())
            writer.export_shapes(outdir, options.draw_nodes)

    if options.write_smooth:
        for ft in filetypes:
            print "    Writing smooth shapes %s..." % (ft, )
            writer = io_data.get_writer(data, base_filename, ft.lower())
            writer.export_smooth(outdir, options.draw_nodes)
Esempio n. 4
0
    def test_deform_grid(self):
        tg = nx.Graph()
        tg.add_nodes_from([
            (0, 0),
            (0, 1),
            (0, 2),
            (0, 3),
            (1, 0),
            (1, 1),
            (1, 2),
            (1, 3),
            (1.25, 1.25),
            (1.25, 1.75),
            (1.75, 1.25),
            (1.75, 2.25),
            (2, 0),
            (2, 1),
            (2, 3),
            (2.25, 1.75),
            (3, 0),
            (3, 1),
            (3, 2),
            (3, 3),
            (4, 0),
            (4, 1),
            (4, 2),
            (4, 3),
        ])
        tg.add_edges_from([
            ((0, 0), (0, 1)),
            ((0, 1), (0, 2)),
            ((0, 3), (0, 2)),
            ((1, 0), (0, 0)),
            ((1, 0), (1, 1)),
            ((1, 0), (2, 0)),
            ((1, 1), (0, 1)),
            ((1, 2), (0, 2)),
            ((1, 3), (0, 3)),
            ((1, 3), (1, 2)),
            ((1, 3), (2, 3)),
            ((1.25, 1.25), (1, 1)),
            ((1.25, 1.25), (1.75, 1.25)),
            ((1.25, 1.75), (1, 2)),
            ((1.25, 1.75), (1.25, 1.25)),
            ((1.25, 1.75), (1.75, 2.25)),
            ((2, 1), (1.75, 1.25)),
            ((2, 1), (2, 0)),
            ((2, 1), (3, 1)),
            ((2, 3), (1.75, 2.25)),
            ((2.25, 1.75), (1.75, 1.25)),
            ((2.25, 1.75), (1.75, 2.25)),
            ((2.25, 1.75), (3, 2)),
            ((3, 0), (2, 0)),
            ((3, 0), (3, 1)),
            ((3, 0), (4, 0)),
            ((3, 2), (3, 1)),
            ((3, 2), (4, 2)),
            ((3, 3), (2, 3)),
            ((3, 3), (3, 2)),
            ((3, 3), (4, 3)),
            ((4, 0), (4, 1)),
            ((4, 1), (3, 1)),
            ((4, 1), (4, 2)),
            ((4, 2), (4, 3)),
        ])

        pd = PixelData(mkpixels(ISLAND))
        pd.depixel()

        self.assertEqual(sorted(tg.nodes()), sorted(pd.grid_graph.nodes()))
        self.assertEqual(sort_edges(tg.edges()),
                         sort_edges(pd.grid_graph.edges()))
Esempio n. 5
0
    def test_remove_diagonals(self):
        tg = nx.Graph()
        tg.add_nodes_from([
            ((0, 0), {
                'value': 1,
                'corners': set([(0, 0), (0, 1), (1, 0), (1, 1)])
            }),
            ((0, 1), {
                'value': 1,
                'corners': set([(0, 1), (0, 2), (1, 1), (1, 2)])
            }),
            ((0, 2), {
                'value': 1,
                'corners': set([(0, 2), (0, 3), (1, 2), (1, 3)])
            }),
            ((1, 0), {
                'value': 1,
                'corners': set([(1, 0), (1, 1), (2, 0), (2, 1)])
            }),
            ((1, 1), {
                'value': 0,
                'corners': set([(1, 1), (1, 2), (2, 1), (2, 2)])
            }),
            ((1, 2), {
                'value': 1,
                'corners': set([(1, 2), (1, 3), (2, 2), (2, 3)])
            }),
            ((2, 0), {
                'value': 1,
                'corners': set([(2, 0), (2, 1), (3, 0), (3, 1)])
            }),
            ((2, 1), {
                'value': 1,
                'corners': set([(2, 1), (2, 2), (3, 1), (3, 2)])
            }),
            ((2, 2), {
                'value': 0,
                'corners': set([(2, 2), (2, 3), (3, 2), (3, 3)])
            }),
            ((3, 0), {
                'value': 1,
                'corners': set([(3, 0), (3, 1), (4, 0), (4, 1)])
            }),
            ((3, 1), {
                'value': 1,
                'corners': set([(3, 1), (3, 2), (4, 1), (4, 2)])
            }),
            ((3, 2), {
                'value': 0,
                'corners': set([(3, 2), (3, 3), (4, 2), (4, 3)])
            }),
        ])
        tg.add_edges_from([
            ((0, 0), (1, 0), {
                'diagonal': False
            }),
            ((0, 1), (0, 0), {
                'diagonal': False
            }),
            ((0, 1), (0, 2), {
                'diagonal': False
            }),
            ((0, 1), (1, 0), {
                'diagonal': True
            }),
            ((0, 1), (1, 2), {
                'diagonal': True
            }),
            ((1, 1), (2, 2), {
                'diagonal': True
            }),
            ((1, 2), (0, 2), {
                'diagonal': False
            }),
            # ((1, 2), (2, 1), {'diagonal': True}),
            ((2, 0), (1, 0), {
                'diagonal': False
            }),
            ((2, 1), (1, 0), {
                'diagonal': True
            }),
            ((2, 1), (2, 0), {
                'diagonal': False
            }),
            ((3, 0), (2, 0), {
                'diagonal': False
            }),
            # ((3, 0), (2, 1), {'diagonal': True}),
            ((3, 0), (3, 1), {
                'diagonal': False
            }),
            # ((3, 1), (2, 0), {'diagonal': True}),
            ((3, 1), (2, 1), {
                'diagonal': False
            }),
            ((3, 2), (2, 2), {
                'diagonal': False
            }),
        ])

        pd = PixelData(mkpixels(ISLAND))
        pd.make_pixel_graph()
        pd.remove_diagonals()
        self.assertEqual(sorted(tg.nodes(data=True)),
                         sorted(pd.pixel_graph.nodes(data=True)))
        self.assertEqual(sort_edges(tg.edges(data=True)),
                         sort_edges(pd.pixel_graph.edges(data=True)))
Esempio n. 6
0
 def get_heuristics(self, txt_data):
     pd = PixelData(mkpixels(txt_data))
     pd.make_pixel_graph()
     return IterativeFinalShapeHeuristics(pd.pixel_graph)
Esempio n. 7
0
 def get_heuristics(self, txt_data):
     pd = PixelData(mkpixels(txt_data))
     pd.make_pixel_graph()
     return FullyConnectedHeuristics(pd.pixel_graph)