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 ); } } }
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; } }