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 > | surface_cache |
typedef cache_type< texture > | texture_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_surface_variants |
Type used to pair light possibilities with the corresponding lit surface. More... | |
typedef std::map< light_string, texture > | lit_texture_variants |
typedef cache_type< lit_surface_variants > | lit_surface_cache |
Lit variants for each locator. More... | |
typedef cache_type< lit_texture_variants > | lit_texture_cache |
Enumerations | |
enum | TYPE { UNSCALED, HEXED, TOD_COLORED, NUM_TYPES } |
Used to specify the rendering format of images. More... | |
enum | scale_quality { scale_quality::nearest, scale_quality::linear } |
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 | render_minimap (unsigned dst_w, unsigned dst_h, const gamemap &map, const team *vw=nullptr, const unit_map *units=nullptr, const std::map< map_location, unsigned int > *reach_map=nullptr, bool ignore_terrain_disabled=false) |
Renders the minimap to the screen. More... | |
void | flush_cache () |
Purges all image caches. More... | |
std::ostream & | operator<< (std::ostream &s, const locator &l) |
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) |
static 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... | |
static surface | get_hexed (const locator &i_locator, bool skip_cache=false) |
static surface | get_tod_colored (const locator &i_locator, bool skip_cache=false) |
static TYPE | simplify_type (const image::locator &i_locator, TYPE type) |
translate type to a simpler one when possible More... | |
surface | get_surface (const locator &i_locator, TYPE type=UNSCALED, bool skip_cache=false) |
Returns an image surface suitable for software manipulation. More... | |
surface | get_image (const locator &i_locator, TYPE type=UNSCALED) |
[DEPRECATED] Caches and returns an image. More... | |
surface | get_lighted_image (const image::locator &i_locator, const light_string &ls) |
Caches and returns an image with a lightmap applied to it. More... | |
texture | get_lighted_texture (const image::locator &i_locator, const light_string &ls) |
surface | get_hexmask () |
Retrieves the standard hexagonal tile mask. More... | |
point | get_size (const locator &i_locator, bool skip_cache=false) |
Returns the width and height of an image. 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... | |
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) |
texture | get_texture (const locator &i_locator, TYPE type=UNSCALED, bool skip_cache=false) |
Returns an image texture suitable for hardware-accelerated rendering. More... | |
texture | get_texture (const image::locator &i_locator, scale_quality quality, TYPE type, bool skip_cache) |
Returns a texture for the corresponding image. More... | |
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 162 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 182 of file picture.hpp.
Lit variants for each locator.
Definition at line 189 of file picture.hpp.
typedef std::map<light_string, surface> image::lit_surface_variants |
Type used to pair light possibilities with the corresponding lit surface.
Definition at line 185 of file picture.hpp.
Definition at line 190 of file picture.hpp.
typedef std::map<light_string, texture> image::lit_texture_variants |
Definition at line 186 of file picture.hpp.
typedef std::map<t_translation::terrain_code, surface> image::mini_terrain_cache_map |
Definition at line 164 of file picture.hpp.
typedef cache_type<surface> image::surface_cache |
Definition at line 160 of file picture.hpp.
typedef cache_type<texture> image::texture_cache |
Definition at line 161 of file picture.hpp.
|
strong |
Enumerator | |
---|---|
success | |
unsupported_format | |
save_failed | |
no_image |
Definition at line 338 of file picture.hpp.
|
strong |
Enumerator | |
---|---|
nearest | |
linear |
Definition at line 239 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 485 of file picture.cpp.
References filesystem::make_read_RWops(), and sdl_blit().
Referenced by load_image_file().
|
static |
Definition at line 661 of file picture.cpp.
References adjust_surface_color(), c, surface::clone(), get_lighted_image(), i, light_surface(), p, and sdl_blit().
Referenced by get_lighted_image().
|
static |
Definition at line 644 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 1022 of file picture.cpp.
References 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(), editor::mouse_action::set_terrain_mouse_overlay(), and tmp_file::~tmp_file().
void image::flush_cache | ( | ) |
Purges all image caches.
Definition at line 234 of file picture.cpp.
Referenced by game_launcher::change_language(), video::deinit(), 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 760 of file picture.cpp.
References image::locator::add_to_cache(), cut_surface(), DBG_IMG, sdl::fill_surface_rect(), image::locator::get_filename(), get_hexmask(), get_surface(), mask_surface(), sdl_blit(), and UNSCALED.
Referenced by get_surface().
surface image::get_hexmask | ( | ) |
Retrieves the standard hexagonal tile mask.
Definition at line 964 of file picture.cpp.
References get_surface(), game_config::images::terrain_mask, and UNSCALED.
Referenced by get_hexed(), is_empty_hex(), is_in_hex(), and load_image_sub_file().
[DEPRECATED] Caches and returns an image.
This function is deprecated. Use get_texture or get_surface in stead.
i_locator | Image path. |
type | Rendering format. |
Definition at line 887 of file picture.cpp.
References get_surface().
Referenced by getMinimap(), and help::image_width().
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 649 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 | ||
) |
Caches and returns an image with a lightmap applied to it.
Images will always be HEXED type.
i_locator | Image path. |
ls | Light map to apply to the image. |
Definition at line 892 of file picture.cpp.
References image::locator::add_to_cache(), apply_light(), DBG_IMG, get_surface(), HEXED, image::locator::in_cache(), image::locator::is_void(), and image::locator::locate_in_cache().
Referenced by apply_light(), and get_lighted_texture().
texture image::get_lighted_texture | ( | const image::locator & | i_locator, |
const light_string & | ls | ||
) |
Definition at line 928 of file picture.cpp.
References image::locator::add_to_cache(), DBG_IMG, get_lighted_image(), image::locator::in_cache(), image::locator::is_void(), and image::locator::locate_in_cache().
Referenced by display::draw_hex(), and display::get_terrain_images().
Returns the width and height of an image.
If the image is not yet in the surface cache, it will be loaded and cached unless skip_cache is explicitly set.
i_locator | Image path. |
skip_cache | If true, do not cache the image if loaded. |
Definition at line 970 of file picture.cpp.
References get_surface(), s, and UNSCALED.
Referenced by gui2::gui_definition::activate(), gui2::image::calculate_best_size(), gui2::widget::can_mouse_focus(), frame_parsed_parameters::debug_strings(), display::draw_hex(), unit_frame::get_overlaped_hex(), intf_get_image_size(), gui::menu::style::item_size(), unit_frame::redraw(), unit_drawer::redraw_unit(), gui::scrollbar::scrollbar(), and editor::mouse_action::set_terrain_mouse_overlay().
surface image::get_surface | ( | const locator & | i_locator, |
TYPE | type = UNSCALED , |
||
bool | skip_cache = false |
||
) |
Returns an image surface suitable for software manipulation.
The equivalent get_texture() function should generally be preferred.
Surfaces will be cached for repeat access, unless skip_cache is set.
i_locator | Image path. |
type | Rendering format. |
skip_cache | Skip adding the result to the surface cache. |
Definition at line 824 of file picture.cpp.
References DBG_IMG, get_hexed(), get_tod_colored(), HEXED, image::locator::in_cache(), image::locator::is_void(), load_from_disk(), image::locator::locate_in_cache(), NUM_TYPES, simplify_type(), TOD_COLORED, UNSCALED, and WRN_IMG.
Referenced by get_hexed(), get_hexmask(), get_image(), get_lighted_image(), get_size(), get_texture(), get_tod_colored(), game_launcher::init_video(), is_empty_hex(), is_in_hex(), load_image_file(), load_image_sub_file(), and save_image().
texture image::get_texture | ( | const locator & | i_locator, |
TYPE | type = UNSCALED , |
||
bool | skip_cache = false |
||
) |
Returns an image texture suitable for hardware-accelerated rendering.
Texture pointers are not unique, and will be cached and retained until no longer needed. Users of the returned texture do not have to worry about texture management.
If caching is disabled via skip_cache, texture memory will be automatically freed once the returned object and all other linked textures (if any) are destroyed.
i_locator | Image path. |
type | Rendering format. |
skip_cache | Skip adding the result to the surface cache. |
Definition at line 1128 of file picture.cpp.
References nearest.
Referenced by help::help_text_area::add_img_item(), frame_parsed_parameters::debug_strings(), gui2::image_shape::draw(), gui::scrollbar::draw_contents(), wb::attack::draw_hex(), wb::suppose_dead::draw_hex(), editor::editor_display::draw_hex(), arrow::draw_hex(), game_display::draw_hex(), display::draw_hex(), display::draw_label(), display::draw_panel(), display::draw_report(), gui::menu::draw_row(), display::fade_tod_mask(), footsteps_images(), display::get_flag(), display::get_fog_shroud_images(), display::get_terrain_images(), gui::menu::imgsel_style::load_image(), gui::button::load_images(), unit_drawer::redraw_unit(), display::render_map_outside_area(), render_minimap(), 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(), editor::item_palette::setup_item(), editor::unit_palette::setup_item(), editor::terrain_palette::setup_item(), gui::tristate_button::tristate_button(), and halo::halo_impl::effect::update().
texture image::get_texture | ( | const image::locator & | i_locator, |
scale_quality | quality, | ||
TYPE | type, | ||
bool | skip_cache | ||
) |
Returns a texture for the corresponding image.
Definition at line 1134 of file picture.cpp.
References DBG_IMG, get_surface(), HEXED, image::locator::in_cache(), image::locator::is_void(), linear, image::locator::locate_in_cache(), simplify_type(), and TOD_COLORED.
Definition at line 799 of file picture.cpp.
References adjust_surface_color(), get_surface(), and HEXED.
Referenced by get_surface().
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 43 of file minimap.cpp.
References adjust_surface_color(), preferences::allied_color(), game_config::color_info(), DBG_DP, preferences::enemy_color(), sdl::fill_surface_rect(), team::fogged(), 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_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::recalculate_minimap().
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 1003 of file picture.cpp.
References image::locator::add_to_cache(), get_hexmask(), get_surface(), 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 980 of file picture.cpp.
References image::locator::add_to_cache(), get_hexmask(), get_surface(), image::locator::in_cache(), in_mask_surface(), image::locator::locate_in_cache(), and UNSCALED.
Referenced by unit_frame::get_overlaped_hex().
Definition at line 722 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_surface().
|
static |
Definition at line 613 of file picture.cpp.
References base64::decode(), ERR_IMG, and image::locator::get_filename().
Referenced by load_from_disk().
|
static |
Definition at line 498 of file picture.cpp.
References add_localized_overlay(), game_config::images::blank, game_config::debug, filesystem::ends_with(), ERR_IMG, filesystem::get_binary_file_location(), image::locator::get_filename(), filesystem::get_localized_path(), get_surface(), filesystem::make_read_RWops(), game_config::images::missing, UNSCALED, and WRN_IMG.
Referenced by load_from_disk().
|
static |
Definition at line 549 of file picture.cpp.
References image::locator::add_to_cache(), 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(), image::locator::get_loc(), image::locator::get_modifications(), get_surface(), 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().
std::ostream & image::operator<< | ( | std::ostream & | s, |
const locator & | l | ||
) |
Definition at line 367 of file picture.cpp.
References image::locator::get_filename(), image::locator::get_modifications(), and s.
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 1073 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 1046 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 | ) |
void image::render_minimap | ( | unsigned | dst_w, |
unsigned | dst_h, | ||
const gamemap & | map, | ||
const team * | vw, | ||
const unit_map * | units, | ||
const std::map< map_location, unsigned int > * | reach_map, | ||
bool | ignore_terrain_disabled | ||
) |
Renders the minimap to the screen.
Definition at line 293 of file minimap.cpp.
References allied, preferences::allied_color(), draw::blit(), game_config::color_info(), DBG_DP, enemy, preferences::enemy_color(), draw::fill(), team::fogged(), gamemap_base::for_each_loc(), resources::gameboard, display::get_disp_context(), team::get_minimap_color(), orb_status_helper::get_orb_color(), texture::get_raw_size(), display::get_singleton(), get_texture(), gamemap_base::h(), terrain_type::id(), display::is_blindfolded(), team::is_enemy(), is_odd(), preferences::minimap_draw_terrain(), preferences::minimap_draw_units(), preferences::minimap_draw_villages(), terrain_type::minimap_image(), terrain_type::minimap_image_overlay(), preferences::minimap_movement_coding(), preferences::minimap_terrain_coding(), team::owns_village(), color_range::rep(), xbrz::scale(), draw::set_blend_mode(), set_texture_scale_quality(), team::shrouded(), team::side(), gamemap::tdata(), game_config::team_rgb_range, display_context::unit_orb_status(), preferences::unmoved_color(), display_context::village_owner(), gamemap::villages(), t_translation::VOID_TERRAIN, and gamemap_base::w().
Referenced by gui2::minimap::impl_draw_background().
save_result image::save_image | ( | const locator & | i_locator, |
const std::string & | filename | ||
) |
Definition at line 1092 of file picture.cpp.
References get_surface().
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 1097 of file picture.cpp.
References filesystem::ends_with(), lg::err(), LOG_IMG, 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 images, as well as images with lightmaps applied. Changing the previous values automatically invalidates all cached images of those types.
Definition at line 747 of file picture.cpp.
References b, g, and TOD_COLORED.
Referenced by display::update_tod().
|
static |
translate type to a simpler one when possible
Definition at line 806 of file picture.cpp.
References image::locator::get_loc(), HEXED, TOD_COLORED, UNSCALED, and map_location::valid().
Referenced by get_surface(), and get_texture().
|
static |
Definition at line 232 of file picture.cpp.
mini_terrain_cache_map image::mini_fogged_terrain_cache |
Definition at line 229 of file picture.cpp.
Referenced by getMinimap().
mini_terrain_cache_map image::mini_highlighted_terrain_cache |
Definition at line 230 of file picture.cpp.
Referenced by getMinimap().
mini_terrain_cache_map image::mini_terrain_cache |
Definition at line 228 of file picture.cpp.
Referenced by getMinimap().