_table_hdr_t::_table_hdr_t(std::istream &stream) :
	header(stream),
	version(fetch_32(stream)),
	//	n_w(fetch_32(stream)),
	own_num_states(fetch_32(stream)),
	size_each((unsigned)ceil(log(own_num_states))), // TODO: use int arithm
	//	center((n_w - 1)>>1, (n_w - 1)>>1),
	_n_in(fetch_n(stream)),
	_n_out(fetch_n(stream)),
	center(_n_in.center()),
	center_out(_n_out.center()), // TODO: correct?
	bw(_n_in.max_w()),
	_is_dead(fetch_32(stream))
{
	std::cerr << "Number of states:" << own_num_states << std::endl;
	std::cerr << "N in: " << _n_in << std::endl;
	std::cerr << "N out: " << _n_out << std::endl;
}
_table_hdr_t::n_t _table_hdr_t::fetch_n(std::istream &stream) const
{
	std::vector<point> v(fetch_32(stream));
	for(std::size_t i = 0; i < v.size(); ++i)
	{
		coord_t x = fetch_8(stream);
		coord_t y = fetch_8(stream);
		v[i] = point(x, y);
	}
	return n_t(std::move(v));
}
static uint32_t *
_pixman_image_get_scanline_generic_float (pixman_iter_t * iter,
					  const uint32_t *mask)
{
    pixman_iter_get_scanline_t fetch_32 = iter->data;
    uint32_t *buffer = iter->buffer;

    fetch_32 (iter, NULL);

    pixman_expand_to_float ((argb_t *)buffer, buffer, PIXMAN_a8r8g8b8, iter->width);

    return iter->buffer;
}