Functions to load and save images from/to disk. More...
Classes | |
class | adjust_alpha_modification |
Adjust Alpha (ADJUST_ALPHA) modification. More... | |
class | adjust_channels_modification |
Adjust Channels (CHAN) modification. More... | |
struct | background_modification |
Fill background with a color (BG). More... | |
class | bl_modification |
Gaussian-like blur (BL) modification. More... | |
class | blend_modification |
Color blending (BLEND) modification. More... | |
class | blit_modification |
Scale (BLIT) modification. More... | |
class | bw_modification |
Black and white (BW) modification. More... | |
class | cache_type |
class | crop_modification |
Crop (CROP) modification. More... | |
class | cs_modification |
Color-shift (CS, R, G, B) modification. More... | |
class | fl_modification |
Mirror (FL) modification. More... | |
class | gs_modification |
Grayscale (GS) modification. More... | |
class | light_modification |
LIGHT (L) modification. More... | |
class | locator |
Generic locator abstracting the location of an image. More... | |
struct | manager |
Image cache manager. More... | |
class | mask_modification |
Mask (MASK) modification. More... | |
class | modification |
Base abstract class for an image-path modification. More... | |
class | modification_queue |
A modified priority queue used to order image modifications. More... | |
class | negative_modification |
Make an image negative (NEG) More... | |
class | o_modification |
Opacity (O) modification. More... | |
class | pixel_callable |
class | plot_alpha_modification |
Plot Alpha (Alpha) modification. More... | |
class | rc_modification |
Recolor (RC/TC/PAL) modification. More... | |
class | rotate_modification |
Rotate (ROTATE) modification. More... | |
class | scale_exact_modification |
Scale exact modification. More... | |
class | scale_into_modification |
Scale into (SCALE_INTO) modification. More... | |
class | scale_modification |
Scaling modifications base class. More... | |
struct | sepia_modification |
Give to the image a sepia tint (SEPIA) More... | |
class | swap_modification |
Channel swap (SWAP). More... | |
class | wipe_alpha_modification |
Wipe Alpha (Wipe_Alpha) modification. More... | |
class | xbrz_modification |
xBRZ scale (xBRZ) modification More... | |
Typedefs | |
typedef cache_type< surface > | image_cache |
typedef cache_type< bool > | bool_cache |
typedef std::map< t_translation::terrain_code, surface > | mini_terrain_cache_map |
typedef std::basic_string< signed char > | light_string |
Type used to store color information of central and adjacent hexes. More... | |
typedef std::map< light_string, surface > | lit_variants |
Type used to pair light possibilities with the corresponding lit surface. More... | |
typedef cache_type< lit_variants > | lit_cache |
Lit variants for each locator. More... | |
Enumerations | |
enum | TYPE { UNSCALED, SCALED_TO_ZOOM, HEXED, SCALED_TO_HEX, TOD_COLORED, BRIGHTENED } |
Used to specify the rendering format of images. More... | |
enum | save_result { save_result::success, save_result::unsupported_format, save_result::save_failed, save_result::no_image } |
Functions | |
surface | getMinimap (int w, int h, const gamemap &map_, const team *vm=nullptr, const std::map< map_location, unsigned int > *reach_map=nullptr, bool ignore_terrain_disabled=false) |
function to create the minimap for a given map the surface returned must be freed by the user More... | |
void | flush_cache () |
Purges all image caches. More... | |
static void | add_localized_overlay (const std::string &ovr_file, surface &orig_surf) |
static surface | load_image_file (const image::locator &loc) |
static surface | load_image_sub_file (const image::locator &loc) |
static surface | load_image_data_uri (const image::locator &loc) |
static signed char | col_to_uchar (int i) |
light_string | get_light_string (int op, int r, int g, int b) |
Returns the light_string for one light operation. More... | |
static surface | apply_light (surface surf, const light_string &ls) |
surface | load_from_disk (const locator &loc) |
void | set_color_adjustment (int r, int g, int b) |
Changes Time of Day color tint for all applicable image types. More... | |
void | set_zoom (unsigned int zoom) |
Sets the scaling factor for images. More... | |
static surface | get_hexed (const locator &i_locator) |
static surface | get_scaled_to_hex (const locator &i_locator) |
static surface | get_tod_colored (const locator &i_locator) |
static surface | get_scaled_to_zoom (const locator &i_locator) |
static surface | get_brightened (const locator &i_locator) |
static TYPE | simplify_type (const image::locator &i_locator, TYPE type) |
translate type to a simpler one when possible More... | |
surface | get_image (const locator &i_locator, TYPE type=UNSCALED) |
Caches and returns an image. More... | |
surface | get_lighted_image (const image::locator &i_locator, const light_string &ls, TYPE type) |
Caches and returns an image with a lightmap applied to it. More... | |
surface | get_hexmask () |
Retrieves the standard hexagonal tile mask. More... | |
bool | is_in_hex (const locator &i_locator) |
Checks if an image fits into a single hex. More... | |
bool | is_empty_hex (const locator &i_locator) |
Checks if an image is empty after hex masking. More... | |
surface | reverse_image (const surface &surf) |
Horizontally flips an image. More... | |
bool | exists (const locator &i_locator) |
Returns true if the given image actually exists, without loading it. More... | |
static void | precache_file_existence_internal (const std::string &dir, const std::string &subdir) |
void | precache_file_existence (const std::string &subdir="") |
Precache the existence of files in a binary path subdirectory (e.g. More... | |
bool | precached_file_exists (const std::string &file) |
save_result | save_image (const locator &i_locator, const std::string &filename) |
save_result | save_image (const surface &surf, const std::string &filename) |
Variables | |
mini_terrain_cache_map | mini_terrain_cache |
mini_terrain_cache_map | mini_fogged_terrain_cache |
mini_terrain_cache_map | mini_highlighted_terrain_cache |
static int | last_index_ = 0 |
Functions to load and save images from/to disk.
image::get_image() and other loading functions implement a pseudo-functional syntax to apply transformations to image files by including them as a suffix to the path (Image Path Functions). They also offer the option to choose between different rendering formats for a single image path according to the display intent – unscaled, masked to hex, rescaled to zoom, etc.
Internally, all loading functions utilize a cache to avoid reading individual images from disk more than once, or wasting valuable CPU time applying potentially expensive transforms every time (e.g. team colors on animated units). The cache can be manually invalidated using image::flush_cache(). Certain functions will invalidate parts of the cache as needed when relevant configuration parameters change in a way that would be expected to alter the output (e.g. Time of Day-tinted images).
typedef cache_type<bool> image::bool_cache |
Definition at line 155 of file picture.hpp.
typedef cache_type<surface> image::image_cache |
Definition at line 154 of file picture.hpp.
typedef std::basic_string<signed char> image::light_string |
Type used to store color information of central and adjacent hexes.
The structure is one or several 4-char blocks: [L,R,G,B] The R, G, B values represent the color, and L the lightmap to use:
-1: none 0: full hex 1-6: concave corners 7-12: convex half-corners 1 13-19: convex half-corners 2
Definition at line 175 of file picture.hpp.
typedef cache_type<lit_variants> image::lit_cache |
Lit variants for each locator.
Definition at line 181 of file picture.hpp.
typedef std::map<light_string, surface> image::lit_variants |
Type used to pair light possibilities with the corresponding lit surface.
Definition at line 178 of file picture.hpp.
typedef std::map<t_translation::terrain_code, surface> image::mini_terrain_cache_map |
Definition at line 157 of file picture.hpp.
|
strong |
Enumerator | |
---|---|
success | |
unsupported_format | |
save_failed | |
no_image |
Definition at line 299 of file picture.hpp.
enum image::TYPE |
Used to specify the rendering format of images.
Definition at line 228 of file picture.hpp.
|
static |
Definition at line 443 of file picture.cpp.
References filesystem::make_read_RWops(), and sdl_blit().
Referenced by load_image_file().
|
static |
Definition at line 604 of file picture.cpp.
References adjust_surface_color(), c, surface::clone(), get_lighted_image(), HEXED, i, light_surface(), p, and sdl_blit().
Referenced by get_lighted_image().
|
static |
Definition at line 587 of file picture.cpp.
Referenced by get_light_string().
bool image::exists | ( | const image::locator & | i_locator | ) |
Returns true if the given image actually exists, without loading it.
Definition at line 1010 of file picture.cpp.
References gui2::cache, filesystem::get_binary_file_location(), image::locator::get_filename(), image::locator::get_type(), image::locator::is_data_uri(), and success.
Referenced by wesnothd::server::authenticate(), persist_file_context::clear_var(), filesystem::create_directory_if_missing(), filesystem::create_directory_if_missing_recursive(), addon_info::display_icon(), gui2::dialogs::game_load::display_savegame_internal(), filesystem::file_exists(), display::fill_images_list(), filesystem::find_other_version_saves_dirs(), filesystem::get_exe_dir(), display::get_fog_shroud_images(), filesystem::get_version_path_suffix(), image_exists(), gui2::dialogs::addon_manager::publish_addon(), and tmp_file::~tmp_file().
void image::flush_cache | ( | ) |
Purges all image caches.
Definition at line 221 of file picture.cpp.
Referenced by game_launcher::change_language(), events::console_handler::do_refresh(), game_config_manager::load_game_config_for_game(), editor::editor_controller::refresh_image_cache(), game_config_manager::reload_changed_game_config(), and image::manager::~manager().
Definition at line 767 of file picture.cpp.
References brighten_image(), ftofxp, get_image(), game_config::hex_brightening, and TOD_COLORED.
Referenced by get_image().
Definition at line 724 of file picture.cpp.
References image::locator::add_to_cache(), image::locator::get_filename(), get_hexmask(), get_image(), mask_surface(), and UNSCALED.
Referenced by get_image().
surface image::get_hexmask | ( | ) |
Retrieves the standard hexagonal tile mask.
Definition at line 940 of file picture.cpp.
References get_image(), game_config::images::terrain_mask, and UNSCALED.
Referenced by get_hexed(), is_empty_hex(), is_in_hex(), load_image_sub_file(), and editor::mouse_action::set_terrain_mouse_overlay().
Caches and returns an image.
i_locator | Image path. |
type | Rendering format. |
Definition at line 815 of file picture.cpp.
References image::locator::add_to_cache(), BRIGHTENED, get_brightened(), get_hexed(), get_scaled_to_hex(), get_scaled_to_zoom(), get_tod_colored(), HEXED, image::locator::in_cache(), image::locator::is_void(), load_from_disk(), image::locator::locate_in_cache(), SCALED_TO_HEX, SCALED_TO_ZOOM, simplify_type(), TOD_COLORED, and UNSCALED.
Referenced by help::help_text_area::add_img_item(), draw_background(), unit_drawer::draw_bar(), gui::scrollbar::draw_contents(), editor::editor_display::draw_hex(), wb::attack::draw_hex(), wb::suppose_dead::draw_hex(), arrow::draw_hex(), game_display::draw_hex(), display::draw_hex(), editor::item_palette::draw_item(), editor::unit_palette::draw_item(), editor::terrain_palette::draw_item(), draw_label(), game_display::draw_movement_info(), draw_panel(), gui::menu::draw_row(), footsteps_images(), get_brightened(), display::get_flag(), display::get_fog_shroud_images(), get_hexed(), get_hexmask(), gui::menu::style::get_item_image(), get_lighted_image(), unit_frame::get_overlaped_hex(), get_scaled_to_hex(), get_scaled_to_zoom(), display::get_terrain_images(), get_tod_colored(), getMinimap(), help::image_width(), game_launcher::init_video(), intf_get_image_size(), is_empty_hex(), is_in_hex(), gui::menu::imgsel_style::load_image(), load_image_file(), load_image_sub_file(), gui::button::load_images(), game_display::new_turn(), unit_frame::redraw(), unit_drawer::redraw_unit(), display::refresh_report(), halo::halo_impl::effect::render(), save_image(), gui::scrollbar::scrollbar(), editor::mouse_action_item::set_item_mouse_overlay(), editor::mouse_action_village::set_mouse_overlay(), editor::mouse_action_map_label::set_mouse_overlay(), editor::mouse_action_select::set_mouse_overlay(), editor::mouse_action_paste::set_mouse_overlay(), editor::mouse_action_starting_position::set_mouse_overlay(), editor::mouse_action::set_terrain_mouse_overlay(), editor::mouse_action_unit::set_unit_mouse_overlay(), and gui::tristate_button::tristate_button().
light_string image::get_light_string | ( | int | op, |
int | r, | ||
int | g, | ||
int | b | ||
) |
Returns the light_string for one light operation.
See light_string for more information.
Definition at line 592 of file picture.cpp.
References col_to_uchar().
Referenced by display::draw_hex(), and display::get_terrain_images().
surface image::get_lighted_image | ( | const image::locator & | i_locator, |
const light_string & | ls, | ||
TYPE | type | ||
) |
Caches and returns an image with a lightmap applied to it.
i_locator | Image path. |
ls | Light map to apply to the image. |
type | This should be either HEXED or SCALED_TO_HEX. |
Definition at line 888 of file picture.cpp.
References image::locator::access_in_cache(), image::locator::add_to_cache(), apply_light(), get_image(), HEXED, image::locator::in_cache(), image::locator::is_void(), image::locator::locate_in_cache(), scale_surface_nn(), SCALED_TO_HEX, and game_config::tile_size.
Referenced by apply_light(), display::draw_hex(), and display::get_terrain_images().
Definition at line 734 of file picture.cpp.
References get_image(), HEXED, and scale_surface_nn().
Referenced by get_image().
Definition at line 753 of file picture.cpp.
References get_image(), scale_surface_nn(), game_config::tile_size, and UNSCALED.
Referenced by get_image().
Definition at line 747 of file picture.cpp.
References adjust_surface_color(), get_image(), and SCALED_TO_HEX.
Referenced by get_image().
surface image::getMinimap | ( | int | w, |
int | h, | ||
const gamemap & | map, | ||
const team * | vw, | ||
const std::map< map_location, unsigned int > * | reach_map, | ||
bool | ignore_terrain_disabled | ||
) |
function to create the minimap for a given map the surface returned must be freed by the user
Definition at line 39 of file minimap.cpp.
References adjust_surface_color(), preferences::allied_color(), color_t::b, gui2::cache, game_config::color_info(), DBG_DP, preferences::enemy_color(), sdl::fill_surface_rect(), team::fogged(), color_t::g, resources::gameboard, get_image(), team::get_minimap_color(), display::get_singleton(), terrain_type_data::get_terrain_info(), gamemap_base::h(), HEXED, i, terrain_type::id(), display::is_blindfolded(), terrain_type::is_combined(), team::is_enemy(), is_odd(), terrain_type::is_village(), mini_fogged_terrain_cache, mini_highlighted_terrain_cache, mini_terrain_cache, preferences::minimap_draw_terrain(), preferences::minimap_draw_villages(), terrain_type::minimap_image(), terrain_type::minimap_image_overlay(), preferences::minimap_movement_coding(), preferences::minimap_terrain_coding(), gamemap_base::on_board_with_border(), team::owns_village(), color_t::r, color_range::rep(), xbrz::scale(), scale_surface_sharp(), sdl_blit(), team::shrouded(), gamemap::tdata(), game_config::team_rgb_range, gamemap_base::total_height(), gamemap_base::total_width(), terrain_type_data::underlying_union_terrain(), preferences::unmoved_color(), display_context::village_owner(), t_translation::VOID_TERRAIN, and gamemap_base::w().
Referenced by display::draw_minimap(), and gui2::minimap::get_image().
bool image::is_empty_hex | ( | const locator & | i_locator | ) |
Checks if an image is empty after hex masking.
This should be only used on terrain images, and it will automatically cache the hex-masked version if necessary.
Definition at line 969 of file picture.cpp.
References image::locator::add_to_cache(), get_hexmask(), get_image(), HEXED, image::locator::in_cache(), image::locator::locate_in_cache(), and mask_surface().
Referenced by terrain_builder::tile::rebuild_cache().
bool image::is_in_hex | ( | const locator & | i_locator | ) |
Checks if an image fits into a single hex.
Definition at line 946 of file picture.cpp.
References image::locator::add_to_cache(), get_hexmask(), get_image(), image::locator::in_cache(), in_mask_surface(), image::locator::locate_in_cache(), and UNSCALED.
Referenced by unit_frame::get_overlaped_hex().
Definition at line 665 of file picture.cpp.
References image::locator::FILE, image::locator::get_type(), image::locator::is_data_uri(), load_image_data_uri(), load_image_file(), load_image_sub_file(), and image::locator::SUB_FILE.
Referenced by get_image().
|
static |
Definition at line 556 of file picture.cpp.
References base64::decode(), ERR_DP, and image::locator::get_filename().
Referenced by load_from_disk().
|
static |
Definition at line 456 of file picture.cpp.
References add_localized_overlay(), game_config::debug, ERR_DP, filesystem::get_binary_file_location(), image::locator::get_filename(), get_image(), filesystem::get_localized_path(), filesystem::make_read_RWops(), game_config::images::missing, and UNSCALED.
Referenced by load_from_disk().
|
static |
Definition at line 492 of file picture.cpp.
References image::locator::add_to_cache(), sdl::create_rect(), cut_surface(), image::modification::decode(), e, image::modification_queue::empty(), ERR_CFG, image::locator::get_center_x(), image::locator::get_center_y(), image::locator::get_filename(), get_hexmask(), get_image(), image::locator::get_loc(), image::locator::get_modifications(), mask_surface(), image::modification::imod_exception::message, utils::parenthetical_split(), image::modification_queue::pop(), game_config::tile_size, image::modification_queue::top(), UNSCALED, map_location::valid(), map_location::x, and map_location::y.
Referenced by load_from_disk().
void image::precache_file_existence | ( | const std::string & | subdir = "" | ) |
Precache the existence of files in a binary path subdirectory (e.g.
"terrain/").
Definition at line 1061 of file picture.cpp.
References filesystem::get_binary_paths(), p, and precache_file_existence_internal().
Referenced by terrain_builder::terrain_builder().
|
static |
Definition at line 1034 of file picture.cpp.
References d, filesystem::DONT_REORDER, f, filesystem::FILE_NAME_ONLY, filesystem::get_files_in_dir(), filesystem::is_directory(), and filesystem::NO_FILTER.
Referenced by precache_file_existence().
bool image::precached_file_exists | ( | const std::string & | file | ) |
Horizontally flips an image.
The input MUST have originally been returned from an image namespace function. Returned images have the same semantics as those obtained from get_image().
Definition at line 988 of file picture.cpp.
References flip_surface().
Referenced by halo::halo_impl::effect::render(), and display::render_image().
save_result image::save_image | ( | const locator & | i_locator, |
const std::string & | filename | ||
) |
Definition at line 1080 of file picture.cpp.
References get_image().
Referenced by editor::editor_controller::do_screenshot(), game_launcher::play_render_image_mode(), and gui2::dialogs::screenshot_notification::save_screenshot().
save_result image::save_image | ( | const surface & | surf, |
const std::string & | filename | ||
) |
Definition at line 1085 of file picture.cpp.
References filesystem::ends_with(), lg::err(), LOG_DP, filesystem::make_write_RWops(), no_image, save_failed, success, and unsupported_format.
void image::set_color_adjustment | ( | int | r, |
int | g, | ||
int | b | ||
) |
Changes Time of Day color tint for all applicable image types.
In particular this affects TOD_COLORED and BRIGHTENED images, as well as images with lightmaps applied. Changing the previous values automatically invalidates all cached images of those types. It also invalidates the internal cache used by reverse_image() (FIXME?).
Definition at line 690 of file picture.cpp.
Referenced by display::update_tod().
void image::set_zoom | ( | unsigned int | zoom | ) |
Sets the scaling factor for images.
Changing the previous value automatically invalidates all cached scaled images.
Definition at line 704 of file picture.cpp.
References game_config::tile_size.
Referenced by display::bounds_check_position(), display::display(), display::idle_anim_rate(), and display::set_zoom().
|
static |
translate type to a simpler one when possible
Definition at line 774 of file picture.cpp.
References BRIGHTENED, ftofxp, image::locator::get_loc(), game_config::hex_brightening, HEXED, SCALED_TO_HEX, SCALED_TO_ZOOM, game_config::tile_size, TOD_COLORED, UNSCALED, and map_location::valid().
Referenced by get_image().
|
static |
Definition at line 219 of file picture.cpp.
mini_terrain_cache_map image::mini_fogged_terrain_cache |
Definition at line 216 of file picture.cpp.
Referenced by getMinimap().
mini_terrain_cache_map image::mini_highlighted_terrain_cache |
Definition at line 217 of file picture.cpp.
Referenced by getMinimap().
mini_terrain_cache_map image::mini_terrain_cache |
Definition at line 215 of file picture.cpp.
Referenced by getMinimap().