def __init__(self, *args, **kwargs): super(MakechrGui, self).__init__(*args, **kwargs) self.processor = image_processor.ImageProcessor() self.renderer = view_renderer.ViewRenderer(scale=1) self.inputImagePath = None self.cursor = None self.manager = None self.watcher = file_modify_watcher.FileModifyWatcher() self.messageTimer = None self.Create() self.Bind(wx.EVT_CLOSE, self._close_handler)
def create_views(self, mem, args, img, scale=None): if args.use_legacy_views: renderer = view_renderer.ViewRenderer(is_legacy=True) else: renderer = view_renderer.ViewRenderer(is_legacy=False, scale=scale) if args.palette_view: renderer.create_palette_view(args.palette_view, mem, args.is_sprite) if args.colorization_view: renderer.create_colorization_view(args.colorization_view, mem, args.is_sprite) if args.reuse_view: nt_inverter = mem.build_nt_inverter() renderer.create_reuse_view(args.reuse_view, mem, nt_inverter) if args.nametable_view: renderer.create_nametable_view(args.nametable_view, mem) if args.chr_view: renderer.create_chr_view(args.chr_view, mem) if args.grid_view: renderer.create_grid_view(args.grid_view, img) if args.free_zone_view: renderer.create_free_zone_view(args.free_zone_view, img, mem)
def handle_errors(self, error_provider, img, args): es = error_provider.get() sys.stderr.write('Found {0} error{1}:\n'.format( len(es), 's'[len(es) == 1:])) for e in es: sys.stderr.write('{0} {1}\n'.format(type(e).__name__, e)) if args.error_outfile: sys.stderr.write('Errors displayed in "{0}"\n'.format(args.error_outfile)) errors_with_dups = error_provider.get(include_dups=True) renderer = view_renderer.ViewRenderer() renderer.create_error_view(args.error_outfile, img, errors_with_dups) else: sys.stderr.write('To see errors visually, use the ' + '"-e <error_image.png>" command-line option.\n')
def test_error_too_many_subsets(self): """If image colors cannot be merged into a valid palette, throw error.""" img = Image.open('testdata/full-image-conflict.png') self.process_image(img) self.args.error_outfile = self.args.tmppng('error') self.assertTrue(self.err.has()) es = self.err.get() expect_errors = [ 'PaletteTooManySubsets - valid: ' + '30-28-19-14,38-30-16-01\n' + 'subsets that can\'t be merged: ' + '[30-0c-0b,31-30-04,34-30-07]' ] actual_errors = ['%s %s' % (type(e).__name__, str(e)) for e in es] self.assertEqual(actual_errors, expect_errors) expect_list_blocks = [[1, 4], [2, 4], [3, 4]] self.assertEqual(es[0].list_blocks, expect_list_blocks) renderer = view_renderer.ViewRenderer() renderer.create_error_view(self.args.error_outfile, img, es) self.assert_file_eq(self.args.error_outfile, 'testdata/errors-conflict-palette.png')
def test_error_image_small_square(self): """Multiple errors, with a 128x128 image, outputs correctly.""" img = Image.open('testdata/full-image-small-square-with-error.png') self.process_image(img) self.args.error_outfile = self.args.tmppng('error') self.create_output() self.assertTrue(self.err.has()) errs = self.err.get() expect_errors = [ 'PaletteOverflowError @ block (1y,3x)', 'PaletteOverflowError @ tile (2y,10x)', ('CouldntConvertRGB : R ff, G ff, B 00' + ' @ tile (4y,1x) / pixel (33y,10x)') ] actual_errors = ['%s %s' % (type(e).__name__, str(e)) for e in errs] self.assertEqual(actual_errors, expect_errors) renderer = view_renderer.ViewRenderer() renderer.create_error_view(self.args.error_outfile, img, errs) self.assert_file_eq(self.args.error_outfile, 'testdata/errors-full-image-small-square.png')