Exemplo n.º 1
0
void
DensityMap<Listener,Dim>
::receiveLocalizations(const EngineResult& er)
{
    if ( er.size() == 0 ) return;
    this->listener->announce(er);

    typedef boost::units::quantity<camera::length,int> 
        pixel_count;

    typedef Eigen::Matrix< pixel_count, Dim, 1> Position;

    typename Coordinates<Dim>::Result r( er.size() );
    int point_count = strategy->bin_points(er, r);

    typedef std::vector< typename Interpolator<Dim>::ResultPoint > Points;
    Points points;
    for (int i = 0; i < point_count; i++) {
        const Localization& l = er[i];

        float strength = r[i].intensity;

        this->listener->announce( l );
        this->binningInterpolator->interpolate( r[i].position, r[i].position_uncertainty, points );

        for ( typename Points::const_iterator point = points.begin(); point != points.end(); ++point ) {
            const typename BinnedImage::Position p = point->position - crop;
            if ( ! base_image.contains( p ) ) continue;
            float val = strength * point->relative_value;
            float old_val = base_image(p);
            float new_val = (base_image(p) += val);
            this->listener->updatePixel( p, old_val, new_val );
        }
    }
}
Exemplo n.º 2
0
void terrain_palette::draw_item(const t_translation::t_terrain& terrain,
		surface& image, std::stringstream& tooltip_text) {

	const t_translation::t_terrain base_terrain =
			map().get_terrain_info(terrain).default_base();

	//Draw default base for overlay terrains
	if(base_terrain != t_translation::NONE_TERRAIN) {
		const std::string base_filename = map().get_terrain_info(base_terrain).editor_image();
		surface base_image(image::get_image(base_filename));

		if(base_image == nullptr) {
			tooltip_text << "BASE IMAGE NOT FOUND\n";
			ERR_ED << "image for terrain : '" << base_filename << "' not found" << std::endl;
			base_image = image::get_image(game_config::images::missing);
			if (base_image == nullptr) {
				ERR_ED << "Placeholder image not found" << std::endl;
				return;
			}
		}

		if(base_image->w != item_size_ || base_image->h != item_size_) {
			base_image.assign(scale_surface(base_image,
					item_size_, item_size_));
		}
	}

	const std::string filename = map().get_terrain_info(terrain).editor_image();
	image = image::get_image(filename);
	if(image == nullptr) {
		tooltip_text << "IMAGE NOT FOUND\n";
		ERR_ED << "image for terrain: '" << filename << "' not found" << std::endl;
		image = image::get_image(game_config::images::missing);
		if (image == nullptr) {
			ERR_ED << "Placeholder image not found" << std::endl;
			return;
		}
	}

	if(image->w != item_size_ || image->h != item_size_) {
		image.assign(scale_surface(image,
				item_size_, item_size_));
	}

	tooltip_text << map().get_terrain_editor_string(terrain);
	if (gui_.get_draw_terrain_codes()) {
		tooltip_text << " " + utils::unicode_em_dash + " " << terrain;
	}
}